0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # PINCTRL infrastructure and drivers
0004 #
0005
0006 menuconfig PINCTRL
0007 bool "Pin controllers"
0008
0009 if PINCTRL
0010
0011 config GENERIC_PINCTRL_GROUPS
0012 bool
0013
0014 config PINMUX
0015 bool "Support pin multiplexing controllers" if COMPILE_TEST
0016
0017 config GENERIC_PINMUX_FUNCTIONS
0018 bool
0019 select PINMUX
0020
0021 config PINCONF
0022 bool "Support pin configuration controllers" if COMPILE_TEST
0023
0024 config GENERIC_PINCONF
0025 bool
0026 select PINCONF
0027
0028 config DEBUG_PINCTRL
0029 bool "Debug PINCTRL calls"
0030 depends on DEBUG_KERNEL
0031 help
0032 Say Y here to add some extra checks and diagnostics to PINCTRL calls.
0033
0034 config PINCTRL_AMD
0035 bool "AMD GPIO pin control"
0036 depends on HAS_IOMEM
0037 depends on ACPI || COMPILE_TEST
0038 select GPIOLIB
0039 select GPIOLIB_IRQCHIP
0040 select PINMUX
0041 select PINCONF
0042 select GENERIC_PINCONF
0043 help
0044 The driver for memory mapped GPIO functionality on AMD platforms
0045 (x86 or arm). Most of the pins are usually muxed to some other
0046 functionality by firmware, so only a small amount is available
0047 for GPIO use.
0048
0049 Requires ACPI/FDT device enumeration code to set up a platform
0050 device.
0051
0052 config PINCTRL_APPLE_GPIO
0053 tristate "Apple SoC GPIO pin controller driver"
0054 depends on ARCH_APPLE
0055 select PINMUX
0056 select GPIOLIB
0057 select GPIOLIB_IRQCHIP
0058 select GENERIC_PINCTRL_GROUPS
0059 select GENERIC_PINMUX_FUNCTIONS
0060 select OF_GPIO
0061 help
0062 This is the driver for the GPIO controller found on Apple ARM SoCs,
0063 including M1.
0064
0065 This driver can also be built as a module. If so, the module
0066 will be called pinctrl-apple-gpio.
0067
0068 config PINCTRL_ARTPEC6
0069 bool "Axis ARTPEC-6 pin controller driver"
0070 depends on MACH_ARTPEC6
0071 select PINMUX
0072 select GENERIC_PINCONF
0073 help
0074 This is the driver for the Axis ARTPEC-6 pin controller. This driver
0075 supports pin function multiplexing as well as pin bias and drive
0076 strength configuration. Device tree integration instructions can be
0077 found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
0078
0079 config PINCTRL_AS3722
0080 tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
0081 depends on MFD_AS3722 && GPIOLIB
0082 select PINMUX
0083 select GENERIC_PINCONF
0084 help
0085 AS3722 device supports the configuration of GPIO pins for different
0086 functionality. This driver supports the pinmux, push-pull and
0087 open drain configuration for the GPIO pins of AS3722 devices. It also
0088 supports the GPIO functionality through gpiolib.
0089
0090 config PINCTRL_AT91
0091 bool "AT91 pinctrl driver"
0092 depends on OF
0093 depends on ARCH_AT91
0094 select PINMUX
0095 select PINCONF
0096 select GPIOLIB
0097 select OF_GPIO
0098 select GPIOLIB_IRQCHIP
0099 help
0100 Say Y here to enable the at91 pinctrl driver
0101
0102 config PINCTRL_AT91PIO4
0103 bool "AT91 PIO4 pinctrl driver"
0104 depends on OF
0105 depends on HAS_IOMEM
0106 depends on ARCH_AT91 || COMPILE_TEST
0107 select PINMUX
0108 select GENERIC_PINCONF
0109 select GPIOLIB
0110 select GPIOLIB_IRQCHIP
0111 select OF_GPIO
0112 help
0113 Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
0114 controller available on sama5d2 SoC.
0115
0116 config PINCTRL_AXP209
0117 tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
0118 depends on MFD_AXP20X
0119 depends on OF
0120 select PINMUX
0121 select GENERIC_PINCONF
0122 select GPIOLIB
0123 help
0124 AXP PMICs provides multiple GPIOs that can be muxed for different
0125 functions. This driver bundles a pinctrl driver to select the function
0126 muxing and a GPIO driver to handle the GPIO when the GPIO function is
0127 selected.
0128 Say Y to enable pinctrl and GPIO support for the AXP209 PMIC.
0129
0130 config PINCTRL_BM1880
0131 bool "Bitmain BM1880 Pinctrl driver"
0132 depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
0133 default ARCH_BITMAIN
0134 select PINMUX
0135 help
0136 Pinctrl driver for Bitmain BM1880 SoC.
0137
0138 config PINCTRL_DA850_PUPD
0139 tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"
0140 depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
0141 select PINCONF
0142 select GENERIC_PINCONF
0143 help
0144 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
0145 pull-up and pull-down pin groups.
0146
0147 config PINCTRL_DA9062
0148 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
0149 depends on MFD_DA9062
0150 select GPIOLIB
0151 help
0152 The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
0153 different functions. This driver bundles a pinctrl driver to select the
0154 function muxing and a GPIO driver to handle the GPIO when the GPIO
0155 function is selected.
0156
0157 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
0158
0159 config PINCTRL_DIGICOLOR
0160 bool
0161 depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
0162 select PINMUX
0163 select GENERIC_PINCONF
0164
0165 config PINCTRL_EQUILIBRIUM
0166 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
0167 depends on OF && HAS_IOMEM
0168 depends on X86 || COMPILE_TEST
0169 select PINMUX
0170 select PINCONF
0171 select GPIOLIB
0172 select GPIO_GENERIC
0173 select GPIOLIB_IRQCHIP
0174 select GENERIC_PINCONF
0175 select GENERIC_PINCTRL_GROUPS
0176 select GENERIC_PINMUX_FUNCTIONS
0177 help
0178 Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
0179 Mountain network processor SoC that supports both the GPIO and pin
0180 control frameworks. It provides interfaces to setup pin muxing, assign
0181 desired pin functions, configure GPIO attributes for LGM SoC pins.
0182 Pin muxing and pin config settings are retrieved from device tree.
0183
0184 config PINCTRL_GEMINI
0185 bool
0186 depends on ARCH_GEMINI
0187 default ARCH_GEMINI
0188 select PINMUX
0189 select GENERIC_PINCONF
0190 select MFD_SYSCON
0191
0192 config PINCTRL_INGENIC
0193 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
0194 default MACH_INGENIC
0195 depends on OF
0196 depends on MIPS || COMPILE_TEST
0197 select GENERIC_PINCONF
0198 select GENERIC_PINCTRL_GROUPS
0199 select GENERIC_PINMUX_FUNCTIONS
0200 select GPIOLIB
0201 select GPIOLIB_IRQCHIP
0202 select REGMAP_MMIO
0203
0204 config PINCTRL_K210
0205 bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
0206 depends on RISCV && SOC_CANAAN && OF
0207 select GENERIC_PINMUX_FUNCTIONS
0208 select GENERIC_PINCONF
0209 select GPIOLIB
0210 select OF_GPIO
0211 select REGMAP_MMIO
0212 default SOC_CANAAN
0213 help
0214 Add support for the Canaan Kendryte K210 RISC-V SOC Field
0215 Programmable IO Array (FPIOA) controller.
0216
0217 config PINCTRL_KEEMBAY
0218 tristate "Pinctrl driver for Intel Keem Bay SoC"
0219 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
0220 depends on HAS_IOMEM
0221 select PINMUX
0222 select PINCONF
0223 select GENERIC_PINCONF
0224 select GENERIC_PINCTRL_GROUPS
0225 select GENERIC_PINMUX_FUNCTIONS
0226 select GPIOLIB
0227 select GPIOLIB_IRQCHIP
0228 select GPIO_GENERIC
0229 help
0230 This selects pin control driver for the Intel Keem Bay SoC.
0231 It provides pin config functions such as pull-up, pull-down,
0232 interrupt, drive strength, sec lock, Schmitt trigger, slew
0233 rate control and direction control. This module will be
0234 called as pinctrl-keembay.
0235
0236 config PINCTRL_LANTIQ
0237 bool
0238 depends on LANTIQ
0239 select PINMUX
0240 select PINCONF
0241
0242 config PINCTRL_FALCON
0243 bool
0244 depends on SOC_FALCON
0245 depends on PINCTRL_LANTIQ
0246
0247 config PINCTRL_XWAY
0248 bool
0249 depends on SOC_TYPE_XWAY
0250 depends on PINCTRL_LANTIQ
0251
0252 config PINCTRL_LPC18XX
0253 bool "NXP LPC18XX/43XX SCU pinctrl driver"
0254 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
0255 default ARCH_LPC18XX
0256 select PINMUX
0257 select GENERIC_PINCONF
0258 help
0259 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
0260
0261 config PINCTRL_MAX77620
0262 tristate "MAX77620/MAX20024 Pincontrol support"
0263 depends on MFD_MAX77620 && OF
0264 select PINMUX
0265 select GENERIC_PINCONF
0266 help
0267 Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
0268 This PMIC has 8 GPIO pins that work as GPIO as well as special
0269 function in alternate mode. This driver also configure push-pull,
0270 open drain, FPS slots etc.
0271
0272 config PINCTRL_MCP23S08_I2C
0273 tristate
0274 select REGMAP_I2C
0275
0276 config PINCTRL_MCP23S08_SPI
0277 tristate
0278 select REGMAP_SPI
0279
0280 config PINCTRL_MCP23S08
0281 tristate "Microchip MCP23xxx I/O expander"
0282 depends on SPI_MASTER || I2C
0283 select GPIOLIB
0284 select GPIOLIB_IRQCHIP
0285 select GENERIC_PINCONF
0286 select PINCTRL_MCP23S08_I2C if I2C
0287 select PINCTRL_MCP23S08_SPI if SPI_MASTER
0288 help
0289 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
0290 MCP23008 / MCP23017 / MCP23018 I/O expanders.
0291 This provides a GPIO interface supporting inputs and outputs and a
0292 corresponding interrupt-controller.
0293
0294 config PINCTRL_MICROCHIP_SGPIO
0295 bool "Pinctrl driver for Microsemi/Microchip Serial GPIO"
0296 depends on OF
0297 depends on HAS_IOMEM
0298 select GPIOLIB
0299 select GPIOLIB_IRQCHIP
0300 select GENERIC_PINCONF
0301 select GENERIC_PINCTRL_GROUPS
0302 select GENERIC_PINMUX_FUNCTIONS
0303 select OF_GPIO
0304 help
0305 Support for the serial GPIO interface used on Microsemi and
0306 Microchip SoCs. By using a serial interface, the SIO
0307 controller significantly extends the number of available
0308 GPIOs with a minimum number of additional pins on the
0309 device. The primary purpose of the SIO controller is to
0310 connect control signals from SFP modules and to act as an
0311 LED controller.
0312
0313 config PINCTRL_OCELOT
0314 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
0315 depends on OF
0316 depends on HAS_IOMEM
0317 select GPIOLIB
0318 select GPIOLIB_IRQCHIP
0319 select GENERIC_PINCONF
0320 select GENERIC_PINCTRL_GROUPS
0321 select GENERIC_PINMUX_FUNCTIONS
0322 select OF_GPIO
0323 select REGMAP_MMIO
0324
0325 config PINCTRL_OXNAS
0326 bool
0327 depends on OF
0328 select PINMUX
0329 select PINCONF
0330 select GENERIC_PINCONF
0331 select GPIOLIB
0332 select OF_GPIO
0333 select GPIOLIB_IRQCHIP
0334 select MFD_SYSCON
0335
0336 config PINCTRL_PALMAS
0337 tristate "Pinctrl driver for the PALMAS Series MFD devices"
0338 depends on OF && MFD_PALMAS
0339 select PINMUX
0340 select GENERIC_PINCONF
0341 help
0342 Palmas device supports the configuration of pins for different
0343 functionality. This driver supports the pinmux, push-pull and
0344 open drain configuration for the Palmas series devices like
0345 TPS65913, TPS80036 etc.
0346
0347 config PINCTRL_PIC32
0348 bool "Microchip PIC32 pin controller driver"
0349 depends on OF
0350 depends on MACH_PIC32
0351 select PINMUX
0352 select GENERIC_PINCONF
0353 select GPIOLIB_IRQCHIP
0354 select OF_GPIO
0355 help
0356 This is the pin controller and gpio driver for Microchip PIC32
0357 microcontrollers. This option is selected automatically when specific
0358 machine and arch are selected to build.
0359
0360 config PINCTRL_PIC32MZDA
0361 def_bool y if PIC32MZDA
0362 select PINCTRL_PIC32
0363
0364 config PINCTRL_PISTACHIO
0365 bool "IMG Pistachio SoC pinctrl driver"
0366 depends on OF && (MIPS || COMPILE_TEST)
0367 depends on GPIOLIB
0368 select PINMUX
0369 select GENERIC_PINCONF
0370 select GPIOLIB_IRQCHIP
0371 select OF_GPIO
0372 help
0373 This support pinctrl and GPIO driver for IMG Pistachio SoC.
0374
0375 config PINCTRL_RK805
0376 tristate "Pinctrl and GPIO driver for RK805 PMIC"
0377 depends on MFD_RK808
0378 select GPIOLIB
0379 select PINMUX
0380 select GENERIC_PINCONF
0381 help
0382 This selects the pinctrl driver for RK805.
0383
0384 config PINCTRL_ROCKCHIP
0385 tristate "Rockchip gpio and pinctrl driver"
0386 depends on ARCH_ROCKCHIP || COMPILE_TEST
0387 depends on OF
0388 select GPIOLIB
0389 select PINMUX
0390 select GENERIC_PINCONF
0391 select GENERIC_IRQ_CHIP
0392 select MFD_SYSCON
0393 select OF_GPIO
0394 default ARCH_ROCKCHIP
0395 help
0396 This support pinctrl and GPIO driver for Rockchip SoCs.
0397
0398 config PINCTRL_SINGLE
0399 tristate "One-register-per-pin type device tree based pinctrl driver"
0400 depends on OF
0401 depends on HAS_IOMEM
0402 select GENERIC_PINCTRL_GROUPS
0403 select GENERIC_PINMUX_FUNCTIONS
0404 select GENERIC_PINCONF
0405 help
0406 This selects the device tree based generic pinctrl driver.
0407
0408 config PINCTRL_ST
0409 bool
0410 depends on OF
0411 select PINMUX
0412 select PINCONF
0413 select GPIOLIB_IRQCHIP
0414
0415 config PINCTRL_STARFIVE
0416 tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC"
0417 depends on SOC_STARFIVE || COMPILE_TEST
0418 depends on OF
0419 default SOC_STARFIVE
0420 select GENERIC_PINCTRL_GROUPS
0421 select GENERIC_PINMUX_FUNCTIONS
0422 select GENERIC_PINCONF
0423 select GPIOLIB
0424 select GPIOLIB_IRQCHIP
0425 select OF_GPIO
0426 help
0427 Say yes here to support pin control on the StarFive JH7100 SoC.
0428 This also provides an interface to the GPIO pins not used by other
0429 peripherals supporting inputs, outputs, configuring pull-up/pull-down
0430 and interrupts on input changes.
0431
0432 config PINCTRL_STMFX
0433 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
0434 depends on I2C
0435 depends on OF_GPIO
0436 select GENERIC_PINCONF
0437 select GPIOLIB_IRQCHIP
0438 select MFD_STMFX
0439 help
0440 Driver for STMicroelectronics Multi-Function eXpander (STMFX)
0441 GPIO expander.
0442 This provides a GPIO interface supporting inputs and outputs,
0443 and configuring push-pull, open-drain, and can also be used as
0444 interrupt-controller.
0445
0446 config PINCTRL_SX150X
0447 bool "Semtech SX150x I2C GPIO expander pinctrl driver"
0448 depends on I2C=y
0449 select PINMUX
0450 select PINCONF
0451 select GENERIC_PINCONF
0452 select GPIOLIB
0453 select GPIOLIB_IRQCHIP
0454 select REGMAP
0455 help
0456 Say Y here to provide support for Semtech SX150x-series I2C
0457 GPIO expanders as pinctrl module.
0458 Compatible models include:
0459 - 8 bits: sx1508q, sx1502q
0460 - 16 bits: sx1509q, sx1506q
0461
0462 config PINCTRL_TB10X
0463 bool
0464 depends on OF && ARC_PLAT_TB10X
0465 select GPIOLIB
0466
0467 config PINCTRL_THUNDERBAY
0468 tristate "Generic pinctrl and GPIO driver for Intel Thunder Bay SoC"
0469 depends on ARCH_THUNDERBAY || (ARM64 && COMPILE_TEST)
0470 depends on HAS_IOMEM
0471 select PINMUX
0472 select PINCONF
0473 select GENERIC_PINCONF
0474 select GENERIC_PINCTRL_GROUPS
0475 select GENERIC_PINMUX_FUNCTIONS
0476 select GPIOLIB
0477 select GPIOLIB_IRQCHIP
0478 select GPIO_GENERIC
0479 help
0480 This selects pin control driver for the Intel Thunder Bay SoC.
0481 It provides pin config functions such as pull-up, pull-down,
0482 interrupt, drive strength, sec lock, Schmitt trigger, slew
0483 rate control and direction control. This module will be
0484 called as pinctrl-thunderbay.
0485
0486 config PINCTRL_ZYNQ
0487 bool "Pinctrl driver for Xilinx Zynq"
0488 depends on ARCH_ZYNQ
0489 select PINMUX
0490 select GENERIC_PINCONF
0491 help
0492 This selects the pinctrl driver for Xilinx Zynq.
0493
0494 config PINCTRL_ZYNQMP
0495 tristate "Pinctrl driver for Xilinx ZynqMP"
0496 depends on ZYNQMP_FIRMWARE
0497 select PINMUX
0498 select GENERIC_PINCONF
0499 default ZYNQMP_FIRMWARE
0500 help
0501 This selects the pinctrl driver for Xilinx ZynqMP platform.
0502 This driver will query the pin information from the firmware
0503 and allow configuring the pins.
0504 Configuration can include the mux function to select on those
0505 pin(s)/group(s), and various pin configuration parameters
0506 such as pull-up, slew rate, etc.
0507 This driver can also be built as a module. If so, the module
0508 will be called pinctrl-zynqmp.
0509
0510 source "drivers/pinctrl/actions/Kconfig"
0511 source "drivers/pinctrl/aspeed/Kconfig"
0512 source "drivers/pinctrl/bcm/Kconfig"
0513 source "drivers/pinctrl/berlin/Kconfig"
0514 source "drivers/pinctrl/cirrus/Kconfig"
0515 source "drivers/pinctrl/freescale/Kconfig"
0516 source "drivers/pinctrl/intel/Kconfig"
0517 source "drivers/pinctrl/mediatek/Kconfig"
0518 source "drivers/pinctrl/meson/Kconfig"
0519 source "drivers/pinctrl/mvebu/Kconfig"
0520 source "drivers/pinctrl/nomadik/Kconfig"
0521 source "drivers/pinctrl/nuvoton/Kconfig"
0522 source "drivers/pinctrl/pxa/Kconfig"
0523 source "drivers/pinctrl/qcom/Kconfig"
0524 source "drivers/pinctrl/ralink/Kconfig"
0525 source "drivers/pinctrl/renesas/Kconfig"
0526 source "drivers/pinctrl/samsung/Kconfig"
0527 source "drivers/pinctrl/spear/Kconfig"
0528 source "drivers/pinctrl/sprd/Kconfig"
0529 source "drivers/pinctrl/stm32/Kconfig"
0530 source "drivers/pinctrl/sunplus/Kconfig"
0531 source "drivers/pinctrl/sunxi/Kconfig"
0532 source "drivers/pinctrl/tegra/Kconfig"
0533 source "drivers/pinctrl/ti/Kconfig"
0534 source "drivers/pinctrl/uniphier/Kconfig"
0535 source "drivers/pinctrl/visconti/Kconfig"
0536 source "drivers/pinctrl/vt8500/Kconfig"
0537
0538 endif