Files
linux/include/uapi/linux
Linus Walleij 61f922db72 gpio: userspace ABI for reading GPIO line events
This adds an ABI for listening to events on GPIO lines.
The mechanism returns an anonymous file handle to a request
to listen to a specific offset on a specific gpiochip.
To fetch the stream of events from the file handle, userspace
simply reads an event.

- Events can be requested with the same flags as ordinary
  handles, i.e. open drain or open source. An ioctl() call
  GPIO_GET_LINEEVENT_IOCTL is issued indicating the desired
  line.

- Events can be requested for falling edge events, rising
  edge events, or both.

- All events are timestamped using the kernel real time
  nanosecond timestamp (the same as is used by IIO).

- The supplied consumer label will appear in "lsgpio"
  listings of the lines, and in /proc/interrupts as the
  mechanism will request an interrupt from the gpio chip.

- Events are not supported on gpiochips that do not serve
  interrupts (no legal .to_irq() call). The event interrupt
  is threaded to avoid any realtime problems.

- It is possible to also directly read the current value
  of the registered GPIO line by issuing the same
  GPIOHANDLE_GET_LINE_VALUES_IOCTL as used by the
  line handles. Setting the value is not supported: we
  do not listen to events on output lines.

This ABI is strongly influenced by Industrial I/O and surpasses
the old sysfs ABI by providing proper precision timestamps,
making it possible to set flags like open drain, and put
consumer names on the GPIO lines.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2016-06-15 09:29:17 +02:00
..
2014-10-20 10:30:15 +08:00
2015-10-13 17:42:34 +02:00
2014-09-23 23:15:46 -07:00
2016-04-03 11:14:01 +01:00
2015-04-21 16:16:02 -04:00
2016-04-19 04:33:15 +09:00
2015-10-05 03:16:46 -07:00
2016-03-15 16:55:16 -07:00
2013-04-26 16:08:16 +10:00
2016-05-06 16:01:53 -04:00
2014-07-01 10:48:05 -06:00
2014-03-20 14:55:18 +01:00
2015-08-25 14:41:50 -05:00
2014-11-19 14:48:02 -06:00
2012-10-16 18:49:15 -07:00
2016-01-20 17:09:18 -08:00
2014-08-08 15:57:31 -07:00
2015-04-12 21:25:13 -04:00
2015-12-14 12:19:37 -06:00
2013-12-11 12:57:55 -08:00
2016-04-15 17:06:48 -04:00
2013-08-13 15:10:22 -07:00
2015-05-25 13:25:35 -04:00
2014-12-02 13:52:53 -07:00
2016-03-22 15:36:02 -07:00
2015-02-17 14:34:51 -08:00
2016-04-12 19:54:58 +01:00
2016-05-11 22:37:54 +02:00
2016-04-25 15:09:10 -04:00
2016-01-12 08:21:18 -07:00
2015-08-03 17:30:00 -07:00
2014-08-08 15:57:31 -07:00
2015-07-21 10:39:05 -07:00
2015-11-23 15:06:38 -05:00
2015-01-20 13:51:06 +01:00
2014-12-13 12:42:52 -08:00
2015-05-05 13:40:44 -06:00
2015-08-27 19:44:53 -04:00
2015-04-23 15:16:14 -04:00
2015-07-20 14:58:46 -04:00
2016-05-17 17:14:21 -06:00
2012-11-16 10:15:35 -08:00
2015-09-04 16:54:41 -07:00
2016-05-08 23:46:14 -04:00
2016-04-26 12:00:48 -04:00
2016-04-04 22:11:20 -04:00
2014-12-10 17:41:10 -08:00
2014-12-09 14:10:41 +08:00
2013-03-22 16:19:59 -07:00
2015-03-05 22:08:42 -05:00
2014-04-26 12:13:24 -04:00
2015-06-11 23:37:37 +02:00
2015-12-18 17:48:51 -08:00
2015-10-27 18:55:31 -07:00
2016-05-20 17:58:30 -07:00
2016-03-11 02:18:53 +02:00
2015-03-29 12:13:52 +10:30
2014-12-09 12:05:24 +02:00
2016-04-30 09:26:55 -07:00
2016-04-23 20:13:25 -04:00