#
# GPIO infrastructure and drivers
#

menu "GPIO Support"

config DM_GPIO
	bool "Enable Driver Model for GPIO drivers"
	depends on DM
	help
	  Enable driver model for GPIO access. The standard GPIO
	  interface (gpio_get_value(), etc.) is then implemented by
	  the GPIO uclass. Drivers provide methods to query the
	  particular GPIOs that they provide. The uclass interface
	  is defined in include/asm-generic/gpio.h.

config ALTERA_PIO
	bool "Altera PIO driver"
	depends on DM_GPIO
	help
	  Select this to enable PIO for Altera devices. Please find
	  details on the "Embedded Peripherals IP User Guide" of Altera.

config DWAPB_GPIO
	bool "DWAPB GPIO driver"
	depends on DM && DM_GPIO
	default n
	help
	  Support for the Designware APB GPIO driver.

config LPC32XX_GPIO
	bool "LPC32XX GPIO driver"
	depends on DM
	default n
	help
	  Support for the LPC32XX GPIO driver.

config ROCKCHIP_GPIO
	bool "Rockchip GPIO driver"
	depends on DM_GPIO
	help
	  Support GPIO access on Rockchip SoCs. The GPIOs are arranged into
	  a number of banks (different for each SoC type) each with 32 GPIOs.
	  The GPIOs for a device are defined in the device tree with one node
	  for each bank.

config SANDBOX_GPIO
	bool "Enable sandbox GPIO driver"
	depends on SANDBOX && DM && DM_GPIO
	help
	  This driver supports some simulated GPIOs which can be adjusted
	  using 'back door' functions like sandbox_gpio_set_value(). Then the
	  GPIOs can be inspected through the normal get_get_value()
	  interface. The purpose of this is to allow GPIOs to be used as
	  normal in sandbox, perhaps with test code actually driving the
	  behaviour of those GPIOs.

config SANDBOX_GPIO_COUNT
	int "Number of sandbox GPIOs"
	depends on SANDBOX_GPIO
	default 128
	help
	  The sandbox driver can support any number of GPIOs. Generally these
	  are specified using the device tree. But you can also have a number
	  of 'anonymous' GPIOs that do not belong to any device or bank.
	  Select a suitable value depending on your needs.

config VYBRID_GPIO
	bool "Vybrid GPIO driver"
	depends on DM
	default n
	help
	  Say yes here to support Vybrid vf610 GPIOs.

endmenu
