#
# GPIO infrastructure and drivers
#

config ARCH_HAVE_CUSTOM_GPIO_H
	bool
	help
	  Selecting this config option from the architecture Kconfig allows
	  the architecture to provide a custom asm/gpio.h implementation
	  overriding the default implementations.  New uses of this are
	  strongly discouraged.

menuconfig GPIOLIB
	bool "GPIO Support"
	help
	  This enables GPIO support through the generic GPIO library.
	  You only need to enable this, if you also want to enable
	  one or more of the GPIO drivers below.

	  If unsure, say N.

if GPIOLIB

config GPIOLIB_FASTPATH_LIMIT
	int "Maximum number of GPIOs for fast path"
	range 32 512
	default 512
	help
	  This adjusts the point at which certain APIs will switch from
	  using a stack allocated buffer to a dynamically allocated buffer.

	  You shouldn't need to change this unless you really need to
	  optimize either stack space or performance. Change this carefully
	  since setting an incorrect value could cause stack corruption.

config OF_GPIO
	def_bool y
	depends on OF
	depends on HAS_IOMEM

config GPIO_ACPI
	def_bool y
	depends on ACPI

config GPIOLIB_IRQCHIP
	select IRQ_DOMAIN
	bool

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.
	  These checks help ensure that GPIOs have been properly initialized
	  before they are used, and that sleeping calls are not made from
	  non-sleeping 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.

config GPIO_SYSFS
	bool "/sys/class/gpio/... (sysfs interface)"
	depends on SYSFS
	help
	  Say Y here to add a sysfs interface for GPIOs.

	  This is mostly useful to work around omissions in a system's
	  kernel support.  Those are common in custom and semicustom
	  hardware assembled using standard kernels with a minimum of
	  custom patches.  In those cases, userspace code may import
	  a given GPIO from the kernel, if no kernel driver requested it.

	  Kernel drivers may also request that a particular GPIO be
	  exported to userspace; this can be useful when debugging.

config GPIO_GENERIC
	depends on HAS_IOMEM # Only for IOMEM drivers
	tristate

# put drivers in the right section, in alphabetical order

# This symbol is selected by both I2C and SPI expanders
config GPIO_MAX730X
	tristate

menu "Memory mapped GPIO drivers"
	depends on HAS_IOMEM

config GPIO_74XX_MMIO
	tristate "GPIO driver for 74xx-ICs with MMIO access"
	depends on OF_GPIO
	select GPIO_GENERIC
	help
	  Say yes here to support GPIO functionality for 74xx-compatible ICs
	  with MMIO access. Compatible models include:
	    1 bit:	741G125 (Input), 741G74 (Output)
	    2 bits:	742G125 (Input), 7474 (Output)
	    4 bits:	74125 (Input), 74175 (Output)
	    6 bits:	74365 (Input), 74174 (Output)
	    8 bits:	74244 (Input), 74273 (Output)
	    16 bits:	741624 (Input), 7416374 (Output)

config GPIO_ALTERA
	tristate "Altera GPIO"
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  Say Y or M here to build support for the Altera PIO device.

	  If driver is built as a module it will be called gpio-altera.

config GPIO_AMDPT
	tristate "AMD Promontory GPIO support"
	depends on ACPI
	select GPIO_GENERIC
	help
	  driver for GPIO functionality on Promontory IOHub
	  Require ACPI ASL code to enumerate as a platform device.

config GPIO_ASPEED
	tristate "Aspeed GPIO support"
	depends on (ARCH_ASPEED || COMPILE_TEST) && OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  Say Y here to support Aspeed AST2400 and AST2500 GPIO controllers.

config GPIO_ATH79
	tristate "Atheros AR71XX/AR724X/AR913X GPIO support"
	default y if ATH79
	depends on ATH79 || COMPILE_TEST
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	help
	  Select this option to enable GPIO driver for
	  Atheros AR71XX/AR724X/AR913X SoC devices.

config GPIO_RASPBERRYPI_EXP
	tristate "Raspberry Pi 3 GPIO Expander"
	default RASPBERRYPI_FIRMWARE
	depends on OF_GPIO
	# Make sure not 'y' when RASPBERRYPI_FIRMWARE is 'm'. This can only
	# happen when COMPILE_TEST=y, hence the added !RASPBERRYPI_FIRMWARE.
	depends on (ARCH_BCM2835 && RASPBERRYPI_FIRMWARE) || (COMPILE_TEST && !RASPBERRYPI_FIRMWARE)
	help
	  Turn on GPIO support for the expander on Raspberry Pi 3 boards, using
	  the firmware mailbox to communicate with VideoCore on BCM283x chips.

config GPIO_BCM_KONA
	bool "Broadcom Kona GPIO"
	depends on OF_GPIO && (ARCH_BCM_MOBILE || COMPILE_TEST)
	help
	  Turn on GPIO support for Broadcom "Kona" chips.

config GPIO_BRCMSTB
	tristate "BRCMSTB GPIO support"
	default y if (ARCH_BRCMSTB || BMIPS_GENERIC)
	depends on OF_GPIO && (ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST)
	select GPIO_GENERIC
	select IRQ_DOMAIN
	help
	  Say yes here to enable GPIO support for Broadcom STB (BCM7XXX) SoCs.

config GPIO_CADENCE
	tristate "Cadence GPIO support"
	depends on OF_GPIO
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to enable support for Cadence GPIO controller.

config GPIO_CLPS711X
	tristate "CLPS711X GPIO support"
	depends on ARCH_CLPS711X || COMPILE_TEST
	select GPIO_GENERIC
	help
	  Say yes here to support GPIO on CLPS711X SoCs.

config GPIO_DAVINCI
	bool "TI Davinci/Keystone GPIO support"
	default y if ARCH_DAVINCI
	depends on ARM && (ARCH_DAVINCI || ARCH_KEYSTONE)
	help
	  Say yes here to enable GPIO support for TI Davinci/Keystone SoCs.

config GPIO_DWAPB
	tristate "Synopsys DesignWare APB GPIO driver"
	select GPIO_GENERIC
	select GENERIC_IRQ_CHIP
	help
	  Say Y or M here to build support for the Synopsys DesignWare APB
	  GPIO block.

config GPIO_EIC_SPRD
	tristate "Spreadtrum EIC support"
	depends on ARCH_SPRD || COMPILE_TEST
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support Spreadtrum EIC device.

config GPIO_EM
	tristate "Emma Mobile GPIO"
	depends on (ARCH_EMEV2 || COMPILE_TEST) && OF_GPIO
	help
	  Say yes here to support GPIO on Renesas Emma Mobile SoCs.

config GPIO_EP93XX
	def_bool y
	depends on ARCH_EP93XX
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP

config GPIO_EXAR
	tristate "Support for GPIO pins on XR17V352/354/358"
	depends on SERIAL_8250_EXAR
	help
	  Selecting this option will enable handling of GPIO pins present
	  on Exar XR17V352/354/358 chips.

config GPIO_GE_FPGA
	bool "GE FPGA based GPIO"
	depends on GE_FPGA
	select GPIO_GENERIC
	help
	  Support for common GPIO functionality provided on some GE Single Board
	  Computers.

	  This driver provides basic support (configure as input or output, read
	  and write pin state) for GPIO implemented in a number of GE single
	  board computers.

config GPIO_FTGPIO010
	bool "Faraday FTGPIO010 GPIO"
	depends on OF_GPIO
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	default (ARCH_GEMINI || ARCH_MOXART)
	help
	  Support for common GPIOs from the Faraday FTGPIO010 IP core, found in
	  Cortina systems Gemini platforms, Moxa ART and others.

config GPIO_GENERIC_PLATFORM
	tristate "Generic memory-mapped GPIO controller support (MMIO platform device)"
	select GPIO_GENERIC
	help
	  Say yes here to support basic platform_device memory-mapped GPIO controllers.

config GPIO_GRGPIO
	tristate "Aeroflex Gaisler GRGPIO support"
	depends on OF_GPIO
	select GPIO_GENERIC
	select IRQ_DOMAIN
	help
	  Select this to support Aeroflex Gaisler GRGPIO cores from the GRLIB
	  VHDL IP core library.

config GPIO_HLWD
	tristate "Nintendo Wii (Hollywood) GPIO"
	depends on OF_GPIO
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	help
	  Select this to support the GPIO controller of the Nintendo Wii.

	  If unsure, say N.

config GPIO_ICH
	tristate "Intel ICH GPIO"
	depends on PCI && X86
	select MFD_CORE
	select LPC_ICH
	help
	  Say yes here to support the GPIO functionality of a number of Intel
	  ICH-based chipsets.  Currently supported devices: ICH6, ICH7, ICH8
	  ICH9, ICH10, Series 5/3400 (eg Ibex Peak), Series 6/C200 (eg
	  Cougar Point), NM10 (Tiger Point), and 3100 (Whitmore Lake).

	  If unsure, say N.

config GPIO_IOP
	tristate "Intel IOP GPIO"
	depends on ARCH_IOP32X || ARCH_IOP33X || COMPILE_TEST
	select GPIO_GENERIC
	help
	  Say yes here to support the GPIO functionality of a number of Intel
	  IOP32X or IOP33X.

	  If unsure, say N.

config GPIO_IXP4XX
	bool "Intel IXP4xx GPIO"
	depends on ARM # For <asm/mach-types.h>
	depends on ARCH_IXP4XX
	select GPIO_GENERIC
	select IRQ_DOMAIN
	select IRQ_DOMAIN_HIERARCHY
	help
	  Say yes here to support the GPIO functionality of a number of Intel
	  IXP4xx series of chips.

	  If unsure, say N.

config GPIO_LOONGSON
	bool "Loongson-2/3 GPIO support"
	depends on CPU_LOONGSON2 || CPU_LOONGSON3
	help
	  driver for GPIO functionality on Loongson-2F/3A/3B processors.

config GPIO_LPC18XX
	tristate "NXP LPC18XX/43XX GPIO support"
	default y if ARCH_LPC18XX
	depends on OF_GPIO && (ARCH_LPC18XX || COMPILE_TEST)
	select IRQ_DOMAIN_HIERARCHY
	help
	  Select this option to enable GPIO driver for
	  NXP LPC18XX/43XX devices.

config GPIO_LYNXPOINT
	tristate "Intel Lynxpoint GPIO support"
	depends on ACPI && X86
	select GPIOLIB_IRQCHIP
	help
	  driver for GPIO functionality on Intel Lynxpoint PCH chipset
	  Requires ACPI device enumeration code to set up a platform device.

config GPIO_MB86S7X
	tristate "GPIO support for Fujitsu MB86S7x Platforms"
	help
	  Say yes here to support the GPIO controller in Fujitsu MB86S70 SoCs.

config GPIO_MENZ127
	tristate "MEN 16Z127 GPIO support"
	depends on MCB
	select GPIO_GENERIC
	help
	  Say yes here to support the MEN 16Z127 GPIO Controller

config GPIO_MM_LANTIQ
	bool "Lantiq Memory mapped GPIOs"
	depends on LANTIQ && SOC_XWAY
	help
	  This enables support for memory mapped GPIOs on the External Bus Unit
	  (EBU) found on Lantiq SoCs. The gpios are output only as they are
	  created by attaching a 16bit latch to the bus.

config GPIO_MPC5200
	def_bool y
	depends on PPC_MPC52xx

config GPIO_MPC8XXX
	bool "MPC512x/MPC8xxx/QorIQ GPIO support"
	depends on PPC_MPC512x || PPC_MPC831x || PPC_MPC834x || PPC_MPC837x || \
		   FSL_SOC_BOOKE || PPC_86xx || ARCH_LAYERSCAPE || ARM || \
		   COMPILE_TEST
	select GPIO_GENERIC
	select IRQ_DOMAIN
	help
	  Say Y here if you're going to use hardware that connects to the
	  MPC512x/831x/834x/837x/8572/8610/QorIQ GPIOs.

config GPIO_MT7621
	bool "Mediatek MT7621 GPIO Support"
	depends on SOC_MT7620 || SOC_MT7621 || COMPILE_TEST
	depends on OF_GPIO
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support the Mediatek MT7621 SoC GPIO device

config GPIO_MVEBU
	def_bool y
	depends on PLAT_ORION || ARCH_MVEBU
	depends on OF_GPIO
	select GENERIC_IRQ_CHIP
	select REGMAP_MMIO

config GPIO_MXC
	def_bool y
	depends on ARCH_MXC
	select GPIO_GENERIC
	select GENERIC_IRQ_CHIP

config GPIO_MXS
	def_bool y
	depends on ARCH_MXS
	select GPIO_GENERIC
	select GENERIC_IRQ_CHIP

config GPIO_OCTEON
	tristate "Cavium OCTEON GPIO"
	depends on GPIOLIB && CAVIUM_OCTEON_SOC
	default y
	help
	  Say yes here to support the on-chip GPIO lines on the OCTEON
	  family of SOCs.

config GPIO_OMAP
	tristate "TI OMAP GPIO support" if ARCH_OMAP2PLUS || COMPILE_TEST
	default y if ARCH_OMAP
	depends on ARM
	select GENERIC_IRQ_CHIP
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to enable GPIO support for TI OMAP SoCs.

config GPIO_PL061
	bool "PrimeCell PL061 GPIO support"
	depends on ARM_AMBA
	select IRQ_DOMAIN
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support the PrimeCell PL061 GPIO device

config GPIO_PMIC_EIC_SPRD
	tristate "Spreadtrum PMIC EIC support"
	depends on MFD_SC27XX_PMIC || COMPILE_TEST
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support Spreadtrum PMIC EIC device.

config GPIO_PXA
	bool "PXA GPIO support"
	depends on ARCH_PXA || ARCH_MMP
	help
	  Say yes here to support the PXA GPIO device

config GPIO_RCAR
	tristate "Renesas R-Car GPIO"
	depends on ARCH_RENESAS || COMPILE_TEST
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support GPIO on Renesas R-Car SoCs.

config GPIO_REG
	bool
	help
	  A 32-bit single register GPIO fixed in/out implementation.  This
	  can be used to represent any register as a set of GPIO signals.

config GPIO_SAMA5D2_PIOBU
	tristate "SAMA5D2 PIOBU GPIO support"
	depends on MFD_SYSCON
	depends on OF_GPIO
	select GPIO_SYSCON
	help
	  Say yes here to use the PIOBU pins as GPIOs.

	  PIOBU pins on the SAMA5D2 can be used as GPIOs.
	  The difference from regular GPIOs is that they
	  maintain their value during backup/self-refresh.

config GPIO_SIOX
	tristate "SIOX GPIO support"
	depends on SIOX
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support SIOX I/O devices. These are units connected
	  via a SIOX bus and have a number of fixed-direction I/O lines.

config GPIO_SNPS_CREG
	bool "Synopsys GPIO via CREG (Control REGisters) driver"
	depends on ARC || COMPILE_TEST
	depends on OF_GPIO
	help
	  This driver supports GPIOs via CREG on various Synopsys SoCs.
	  This is a single-register MMIO GPIO driver for complex cases
	  where only several fields in register belong to GPIO lines and
	  each GPIO line owns a field with different length and on/off value.

config GPIO_SPEAR_SPICS
	bool "ST SPEAr13xx SPI Chip Select as GPIO support"
	depends on PLAT_SPEAR
	select GENERIC_IRQ_CHIP
	help
	  Say yes here to support ST SPEAr SPI Chip Select as GPIO device

config GPIO_SPRD
	tristate "Spreadtrum GPIO support"
	depends on ARCH_SPRD || COMPILE_TEST
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support Spreadtrum GPIO device.

config GPIO_STA2X11
	bool "STA2x11/ConneXt GPIO support"
	depends on MFD_STA2X11
	select GENERIC_IRQ_CHIP
	help
	  Say yes here to support the STA2x11/ConneXt GPIO device.
	  The GPIO module has 128 GPIO pins with alternate functions.

config GPIO_STP_XWAY
	bool "XWAY STP GPIOs"
	depends on SOC_XWAY
	help
	  This enables support for the Serial To Parallel (STP) unit found on
	  XWAY SoC. The STP allows the SoC to drive a shift registers cascade,
	  that can be up to 24 bit. This peripheral is aimed at driving leds.
	  Some of the gpios/leds can be auto updated by the soc with dsl and
	  phy status.

config GPIO_SYSCON
	tristate "GPIO based on SYSCON"
	depends on MFD_SYSCON && OF
	help
	  Say yes here to support GPIO functionality though SYSCON driver.

config GPIO_TB10X
	bool
	select GPIO_GENERIC
	select GENERIC_IRQ_CHIP
	select OF_GPIO

config GPIO_TEGRA
	bool "NVIDIA Tegra GPIO support"
	default ARCH_TEGRA
	depends on ARCH_TEGRA || COMPILE_TEST
	depends on OF_GPIO
	help
	  Say yes here to support GPIO pins on NVIDIA Tegra SoCs.

config GPIO_TEGRA186
	tristate "NVIDIA Tegra186 GPIO support"
	default ARCH_TEGRA_186_SOC
	depends on ARCH_TEGRA_186_SOC || COMPILE_TEST
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support GPIO pins on NVIDIA Tegra186 SoCs.

config GPIO_TS4800
	tristate "TS-4800 DIO blocks and compatibles"
	depends on OF_GPIO
	depends on SOC_IMX51 || COMPILE_TEST
	select GPIO_GENERIC
	help
	  This driver support TS-4800 FPGA GPIO controllers.

config GPIO_THUNDERX
	tristate "Cavium ThunderX/OCTEON-TX GPIO"
	depends on ARCH_THUNDER || (64BIT && COMPILE_TEST)
	depends on PCI_MSI
	select IRQ_DOMAIN_HIERARCHY
	select IRQ_FASTEOI_HIERARCHY_HANDLERS
	help
	  Say yes here to support the on-chip GPIO lines on the ThunderX
	  and OCTEON-TX families of SoCs.

config GPIO_UNIPHIER
	tristate "UniPhier GPIO support"
	depends on ARCH_UNIPHIER || COMPILE_TEST
	depends on OF_GPIO
	select IRQ_DOMAIN_HIERARCHY
	help
	  Say yes here to support UniPhier GPIOs.

config GPIO_VF610
	def_bool y
	depends on ARCH_MXC && SOC_VF610
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support Vybrid vf610 GPIOs.

config GPIO_VR41XX
	tristate "NEC VR4100 series General-purpose I/O Uint support"
	depends on CPU_VR41XX
	help
	  Say yes here to support the NEC VR4100 series General-purpose I/O Uint

config GPIO_VX855
	tristate "VIA VX855/VX875 GPIO"
	depends on (X86 || COMPILE_TEST) && PCI
	select MFD_CORE
	select MFD_VX855
	help
	  Support access to the VX855/VX875 GPIO lines through the gpio library.

	  This driver provides common support for accessing the device,
	  additional drivers must be enabled in order to use the
	  functionality of the device.

config GPIO_XGENE
	bool "APM X-Gene GPIO controller support"
	depends on ARM64 && OF_GPIO
	help
	  This driver is to support the GPIO block within the APM X-Gene SoC
	  platform's generic flash controller. The GPIO pins are muxed with
	  the generic flash controller's address and data pins. Say yes
	  here to enable the GFC GPIO functionality.

config GPIO_XGENE_SB
	tristate "APM X-Gene GPIO standby controller support"
	depends on ARCH_XGENE && OF_GPIO
	select GPIO_GENERIC
	select GPIOLIB_IRQCHIP
	select IRQ_DOMAIN_HIERARCHY
	help
	  This driver supports the GPIO block within the APM X-Gene
	  Standby Domain. Say yes here to enable the GPIO functionality.

config GPIO_XILINX
	tristate "Xilinx GPIO support"
	depends on OF_GPIO
	help
	  Say yes here to support the Xilinx FPGA GPIO device

config GPIO_XLP
	tristate "Netlogic XLP GPIO support"
	depends on OF_GPIO && (CPU_XLP || ARCH_THUNDER2 || COMPILE_TEST)
	select GPIOLIB_IRQCHIP
	help
	  This driver provides support for GPIO interface on Netlogic XLP MIPS64
	  SoCs. Currently supported XLP variants are XLP8XX, XLP3XX, XLP2XX,
	  XLP9XX and XLP5XX. The same GPIO controller block is also present in
	  Cavium's ThunderX2 CN99XX SoCs.

	  If unsure, say N.

config GPIO_XTENSA
	bool "Xtensa GPIO32 support"
	depends on XTENSA
	depends on HAVE_XTENSA_GPIO32
	depends on !SMP
	help
	  Say yes here to support the Xtensa internal GPIO32 IMPWIRE (input)
	  and EXPSTATE (output) ports

config GPIO_ZEVIO
	bool "LSI ZEVIO SoC memory mapped GPIOs"
	depends on ARM && OF_GPIO
	help
	  Say yes here to support the GPIO controller in LSI ZEVIO SoCs.

config GPIO_ZYNQ
	tristate "Xilinx Zynq GPIO support"
	depends on ARCH_ZYNQ || ARCH_ZYNQMP
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support Xilinx Zynq GPIO controller.

config GPIO_ZX
	bool "ZTE ZX GPIO support"
	depends on ARCH_ZX || COMPILE_TEST
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to support the GPIO device on ZTE ZX SoCs.

config GPIO_LOONGSON1
	tristate "Loongson1 GPIO support"
	depends on MACH_LOONGSON32
	select GPIO_GENERIC
	help
	  Say Y or M here to support GPIO on Loongson1 SoCs.

config GPIO_AMD_FCH
	tristate "GPIO support for AMD Fusion Controller Hub (G-series SOCs)"
	help
	  This option enables driver for GPIO on AMDs Fusion Controller Hub,
	  as found on G-series SOCs (eg. GX-412TC)

	  Note: This driver doesn't registers itself automatically, as it
	  needs to be provided with platform specific configuration.
	  (See eg. CONFIG_PCENGINES_APU2.)
endmenu

menu "Port-mapped I/O GPIO drivers"
	depends on X86 # Unconditional I/O space access

config GPIO_104_DIO_48E
	tristate "ACCES 104-DIO-48E GPIO support"
	depends on PC104
	select ISA_BUS_API
	select GPIOLIB_IRQCHIP
	help
	  Enables GPIO support for the ACCES 104-DIO-48E series (104-DIO-48E,
	  104-DIO-24E). The base port addresses for the devices may be
	  configured via the base module parameter. The interrupt line numbers
	  for the devices may be configured via the irq module parameter.

config GPIO_104_IDIO_16
	tristate "ACCES 104-IDIO-16 GPIO support"
	depends on PC104
	select ISA_BUS_API
	select GPIOLIB_IRQCHIP
	help
	  Enables GPIO support for the ACCES 104-IDIO-16 family (104-IDIO-16,
	  104-IDIO-16E, 104-IDO-16, 104-IDIO-8, 104-IDIO-8E, 104-IDO-8). The
	  base port addresses for the devices may be configured via the base
	  module parameter. The interrupt line numbers for the devices may be
	  configured via the irq module parameter.

config GPIO_104_IDI_48
	tristate "ACCES 104-IDI-48 GPIO support"
	depends on PC104
	select ISA_BUS_API
	select GPIOLIB_IRQCHIP
	help
	  Enables GPIO support for the ACCES 104-IDI-48 family (104-IDI-48A,
	  104-IDI-48AC, 104-IDI-48B, 104-IDI-48BC). The base port addresses for
	  the devices may be configured via the base module parameter. The
	  interrupt line numbers for the devices may be configured via the irq
	  module parameter.

config GPIO_F7188X
	tristate "F71869, F71869A, F71882FG, F71889F and F81866 GPIO support"
	help
	  This option enables support for GPIOs found on Fintek Super-I/O
	  chips F71869, F71869A, F71882FG, F71889F and F81866.

	  To compile this driver as a module, choose M here: the module will
	  be called f7188x-gpio.

config GPIO_GPIO_MM
	tristate "Diamond Systems GPIO-MM GPIO support"
	depends on PC104
	select ISA_BUS_API
	help
	  Enables GPIO support for the Diamond Systems GPIO-MM and GPIO-MM-12.

	  The Diamond Systems GPIO-MM device features 48 lines of digital I/O
	  via the emulation of dual 82C55A PPI chips. This driver provides GPIO
	  support for these 48 channels of digital I/O.

	  The base port addresses for the devices may be configured via the base
	  array module parameter.

config GPIO_IT87
	tristate "IT87xx GPIO support"
	help
	  Say yes here to support GPIO functionality of IT87xx Super I/O chips.

	  This driver is tested with ITE IT8728 and IT8732 Super I/O chips, and
	  supports the IT8761E, IT8613, IT8620E, and IT8628E Super I/O chips as
	  well.

	  To compile this driver as a module, choose M here: the module will
	  be called gpio_it87

config GPIO_SCH
	tristate "Intel SCH/TunnelCreek/Centerton/Quark X1000 GPIO"
	depends on (X86 || COMPILE_TEST) && PCI
	select MFD_CORE
	select LPC_SCH
	help
	  Say yes here to support GPIO interface on Intel Poulsbo SCH,
	  Intel Tunnel Creek processor, Intel Centerton processor or
	  Intel Quark X1000 SoC.

	  The Intel SCH contains a total of 14 GPIO pins. Ten GPIOs are
	  powered by the core power rail and are turned off during sleep
	  modes (S3 and higher). The remaining four GPIOs are powered by
	  the Intel SCH suspend power supply. These GPIOs remain
	  active during S3. The suspend powered GPIOs can be used to wake the
	  system from the Suspend-to-RAM state.

	  The Intel Tunnel Creek processor has 5 GPIOs powered by the
	  core power rail and 9 from suspend power supply.

	  The Intel Centerton processor has a total of 30 GPIO pins.
	  Twenty-one are powered by the core power rail and 9 from the
	  suspend power supply.

	  The Intel Quark X1000 SoC has 2 GPIOs powered by the core
	  power well and 6 from the suspend power well.

config GPIO_SCH311X
	tristate "SMSC SCH311x SuperI/O GPIO"
	help
	  Driver to enable the GPIOs found on SMSC SMSC SCH3112, SCH3114 and
	  SCH3116 "Super I/O" chipsets.

	  To compile this driver as a module, choose M here: the module will
	  be called gpio-sch311x.

config GPIO_TS5500
	tristate "TS-5500 DIO blocks and compatibles"
	depends on TS5500 || COMPILE_TEST
	help
	  This driver supports Digital I/O exposed by pin blocks found on some
	  Technologic Systems platforms. It includes, but is not limited to, 3
	  blocks of the TS-5500: DIO1, DIO2 and the LCD port, and the TS-5600
	  LCD port.

config GPIO_WINBOND
	tristate "Winbond Super I/O GPIO support"
	select ISA_BUS_API
	help
	  This option enables support for GPIOs found on Winbond Super I/O
	  chips.
	  Currently, only W83627UHG (also known as Nuvoton NCT6627UD) is
	  supported.

	  You will need to provide a module parameter "gpios", or a
	  boot-time parameter "gpio_winbond.gpios" with a bitmask of GPIO
	  ports to enable (bit 0 is GPIO1, bit 1 is GPIO2, etc.).

	  To compile this driver as a module, choose M here: the module will
	  be called gpio-winbond.

config GPIO_WS16C48
	tristate "WinSystems WS16C48 GPIO support"
	select ISA_BUS_API
	select GPIOLIB_IRQCHIP
	help
	  Enables GPIO support for the WinSystems WS16C48. The base port
	  addresses for the devices may be configured via the base module
	  parameter. The interrupt line numbers for the devices may be
	  configured via the irq module parameter.

endmenu

menu "I2C GPIO expanders"
	depends on I2C

config GPIO_ADP5588
	tristate "ADP5588 I2C GPIO expander"
	help
	  This option enables support for 18 GPIOs found
	  on Analog Devices ADP5588 GPIO Expanders.

config GPIO_ADP5588_IRQ
	bool "Interrupt controller support for ADP5588"
	depends on GPIO_ADP5588=y
	help
	  Say yes here to enable the adp5588 to be used as an interrupt
	  controller. It requires the driver to be built in the kernel.

config GPIO_ADNP
	tristate "Avionic Design N-bit GPIO expander"
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  This option enables support for N GPIOs found on Avionic Design
	  I2C GPIO expanders. The register space will be extended by powers
	  of two, so the controller will need to accommodate for that. For
	  example: if a controller provides 48 pins, 6 registers will be
	  enough to represent all pins, but the driver will assume a
	  register layout for 64 pins (8 registers).

config GPIO_GW_PLD
	tristate "Gateworks PLD GPIO Expander"
	depends on OF_GPIO
	help
	  Say yes here to provide access to the Gateworks I2C PLD GPIO
	  Expander. This is used at least on the Cambria GW2358-4.

config GPIO_MAX7300
	tristate "Maxim MAX7300 GPIO expander"
	select GPIO_MAX730X
	help
	  GPIO driver for Maxim MAX7300 I2C-based GPIO expander.

config GPIO_MAX732X
	tristate "MAX7319, MAX7320-7327 I2C Port Expanders"
	help
	  Say yes here to support the MAX7319, MAX7320-7327 series of I2C
	  Port Expanders. Each IO port on these chips has a fixed role of
	  Input (designated by 'I'), Push-Pull Output ('O'), or Open-Drain
	  Input and Output (designed by 'P'). The combinations are listed
	  below:

	  8 bits:       max7319 (8I), max7320 (8O), max7321 (8P),
	                max7322 (4I4O), max7323 (4P4O)

	  16 bits:      max7324 (8I8O), max7325 (8P8O),
	                max7326 (4I12O), max7327 (4P12O)

	  Board setup code must specify the model to use, and the start
	  number for these GPIOs.

config GPIO_MAX732X_IRQ
	bool "Interrupt controller support for MAX732x"
	depends on GPIO_MAX732X=y
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to enable the max732x to be used as an interrupt
	  controller. It requires the driver to be built in the kernel.

config GPIO_MC9S08DZ60
	bool "MX35 3DS BOARD MC9S08DZ60 GPIO functions"
	depends on I2C=y && MACH_MX35_3DS
	help
	  Select this to enable the MC9S08DZ60 GPIO driver

config GPIO_PCA953X
	tristate "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports"
	select REGMAP_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, tca9554, xra1202

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

	  24 bits:      tca6424

	  40 bits:      pca9505, pca9698

config GPIO_PCA953X_IRQ
	bool "Interrupt controller support for PCA953x"
	depends on GPIO_PCA953X=y
	select GPIOLIB_IRQCHIP
	help
	  Say yes here to enable the pca953x to be used as an interrupt
	  controller. It requires the driver to be built in the kernel.

config GPIO_PCF857X
	tristate "PCF857x, PCA{85,96}7x, and MAX732[89] I2C GPIO expanders"
	select GPIOLIB_IRQCHIP
	select IRQ_DOMAIN
	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,
	            max7328, max7329

	  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.

config GPIO_TPIC2810
	tristate "TPIC2810 8-Bit I2C GPO expander"
	help
	  Say yes here to enable the GPO driver for the TI TPIC2810 chip.

	  To compile this driver as a module, choose M here: the module will
	  be called gpio-tpic2810.

config GPIO_TS4900
	tristate "Technologic Systems FPGA I2C GPIO"
	depends on SOC_IMX6 || COMPILE_TEST
	select REGMAP_I2C
	help
	  Say yes here to enabled the GPIO driver for Technologic's FPGA core.
	  Series supported include TS-4100, TS-4900, TS-7970 and TS-7990.

endmenu

menu "MFD GPIO expanders"

config GPIO_ADP5520
	tristate "GPIO Support for ADP5520 PMIC"
	depends on PMIC_ADP5520
	help
	  This option enables support for on-chip GPIO found
	  on Analog Devices ADP5520 PMICs.

config GPIO_ALTERA_A10SR
	tristate "Altera Arria10 System Resource GPIO"
	depends on MFD_ALTERA_A10SR
	help
	  Driver for Arria10 Development Kit GPIO expansion which
	  includes reads of pushbuttons and DIP switches as well
	  as writes to LEDs.

config GPIO_ARIZONA
	tristate "Wolfson Microelectronics Arizona class devices"
	depends on MFD_ARIZONA
	help
	  Support for GPIOs on Wolfson Arizona class devices.

config GPIO_BD9571MWV
	tristate "ROHM BD9571 GPIO support"
	depends on MFD_BD9571MWV
	help
	  Support for GPIOs on ROHM BD9571 PMIC. There are two GPIOs
	  available on the ROHM PMIC in total, both of which can also
	  generate interrupts.

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

config GPIO_CRYSTAL_COVE
	tristate "GPIO support for Crystal Cove PMIC"
	depends on (X86 || COMPILE_TEST) && INTEL_SOC_PMIC
	select GPIOLIB_IRQCHIP
	help
	  Support for GPIO pins on Crystal Cove PMIC.

	  Say Yes if you have a Intel SoC based tablet with Crystal Cove PMIC
	  inside.

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

config GPIO_CS5535
	tristate "AMD CS5535/CS5536 GPIO support"
	depends on X86 || MIPS || COMPILE_TEST
	depends on MFD_CS5535
	help
	  The AMD CS5535 and CS5536 southbridges support 28 GPIO pins that
	  can be used for quite a number of things.  The CS5535/6 is found on
	  AMD Geode and Lemote Yeeloong devices.

	  If unsure, say N.

config GPIO_DA9052
	tristate "Dialog DA9052 GPIO"
	depends on PMIC_DA9052
	help
	  Say yes here to enable the GPIO driver for the DA9052 chip.

config GPIO_DA9055
	tristate "Dialog Semiconductor DA9055 GPIO"
	depends on MFD_DA9055
	help
	  Say yes here to enable the GPIO driver for the DA9055 chip.

	  The Dialog DA9055 PMIC chip has 3 GPIO pins that can be
	  be controller by this driver.

	  If driver is built as a module it will be called gpio-da9055.

config GPIO_DLN2
	tristate "Diolan DLN2 GPIO support"
	depends on MFD_DLN2
	select GPIOLIB_IRQCHIP

	help
	  Select this option to enable GPIO driver for the Diolan DLN2
	  board.

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

config HTC_EGPIO
	bool "HTC EGPIO support"
	depends on GPIOLIB && ARM
	help
	  This driver supports the CPLD egpio chip present on
	  several HTC phones.  It provides basic support for input
	  pins, output pins, and irqs.

config GPIO_JANZ_TTL
	tristate "Janz VMOD-TTL Digital IO Module"
	depends on MFD_JANZ_CMODIO
	help
	  This enables support for the Janz VMOD-TTL Digital IO module.
	  This driver provides support for driving the pins in output
	  mode only. Input mode is not supported.

config GPIO_KEMPLD
	tristate "Kontron ETX / COMexpress GPIO"
	depends on MFD_KEMPLD
	help
	  This enables support for the PLD GPIO interface on some Kontron ETX
	  and COMexpress (ETXexpress) modules.

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

config GPIO_LP3943
	tristate "TI/National Semiconductor LP3943 GPIO expander"
	depends on MFD_LP3943
	help
	  GPIO driver for LP3943 MFD.
	  LP3943 can be used as a GPIO expander which provides up to 16 GPIOs.
	  Open drain outputs are required for this usage.

config GPIO_LP873X
	tristate "TI LP873X GPO"
	depends on MFD_TI_LP873X
	help
	  This driver supports the GPO on TI Lp873x PMICs. 2 GPOs are present
	  on LP873X PMICs.

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

config GPIO_LP87565
	tristate "TI LP87565 GPIO"
	depends on MFD_TI_LP87565
	help
	  This driver supports the GPIO on TI Lp873565 PMICs. 3 GPIOs are present
	  on LP87565 PMICs.

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

config GPIO_MADERA
	tristate "Cirrus Logic Madera class codecs"
	depends on PINCTRL_MADERA
	help
	  Support for GPIOs on Cirrus Logic Madera class codecs.

config GPIO_MAX77620
	tristate "GPIO support for PMIC MAX77620 and MAX20024"
	depends on MFD_MAX77620
	help
	  GPIO driver for MAX77620 and MAX20024 PMIC from Maxim Semiconductor.
	  MAX77620 PMIC has 8 pins that can be configured as GPIOs. The
	  driver also provides interrupt support for each of the gpios.
	  Say yes here to enable the max77620 to be used as gpio controller.

config GPIO_MAX77650
	tristate "Maxim MAX77650/77651 GPIO support"
	depends on MFD_MAX77650
	help
	  GPIO driver for MAX77650/77651 PMIC from Maxim Semiconductor.
	  These chips have a single pin that can be configured as GPIO.

config GPIO_MSIC
	bool "Intel MSIC mixed signal gpio support"
	depends on (X86 || COMPILE_TEST) && MFD_INTEL_MSIC
	help
	  Enable support for GPIO on intel MSIC controllers found in
	  intel MID devices

config GPIO_PALMAS
	bool "TI PALMAS series PMICs GPIO"
	depends on MFD_PALMAS
	help
	  Select this option to enable GPIO driver for the TI PALMAS
	  series chip family.

config GPIO_RC5T583
	bool "RICOH RC5T583 GPIO"
	depends on MFD_RC5T583
	help
	  Select this option to enable GPIO driver for the Ricoh RC5T583
	  chip family.
	  This driver provides the support for driving/reading the gpio pins
	  of RC5T583 device through standard gpio library.

config GPIO_STMPE
	bool "STMPE GPIOs"
	depends on MFD_STMPE
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  This enables support for the GPIOs found on the STMPE I/O
	  Expanders.

config GPIO_TC3589X
	bool "TC3589X GPIOs"
	depends on MFD_TC3589X
	depends on OF_GPIO
	select GPIOLIB_IRQCHIP
	help
	  This enables support for the GPIOs found on the TC3589X
	  I/O Expander.

config GPIO_TIMBERDALE
	bool "Support for timberdale GPIO IP"
	depends on MFD_TIMBERDALE
	---help---
	Add support for the GPIO IP in the timberdale FPGA.

config GPIO_TPS65086
	tristate "TI TPS65086 GPO"
	depends on MFD_TPS65086
	help
	  This driver supports the GPO on TI TPS65086x PMICs.

config GPIO_TPS65218
	tristate "TPS65218 GPIO"
	depends on MFD_TPS65218
	help
	  Select this option to enable GPIO driver for the TPS65218
	  chip family.

config GPIO_TPS6586X
	bool "TPS6586X GPIO"
	depends on MFD_TPS6586X
	help
	  Select this option to enable GPIO driver for the TPS6586X
	  chip family.

config GPIO_TPS65910
	bool "TPS65910 GPIO"
	depends on MFD_TPS65910
	help
	  Select this option to enable GPIO driver for the TPS65910
	  chip family.

config GPIO_TPS65912
	tristate "TI TPS65912 GPIO"
	depends on MFD_TPS65912
	help
	  This driver supports TPS65912 gpio chip

config GPIO_TPS68470
	bool "TPS68470 GPIO"
	depends on MFD_TPS68470
	help
	  Select this option to enable GPIO driver for the TPS68470
	  chip family.
	  There are 7 GPIOs and few sensor related GPIOs supported
	  by the TPS68470. While the 7 GPIOs can be configured as
	  input or output as appropriate, the sensor related GPIOs
	  are "output only" GPIOs.

	  This driver config is bool, as the GPIO functionality
	  of the TPS68470 must be available before dependent
	  drivers are loaded.

config GPIO_TQMX86
	tristate "TQ-Systems QTMX86 GPIO"
	depends on MFD_TQMX86 || COMPILE_TEST
	select GPIOLIB_IRQCHIP
	help
	  This driver supports GPIO on the TQMX86 IO controller.

config GPIO_TWL4030
	tristate "TWL4030, TWL5030, and TPS659x0 GPIOs"
	depends on TWL4030_CORE
	help
	  Say yes here to access the GPIO signals of various multi-function
	  power management chips from Texas Instruments.

config GPIO_TWL6040
	tristate "TWL6040 GPO"
	depends on TWL6040_CORE
	help
	  Say yes here to access the GPO signals of twl6040
	  audio chip from Texas Instruments.

config GPIO_UCB1400
	tristate "Philips UCB1400 GPIO"
	depends on UCB1400_CORE
	help
	  This enables support for the Philips UCB1400 GPIO pins.
	  The UCB1400 is an AC97 audio codec.

config GPIO_WHISKEY_COVE
	tristate "GPIO support for Whiskey Cove PMIC"
	depends on (X86 || COMPILE_TEST) && INTEL_SOC_PMIC_BXTWC
	select GPIOLIB_IRQCHIP
	help
	  Support for GPIO pins on Whiskey Cove PMIC.

	  Say Yes if you have a Intel SoC based tablet with Whiskey Cove PMIC
	  inside.

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

config GPIO_WM831X
	tristate "WM831x GPIOs"
	depends on MFD_WM831X
	help
	  Say yes here to access the GPIO signals of WM831x power management
	  chips from Wolfson Microelectronics.

config GPIO_WM8350
	tristate "WM8350 GPIOs"
	depends on MFD_WM8350
	help
	  Say yes here to access the GPIO signals of WM8350 power management
	  chips from Wolfson Microelectronics.

config GPIO_WM8994
	tristate "WM8994 GPIOs"
	depends on MFD_WM8994
	help
	  Say yes here to access the GPIO signals of WM8994 audio hub
	  CODECs from Wolfson Microelectronics.

endmenu

menu "PCI GPIO expanders"
	depends on PCI

config GPIO_AMD8111
	tristate "AMD 8111 GPIO driver"
	depends on X86 || COMPILE_TEST
	help
	  The AMD 8111 south bridge contains 32 GPIO pins which can be used.

	  Note, that usually system firmware/ACPI handles GPIO pins on their
	  own and users might easily break their systems with uncarefull usage
	  of this driver!

	  If unsure, say N

config GPIO_BT8XX
	tristate "BT8XX GPIO abuser"
	depends on VIDEO_BT848=n
	help
	  The BT8xx frame grabber chip has 24 GPIO pins that can be abused
	  as a cheap PCI GPIO card.

	  This chip can be found on Miro, Hauppauge and STB TV-cards.

	  The card needs to be physically altered for using it as a
	  GPIO card. For more information on how to build a GPIO card
	  from a BT8xx TV card, see the documentation file at
	  Documentation/bt8xxgpio.txt

	  If unsure, say N.

config GPIO_INTEL_MID
	bool "Intel MID GPIO support"
	depends on X86_INTEL_MID
	select GPIOLIB_IRQCHIP
	help
	  Say Y here to support Intel MID GPIO.

config GPIO_MERRIFIELD
	tristate "Intel Merrifield GPIO support"
	depends on X86_INTEL_MID
	select GPIOLIB_IRQCHIP
	help
	  Say Y here to support Intel Merrifield GPIO.

config GPIO_MLXBF
	tristate "Mellanox BlueField SoC GPIO"
	depends on (MELLANOX_PLATFORM && ARM64 && ACPI) || (64BIT && COMPILE_TEST)
	select GPIO_GENERIC
	help
	  Say Y here if you want GPIO support on Mellanox BlueField SoC.

config GPIO_ML_IOH
	tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
	depends on X86 || COMPILE_TEST
	select GENERIC_IRQ_CHIP
	help
	  ML7213 is companion chip for Intel Atom E6xx series.
	  This driver can be used for OKI SEMICONDUCTOR ML7213 IOH(Input/Output
	  Hub) which is for IVI(In-Vehicle Infotainment) use.
	  This driver can access the IOH's GPIO device.

config GPIO_PCH
	tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
	depends on X86_32 || MIPS || COMPILE_TEST
	select GENERIC_IRQ_CHIP
	help
	  This driver is for PCH(Platform controller Hub) GPIO of Intel Topcliff
	  which is an IOH(Input/Output Hub) for x86 embedded processor.
	  This driver can access PCH GPIO device.

	  This driver also can be used for LAPIS Semiconductor IOH(Input/
	  Output Hub), ML7223 and ML7831.
	  ML7223 IOH is for MP(Media Phone) use.
	  ML7831 IOH is for general purpose use.
	  ML7223/ML7831 is companion chip for Intel Atom E6xx series.
	  ML7223/ML7831 is completely compatible for Intel EG20T PCH.

config GPIO_PCI_IDIO_16
	tristate "ACCES PCI-IDIO-16 GPIO support"
	select GPIOLIB_IRQCHIP
	help
	  Enables GPIO support for the ACCES PCI-IDIO-16. An interrupt is
	  generated when any of the inputs change state (low to high or high to
	  low). Input filter control is not supported by this driver, and the
	  input filters are deactivated by this driver.

config GPIO_PCIE_IDIO_24
	tristate "ACCES PCIe-IDIO-24 GPIO support"
	select GPIOLIB_IRQCHIP
	help
	  Enables GPIO support for the ACCES PCIe-IDIO-24 family (PCIe-IDIO-24,
	  PCIe-IDI-24, PCIe-IDO-24, PCIe-IDIO-12). An interrupt is generated
	  when any of the inputs change state (low to high or high to low).
	  Input filter control is not supported by this driver, and the input
	  filters are deactivated by this driver.

config GPIO_RDC321X
	tristate "RDC R-321x GPIO support"
	select MFD_CORE
	select MFD_RDC321X
	help
	  Support for the RDC R321x SoC GPIOs over southbridge
	  PCI configuration space.

config GPIO_SODAVILLE
	bool "Intel Sodaville GPIO support"
	depends on X86 && OF
	select GPIO_GENERIC
	select GENERIC_IRQ_CHIP
	help
	  Say Y here to support Intel Sodaville GPIO.

endmenu

menu "SPI GPIO expanders"
	depends on SPI_MASTER

config GPIO_74X164
	tristate "74x164 serial-in/parallel-out 8-bits shift register"
	depends on OF_GPIO
	help
	  Driver for 74x164 compatible serial-in/parallel-out 8-outputs
	  shift registers. This driver can be used to provide access
	  to more gpio outputs.

config GPIO_MAX3191X
	tristate "Maxim MAX3191x industrial serializer"
	select CRC8
	help
	  GPIO driver for Maxim MAX31910, MAX31911, MAX31912, MAX31913,
	  MAX31953 and MAX31963 industrial serializer, a daisy-chainable
	  chip to make 8 digital 24V inputs available via SPI.  Supports
	  CRC checksums to guard against electromagnetic interference,
	  as well as undervoltage and overtemperature detection.

config GPIO_MAX7301
	tristate "Maxim MAX7301 GPIO expander"
	select GPIO_MAX730X
	help
	  GPIO driver for Maxim MAX7301 SPI-based GPIO expander.

config GPIO_MC33880
	tristate "Freescale MC33880 high-side/low-side switch"
	help
	  SPI driver for Freescale MC33880 high-side/low-side switch.
	  This provides GPIO interface supporting inputs and outputs.

config GPIO_PISOSR
	tristate "Generic parallel-in/serial-out shift register"
	help
	  GPIO driver for SPI compatible parallel-in/serial-out shift
	  registers. These are input only devices.

config GPIO_XRA1403
	tristate "EXAR XRA1403 16-bit GPIO expander"
	select REGMAP_SPI
	help
	  GPIO driver for EXAR XRA1403 16-bit SPI-based GPIO expander.

endmenu

menu "USB GPIO expanders"
	depends on USB

config GPIO_VIPERBOARD
	tristate "Viperboard GPIO a & b support"
	depends on MFD_VIPERBOARD
	help
	  Say yes here to access the GPIO signals of Nano River
	  Technologies Viperboard. There are two GPIO chips on the
	  board: gpioa and gpiob.
	  See viperboard API specification and Nano
	  River Tech's viperboard.h for detailed meaning
	  of the module parameters.

endmenu

config GPIO_MOCKUP
	tristate "GPIO Testing Driver"
	depends on GPIOLIB
	select IRQ_SIM
	help
	  This enables GPIO Testing driver, which provides a way to test GPIO
	  subsystem through sysfs(or char device) and debugfs. GPIO_SYSFS
	  must be selected for this test.
	  User could use it through the script in
	  tools/testing/selftests/gpio/gpio-mockup.sh. Reference the usage in
	  it.

endif
