• Daniel Glöckner's avatar
    gpiolib: allow poll() on value · ff77c352
    Daniel Glöckner authored
    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: default avatarDaniel Glöckner <dg@emlix.com>
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ff77c352
gpiolib.c 36.4 KB