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 30*f3dc3630SGuennadi Liakhovetskiconfig GPIO_PCA953X 31*f3dc3630SGuennadi Liakhovetski tristate "PCA953x I/O ports" 329e60fdcfSeric miao depends on I2C 339e60fdcfSeric miao help 34*f3dc3630SGuennadi Liakhovetski Say yes here to support the PCA9534 (8-bit), PCA9535 (16-bit), 35*f3dc3630SGuennadi Liakhovetski PCA9536 (4-bit), PCA9537 (4-bit), PCA9538 (8-bit), and PCA9539 36*f3dc3630SGuennadi Liakhovetski (16-bit) I/O ports. These parts are made by NXP and TI. 379e60fdcfSeric miao 389e60fdcfSeric miao This driver can also be built as a module. If so, the module 39*f3dc3630SGuennadi Liakhovetski will be called pca953x. 409e60fdcfSeric miao 4115fae37dSDavid Brownellconfig GPIO_PCF857X 4215fae37dSDavid Brownell tristate "PCF857x, PCA857x, and PCA967x I2C GPIO expanders" 4315fae37dSDavid Brownell depends on I2C 4415fae37dSDavid Brownell help 4515fae37dSDavid Brownell Say yes here to provide access to most "quasi-bidirectional" I2C 4615fae37dSDavid Brownell GPIO expanders used for additional digital outputs or inputs. 4715fae37dSDavid Brownell Most of these parts are from NXP, though TI is a second source for 4815fae37dSDavid Brownell some of them. Compatible models include: 4915fae37dSDavid Brownell 5015fae37dSDavid Brownell 8 bits: pcf8574, pcf8574a, pca8574, pca8574a, 5115fae37dSDavid Brownell pca9670, pca9672, pca9674, pca9674a 5215fae37dSDavid Brownell 5315fae37dSDavid Brownell 16 bits: pcf8575, pcf8575c, pca8575, 5415fae37dSDavid Brownell pca9671, pca9673, pca9675 5515fae37dSDavid Brownell 5615fae37dSDavid Brownell Your board setup code will need to declare the expanders in 5715fae37dSDavid Brownell use, and assign numbers to the GPIOs they expose. Those GPIOs 5815fae37dSDavid Brownell can then be used from drivers and other kernel code, just like 5915fae37dSDavid Brownell other GPIOs, but only accessible from task contexts. 6015fae37dSDavid Brownell 6115fae37dSDavid Brownell This driver provides an in-kernel interface to those GPIOs using 6215fae37dSDavid Brownell platform-neutral GPIO calls. 6315fae37dSDavid Brownell 64a9c5fff5SDavid Brownellcomment "SPI GPIO expanders:" 65a9c5fff5SDavid Brownell 66e58b9e27SDavid Brownellconfig GPIO_MCP23S08 67e58b9e27SDavid Brownell tristate "Microchip MCP23S08 I/O expander" 68e58b9e27SDavid Brownell depends on SPI_MASTER 69e58b9e27SDavid Brownell help 70e58b9e27SDavid Brownell SPI driver for Microchip MCP23S08 I/O expander. This provides 71e58b9e27SDavid Brownell a GPIO interface supporting inputs and outputs. 72e58b9e27SDavid Brownell 73a9c5fff5SDavid Brownellendmenu 74