• David Brownell's avatar
    gpiolib: add gpio provider infrastructure · d2876d08
    David Brownell authored
    Provide new implementation infrastructure that platforms may choose to use
    when implementing the GPIO programming interface.  Platforms can update their
    GPIO support to use this.  In many cases the incremental cost to access a
    non-inlined GPIO should be less than a dozen instructions, with the memory
    cost being about a page (total) of extra data and code.  The upside is:
    
      * Providing two features which were "want to have (but OK to defer)" when
        GPIO interfaces were first discussed in November 2006:
    
        -	A "struct gpio_chip" to plug in GPIOs that aren't directly supported
    	by SOC platforms, but come from FPGAs or other multifunction devices
    	using conventional device registers (like UCB-1x00 or SM501 GPIOs,
    	and southbridges in PCs with more open specs than usual).
    
        -	Full support for message-based GPIO expanders, where registers are
    	accessed through sleeping I/O calls.  Previous support for these
    	"cansleep" calls was just stubs.  (One example: the widely used
    	pcf8574 I2C chips, with 8 GPIOs each.)
    
      * Including a non-stub implementation of the gpio_{request,free}() calls,
        making those calls much more useful.  The diagnostic labels are also
        recorded given DEBUG_FS, so /sys/kernel/debug/gpio can show a snapshot
        of all GPIOs known to this infrastructure.
    
    The driver programming interfaces introduced in 2.6.21 do not change at all;
    this infrastructure is entirely below those covers.
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: Sam Ravnborg <sam@ravnborg.org>
    Cc: Jean Delvare <khali@linux-fr.org>
    Cc: Eric Miao <eric.miao@marvell.com>
    Cc: Haavard Skinnemoen <hskinnemoen@atmel.com>
    Cc: Philipp Zabel <philipp.zabel@gmail.com>
    Cc: Russell King <rmk@arm.linux.org.uk>
    Cc: Ben Gardner <bgardner@wabtec.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    d2876d08
gpiolib.c 14.5 KB