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*15fae37dSDavid Brownellconfig GPIO_PCF857X 31*15fae37dSDavid Brownell tristate "PCF857x, PCA857x, and PCA967x I2C GPIO expanders" 32*15fae37dSDavid Brownell depends on I2C 33*15fae37dSDavid Brownell help 34*15fae37dSDavid Brownell Say yes here to provide access to most "quasi-bidirectional" I2C 35*15fae37dSDavid Brownell GPIO expanders used for additional digital outputs or inputs. 36*15fae37dSDavid Brownell Most of these parts are from NXP, though TI is a second source for 37*15fae37dSDavid Brownell some of them. Compatible models include: 38*15fae37dSDavid Brownell 39*15fae37dSDavid Brownell 8 bits: pcf8574, pcf8574a, pca8574, pca8574a, 40*15fae37dSDavid Brownell pca9670, pca9672, pca9674, pca9674a 41*15fae37dSDavid Brownell 42*15fae37dSDavid Brownell 16 bits: pcf8575, pcf8575c, pca8575, 43*15fae37dSDavid Brownell pca9671, pca9673, pca9675 44*15fae37dSDavid Brownell 45*15fae37dSDavid Brownell Your board setup code will need to declare the expanders in 46*15fae37dSDavid Brownell use, and assign numbers to the GPIOs they expose. Those GPIOs 47*15fae37dSDavid Brownell can then be used from drivers and other kernel code, just like 48*15fae37dSDavid Brownell other GPIOs, but only accessible from task contexts. 49*15fae37dSDavid Brownell 50*15fae37dSDavid Brownell This driver provides an in-kernel interface to those GPIOs using 51*15fae37dSDavid Brownell platform-neutral GPIO calls. 52*15fae37dSDavid Brownell 53a9c5fff5SDavid Brownellcomment "SPI GPIO expanders:" 54a9c5fff5SDavid Brownell 55a9c5fff5SDavid Brownellendmenu 56