| # 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_AMD |
| bool "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 |
| The driver for memory mapped GPIO functionality on AMD platforms |
| (x86 or arm). Most of the 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_APPLE_GPIO |
| tristate "Apple SoC GPIO pin controller driver" |
| depends on ARCH_APPLE |
| select PINMUX |
| select GPIOLIB |
| select GPIOLIB_IRQCHIP |
| select GENERIC_PINCTRL_GROUPS |
| select GENERIC_PINMUX_FUNCTIONS |
| select OF_GPIO |
| help |
| This is the driver for the GPIO controller found on Apple ARM SoCs, |
| including M1. |
| |
| This driver can also be built as a module. If so, the module |
| will be called pinctrl-apple-gpio. |
| |
| 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_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 HAS_IOMEM |
| 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_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 Y to enable pinctrl and GPIO support for the AXP209 PMIC. |
| |
| config PINCTRL_AW9523 |
| tristate "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver" |
| depends on OF && I2C |
| select PINMUX |
| select PINCONF |
| select GENERIC_PINCONF |
| select GPIOLIB |
| select GPIOLIB_IRQCHIP |
| select REGMAP |
| select REGMAP_I2C |
| help |
| The Awinic AW9523/AW9523B is a multi-function I2C GPIO |
| expander with PWM functionality. This driver bundles a |
| pinctrl driver to select the function muxing and a GPIO |
| driver to handle GPIO, when the GPIO function is selected. |
| |
| Say yes to enable pinctrl and GPIO support for the AW9523(B). |
| |
| 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_CY8C95X0 |
| tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver" |
| depends on I2C |
| select GPIOLIB |
| select GPIOLIB_IRQCHIP |
| select PINMUX |
| select PINCONF |
| select GENERIC_PINCONF |
| select REGMAP_I2C |
| help |
| Support for 20/40/60 pin Cypress Cy8C95x0 pinctrl/gpio I2C expander. |
| This driver can also be built as a module. If so, the module will be |
| called pinctrl-cy8c95x0. |
| |
| config PINCTRL_DA850_PUPD |
| tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down 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 |
| pull-up and pull-down 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 Y to enable pinctrl and GPIO support for the DA9062 PMIC. |
| |
| config PINCTRL_DIGICOLOR |
| bool |
| depends on ARCH_DIGICOLOR || COMPILE_TEST |
| select PINMUX |
| select GENERIC_PINCONF |
| |
| config PINCTRL_EP93XX |
| bool |
| depends on ARCH_EP93XX || COMPILE_TEST |
| select PINMUX |
| select GENERIC_PINCONF |
| select MFD_SYSCON |
| |
| 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 driver is a pinctrl and GPIO driver for Intel Lightning |
| Mountain network processor SoC that supports both the GPIO and pin |
| control frameworks. It provides interfaces to setup pin muxing, assign |
| desired pin functions, configure GPIO attributes for LGM SoC pins. |
| Pin muxing and pin config settings are retrieved from device tree. |
| |
| config PINCTRL_EYEQ5 |
| bool "Mobileye EyeQ5 pinctrl driver" |
| depends on OF |
| depends on MACH_EYEQ5 || COMPILE_TEST |
| select PINMUX |
| select GENERIC_PINCONF |
| select AUXILIARY_BUS |
| default MACH_EYEQ5 |
| help |
| Pin controller driver for the Mobileye EyeQ5 platform. It does both |
| pin config & pin muxing. It does not handle GPIO. |
| |
| Pin muxing supports two functions for each pin: first is GPIO, second |
| is pin-dependent. Pin config is about bias & drive strength. |
| |
| config PINCTRL_GEMINI |
| bool |
| depends on ARCH_GEMINI |
| default ARCH_GEMINI |
| select PINMUX |
| select GENERIC_PINCONF |
| select MFD_SYSCON |
| |
| 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_K210 |
| bool "Pinctrl driver for the Canaan Kendryte K210 SoC" |
| depends on RISCV && SOC_CANAAN_K210 && OF |
| select GENERIC_PINMUX_FUNCTIONS |
| select GENERIC_PINCONF |
| select GPIOLIB |
| select OF_GPIO |
| select REGMAP_MMIO |
| default SOC_CANAAN_K210 |
| help |
| Add support for the Canaan Kendryte K210 RISC-V SOC Field |
| Programmable IO Array (FPIOA) controller. |
| |
| config PINCTRL_KEEMBAY |
| tristate "Pinctrl driver for Intel Keem Bay SoC" |
| depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST) |
| depends on HAS_IOMEM |
| select PINMUX |
| select PINCONF |
| select GENERIC_PINCONF |
| select GENERIC_PINCTRL_GROUPS |
| select GENERIC_PINMUX_FUNCTIONS |
| select GPIOLIB |
| select GPIOLIB_IRQCHIP |
| select GPIO_GENERIC |
| help |
| This selects pin control driver for the Intel Keem Bay SoC. |
| It provides pin config functions such as pull-up, pull-down, |
| interrupt, drive strength, sec lock, Schmitt trigger, slew |
| rate control and direction control. This module will be |
| called as pinctrl-keembay. |
| |
| config PINCTRL_LANTIQ |
| bool |
| depends on LANTIQ |
| select PINMUX |
| select PINCONF |
| |
| config PINCTRL_FALCON |
| bool |
| depends on SOC_FALCON |
| depends on PINCTRL_LANTIQ |
| |
| config PINCTRL_LOONGSON2 |
| tristate "Pinctrl driver for the Loongson-2 SoC" |
| depends on OF && (LOONGARCH || COMPILE_TEST) |
| select PINMUX |
| select GENERIC_PINCONF |
| help |
| This selects pin control driver for the Loongson-2 SoC. It |
| provides pin config functions multiplexing. GPIO pin pull-up, |
| pull-down functions are not supported. Say yes to enable |
| pinctrl for Loongson-2 SoC. |
| |
| config PINCTRL_XWAY |
| bool |
| depends on SOC_TYPE_XWAY |
| depends on PINCTRL_LANTIQ |
| |
| 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_MAX77620 |
| tristate "MAX77620/MAX20024 Pincontrol support" |
| depends on MFD_MAX77620 && OF |
| select PINMUX |
| select GENERIC_PINCONF |
| help |
| Say Y here to enable Pin control support for Maxim MAX77620 PMIC. |
| 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_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_MICROCHIP_SGPIO |
| tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO" |
| 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 |
| help |
| Support for the serial GPIO interface used on Microsemi and |
| Microchip SoCs. 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. |
| |
| If compiled as a module, the module name will be |
| pinctrl-microchip-sgpio. |
| |
| config PINCTRL_OCELOT |
| tristate "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 |
| help |
| Support for the internal GPIO interfaces on Microsemi Ocelot and |
| Jaguar2 SoCs. |
| |
| If conpiled as a module, the module name will be pinctrl-ocelot. |
| |
| 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_PEF2256 |
| tristate "Lantiq PEF2256 (FALC56) pin controller driver" |
| depends on OF && FRAMER_PEF2256 |
| select PINMUX |
| select PINCONF |
| select GENERIC_PINCONF |
| help |
| This option enables the pin controller support for the Lantiq PEF2256 |
| framer, also known as FALC56. |
| |
| If unsure, say N. |
| |
| To compile this driver as a module, choose M here: the |
| module will be called pinctrl-pef2256. |
| |
| 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_PISTACHIO |
| bool "IMG Pistachio SoC pinctrl driver" |
| depends on OF && (MIPS || COMPILE_TEST) |
| depends on GPIOLIB |
| select PINMUX |
| select GENERIC_PINCONF |
| select GPIOLIB_IRQCHIP |
| select OF_GPIO |
| help |
| This support pinctrl and GPIO driver for IMG Pistachio SoC. |
| |
| config PINCTRL_RK805 |
| tristate "Pinctrl and GPIO driver for RK805 PMIC" |
| depends on MFD_RK8XX |
| select GPIOLIB |
| select PINMUX |
| select GENERIC_PINCONF |
| help |
| This selects the pinctrl driver for RK805. |
| |
| 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_SCMI |
| tristate "Pinctrl driver using SCMI protocol interface" |
| depends on ARM_SCMI_PROTOCOL || COMPILE_TEST |
| select PINMUX |
| select GENERIC_PINCONF |
| help |
| This driver provides support for pinctrl which is controlled |
| by firmware that implements the SCMI interface. |
| It uses SCMI Message Protocol to interact with the |
| firmware providing all the pinctrl controls. |
| |
| 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_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_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 Y 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_TB10X |
| bool |
| depends on OF && ARC_PLAT_TB10X |
| select GPIOLIB |
| |
| config PINCTRL_TPS6594 |
| tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC" |
| depends on OF && MFD_TPS6594 |
| default MFD_TPS6594 |
| select PINMUX |
| select GPIOLIB |
| select REGMAP |
| select GPIO_REGMAP |
| select GENERIC_PINCONF |
| help |
| Say Y to select the pinmuxing and GPIOs driver for the TPS6594 |
| PMICs chip family. |
| |
| This driver can also be built as a module |
| called tps6594-pinctrl. |
| |
| 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_ZYNQMP |
| tristate "Pinctrl driver for Xilinx ZynqMP" |
| depends on ZYNQMP_FIRMWARE |
| select PINMUX |
| select GENERIC_PINCONF |
| default ZYNQMP_FIRMWARE |
| help |
| This selects the pinctrl driver for Xilinx ZynqMP platform. |
| This driver will query the pin information from the firmware |
| and allow configuring the pins. |
| Configuration can include the mux function to select on those |
| pin(s)/group(s), and various pin configuration parameters |
| such as pull-up, slew rate, etc. |
| This driver can also be built as a module. If so, the module |
| will be called pinctrl-zynqmp. |
| |
| config PINCTRL_MLXBF3 |
| tristate "NVIDIA BlueField-3 SoC Pinctrl driver" |
| depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST |
| select PINMUX |
| select GPIOLIB |
| select GPIOLIB_IRQCHIP |
| help |
| Say Y to select the pinctrl driver for BlueField-3 SoCs. |
| This pin controller allows selecting the mux function for |
| each pin. This driver can also be built as a module called |
| pinctrl-mlxbf3. |
| |
| source "drivers/pinctrl/actions/Kconfig" |
| source "drivers/pinctrl/aspeed/Kconfig" |
| source "drivers/pinctrl/bcm/Kconfig" |
| source "drivers/pinctrl/berlin/Kconfig" |
| source "drivers/pinctrl/cirrus/Kconfig" |
| source "drivers/pinctrl/freescale/Kconfig" |
| source "drivers/pinctrl/intel/Kconfig" |
| source "drivers/pinctrl/mediatek/Kconfig" |
| source "drivers/pinctrl/meson/Kconfig" |
| source "drivers/pinctrl/mvebu/Kconfig" |
| source "drivers/pinctrl/nomadik/Kconfig" |
| source "drivers/pinctrl/nuvoton/Kconfig" |
| source "drivers/pinctrl/nxp/Kconfig" |
| source "drivers/pinctrl/pxa/Kconfig" |
| source "drivers/pinctrl/qcom/Kconfig" |
| source "drivers/pinctrl/realtek/Kconfig" |
| source "drivers/pinctrl/renesas/Kconfig" |
| source "drivers/pinctrl/samsung/Kconfig" |
| source "drivers/pinctrl/sophgo/Kconfig" |
| source "drivers/pinctrl/spear/Kconfig" |
| source "drivers/pinctrl/sprd/Kconfig" |
| source "drivers/pinctrl/starfive/Kconfig" |
| source "drivers/pinctrl/stm32/Kconfig" |
| source "drivers/pinctrl/sunplus/Kconfig" |
| source "drivers/pinctrl/sunxi/Kconfig" |
| source "drivers/pinctrl/tegra/Kconfig" |
| source "drivers/pinctrl/ti/Kconfig" |
| source "drivers/pinctrl/uniphier/Kconfig" |
| source "drivers/pinctrl/visconti/Kconfig" |
| source "drivers/pinctrl/vt8500/Kconfig" |
| |
| endif |