#
# GPIO infrastructure and expanders
#

config HAVE_GPIO_LIB
	bool
	help
	  Platforms select gpiolib if they use this infrastructure
	  for all their GPIOs, usually starting with ones integrated
	  into SOC processors.

menu "GPIO Support"
	depends on HAVE_GPIO_LIB

config DEBUG_GPIO
	bool "Debug GPIO calls"
	depends on DEBUG_KERNEL
	help
	  Say Y here to add some extra checks and diagnostics to GPIO calls.
	  The checks help ensure that GPIOs have been properly initialized
	  before they are used and that sleeping calls aren not made from
	  nonsleeping contexts.  They can make bitbanged serial protocols
	  slower.  The diagnostics help catch the type of setup errors
	  that are most common when setting up new platforms or boards.

# put expanders in the right section, in alphabetical order

comment "I2C GPIO expanders:"

config GPIO_PCA953X
	tristate "PCA953x I/O ports"
	depends on I2C
	help
	  Say yes here to support the PCA9534 (8-bit), PCA9535 (16-bit),
	  PCA9536 (4-bit), PCA9537 (4-bit), PCA9538 (8-bit), and PCA9539
	  (16-bit) I/O ports. These parts are made by NXP and TI.

	  This driver can also be built as a module.  If so, the module
	  will be called pca953x.

config GPIO_PCF857X
	tristate "PCF857x, PCA857x, and PCA967x I2C GPIO expanders"
	depends on I2C
	help
	  Say yes here to provide access to most "quasi-bidirectional" I2C
	  GPIO expanders used for additional digital outputs or inputs.
	  Most of these parts are from NXP, though TI is a second source for
	  some of them.  Compatible models include:

	  8 bits:   pcf8574, pcf8574a, pca8574, pca8574a,
	            pca9670, pca9672, pca9674, pca9674a

	  16 bits:  pcf8575, pcf8575c, pca8575,
	            pca9671, pca9673, pca9675

	  Your board setup code will need to declare the expanders in
	  use, and assign numbers to the GPIOs they expose.  Those GPIOs
	  can then be used from drivers and other kernel code, just like
	  other GPIOs, but only accessible from task contexts.

	  This driver provides an in-kernel interface to those GPIOs using
	  platform-neutral GPIO calls.

comment "SPI GPIO expanders:"

config GPIO_MCP23S08
	tristate "Microchip MCP23S08 I/O expander"
	depends on SPI_MASTER
	help
	  SPI driver for Microchip MCP23S08 I/O expander.  This provides
	  a GPIO interface supporting inputs and outputs.

endmenu
