]> git.baikalelectronics.ru Git - kernel.git/commit
gpiolib: allow poll() on value
authorDaniel Glöckner <dg@emlix.com>
Tue, 22 Sep 2009 23:46:38 +0000 (16:46 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 23 Sep 2009 14:39:48 +0000 (07:39 -0700)
commit1f25ac879b6b444fb98dc952c91db42ccd6e3db3
tree195c102f75445654e87453cbce284b2f658d13a8
parent926d5023d99e617959334a0eec42021fc66d739d
gpiolib: allow poll() on value

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>
Documentation/ABI/testing/sysfs-gpio
Documentation/gpio.txt
drivers/gpio/gpiolib.c