#
# 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 VPL_DM_GPIO
	bool "Enable Driver Model for GPIO drivers in VPL"
	depends on DM_GPIO && VPL_DM && VPL_GPIO
	default y
	help
	  Enable driver model for GPIO access in VPL. 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 SPL_GPIO_HOG
	bool "Enable GPIO hog support in SPL"
	depends on SPL_GPIO
	help
	  Enable gpio hog support in SPL
	  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 SPL_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 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 BCM2835_GPIO
	bool "BCM2835 GPIO driver"
	depends on DM_GPIO

config BCM6345_GPIO
	bool "BCM6345 GPIO driver"
	depends on DM_GPIO && (ARCH_BMIPS || BCM6856 || \
			       BCM6858 || BCM63158 || BCM6855)
	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 HIKEY_GPIO
	bool "HI6220 GPIO driver"
	depends on DM_GPIO

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 NPCM_GPIO
	bool "Nuvoton NPCM GPIO driver"
	depends on DM_GPIO
	help
	  Support GPIO controllers on Nuvovon NPCM SoCs.
	  NPCM7xx/NPCM8xx contain 8 GPIO banks, each bank contains 32 pins.

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 QCOM_PMIC_GPIO
	bool "Qualcomm generic PMIC GPIO/keypad driver"
	depends on DM_GPIO && PMIC_QCOM
	help
	  Support for GPIO pins and power/reset buttons found on
	  Qualcomm SoCs PMIC.
	  Default name for GPIO bank is "pm8916".
	  Power and reset buttons are placed in "pwkey_qcom" 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
	select SPL_STRTO if SPL
	help
	  Support the GPIO device in Allwinner SoCs.

config SUNXI_NEW_PINCTRL
	bool
	depends on SUNXI_GPIO
	---help---
	The Allwinner D1 and other new SoCs use a different register map
	for the GPIO block, which we need to know about in the SPL.

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

config TCA642X
	bool "TCA642x legacy GPIO driver"

config CMD_TCA642X
	bool "tca642x - Command to access tca642x state"
	depends on TCA642X
	default y
	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 SPL_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 PCA953X
	bool "NXP's PCA953X series I2C GPIO (legacy driver)"
	depends on !DM_PCA953X

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 QE_GPIO
	bool "Freescale QUICC ENGINE GPIO driver"
	depends on DM_GPIO
	depends on QE
	help
	  This driver supports the QUICC Engine GPIOs of MPC83XX CPUs.
	  Each GPIO bank is identified by its own entry in the device tree,
	  i.e.

	  qe_pio_a: gpio-controller@1400 {
		compatible = "fsl,mpc8323-qe-pario-bank";
		reg = <0x1400 0x18>;
		gpio-controller;
		#gpio-cells = <2>;
	  };

	  Each bank has 32 GPIOs.

config MPC8XX_GPIO
	bool "Freescale MPC8XX GPIO driver"
	depends on DM_GPIO
	help
	  This driver supports parallel IO ports from MPC8XX CPUs.
	  Each GPIO bank is identified by its own entry in the device tree.

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_MT7621 || 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 SH_GPIO_PFC
	bool "Pinmuxed GPIO support for SuperH"
	depends on RCAR_GEN2 && !PINCTRL_PFC
	default y

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.

config TURRIS_OMNIA_MCU
	bool "Turris Omnia MCU GPIO driver"
	depends on DM_GPIO
	default y if TARGET_TURRIS_OMNIA
	help
	   Support for GPIOs on MCU connected to Turris Omnia via i2c.

config FTGPIO010
	bool "Faraday Technology FTGPIO010 driver"
	depends on DM_GPIO
	help
	   Support for GPIOs on Faraday Technology's FTGPIO010 controller.

config ADP5585_GPIO
	bool "ADP5585 GPIO driver"
	depends on DM_GPIO && DM_I2C
	help
	  Support ADP5585 GPIO expander.

config RZG2L_GPIO
	bool "Renesas RZ/G2L family GPIO driver"
	depends on DM_GPIO && PINCTRL_RZG2L
	help
	  Support the gpio functionality of the pin function controller (PFC)
	  on the Renesas RZ/G2L SoC family.

endif
