622 lines · plain
1# SPDX-License-Identifier: GPL-2.0-only2#3# PINCTRL infrastructure and drivers4#5 6menuconfig PINCTRL7 bool "Pin controllers"8 9if PINCTRL10 11config GENERIC_PINCTRL_GROUPS12 bool13 14config PINMUX15 bool "Support pin multiplexing controllers" if COMPILE_TEST16 17config GENERIC_PINMUX_FUNCTIONS18 bool19 select PINMUX20 21config PINCONF22 bool "Support pin configuration controllers" if COMPILE_TEST23 24config GENERIC_PINCONF25 bool26 select PINCONF27 28config DEBUG_PINCTRL29 bool "Debug PINCTRL calls"30 depends on DEBUG_KERNEL31 help32 Say Y here to add some extra checks and diagnostics to PINCTRL calls.33 34config PINCTRL_AMD35 bool "AMD GPIO pin control"36 depends on HAS_IOMEM37 depends on ACPI || COMPILE_TEST38 select GPIOLIB39 select GPIOLIB_IRQCHIP40 select PINMUX41 select PINCONF42 select GENERIC_PINCONF43 help44 The driver for memory mapped GPIO functionality on AMD platforms45 (x86 or arm). Most of the pins are usually muxed to some other46 functionality by firmware, so only a small amount is available47 for GPIO use.48 49 Requires ACPI/FDT device enumeration code to set up a platform50 device.51 52config PINCTRL_APPLE_GPIO53 tristate "Apple SoC GPIO pin controller driver"54 depends on ARCH_APPLE55 select PINMUX56 select GPIOLIB57 select GPIOLIB_IRQCHIP58 select GENERIC_PINCTRL_GROUPS59 select GENERIC_PINMUX_FUNCTIONS60 select OF_GPIO61 help62 This is the driver for the GPIO controller found on Apple ARM SoCs,63 including M1.64 65 This driver can also be built as a module. If so, the module66 will be called pinctrl-apple-gpio.67 68config PINCTRL_ARTPEC669 bool "Axis ARTPEC-6 pin controller driver"70 depends on MACH_ARTPEC671 select PINMUX72 select GENERIC_PINCONF73 help74 This is the driver for the Axis ARTPEC-6 pin controller. This driver75 supports pin function multiplexing as well as pin bias and drive76 strength configuration. Device tree integration instructions can be77 found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt78 79config PINCTRL_AS372280 tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"81 depends on MFD_AS3722 && GPIOLIB82 select PINMUX83 select GENERIC_PINCONF84 help85 AS3722 device supports the configuration of GPIO pins for different86 functionality. This driver supports the pinmux, push-pull and87 open drain configuration for the GPIO pins of AS3722 devices. It also88 supports the GPIO functionality through gpiolib.89 90config PINCTRL_AT9191 bool "AT91 pinctrl driver"92 depends on OF93 depends on ARCH_AT9194 select PINMUX95 select PINCONF96 select GPIOLIB97 select OF_GPIO98 select GPIOLIB_IRQCHIP99 help100 Say Y here to enable the at91 pinctrl driver101 102config PINCTRL_AT91PIO4103 bool "AT91 PIO4 pinctrl driver"104 depends on OF105 depends on HAS_IOMEM106 depends on ARCH_AT91 || COMPILE_TEST107 select PINMUX108 select GENERIC_PINCONF109 select GPIOLIB110 select GPIOLIB_IRQCHIP111 select OF_GPIO112 help113 Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4114 controller available on sama5d2 SoC.115 116config PINCTRL_AXP209117 tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"118 depends on MFD_AXP20X119 depends on OF120 select PINMUX121 select GENERIC_PINCONF122 select GPIOLIB123 help124 AXP PMICs provides multiple GPIOs that can be muxed for different125 functions. This driver bundles a pinctrl driver to select the function126 muxing and a GPIO driver to handle the GPIO when the GPIO function is127 selected.128 Say Y to enable pinctrl and GPIO support for the AXP209 PMIC.129 130config PINCTRL_AW9523131 tristate "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver"132 depends on OF && I2C133 select PINMUX134 select PINCONF135 select GENERIC_PINCONF136 select GPIOLIB137 select GPIOLIB_IRQCHIP138 select REGMAP139 select REGMAP_I2C140 help141 The Awinic AW9523/AW9523B is a multi-function I2C GPIO142 expander with PWM functionality. This driver bundles a143 pinctrl driver to select the function muxing and a GPIO144 driver to handle GPIO, when the GPIO function is selected.145 146 Say yes to enable pinctrl and GPIO support for the AW9523(B).147 148config PINCTRL_BM1880149 bool "Bitmain BM1880 Pinctrl driver"150 depends on OF && (ARCH_BITMAIN || COMPILE_TEST)151 default ARCH_BITMAIN152 select PINMUX153 help154 Pinctrl driver for Bitmain BM1880 SoC.155 156config PINCTRL_CY8C95X0157 tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver"158 depends on I2C159 select GPIOLIB160 select GPIOLIB_IRQCHIP161 select PINMUX162 select PINCONF163 select GENERIC_PINCONF164 select REGMAP_I2C165 help166 Support for 20/40/60 pin Cypress Cy8C95x0 pinctrl/gpio I2C expander.167 This driver can also be built as a module. If so, the module will be168 called pinctrl-cy8c95x0.169 170config PINCTRL_DA850_PUPD171 tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"172 depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)173 select PINCONF174 select GENERIC_PINCONF175 help176 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control177 pull-up and pull-down pin groups.178 179config PINCTRL_DA9062180 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"181 depends on MFD_DA9062182 select GPIOLIB183 help184 The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for185 different functions. This driver bundles a pinctrl driver to select the186 function muxing and a GPIO driver to handle the GPIO when the GPIO187 function is selected.188 189 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.190 191config PINCTRL_DIGICOLOR192 bool193 depends on ARCH_DIGICOLOR || COMPILE_TEST194 select PINMUX195 select GENERIC_PINCONF196 197config PINCTRL_EP93XX198 bool199 depends on ARCH_EP93XX || COMPILE_TEST200 select PINMUX201 select GENERIC_PINCONF202 select MFD_SYSCON203 204config PINCTRL_EQUILIBRIUM205 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"206 depends on OF && HAS_IOMEM207 depends on X86 || COMPILE_TEST208 select PINMUX209 select PINCONF210 select GPIOLIB211 select GPIO_GENERIC212 select GPIOLIB_IRQCHIP213 select GENERIC_PINCONF214 select GENERIC_PINCTRL_GROUPS215 select GENERIC_PINMUX_FUNCTIONS216 help217 Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning218 Mountain network processor SoC that supports both the GPIO and pin219 control frameworks. It provides interfaces to setup pin muxing, assign220 desired pin functions, configure GPIO attributes for LGM SoC pins.221 Pin muxing and pin config settings are retrieved from device tree.222 223config PINCTRL_EYEQ5224 bool "Mobileye EyeQ5 pinctrl driver"225 depends on OF226 depends on MACH_EYEQ5 || COMPILE_TEST227 select PINMUX228 select GENERIC_PINCONF229 select AUXILIARY_BUS230 default MACH_EYEQ5231 help232 Pin controller driver for the Mobileye EyeQ5 platform. It does both233 pin config & pin muxing. It does not handle GPIO.234 235 Pin muxing supports two functions for each pin: first is GPIO, second236 is pin-dependent. Pin config is about bias & drive strength.237 238config PINCTRL_GEMINI239 bool240 depends on ARCH_GEMINI241 default ARCH_GEMINI242 select PINMUX243 select GENERIC_PINCONF244 select MFD_SYSCON245 246config PINCTRL_INGENIC247 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"248 default MACH_INGENIC249 depends on OF250 depends on MIPS || COMPILE_TEST251 select GENERIC_PINCONF252 select GENERIC_PINCTRL_GROUPS253 select GENERIC_PINMUX_FUNCTIONS254 select GPIOLIB255 select GPIOLIB_IRQCHIP256 select REGMAP_MMIO257 258config PINCTRL_K210259 bool "Pinctrl driver for the Canaan Kendryte K210 SoC"260 depends on RISCV && SOC_CANAAN_K210 && OF261 select GENERIC_PINMUX_FUNCTIONS262 select GENERIC_PINCONF263 select GPIOLIB264 select OF_GPIO265 select REGMAP_MMIO266 default SOC_CANAAN_K210267 help268 Add support for the Canaan Kendryte K210 RISC-V SOC Field269 Programmable IO Array (FPIOA) controller.270 271config PINCTRL_KEEMBAY272 tristate "Pinctrl driver for Intel Keem Bay SoC"273 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)274 depends on HAS_IOMEM275 select PINMUX276 select PINCONF277 select GENERIC_PINCONF278 select GENERIC_PINCTRL_GROUPS279 select GENERIC_PINMUX_FUNCTIONS280 select GPIOLIB281 select GPIOLIB_IRQCHIP282 select GPIO_GENERIC283 help284 This selects pin control driver for the Intel Keem Bay SoC.285 It provides pin config functions such as pull-up, pull-down,286 interrupt, drive strength, sec lock, Schmitt trigger, slew287 rate control and direction control. This module will be288 called as pinctrl-keembay.289 290config PINCTRL_LANTIQ291 bool292 depends on LANTIQ293 select PINMUX294 select PINCONF295 296config PINCTRL_FALCON297 bool298 depends on SOC_FALCON299 depends on PINCTRL_LANTIQ300 301config PINCTRL_LOONGSON2302 tristate "Pinctrl driver for the Loongson-2 SoC"303 depends on OF && (LOONGARCH || COMPILE_TEST)304 select PINMUX305 select GENERIC_PINCONF306 help307 This selects pin control driver for the Loongson-2 SoC. It308 provides pin config functions multiplexing. GPIO pin pull-up,309 pull-down functions are not supported. Say yes to enable310 pinctrl for Loongson-2 SoC.311 312config PINCTRL_XWAY313 bool314 depends on SOC_TYPE_XWAY315 depends on PINCTRL_LANTIQ316 317config PINCTRL_LPC18XX318 bool "NXP LPC18XX/43XX SCU pinctrl driver"319 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)320 default ARCH_LPC18XX321 select PINMUX322 select GENERIC_PINCONF323 help324 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).325 326config PINCTRL_MAX77620327 tristate "MAX77620/MAX20024 Pincontrol support"328 depends on MFD_MAX77620 && OF329 select PINMUX330 select GENERIC_PINCONF331 help332 Say Y here to enable Pin control support for Maxim MAX77620 PMIC.333 This PMIC has 8 GPIO pins that work as GPIO as well as special334 function in alternate mode. This driver also configure push-pull,335 open drain, FPS slots etc.336 337config PINCTRL_MCP23S08_I2C338 tristate339 select REGMAP_I2C340 341config PINCTRL_MCP23S08_SPI342 tristate343 select REGMAP_SPI344 345config PINCTRL_MCP23S08346 tristate "Microchip MCP23xxx I/O expander"347 depends on SPI_MASTER || I2C348 select GPIOLIB349 select GPIOLIB_IRQCHIP350 select GENERIC_PINCONF351 select PINCTRL_MCP23S08_I2C if I2C352 select PINCTRL_MCP23S08_SPI if SPI_MASTER353 help354 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /355 MCP23008 / MCP23017 / MCP23018 I/O expanders.356 This provides a GPIO interface supporting inputs and outputs and a357 corresponding interrupt-controller.358 359config PINCTRL_MICROCHIP_SGPIO360 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"361 depends on OF362 depends on HAS_IOMEM363 select GPIOLIB364 select GPIOLIB_IRQCHIP365 select GENERIC_PINCONF366 select GENERIC_PINCTRL_GROUPS367 select GENERIC_PINMUX_FUNCTIONS368 select OF_GPIO369 help370 Support for the serial GPIO interface used on Microsemi and371 Microchip SoCs. By using a serial interface, the SIO372 controller significantly extends the number of available373 GPIOs with a minimum number of additional pins on the374 device. The primary purpose of the SIO controller is to375 connect control signals from SFP modules and to act as an376 LED controller.377 378 If compiled as a module, the module name will be379 pinctrl-microchip-sgpio.380 381config PINCTRL_OCELOT382 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"383 depends on OF384 depends on HAS_IOMEM385 select GPIOLIB386 select GPIOLIB_IRQCHIP387 select GENERIC_PINCONF388 select GENERIC_PINCTRL_GROUPS389 select GENERIC_PINMUX_FUNCTIONS390 select OF_GPIO391 select REGMAP_MMIO392 help393 Support for the internal GPIO interfaces on Microsemi Ocelot and394 Jaguar2 SoCs.395 396 If conpiled as a module, the module name will be pinctrl-ocelot.397 398config PINCTRL_PALMAS399 tristate "Pinctrl driver for the PALMAS Series MFD devices"400 depends on OF && MFD_PALMAS401 select PINMUX402 select GENERIC_PINCONF403 help404 Palmas device supports the configuration of pins for different405 functionality. This driver supports the pinmux, push-pull and406 open drain configuration for the Palmas series devices like407 TPS65913, TPS80036 etc.408 409config PINCTRL_PEF2256410 tristate "Lantiq PEF2256 (FALC56) pin controller driver"411 depends on OF && FRAMER_PEF2256412 select PINMUX413 select PINCONF414 select GENERIC_PINCONF415 help416 This option enables the pin controller support for the Lantiq PEF2256417 framer, also known as FALC56.418 419 If unsure, say N.420 421 To compile this driver as a module, choose M here: the422 module will be called pinctrl-pef2256.423 424config PINCTRL_PIC32425 bool "Microchip PIC32 pin controller driver"426 depends on OF427 depends on MACH_PIC32428 select PINMUX429 select GENERIC_PINCONF430 select GPIOLIB_IRQCHIP431 select OF_GPIO432 help433 This is the pin controller and gpio driver for Microchip PIC32434 microcontrollers. This option is selected automatically when specific435 machine and arch are selected to build.436 437config PINCTRL_PIC32MZDA438 def_bool y if PIC32MZDA439 select PINCTRL_PIC32440 441config PINCTRL_PISTACHIO442 bool "IMG Pistachio SoC pinctrl driver"443 depends on OF && (MIPS || COMPILE_TEST)444 depends on GPIOLIB445 select PINMUX446 select GENERIC_PINCONF447 select GPIOLIB_IRQCHIP448 select OF_GPIO449 help450 This support pinctrl and GPIO driver for IMG Pistachio SoC.451 452config PINCTRL_RK805453 tristate "Pinctrl and GPIO driver for RK805 PMIC"454 depends on MFD_RK8XX455 select GPIOLIB456 select PINMUX457 select GENERIC_PINCONF458 help459 This selects the pinctrl driver for RK805.460 461config PINCTRL_ROCKCHIP462 tristate "Rockchip gpio and pinctrl driver"463 depends on ARCH_ROCKCHIP || COMPILE_TEST464 depends on OF465 select GPIOLIB466 select PINMUX467 select GENERIC_PINCONF468 select GENERIC_IRQ_CHIP469 select MFD_SYSCON470 select OF_GPIO471 default ARCH_ROCKCHIP472 help473 This support pinctrl and GPIO driver for Rockchip SoCs.474 475config PINCTRL_SCMI476 tristate "Pinctrl driver using SCMI protocol interface"477 depends on ARM_SCMI_PROTOCOL || COMPILE_TEST478 select PINMUX479 select GENERIC_PINCONF480 help481 This driver provides support for pinctrl which is controlled482 by firmware that implements the SCMI interface.483 It uses SCMI Message Protocol to interact with the484 firmware providing all the pinctrl controls.485 486config PINCTRL_SINGLE487 tristate "One-register-per-pin type device tree based pinctrl driver"488 depends on OF489 depends on HAS_IOMEM490 select GENERIC_PINCTRL_GROUPS491 select GENERIC_PINMUX_FUNCTIONS492 select GENERIC_PINCONF493 help494 This selects the device tree based generic pinctrl driver.495 496config PINCTRL_ST497 bool498 depends on OF499 select PINMUX500 select PINCONF501 select GPIOLIB_IRQCHIP502 503config PINCTRL_STMFX504 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"505 depends on I2C506 depends on OF_GPIO507 select GENERIC_PINCONF508 select GPIOLIB_IRQCHIP509 select MFD_STMFX510 help511 Driver for STMicroelectronics Multi-Function eXpander (STMFX)512 GPIO expander.513 This provides a GPIO interface supporting inputs and outputs,514 and configuring push-pull, open-drain, and can also be used as515 interrupt-controller.516 517config PINCTRL_SX150X518 bool "Semtech SX150x I2C GPIO expander pinctrl driver"519 depends on I2C=y520 select PINMUX521 select PINCONF522 select GENERIC_PINCONF523 select GPIOLIB524 select GPIOLIB_IRQCHIP525 select REGMAP526 help527 Say Y here to provide support for Semtech SX150x-series I2C528 GPIO expanders as pinctrl module.529 Compatible models include:530 - 8 bits: sx1508q, sx1502q531 - 16 bits: sx1509q, sx1506q532 533config PINCTRL_TB10X534 bool535 depends on OF && ARC_PLAT_TB10X536 select GPIOLIB537 538config PINCTRL_TPS6594539 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"540 depends on OF && MFD_TPS6594541 default MFD_TPS6594542 select PINMUX543 select GPIOLIB544 select REGMAP545 select GPIO_REGMAP546 select GENERIC_PINCONF547 help548 Say Y to select the pinmuxing and GPIOs driver for the TPS6594549 PMICs chip family.550 551 This driver can also be built as a module552 called tps6594-pinctrl.553 554config PINCTRL_ZYNQ555 bool "Pinctrl driver for Xilinx Zynq"556 depends on ARCH_ZYNQ557 select PINMUX558 select GENERIC_PINCONF559 help560 This selects the pinctrl driver for Xilinx Zynq.561 562config PINCTRL_ZYNQMP563 tristate "Pinctrl driver for Xilinx ZynqMP"564 depends on ZYNQMP_FIRMWARE565 select PINMUX566 select GENERIC_PINCONF567 default ZYNQMP_FIRMWARE568 help569 This selects the pinctrl driver for Xilinx ZynqMP platform.570 This driver will query the pin information from the firmware571 and allow configuring the pins.572 Configuration can include the mux function to select on those573 pin(s)/group(s), and various pin configuration parameters574 such as pull-up, slew rate, etc.575 This driver can also be built as a module. If so, the module576 will be called pinctrl-zynqmp.577 578config PINCTRL_MLXBF3579 tristate "NVIDIA BlueField-3 SoC Pinctrl driver"580 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST581 select PINMUX582 select GPIOLIB583 select GPIOLIB_IRQCHIP584 help585 Say Y to select the pinctrl driver for BlueField-3 SoCs.586 This pin controller allows selecting the mux function for587 each pin. This driver can also be built as a module called588 pinctrl-mlxbf3.589 590source "drivers/pinctrl/actions/Kconfig"591source "drivers/pinctrl/aspeed/Kconfig"592source "drivers/pinctrl/bcm/Kconfig"593source "drivers/pinctrl/berlin/Kconfig"594source "drivers/pinctrl/cirrus/Kconfig"595source "drivers/pinctrl/freescale/Kconfig"596source "drivers/pinctrl/intel/Kconfig"597source "drivers/pinctrl/mediatek/Kconfig"598source "drivers/pinctrl/meson/Kconfig"599source "drivers/pinctrl/mvebu/Kconfig"600source "drivers/pinctrl/nomadik/Kconfig"601source "drivers/pinctrl/nuvoton/Kconfig"602source "drivers/pinctrl/nxp/Kconfig"603source "drivers/pinctrl/pxa/Kconfig"604source "drivers/pinctrl/qcom/Kconfig"605source "drivers/pinctrl/realtek/Kconfig"606source "drivers/pinctrl/renesas/Kconfig"607source "drivers/pinctrl/samsung/Kconfig"608source "drivers/pinctrl/sophgo/Kconfig"609source "drivers/pinctrl/spear/Kconfig"610source "drivers/pinctrl/sprd/Kconfig"611source "drivers/pinctrl/starfive/Kconfig"612source "drivers/pinctrl/stm32/Kconfig"613source "drivers/pinctrl/sunplus/Kconfig"614source "drivers/pinctrl/sunxi/Kconfig"615source "drivers/pinctrl/tegra/Kconfig"616source "drivers/pinctrl/ti/Kconfig"617source "drivers/pinctrl/uniphier/Kconfig"618source "drivers/pinctrl/visconti/Kconfig"619source "drivers/pinctrl/vt8500/Kconfig"620 621endif622