#
# GPIO infrastructure and drivers
#

menuconfig GPIO
	bool "GPIO support"
	default y
	help
	  Enable support for GPIOs (General-purpose Input/Output) in U-Boot.
	  GPIOs allow U-Boot to read the state of an input line (high or
	  low) and set the state of an output line. This can be used to
	  drive LEDs, control power to various system parts and read user
	  input. GPIOs can be useful to enable a 'sign-of-life' LED,
	  for example. Enable this option to build the drivers in
	  drivers/gpio as part of an U-Boot build.

if GPIO

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 SPL_DM_GPIO
	bool "Enable Driver Model for GPIO drivers in SPL"
	depends on DM_GPIO && SPL_DM && SPL_GPIO
	default y
	help
	  Enable driver model for GPIO access in SPL. 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 TPL_DM_GPIO
	bool "Enable Driver Model for GPIO drivers in TPL"
	depends on DM_GPIO && TPL_DM && TPL_GPIO
	default y
	help
	  Enable driver model for GPIO access in TPL. 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 GPIO_HOG
	bool "Enable GPIO hog support"
	depends on DM_GPIO
	help
	  Enable gpio hog support
	  The GPIO chip may contain GPIO hog definitions. GPIO hogging
	  is a mechanism providing automatic GPIO request and config-
	  uration as part of the gpio-controller's driver probe function.

config DM_GPIO_LOOKUP_LABEL
	bool "Enable searching for gpio labelnames"
	depends on DM_GPIO
	help
	  This option enables searching for gpio names in
	  the defined gpio labels, if the search for the
	  gpio bank name failed. This makes sense if you use
	  different gpios on different hardware versions
	  for the same functionality in board code.

config SPL_DM_GPIO_LOOKUP_LABEL
	bool "Enable searching for gpio labelnames"
	depends on DM_GPIO && SPL_DM && SPL_GPIO
	help
	  This option enables searching for gpio names in
	  the defined gpio labels, if the search for the
	  gpio bank name failed. This makes sense if you use
	  different gpios on different hardware versions
	  for the same functionality in board code.

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 BCM6345_GPIO
	bool "BCM6345 GPIO driver"
	depends on DM_GPIO && (ARCH_BMIPS || ARCH_BCM68360 || \
			       ARCH_BCM6858 || ARCH_BCM63158 || \
			       ARCH_BCM6753)
	help
	  This driver supports the GPIO banks on BCM6345 SoCs.

config CORTINA_GPIO
	bool "Cortina-Access GPIO driver"
	depends on DM_GPIO && CORTINA_PLATFORM
	help
	  Enable support for the GPIO controller in Cortina CAxxxx SoCs.
	  This driver supports all CPU ISA variants supported by Cortina
	  Access CAxxxx SoCs.

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

config AT91_GPIO
	bool "AT91 PIO GPIO driver"
	help
	  Say yes here to select AT91 PIO GPIO driver. AT91 PIO
	  controller manages up to 32 fully programmable input/output
	  lines. Each I/O line may be dedicated as a general-purpose
	  I/O or be assigned to a function of an embedded peripheral.
	  The assignment to a function of an embedded peripheral is
	  the responsibility of AT91 Pinctrl driver. This driver is
	  responsible for the general-purpose I/O.

config ATMEL_PIO4
	bool "ATMEL PIO4 driver"
	depends on DM_GPIO
	help
	  Say yes here to support the Atmel PIO4 driver.
	  The PIO4 is new version of Atmel PIO controller, which manages
	  up to 128 fully programmable input/output lines. Each I/O line
	  may be dedicated as a general purpose I/O or be assigned to
	  a function of an embedded peripheral.

config ASPEED_GPIO
	bool "Aspeed GPIO Driver"
	help
	  Say yes here to support the Aspeed GPIO driver. The controller
	  is found in the AST2400, AST2500 and AST2600 BMC SoCs and
	  provides access to over 200 GPIOs on each chip.

config DA8XX_GPIO
	bool "DA8xx GPIO Driver"
	help
	  This driver supports the DA8xx GPIO controller

config FXL6408_GPIO
	bool "FXL6408 I2C GPIO expander driver"
	depends on DM_GPIO && DM_I2C
	help
	  This driver supports the Fairchild FXL6408 device. FXL6408 is a
	  fully configurable 8-bit I2C-controlled GPIO expander.

config INTEL_BROADWELL_GPIO
	bool "Intel Broadwell GPIO driver"
	depends on DM
	help
	  This driver supports Broadwell U devices which have an expanded
	  GPIO feature set. The difference is large enough to merit a separate
	  driver from the common Intel ICH6 driver. It supports a total of
	  95 GPIOs which can be configured from the device tree.

config INTEL_GPIO
	bool "Intel generic GPIO driver"
	depends on DM_GPIO
	help
	  Say yes here to select Intel generic GPIO driver. This controller
	  supports recent chips (e.g. Apollo Lake). It permits basic GPIO
	  control including setting pins to input/output. It makes use of its
	  parent pinctrl driver to actually effect changes.

config INTEL_ICH6_GPIO
	bool "Intel ICH6 compatible legacy GPIO driver"
	depends on DM_GPIO
	help
	  Say yes here to select Intel ICH6 compatible legacy GPIO driver.

config IMX_RGPIO2P
	bool "i.MX7ULP RGPIO2P driver"
	depends on DM
	help
	  This driver supports i.MX7ULP Rapid GPIO2P controller.

config IPROC_GPIO
	bool "Broadcom iProc GPIO driver(without pinconf)"
	help
	  The Broadcom iProc based SoCs- Cygnus, NS2, NS3, NSP and Stingray,
	  use the same GPIO Controller IP hence this driver could be used
	  for all.

	  The Broadcom iProc based SoCs have multiple GPIO controllers and only
	  the always-ON GPIO controller (CRMU/AON) is supported by this driver.

config HSDK_CREG_GPIO
	bool "HSDK CREG GPIO griver"
	depends on DM_GPIO
	help
	  This driver supports CREG GPIOs on Synopsys HSDK SOC.

config KIRKWOOD_GPIO
	bool "Kirkwood GPIO driver"
	help
	  This drdiver supports GPIOs on Kirkwood platforms

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

config MAX7320_GPIO
	bool "MAX7320 I2C GPIO Expander driver"
	depends on DM_GPIO && DM_I2C
	help
	 Support for MAX7320 I2C 8/16-bit GPIO expander.
	 original maxim device has 8 push/pull outputs,
	 some clones offers 16bit.

config MCP230XX_GPIO
	bool "MCP230XX GPIO driver"
	depends on DM
	help
	  Support for Microchip's MCP230XX I2C connected GPIO devices.
	  The following chips are supported:
	   - MCP23008
	   - MCP23017
	   - MCP23018

config MSCC_SGPIO
	bool "Microsemi Serial GPIO driver"
	depends on DM_GPIO && SOC_VCOREIII
	help
	  Support for the VCoreIII SoC serial GPIO device. By using a
          serial interface, the SIO controller significantly extends
          the number of available GPIOs with a minimum number of
          additional pins on the device. The primary purpose of the
          SIO controller is to connect control signals from SFP
          modules and to act as an LED controller.

config MSM_GPIO
	bool "Qualcomm GPIO driver"
	depends on DM_GPIO
	help
	  Support GPIO controllers on Qualcomm Snapdragon family of SoCs.
	  This controller have single bank (default name "soc"), every
	  gpio has it's own set of registers.
	  Only simple GPIO operations are supported (get/set, change of
	  direction and checking pin function).
	  Supported devices:
	  - APQ8016
	  - MSM8916

config MXC_GPIO
	bool "Freescale/NXP MXC GPIO driver"
	help
	  Support GPIO controllers on various i.MX platforms

config MXS_GPIO
	bool "Freescale/NXP MXS GPIO driver"
	help
	  Support GPIO controllers on i.MX23 and i.MX28 platforms

config OMAP_GPIO
	bool "TI OMAP GPIO driver"
	depends on ARCH_OMAP2PLUS
	default y
	help
	  Support GPIO controllers on the TI OMAP3/4/5 and related (such as
	  AM335x/AM43xx/AM57xx/DRA7xx/etc) families of SoCs.

config CMD_PCA953X
	bool "Enable the pca953x command"
	help
	  Deprecated: This should be converted to driver model.

	  This command provides access to a pca953x GPIO device using the
	  legacy GPIO interface. Several subcommands are provided which mirror
	  the standard 'gpio' command. It should use that instead.

config PM8916_GPIO
	bool "Qualcomm PM8916 PMIC GPIO/keypad driver"
	depends on DM_GPIO && PMIC_PM8916
	help
	  Support for GPIO pins and power/reset buttons found on
	  Qualcomm PM8916 PMIC.
	  Default name for GPIO bank is "pm8916".
	  Power and reset buttons are placed in "pm8916_key" bank and
          have gpio numbers 0 and 1 respectively.

config PCF8575_GPIO
	bool "PCF8575 I2C GPIO Expander driver"
	depends on DM_GPIO && DM_I2C
	help
	 Support for PCF8575 I2C 16-bit GPIO expander. Most of these
	 chips are from NXP and TI.

config RCAR_GPIO
	bool "Renesas RCar GPIO driver"
	depends on DM_GPIO && ARCH_RMOBILE
	help
	  This driver supports the GPIO banks on Renesas RCar SoCs.

config RZA1_GPIO
	bool "Renesas RZ/A1 GPIO driver"
	depends on DM_GPIO && RZA1
	help
	  This driver supports the GPIO banks on Renesas RZ/A1 R7S72100 SoCs.

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 SUNXI_GPIO
	bool "Allwinner GPIO driver"
	depends on ARCH_SUNXI
	help
	  Support the GPIO device in Allwinner SoCs.

config XILINX_GPIO
	bool "Xilinx GPIO driver"
	depends on DM_GPIO
	help
	  This config enable the Xilinx GPIO driver for Microblaze.

config CMD_TCA642X
	bool "tca642x - Command to access tca642x state"
	help
	  DEPRECATED - This needs conversion to driver model

	  This provides a way to looking at the pin state of this device.
	  This mirrors the 'gpio' command and that should be used in preference
	  to custom code.

config TEGRA_GPIO
	bool "Tegra20..210 GPIO driver"
	depends on DM_GPIO
	help
	  Support for the GPIO controller contained in NVIDIA Tegra20 through
	  Tegra210.

config TEGRA186_GPIO
	bool "Tegra186 GPIO driver"
	depends on DM_GPIO
	help
	  Support for the GPIO controller contained in NVIDIA Tegra186. This
	  covers both the "main" and "AON" controller instances, even though
	  they have slightly different register layout.

config GPIO_UNIPHIER
	bool "UniPhier GPIO"
	depends on ARCH_UNIPHIER
	help
	  Say yes here to support UniPhier GPIOs.

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

config PIC32_GPIO
	bool "Microchip PIC32 GPIO driver"
	depends on DM_GPIO && MACH_PIC32
	default y
	help
	  Say yes here to support Microchip PIC32 GPIOs.

config OCTEON_GPIO
	bool "Octeon II/III/TX/TX2 GPIO driver"
	depends on DM_GPIO && PCI && (ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2)
	default y
	help
	  Add support for the Marvell Octeon GPIO driver. This is used with
	  various Octeon parts such as Octeon II/III and OcteonTX/TX2.
	  Octeon II/III has 32 GPIOs (count defined via DT) and OcteonTX/TX2
	  has 64 GPIOs (count defined via internal register).

config STM32_GPIO
	bool "ST STM32 GPIO driver"
	depends on DM_GPIO && (ARCH_STM32 || ARCH_STM32MP)
	default y
	help
	  Device model driver support for STM32 GPIO controller. It should be
	  usable on many stm32 families like stm32f4/f7/h7 and stm32mp1.
	  Tested on STM32F7.

config SIFIVE_GPIO
	bool "SiFive GPIO driver"
	depends on DM_GPIO
	help
	  Device model driver for GPIO controller present in SiFive FU540 SoC. This
	  driver enables GPIO interface on HiFive Unleashed A00 board.

config MVEBU_GPIO
	bool "Marvell MVEBU GPIO driver"
	depends on DM_GPIO && (ARCH_MVEBU || ARCH_KIRKWOOD)
	default y
	help
	  Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs.

config ZYNQ_GPIO
	bool "Zynq GPIO driver"
	depends on DM_GPIO
	default y if ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL
	help
	  Supports GPIO access on Zynq SoC.

config DM_74X164
	bool "74x164 serial-in/parallel-out 8-bits shift register"
	depends on DM_GPIO
	help
	  Driver for 74x164 compatible serial-in/parallel-out 8-outputs
	  shift registers, such as 74lv165, 74hc595.
	  This driver can be used to provide access to more gpio outputs.

config DM_PCA953X
	bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports"
	depends on DM_GPIO && DM_I2C
	help
	  Say yes here to provide access to several register-oriented
	  SMBus I/O expanders, made mostly by NXP or TI.  Compatible
	  models include:

	  4 bits:	pca9536, pca9537

	  8 bits:	max7310, max7315, pca6107, pca9534, pca9538, pca9554,
			pca9556, pca9557, pca9574, tca6408, xra1202

	  16 bits:	max7312, max7313, pca9535, pca9539, pca9555, pca9575,
			tca6416

	  24 bits:	tca6424

	  40 bits:	pca9505, pca9698

	  Now, max 24 bits chips and PCA953X compatible chips are
	  supported

config SPL_DM_PCA953X
	bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports in SPL"
	depends on DM_GPIO
	help
	  Say yes here to provide access to several register-oriented
	  SMBus I/O expanders, made mostly by NXP or TI.  Compatible
	  models include:

	  4 bits:	pca9536, pca9537

	  8 bits:	max7310, max7315, pca6107, pca9534, pca9538, pca9554,
			pca9556, pca9557, pca9574, tca6408, xra1202

	  16 bits:	max7312, max7313, pca9535, pca9539, pca9555, pca9575,
			tca6416

	  24 bits:	tca6424

	  40 bits:	pca9505, pca9698

	  Now, max 24 bits chips and PCA953X compatible chips are
	  supported

config MPC8XXX_GPIO
	bool "Freescale MPC8XXX GPIO driver"
	depends on DM_GPIO
	help
	  This driver supports the built-in GPIO controller of MPC8XXX CPUs.
	  Each GPIO bank is identified by its own entry in the device tree,
	  i.e.

	  gpio-controller@fc00 {
		#gpio-cells = <2>;
		compatible = "fsl,pq3-gpio";
		reg = <0xfc00 0x100>
	  }

	  By default, each bank is assumed to have 32 GPIOs, but the ngpios
	  setting is honored, so the number of GPIOs for each bank is
	  configurable to match the actual GPIO count of the SoC (e.g. the
	  32/32/23 banks of the P1022 SoC).

	  Aside from the standard functions of input/output mode, and output
	  value setting, the open-drain feature, which can configure individual
	  GPIOs to work as open-drain outputs, is supported.

config MPC83XX_SPISEL_BOOT
	bool "Freescale MPC83XX SPISEL_BOOT driver"
	depends on DM_GPIO && ARCH_MPC830X
	help
	  GPIO driver to set/clear dedicated SPISEL_BOOT output on MPC83XX.

	  This pin is typically used as spi chip select to a spi nor flash.

config MT7620_GPIO
	bool "MediaTek MT7620 GPIO driver"
	depends on DM_GPIO && SOC_MT7620
	default y
	help
	  Device model driver for GPIO controller present in MediaTek MT7620
	  and earlier SoCs.

config MT7621_GPIO
	bool "MediaTek MT7621 GPIO driver"
	depends on DM_GPIO && SOC_MT7628
	default y
	help
	  Say yes here to support MediaTek MT7621 compatible GPIOs.

config NX_GPIO
	bool "Nexell GPIO driver"
	depends on DM_GPIO
	help
	  Support GPIO access on Nexell 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 NOMADIK_GPIO
	bool "Nomadik GPIO driver"
	depends on DM_GPIO
	help
	  Support GPIO access on ST-Ericsson Ux500 SoCs. The GPIOs are arranged
	  into a number of banks each with 32 GPIOs. The GPIOs for a device are
	  defined in the device tree with one node for each bank.

config ZYNQMP_GPIO_MODEPIN
	bool "ZynqMP gpio modepin"
	depends on DM_GPIO
	help
	  This config enables the ZynqMP gpio modepin driver. ZynqMP modepin
	  driver will set and get the status of PS_MODE pins. These modepins
	  are accessed using xilinx firmware. In modepin register, [3:0] bits
	  set direction, [7:4] bits read IO, [11:8] bits set/clear IO.

config SL28CPLD_GPIO
	bool "Kontron sl28cpld GPIO driver"
	depends on DM_GPIO && SL28CPLD
	help
	  Support GPIO access on Kontron sl28cpld board management controllers.

config SLG7XL45106_I2C_GPO
	bool "slg7xl45106 i2c gpo expander"
	depends on DM_GPIO
	help
	   Support for slg7xl45106 i2c gpo expander. It is an i2c based
	   8-bit gpo expander, all gpo lines are controlled by writing
	   value into data register.

endif
