mirror of
https://github.com/adulau/aha.git
synced 2024-12-30 12:46:17 +00:00
ff77c352ae
Many gpio chips allow to generate interrupts when the value of a pin changes. This patch gives usermode application the opportunity to make use of this feature by calling poll(2) on the /sys/class/gpio/gpioN/value sysfs file. The edge to trigger can be set in the edge file in the same directory. Possible values are "none", "rising", "falling", and "both". Using level triggers is not possible with current sysfs since nothing changes the GPIO value (and the IRQ keeps triggering). Edge triggering will "just work". Note that if there was an event between read() and poll(), the poll() returns immediately. Also note that this version only supports true GPIO interrupts. Some later patch might be able to synthesize this behavior by timer-driven polling; some systems seem to need that. [dbrownell@users.sourceforge.net: align ids to 16 bit ids; whitespace] Signed-off-by: Daniel Glöckner <dg@emlix.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
27 lines
1.1 KiB
Text
27 lines
1.1 KiB
Text
What: /sys/class/gpio/
|
|
Date: July 2008
|
|
KernelVersion: 2.6.27
|
|
Contact: David Brownell <dbrownell@users.sourceforge.net>
|
|
Description:
|
|
|
|
As a Kconfig option, individual GPIO signals may be accessed from
|
|
userspace. GPIOs are only made available to userspace by an explicit
|
|
"export" operation. If a given GPIO is not claimed for use by
|
|
kernel code, it may be exported by userspace (and unexported later).
|
|
Kernel code may export it for complete or partial access.
|
|
|
|
GPIOs are identified as they are inside the kernel, using integers in
|
|
the range 0..INT_MAX. See Documentation/gpio.txt for more information.
|
|
|
|
/sys/class/gpio
|
|
/export ... asks the kernel to export a GPIO to userspace
|
|
/unexport ... to return a GPIO to the kernel
|
|
/gpioN ... for each exported GPIO #N
|
|
/value ... always readable, writes fail for input GPIOs
|
|
/direction ... r/w as: in, out (default low); write: high, low
|
|
/edge ... r/w as: none, falling, rising, both
|
|
/gpiochipN ... for each gpiochip; #N is its first GPIO
|
|
/base ... (r/o) same as N
|
|
/label ... (r/o) descriptive, not necessarily unique
|
|
/ngpio ... (r/o) number of GPIOs; numbered N to N + (ngpio - 1)
|
|
|