1a9c5fff5SDavid Brownell# 2a9c5fff5SDavid Brownell# GPIO infrastructure and expanders 3a9c5fff5SDavid Brownell# 4a9c5fff5SDavid Brownell 5a9c5fff5SDavid Brownellconfig HAVE_GPIO_LIB 6a9c5fff5SDavid Brownell bool 7a9c5fff5SDavid Brownell help 8a9c5fff5SDavid Brownell Platforms select gpiolib if they use this infrastructure 9a9c5fff5SDavid Brownell for all their GPIOs, usually starting with ones integrated 10a9c5fff5SDavid Brownell into SOC processors. 11a9c5fff5SDavid Brownell 12a9c5fff5SDavid Brownellmenu "GPIO Support" 13a9c5fff5SDavid Brownell depends on HAVE_GPIO_LIB 14a9c5fff5SDavid Brownell 15a9c5fff5SDavid Brownellconfig DEBUG_GPIO 16a9c5fff5SDavid Brownell bool "Debug GPIO calls" 17a9c5fff5SDavid Brownell depends on DEBUG_KERNEL 18a9c5fff5SDavid Brownell help 19a9c5fff5SDavid Brownell Say Y here to add some extra checks and diagnostics to GPIO calls. 20a9c5fff5SDavid Brownell The checks help ensure that GPIOs have been properly initialized 21a9c5fff5SDavid Brownell before they are used and that sleeping calls aren not made from 22a9c5fff5SDavid Brownell nonsleeping contexts. They can make bitbanged serial protocols 23a9c5fff5SDavid Brownell slower. The diagnostics help catch the type of setup errors 24a9c5fff5SDavid Brownell that are most common when setting up new platforms or boards. 25a9c5fff5SDavid Brownell 26a9c5fff5SDavid Brownell# put expanders in the right section, in alphabetical order 27a9c5fff5SDavid Brownell 28a9c5fff5SDavid Brownellcomment "I2C GPIO expanders:" 29a9c5fff5SDavid Brownell 3015fae37dSDavid Brownellconfig GPIO_PCF857X 3115fae37dSDavid Brownell tristate "PCF857x, PCA857x, and PCA967x I2C GPIO expanders" 3215fae37dSDavid Brownell depends on I2C 3315fae37dSDavid Brownell help 3415fae37dSDavid Brownell Say yes here to provide access to most "quasi-bidirectional" I2C 3515fae37dSDavid Brownell GPIO expanders used for additional digital outputs or inputs. 3615fae37dSDavid Brownell Most of these parts are from NXP, though TI is a second source for 3715fae37dSDavid Brownell some of them. Compatible models include: 3815fae37dSDavid Brownell 3915fae37dSDavid Brownell 8 bits: pcf8574, pcf8574a, pca8574, pca8574a, 4015fae37dSDavid Brownell pca9670, pca9672, pca9674, pca9674a 4115fae37dSDavid Brownell 4215fae37dSDavid Brownell 16 bits: pcf8575, pcf8575c, pca8575, 4315fae37dSDavid Brownell pca9671, pca9673, pca9675 4415fae37dSDavid Brownell 4515fae37dSDavid Brownell Your board setup code will need to declare the expanders in 4615fae37dSDavid Brownell use, and assign numbers to the GPIOs they expose. Those GPIOs 4715fae37dSDavid Brownell can then be used from drivers and other kernel code, just like 4815fae37dSDavid Brownell other GPIOs, but only accessible from task contexts. 4915fae37dSDavid Brownell 5015fae37dSDavid Brownell This driver provides an in-kernel interface to those GPIOs using 5115fae37dSDavid Brownell platform-neutral GPIO calls. 5215fae37dSDavid Brownell 53a9c5fff5SDavid Brownellcomment "SPI GPIO expanders:" 54a9c5fff5SDavid Brownell 55*e58b9e27SDavid Brownellconfig GPIO_MCP23S08 56*e58b9e27SDavid Brownell tristate "Microchip MCP23S08 I/O expander" 57*e58b9e27SDavid Brownell depends on SPI_MASTER 58*e58b9e27SDavid Brownell help 59*e58b9e27SDavid Brownell SPI driver for Microchip MCP23S08 I/O expander. This provides 60*e58b9e27SDavid Brownell a GPIO interface supporting inputs and outputs. 61*e58b9e27SDavid Brownell 62a9c5fff5SDavid Brownellendmenu 63