diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2008-02-05 01:28:24 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-05 12:44:13 -0500 |
commit | 15fae37d9f5f21571a9618d8353164b6ddfea6f6 (patch) | |
tree | 13b4fb5479cf3a9522c6673cc6ccae20b6658e55 /drivers/gpio/Kconfig | |
parent | 1c44f5f16fee880b294f8068354bfb9dddf1349b (diff) |
gpiolib: pcf857x i2c gpio expander support
This is a new-style I2C driver for most common 8 and 16 bit I2C based
"quasi-bidirectional" GPIO expanders: pcf8574 or pcf8575, and several
compatible models (mostly faster, supporting I2C at up to 1 MHz).
The driver exposes the GPIO signals using the platform-neutral GPIO
programming interface, so they are easily accessed by other kernel code. The
lack of such a flexible kernel API has been a big factor in the proliferation
of board-specific drivers for these chips... stuff that rarely makes it
upstream since it's so ugly. This driver will let such boards use standard
calls.
Since it's a new-style driver, these devices must be configured as part of
board-specific init. That eliminates the need for error-prone manual
configuration of module parameters, and makes compatibility with legacy
drivers (pcf8574.c, pc8575.c) for these chips easier (there's a clear
either/or disjunction).
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Acked-by: Jean Delvare <khali@linux-fr.org>
Cc: Eric Miao <eric.miao@marvell.com>
Cc: Sam Ravnborg <sam@ravnborg.org>
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: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/gpio/Kconfig')
-rw-r--r-- | drivers/gpio/Kconfig | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 560687c4667e..36d5d6aefc0e 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig | |||
@@ -27,6 +27,29 @@ config DEBUG_GPIO | |||
27 | 27 | ||
28 | comment "I2C GPIO expanders:" | 28 | comment "I2C GPIO expanders:" |
29 | 29 | ||
30 | config GPIO_PCF857X | ||
31 | tristate "PCF857x, PCA857x, and PCA967x I2C GPIO expanders" | ||
32 | depends on I2C | ||
33 | help | ||
34 | Say yes here to provide access to most "quasi-bidirectional" I2C | ||
35 | GPIO expanders used for additional digital outputs or inputs. | ||
36 | Most of these parts are from NXP, though TI is a second source for | ||
37 | some of them. Compatible models include: | ||
38 | |||
39 | 8 bits: pcf8574, pcf8574a, pca8574, pca8574a, | ||
40 | pca9670, pca9672, pca9674, pca9674a | ||
41 | |||
42 | 16 bits: pcf8575, pcf8575c, pca8575, | ||
43 | pca9671, pca9673, pca9675 | ||
44 | |||
45 | Your board setup code will need to declare the expanders in | ||
46 | use, and assign numbers to the GPIOs they expose. Those GPIOs | ||
47 | can then be used from drivers and other kernel code, just like | ||
48 | other GPIOs, but only accessible from task contexts. | ||
49 | |||
50 | This driver provides an in-kernel interface to those GPIOs using | ||
51 | platform-neutral GPIO calls. | ||
52 | |||
30 | comment "SPI GPIO expanders:" | 53 | comment "SPI GPIO expanders:" |
31 | 54 | ||
32 | endmenu | 55 | endmenu |