| # SPDX-License-Identifier: GPL-2.0-only | 
| # | 
| # PINCTRL infrastructure and drivers | 
| # | 
|   | 
| menuconfig PINCTRL | 
|     bool "Pin controllers" | 
|   | 
| if PINCTRL | 
|   | 
| config GENERIC_PINCTRL_GROUPS | 
|     bool | 
|   | 
| config PINMUX | 
|     bool "Support pin multiplexing controllers" if COMPILE_TEST | 
|   | 
| config GENERIC_PINMUX_FUNCTIONS | 
|     bool | 
|     select PINMUX | 
|   | 
| config PINCONF | 
|     bool "Support pin configuration controllers" if COMPILE_TEST | 
|   | 
| config GENERIC_PINCONF | 
|     bool | 
|     select PINCONF | 
|   | 
| config DEBUG_PINCTRL | 
|     bool "Debug PINCTRL calls" | 
|     depends on DEBUG_KERNEL | 
|     help | 
|       Say Y here to add some extra checks and diagnostics to PINCTRL calls. | 
|   | 
| config PINCTRL_ARTPEC6 | 
|     bool "Axis ARTPEC-6 pin controller driver" | 
|     depends on MACH_ARTPEC6 | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       This is the driver for the Axis ARTPEC-6 pin controller. This driver | 
|       supports pin function multiplexing as well as pin bias and drive | 
|       strength configuration. Device tree integration instructions can be | 
|       found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt | 
|   | 
| config PINCTRL_AS3722 | 
|     tristate "Pinctrl and GPIO driver for ams AS3722 PMIC" | 
|     depends on MFD_AS3722 && GPIOLIB | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       AS3722 device supports the configuration of GPIO pins for different | 
|       functionality. This driver supports the pinmux, push-pull and | 
|       open drain configuration for the GPIO pins of AS3722 devices. It also | 
|       supports the GPIO functionality through gpiolib. | 
|   | 
| config PINCTRL_AXP209 | 
|     tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support" | 
|     depends on MFD_AXP20X | 
|     depends on OF | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB | 
|     help | 
|       AXP PMICs provides multiple GPIOs that can be muxed for different | 
|       functions. This driver bundles a pinctrl driver to select the function | 
|       muxing and a GPIO driver to handle the GPIO when the GPIO function is | 
|       selected. | 
|       Say yes to enable pinctrl and GPIO support for the AXP209 PMIC | 
|   | 
| config PINCTRL_AT91 | 
|     bool "AT91 pinctrl driver" | 
|     depends on OF | 
|     depends on ARCH_AT91 | 
|     select PINMUX | 
|     select PINCONF | 
|     select GPIOLIB | 
|     select OF_GPIO | 
|     select GPIOLIB_IRQCHIP | 
|     help | 
|       Say Y here to enable the at91 pinctrl driver | 
|   | 
| config PINCTRL_AT91PIO4 | 
|     bool "AT91 PIO4 pinctrl driver" | 
|     depends on OF | 
|     depends on ARCH_AT91 || COMPILE_TEST | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB | 
|     select GPIOLIB_IRQCHIP | 
|     select OF_GPIO | 
|     help | 
|       Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4 | 
|       controller available on sama5d2 SoC. | 
|   | 
| config PINCTRL_AMD | 
|     tristate "AMD GPIO pin control" | 
|     depends on HAS_IOMEM | 
|     depends on ACPI || COMPILE_TEST | 
|     select GPIOLIB | 
|     select GPIOLIB_IRQCHIP | 
|     select PINMUX | 
|     select PINCONF | 
|     select GENERIC_PINCONF | 
|     help | 
|       driver for memory mapped GPIO functionality on AMD platforms | 
|       (x86 or arm).Most pins are usually muxed to some other | 
|       functionality by firmware,so only a small amount is available | 
|       for gpio use. | 
|   | 
|       Requires ACPI/FDT device enumeration code to set up a platform | 
|       device. | 
|   | 
| config PINCTRL_BM1880 | 
|     bool "Bitmain BM1880 Pinctrl driver" | 
|     depends on OF && (ARCH_BITMAIN || COMPILE_TEST) | 
|     default ARCH_BITMAIN | 
|     select PINMUX | 
|     help | 
|       Pinctrl driver for Bitmain BM1880 SoC. | 
|   | 
| config PINCTRL_DA850_PUPD | 
|     tristate "TI DA850/OMAP-L138/AM18XX pullup/pulldown groups" | 
|     depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST) | 
|     select PINCONF | 
|     select GENERIC_PINCONF | 
|     help | 
|       Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control | 
|       pullup/pulldown pin groups. | 
|   | 
| config PINCTRL_DA9062 | 
|     tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support" | 
|     depends on MFD_DA9062 | 
|     select GPIOLIB | 
|     help | 
|       The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for | 
|       different functions. This driver bundles a pinctrl driver to select the | 
|       function muxing and a GPIO driver to handle the GPIO when the GPIO | 
|       function is selected. | 
|   | 
|       Say yes to enable pinctrl and GPIO support for the DA9062 PMIC. | 
|   | 
| config PINCTRL_DIGICOLOR | 
|     bool | 
|     depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST) | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|   | 
| config PINCTRL_LANTIQ | 
|     bool | 
|     depends on LANTIQ | 
|     select PINMUX | 
|     select PINCONF | 
|   | 
| config PINCTRL_LPC18XX | 
|     bool "NXP LPC18XX/43XX SCU pinctrl driver" | 
|     depends on OF && (ARCH_LPC18XX || COMPILE_TEST) | 
|     default ARCH_LPC18XX | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU). | 
|   | 
| config PINCTRL_FALCON | 
|     bool | 
|     depends on SOC_FALCON | 
|     depends on PINCTRL_LANTIQ | 
|   | 
| config PINCTRL_GEMINI | 
|     bool | 
|     depends on ARCH_GEMINI | 
|     default ARCH_GEMINI | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     select MFD_SYSCON | 
|   | 
| config PINCTRL_MCP23S08_I2C | 
|     tristate | 
|     select REGMAP_I2C | 
|   | 
| config PINCTRL_MCP23S08_SPI | 
|     tristate | 
|     select REGMAP_SPI | 
|   | 
| config PINCTRL_MCP23S08 | 
|     tristate "Microchip MCP23xxx I/O expander" | 
|     depends on SPI_MASTER || I2C | 
|     select GPIOLIB | 
|     select GPIOLIB_IRQCHIP | 
|     select GENERIC_PINCONF | 
|     select PINCTRL_MCP23S08_I2C if I2C | 
|     select PINCTRL_MCP23S08_SPI if SPI_MASTER | 
|     help | 
|       SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 / | 
|       MCP23008 / MCP23017 / MCP23018 I/O expanders. | 
|       This provides a GPIO interface supporting inputs and outputs and a | 
|       corresponding interrupt-controller. | 
|   | 
| config PINCTRL_OXNAS | 
|     bool | 
|     depends on OF | 
|     select PINMUX | 
|     select PINCONF | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB | 
|     select OF_GPIO | 
|     select GPIOLIB_IRQCHIP | 
|     select MFD_SYSCON | 
|   | 
| config PINCTRL_ROCKCHIP | 
|     tristate "Rockchip gpio and pinctrl driver" | 
|     depends on ARCH_ROCKCHIP || COMPILE_TEST | 
|     depends on OF | 
|     select GPIOLIB | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     select GENERIC_IRQ_CHIP | 
|     select MFD_SYSCON | 
|     select OF_GPIO | 
|     default ARCH_ROCKCHIP | 
|     help | 
|           This support pinctrl and gpio driver for Rockchip SoCs. | 
|   | 
| config PINCTRL_SINGLE | 
|     tristate "One-register-per-pin type device tree based pinctrl driver" | 
|     depends on OF | 
|     depends on HAS_IOMEM | 
|     select GENERIC_PINCTRL_GROUPS | 
|     select GENERIC_PINMUX_FUNCTIONS | 
|     select GENERIC_PINCONF | 
|     help | 
|       This selects the device tree based generic pinctrl driver. | 
|   | 
| config PINCTRL_SIRF | 
|     bool "CSR SiRFprimaII pin controller driver" | 
|     depends on ARCH_SIRF | 
|     select PINMUX | 
|     select PINCONF | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB_IRQCHIP | 
|   | 
| config PINCTRL_SX150X | 
|     bool "Semtech SX150x I2C GPIO expander pinctrl driver" | 
|     depends on I2C=y | 
|     select PINMUX | 
|     select PINCONF | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB | 
|     select GPIOLIB_IRQCHIP | 
|     select REGMAP | 
|     help | 
|       Say yes here to provide support for Semtech SX150x-series I2C | 
|       GPIO expanders as pinctrl module. | 
|       Compatible models include: | 
|       - 8 bits:  sx1508q, sx1502q | 
|       - 16 bits: sx1509q, sx1506q | 
|   | 
| config PINCTRL_PISTACHIO | 
|     def_bool y if MACH_PISTACHIO | 
|     depends on GPIOLIB | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB_IRQCHIP | 
|     select OF_GPIO | 
|   | 
| config PINCTRL_ST | 
|     bool | 
|     depends on OF | 
|     select PINMUX | 
|     select PINCONF | 
|     select GPIOLIB_IRQCHIP | 
|   | 
| config PINCTRL_STMFX | 
|     tristate "STMicroelectronics STMFX GPIO expander pinctrl driver" | 
|     depends on I2C | 
|     depends on OF_GPIO | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB_IRQCHIP | 
|     select MFD_STMFX | 
|     help | 
|       Driver for STMicroelectronics Multi-Function eXpander (STMFX) | 
|       GPIO expander. | 
|       This provides a GPIO interface supporting inputs and outputs, | 
|       and configuring push-pull, open-drain, and can also be used as | 
|       interrupt-controller. | 
|   | 
| config PINCTRL_U300 | 
|     bool "U300 pin controller driver" | 
|     depends on ARCH_U300 | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|   | 
| config PINCTRL_COH901 | 
|     bool "ST-Ericsson U300 COH 901 335/571 GPIO" | 
|     depends on GPIOLIB && ARCH_U300 && PINCTRL_U300 | 
|     select GPIOLIB_IRQCHIP | 
|     help | 
|       Say yes here to support GPIO interface on ST-Ericsson U300. | 
|       The names of the two IP block variants supported are | 
|       COH 901 335 and COH 901 571/3. They contain 3, 5 or 7 | 
|       ports of 8 GPIO pins each. | 
|   | 
| config PINCTRL_MAX77620 | 
|     tristate "MAX77620/MAX20024 Pincontrol support" | 
|     depends on MFD_MAX77620 && OF | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       Say Yes here to enable Pin control support for Maxim PMIC MAX77620. | 
|       This PMIC has 8 GPIO pins that work as GPIO as well as special | 
|       function in alternate mode. This driver also configure push-pull, | 
|       open drain, FPS slots etc. | 
|   | 
| config PINCTRL_MAX96745 | 
|     tristate "MAX96745 Pincontrol support" | 
|     depends on MFD_MAX96745 && OF | 
|     select PINMUX | 
|     select GENERIC_PINMUX_FUNCTIONS | 
|     select GENERIC_PINCTRL_GROUPS | 
|     select GENERIC_PINCONF | 
|     help | 
|       Say Yes here to enable Pin control support for Maxim MAX96745. | 
|   | 
| config PINCTRL_MAX96755F | 
|     tristate "MAX96755F Pincontrol support" | 
|     depends on MFD_MAX96755F && OF | 
|     select PINMUX | 
|     select GENERIC_PINMUX_FUNCTIONS | 
|     select GENERIC_PINCTRL_GROUPS | 
|     select GENERIC_PINCONF | 
|     help | 
|       Say Yes here to enable Pin control support for Maxim MAX96755F. | 
|   | 
| config PINCTRL_PALMAS | 
|     tristate "Pinctrl driver for the PALMAS Series MFD devices" | 
|     depends on OF && MFD_PALMAS | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       Palmas device supports the configuration of pins for different | 
|       functionality. This driver supports the pinmux, push-pull and | 
|       open drain configuration for the Palmas series devices like | 
|       TPS65913, TPS80036 etc. | 
|   | 
| config PINCTRL_PIC32 | 
|     bool "Microchip PIC32 pin controller driver" | 
|     depends on OF | 
|     depends on MACH_PIC32 | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     select GPIOLIB_IRQCHIP | 
|     select OF_GPIO | 
|     help | 
|       This is the pin controller and gpio driver for Microchip PIC32 | 
|       microcontrollers. This option is selected automatically when specific | 
|       machine and arch are selected to build. | 
|   | 
| config PINCTRL_PIC32MZDA | 
|     def_bool y if PIC32MZDA | 
|     select PINCTRL_PIC32 | 
|   | 
| config PINCTRL_ZYNQ | 
|     bool "Pinctrl driver for Xilinx Zynq" | 
|     depends on ARCH_ZYNQ | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       This selects the pinctrl driver for Xilinx Zynq. | 
|   | 
| config PINCTRL_INGENIC | 
|     bool "Pinctrl driver for the Ingenic JZ47xx SoCs" | 
|     default MACH_INGENIC | 
|     depends on OF | 
|     depends on MIPS || COMPILE_TEST | 
|     select GENERIC_PINCONF | 
|     select GENERIC_PINCTRL_GROUPS | 
|     select GENERIC_PINMUX_FUNCTIONS | 
|     select GPIOLIB | 
|     select GPIOLIB_IRQCHIP | 
|     select REGMAP_MMIO | 
|   | 
| config PINCTRL_RK628 | 
|     tristate "Pinctrl and GPIO driver for RK628 PMIC" | 
|     depends on MFD_RK628 | 
|     select GPIOLIB | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     select REGMAP_IRQ | 
|     help | 
|       This selects the pinctrl driver for RK628. | 
|   | 
| config PINCTRL_RK805 | 
|     tristate "Pinctrl and GPIO driver for RK805 PMIC" | 
|     depends on MFD_RK808 | 
|     select GPIOLIB | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       This selects the pinctrl driver for RK805. | 
|   | 
| config PINCTRL_RK806 | 
|     tristate "Pinctrl and GPIO driver for RK806 PMIC" | 
|     depends on MFD_RK806 | 
|     select GPIOLIB | 
|     select PINMUX | 
|     select GENERIC_PINCONF | 
|     help | 
|       This selects the pinctrl driver for RK806 | 
|   | 
| config PINCTRL_OCELOT | 
|     bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs" | 
|     depends on OF | 
|     depends on HAS_IOMEM | 
|     select GPIOLIB | 
|     select GPIOLIB_IRQCHIP | 
|     select GENERIC_PINCONF | 
|     select GENERIC_PINCTRL_GROUPS | 
|     select GENERIC_PINMUX_FUNCTIONS | 
|     select OF_GPIO | 
|     select REGMAP_MMIO | 
|   | 
| source "drivers/pinctrl/actions/Kconfig" | 
| source "drivers/pinctrl/aspeed/Kconfig" | 
| source "drivers/pinctrl/bcm/Kconfig" | 
| source "drivers/pinctrl/berlin/Kconfig" | 
| source "drivers/pinctrl/freescale/Kconfig" | 
| source "drivers/pinctrl/intel/Kconfig" | 
| source "drivers/pinctrl/mvebu/Kconfig" | 
| source "drivers/pinctrl/nomadik/Kconfig" | 
| source "drivers/pinctrl/nuvoton/Kconfig" | 
| source "drivers/pinctrl/pxa/Kconfig" | 
| source "drivers/pinctrl/qcom/Kconfig" | 
| source "drivers/pinctrl/renesas/Kconfig" | 
| source "drivers/pinctrl/samsung/Kconfig" | 
| source "drivers/pinctrl/spear/Kconfig" | 
| source "drivers/pinctrl/sprd/Kconfig" | 
| source "drivers/pinctrl/stm32/Kconfig" | 
| source "drivers/pinctrl/sunxi/Kconfig" | 
| source "drivers/pinctrl/tegra/Kconfig" | 
| source "drivers/pinctrl/ti/Kconfig" | 
| source "drivers/pinctrl/uniphier/Kconfig" | 
| source "drivers/pinctrl/vt8500/Kconfig" | 
| source "drivers/pinctrl/mediatek/Kconfig" | 
| source "drivers/pinctrl/zte/Kconfig" | 
| source "drivers/pinctrl/meson/Kconfig" | 
| source "drivers/pinctrl/cirrus/Kconfig" | 
| source "drivers/pinctrl/visconti/Kconfig" | 
|   | 
| config PINCTRL_XWAY | 
|     bool | 
|     depends on SOC_TYPE_XWAY | 
|     depends on PINCTRL_LANTIQ | 
|   | 
| config PINCTRL_TB10X | 
|     bool | 
|     depends on OF && ARC_PLAT_TB10X | 
|     select GPIOLIB | 
|   | 
| config PINCTRL_EQUILIBRIUM | 
|     tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC" | 
|     depends on OF && HAS_IOMEM | 
|     depends on X86 || COMPILE_TEST | 
|     select PINMUX | 
|     select PINCONF | 
|     select GPIOLIB | 
|     select GPIO_GENERIC | 
|     select GPIOLIB_IRQCHIP | 
|     select GENERIC_PINCONF | 
|     select GENERIC_PINCTRL_GROUPS | 
|     select GENERIC_PINMUX_FUNCTIONS | 
|   | 
|     help | 
|       Equilibrium pinctrl driver is a pinctrl & GPIO driver for Intel Lightning | 
|       Mountain network processor SoC that supports both the linux GPIO and pin | 
|       control frameworks. It provides interfaces to setup pinmux, assign desired | 
|       pin functions, configure GPIO attributes for LGM SoC pins. Pinmux and | 
|       pinconf settings are retrieved from device tree. | 
|   | 
| endif |