1# SPDX-License-Identifier: GPL-2.0-only 2# 3# PINCTRL infrastructure and drivers 4# 5 6menuconfig PINCTRL 7 bool "Pin controllers" 8 9if PINCTRL 10 11config GENERIC_PINCTRL_GROUPS 12 bool 13 14config PINMUX 15 bool "Support pin multiplexing controllers" if COMPILE_TEST 16 17config GENERIC_PINMUX_FUNCTIONS 18 bool 19 select PINMUX 20 21config PINCONF 22 bool "Support pin configuration controllers" if COMPILE_TEST 23 24config GENERIC_PINCONF 25 bool 26 select PINCONF 27 28config DEBUG_PINCTRL 29 bool "Debug PINCTRL calls" 30 depends on DEBUG_KERNEL 31 help 32 Say Y here to add some extra checks and diagnostics to PINCTRL calls. 33 34config PINCTRL_AMD 35 bool "AMD GPIO pin control" 36 depends on HAS_IOMEM 37 depends on ACPI || COMPILE_TEST 38 select GPIOLIB 39 select GPIOLIB_IRQCHIP 40 select PINMUX 41 select PINCONF 42 select GENERIC_PINCONF 43 help 44 The driver for memory mapped GPIO functionality on AMD platforms 45 (x86 or arm). Most of the pins are usually muxed to some other 46 functionality by firmware, so only a small amount is available 47 for GPIO use. 48 49 Requires ACPI/FDT device enumeration code to set up a platform 50 device. 51 52config PINCTRL_APPLE_GPIO 53 tristate "Apple SoC GPIO pin controller driver" 54 depends on ARCH_APPLE 55 select PINMUX 56 select GPIOLIB 57 select GPIOLIB_IRQCHIP 58 select GENERIC_PINCTRL_GROUPS 59 select GENERIC_PINMUX_FUNCTIONS 60 select OF_GPIO 61 help 62 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 module 66 will be called pinctrl-apple-gpio. 67 68config PINCTRL_ARTPEC6 69 bool "Axis ARTPEC-6 pin controller driver" 70 depends on MACH_ARTPEC6 71 select PINMUX 72 select GENERIC_PINCONF 73 help 74 This is the driver for the Axis ARTPEC-6 pin controller. This driver 75 supports pin function multiplexing as well as pin bias and drive 76 strength configuration. Device tree integration instructions can be 77 found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt 78 79config PINCTRL_AS3722 80 tristate "Pinctrl and GPIO driver for ams AS3722 PMIC" 81 depends on MFD_AS3722 && GPIOLIB 82 select PINMUX 83 select GENERIC_PINCONF 84 help 85 AS3722 device supports the configuration of GPIO pins for different 86 functionality. This driver supports the pinmux, push-pull and 87 open drain configuration for the GPIO pins of AS3722 devices. It also 88 supports the GPIO functionality through gpiolib. 89 90config PINCTRL_AT91 91 bool "AT91 pinctrl driver" 92 depends on OF 93 depends on ARCH_AT91 94 select PINMUX 95 select PINCONF 96 select GPIOLIB 97 select OF_GPIO 98 select GPIOLIB_IRQCHIP 99 help 100 Say Y here to enable the at91 pinctrl driver 101 102config PINCTRL_AT91PIO4 103 bool "AT91 PIO4 pinctrl driver" 104 depends on OF 105 depends on HAS_IOMEM 106 depends on ARCH_AT91 || COMPILE_TEST 107 select PINMUX 108 select GENERIC_PINCONF 109 select GPIOLIB 110 select GPIOLIB_IRQCHIP 111 select OF_GPIO 112 help 113 Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4 114 controller available on sama5d2 SoC. 115 116config PINCTRL_AXP209 117 tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support" 118 depends on MFD_AXP20X 119 depends on OF 120 select PINMUX 121 select GENERIC_PINCONF 122 select GPIOLIB 123 help 124 AXP PMICs provides multiple GPIOs that can be muxed for different 125 functions. This driver bundles a pinctrl driver to select the function 126 muxing and a GPIO driver to handle the GPIO when the GPIO function is 127 selected. 128 Say Y to enable pinctrl and GPIO support for the AXP209 PMIC. 129 130config PINCTRL_BM1880 131 bool "Bitmain BM1880 Pinctrl driver" 132 depends on OF && (ARCH_BITMAIN || COMPILE_TEST) 133 default ARCH_BITMAIN 134 select PINMUX 135 help 136 Pinctrl driver for Bitmain BM1880 SoC. 137 138config PINCTRL_CY8C95X0 139 tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver" 140 depends on I2C 141 select GPIOLIB 142 select GPIOLIB_IRQCHIP 143 select PINMUX 144 select PINCONF 145 select GENERIC_PINCONF 146 select REGMAP_I2C 147 help 148 Support for 20/40/60 pin Cypress Cy8C95x0 pinctrl/gpio I2C expander. 149 This driver can also be built as a module. If so, the module will be 150 called pinctrl-cy8c95x0. 151 152config PINCTRL_DA850_PUPD 153 tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups" 154 depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST) 155 select PINCONF 156 select GENERIC_PINCONF 157 help 158 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control 159 pull-up and pull-down pin groups. 160 161config PINCTRL_DA9062 162 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support" 163 depends on MFD_DA9062 164 select GPIOLIB 165 help 166 The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for 167 different functions. This driver bundles a pinctrl driver to select the 168 function muxing and a GPIO driver to handle the GPIO when the GPIO 169 function is selected. 170 171 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC. 172 173config PINCTRL_DIGICOLOR 174 bool 175 depends on ARCH_DIGICOLOR || COMPILE_TEST 176 select PINMUX 177 select GENERIC_PINCONF 178 179config PINCTRL_EQUILIBRIUM 180 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC" 181 depends on OF && HAS_IOMEM 182 depends on X86 || COMPILE_TEST 183 select PINMUX 184 select PINCONF 185 select GPIOLIB 186 select GPIO_GENERIC 187 select GPIOLIB_IRQCHIP 188 select GENERIC_PINCONF 189 select GENERIC_PINCTRL_GROUPS 190 select GENERIC_PINMUX_FUNCTIONS 191 help 192 Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning 193 Mountain network processor SoC that supports both the GPIO and pin 194 control frameworks. It provides interfaces to setup pin muxing, assign 195 desired pin functions, configure GPIO attributes for LGM SoC pins. 196 Pin muxing and pin config settings are retrieved from device tree. 197 198config PINCTRL_GEMINI 199 bool 200 depends on ARCH_GEMINI 201 default ARCH_GEMINI 202 select PINMUX 203 select GENERIC_PINCONF 204 select MFD_SYSCON 205 206config PINCTRL_INGENIC 207 bool "Pinctrl driver for the Ingenic JZ47xx SoCs" 208 default MACH_INGENIC 209 depends on OF 210 depends on MIPS || COMPILE_TEST 211 select GENERIC_PINCONF 212 select GENERIC_PINCTRL_GROUPS 213 select GENERIC_PINMUX_FUNCTIONS 214 select GPIOLIB 215 select GPIOLIB_IRQCHIP 216 select REGMAP_MMIO 217 218config PINCTRL_K210 219 bool "Pinctrl driver for the Canaan Kendryte K210 SoC" 220 depends on RISCV && SOC_CANAAN && OF 221 select GENERIC_PINMUX_FUNCTIONS 222 select GENERIC_PINCONF 223 select GPIOLIB 224 select OF_GPIO 225 select REGMAP_MMIO 226 default SOC_CANAAN 227 help 228 Add support for the Canaan Kendryte K210 RISC-V SOC Field 229 Programmable IO Array (FPIOA) controller. 230 231config PINCTRL_KEEMBAY 232 tristate "Pinctrl driver for Intel Keem Bay SoC" 233 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST) 234 depends on HAS_IOMEM 235 select PINMUX 236 select PINCONF 237 select GENERIC_PINCONF 238 select GENERIC_PINCTRL_GROUPS 239 select GENERIC_PINMUX_FUNCTIONS 240 select GPIOLIB 241 select GPIOLIB_IRQCHIP 242 select GPIO_GENERIC 243 help 244 This selects pin control driver for the Intel Keem Bay SoC. 245 It provides pin config functions such as pull-up, pull-down, 246 interrupt, drive strength, sec lock, Schmitt trigger, slew 247 rate control and direction control. This module will be 248 called as pinctrl-keembay. 249 250config PINCTRL_LANTIQ 251 bool 252 depends on LANTIQ 253 select PINMUX 254 select PINCONF 255 256config PINCTRL_FALCON 257 bool 258 depends on SOC_FALCON 259 depends on PINCTRL_LANTIQ 260 261config PINCTRL_LOONGSON2 262 tristate "Pinctrl driver for the Loongson-2 SoC" 263 depends on OF && (LOONGARCH || COMPILE_TEST) 264 select PINMUX 265 select GENERIC_PINCONF 266 help 267 This selects pin control driver for the Loongson-2 SoC. It 268 provides pin config functions multiplexing. GPIO pin pull-up, 269 pull-down functions are not supported. Say yes to enable 270 pinctrl for Loongson-2 SoC. 271 272config PINCTRL_XWAY 273 bool 274 depends on SOC_TYPE_XWAY 275 depends on PINCTRL_LANTIQ 276 277config PINCTRL_LPC18XX 278 bool "NXP LPC18XX/43XX SCU pinctrl driver" 279 depends on OF && (ARCH_LPC18XX || COMPILE_TEST) 280 default ARCH_LPC18XX 281 select PINMUX 282 select GENERIC_PINCONF 283 help 284 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU). 285 286config PINCTRL_MAX77620 287 tristate "MAX77620/MAX20024 Pincontrol support" 288 depends on MFD_MAX77620 && OF 289 select PINMUX 290 select GENERIC_PINCONF 291 help 292 Say Y here to enable Pin control support for Maxim MAX77620 PMIC. 293 This PMIC has 8 GPIO pins that work as GPIO as well as special 294 function in alternate mode. This driver also configure push-pull, 295 open drain, FPS slots etc. 296 297config PINCTRL_MCP23S08_I2C 298 tristate 299 select REGMAP_I2C 300 301config PINCTRL_MCP23S08_SPI 302 tristate 303 select REGMAP_SPI 304 305config PINCTRL_MCP23S08 306 tristate "Microchip MCP23xxx I/O expander" 307 depends on SPI_MASTER || I2C 308 select GPIOLIB 309 select GPIOLIB_IRQCHIP 310 select GENERIC_PINCONF 311 select PINCTRL_MCP23S08_I2C if I2C 312 select PINCTRL_MCP23S08_SPI if SPI_MASTER 313 help 314 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 / 315 MCP23008 / MCP23017 / MCP23018 I/O expanders. 316 This provides a GPIO interface supporting inputs and outputs and a 317 corresponding interrupt-controller. 318 319config PINCTRL_MICROCHIP_SGPIO 320 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO" 321 depends on OF 322 depends on HAS_IOMEM 323 select GPIOLIB 324 select GPIOLIB_IRQCHIP 325 select GENERIC_PINCONF 326 select GENERIC_PINCTRL_GROUPS 327 select GENERIC_PINMUX_FUNCTIONS 328 select OF_GPIO 329 help 330 Support for the serial GPIO interface used on Microsemi and 331 Microchip SoCs. By using a serial interface, the SIO 332 controller significantly extends the number of available 333 GPIOs with a minimum number of additional pins on the 334 device. The primary purpose of the SIO controller is to 335 connect control signals from SFP modules and to act as an 336 LED controller. 337 338 If compiled as a module, the module name will be 339 pinctrl-microchip-sgpio. 340 341config PINCTRL_OCELOT 342 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs" 343 depends on OF 344 depends on HAS_IOMEM 345 select GPIOLIB 346 select GPIOLIB_IRQCHIP 347 select GENERIC_PINCONF 348 select GENERIC_PINCTRL_GROUPS 349 select GENERIC_PINMUX_FUNCTIONS 350 select OF_GPIO 351 select REGMAP_MMIO 352 help 353 Support for the internal GPIO interfaces on Microsemi Ocelot and 354 Jaguar2 SoCs. 355 356 If conpiled as a module, the module name will be pinctrl-ocelot. 357 358config PINCTRL_PALMAS 359 tristate "Pinctrl driver for the PALMAS Series MFD devices" 360 depends on OF && MFD_PALMAS 361 select PINMUX 362 select GENERIC_PINCONF 363 help 364 Palmas device supports the configuration of pins for different 365 functionality. This driver supports the pinmux, push-pull and 366 open drain configuration for the Palmas series devices like 367 TPS65913, TPS80036 etc. 368 369config PINCTRL_PEF2256 370 tristate "Lantiq PEF2256 (FALC56) pin controller driver" 371 depends on OF && FRAMER_PEF2256 372 select PINMUX 373 select PINCONF 374 select GENERIC_PINCONF 375 help 376 This option enables the pin controller support for the Lantiq PEF2256 377 framer, also known as FALC56. 378 379 If unsure, say N. 380 381 To compile this driver as a module, choose M here: the 382 module will be called pinctrl-pef2256. 383 384config PINCTRL_PIC32 385 bool "Microchip PIC32 pin controller driver" 386 depends on OF 387 depends on MACH_PIC32 388 select PINMUX 389 select GENERIC_PINCONF 390 select GPIOLIB_IRQCHIP 391 select OF_GPIO 392 help 393 This is the pin controller and gpio driver for Microchip PIC32 394 microcontrollers. This option is selected automatically when specific 395 machine and arch are selected to build. 396 397config PINCTRL_PIC32MZDA 398 def_bool y if PIC32MZDA 399 select PINCTRL_PIC32 400 401config PINCTRL_PISTACHIO 402 bool "IMG Pistachio SoC pinctrl driver" 403 depends on OF && (MIPS || COMPILE_TEST) 404 depends on GPIOLIB 405 select PINMUX 406 select GENERIC_PINCONF 407 select GPIOLIB_IRQCHIP 408 select OF_GPIO 409 help 410 This support pinctrl and GPIO driver for IMG Pistachio SoC. 411 412config PINCTRL_RK805 413 tristate "Pinctrl and GPIO driver for RK805 PMIC" 414 depends on MFD_RK8XX 415 select GPIOLIB 416 select PINMUX 417 select GENERIC_PINCONF 418 help 419 This selects the pinctrl driver for RK805. 420 421config PINCTRL_ROCKCHIP 422 tristate "Rockchip gpio and pinctrl driver" 423 depends on ARCH_ROCKCHIP || COMPILE_TEST 424 depends on OF 425 select GPIOLIB 426 select PINMUX 427 select GENERIC_PINCONF 428 select GENERIC_IRQ_CHIP 429 select MFD_SYSCON 430 select OF_GPIO 431 default ARCH_ROCKCHIP 432 help 433 This support pinctrl and GPIO driver for Rockchip SoCs. 434 435config PINCTRL_SINGLE 436 tristate "One-register-per-pin type device tree based pinctrl driver" 437 depends on OF 438 depends on HAS_IOMEM 439 select GENERIC_PINCTRL_GROUPS 440 select GENERIC_PINMUX_FUNCTIONS 441 select GENERIC_PINCONF 442 help 443 This selects the device tree based generic pinctrl driver. 444 445config PINCTRL_ST 446 bool 447 depends on OF 448 select PINMUX 449 select PINCONF 450 select GPIOLIB_IRQCHIP 451 452config PINCTRL_STMFX 453 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver" 454 depends on I2C 455 depends on OF_GPIO 456 select GENERIC_PINCONF 457 select GPIOLIB_IRQCHIP 458 select MFD_STMFX 459 help 460 Driver for STMicroelectronics Multi-Function eXpander (STMFX) 461 GPIO expander. 462 This provides a GPIO interface supporting inputs and outputs, 463 and configuring push-pull, open-drain, and can also be used as 464 interrupt-controller. 465 466config PINCTRL_SX150X 467 bool "Semtech SX150x I2C GPIO expander pinctrl driver" 468 depends on I2C=y 469 select PINMUX 470 select PINCONF 471 select GENERIC_PINCONF 472 select GPIOLIB 473 select GPIOLIB_IRQCHIP 474 select REGMAP 475 help 476 Say Y here to provide support for Semtech SX150x-series I2C 477 GPIO expanders as pinctrl module. 478 Compatible models include: 479 - 8 bits: sx1508q, sx1502q 480 - 16 bits: sx1509q, sx1506q 481 482config PINCTRL_TB10X 483 bool 484 depends on OF && ARC_PLAT_TB10X 485 select GPIOLIB 486 487config PINCTRL_TPS6594 488 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC" 489 depends on OF && MFD_TPS6594 490 default MFD_TPS6594 491 select PINMUX 492 select GPIOLIB 493 select REGMAP 494 select GPIO_REGMAP 495 select GENERIC_PINCONF 496 help 497 Say Y to select the pinmuxing and GPIOs driver for the TPS6594 498 PMICs chip family. 499 500 This driver can also be built as a module 501 called tps6594-pinctrl. 502 503config PINCTRL_ZYNQ 504 bool "Pinctrl driver for Xilinx Zynq" 505 depends on ARCH_ZYNQ 506 select PINMUX 507 select GENERIC_PINCONF 508 help 509 This selects the pinctrl driver for Xilinx Zynq. 510 511config PINCTRL_ZYNQMP 512 tristate "Pinctrl driver for Xilinx ZynqMP" 513 depends on ZYNQMP_FIRMWARE 514 select PINMUX 515 select GENERIC_PINCONF 516 default ZYNQMP_FIRMWARE 517 help 518 This selects the pinctrl driver for Xilinx ZynqMP platform. 519 This driver will query the pin information from the firmware 520 and allow configuring the pins. 521 Configuration can include the mux function to select on those 522 pin(s)/group(s), and various pin configuration parameters 523 such as pull-up, slew rate, etc. 524 This driver can also be built as a module. If so, the module 525 will be called pinctrl-zynqmp. 526 527config PINCTRL_MLXBF3 528 tristate "NVIDIA BlueField-3 SoC Pinctrl driver" 529 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST 530 select PINMUX 531 select GPIOLIB 532 select GPIOLIB_IRQCHIP 533 help 534 Say Y to select the pinctrl driver for BlueField-3 SoCs. 535 This pin controller allows selecting the mux function for 536 each pin. This driver can also be built as a module called 537 pinctrl-mlxbf3. 538 539source "drivers/pinctrl/actions/Kconfig" 540source "drivers/pinctrl/aspeed/Kconfig" 541source "drivers/pinctrl/bcm/Kconfig" 542source "drivers/pinctrl/berlin/Kconfig" 543source "drivers/pinctrl/cirrus/Kconfig" 544source "drivers/pinctrl/freescale/Kconfig" 545source "drivers/pinctrl/intel/Kconfig" 546source "drivers/pinctrl/mediatek/Kconfig" 547source "drivers/pinctrl/meson/Kconfig" 548source "drivers/pinctrl/mvebu/Kconfig" 549source "drivers/pinctrl/nomadik/Kconfig" 550source "drivers/pinctrl/nuvoton/Kconfig" 551source "drivers/pinctrl/nxp/Kconfig" 552source "drivers/pinctrl/pxa/Kconfig" 553source "drivers/pinctrl/qcom/Kconfig" 554source "drivers/pinctrl/realtek/Kconfig" 555source "drivers/pinctrl/renesas/Kconfig" 556source "drivers/pinctrl/samsung/Kconfig" 557source "drivers/pinctrl/spear/Kconfig" 558source "drivers/pinctrl/sprd/Kconfig" 559source "drivers/pinctrl/starfive/Kconfig" 560source "drivers/pinctrl/stm32/Kconfig" 561source "drivers/pinctrl/sunplus/Kconfig" 562source "drivers/pinctrl/sunxi/Kconfig" 563source "drivers/pinctrl/tegra/Kconfig" 564source "drivers/pinctrl/ti/Kconfig" 565source "drivers/pinctrl/uniphier/Kconfig" 566source "drivers/pinctrl/visconti/Kconfig" 567source "drivers/pinctrl/vt8500/Kconfig" 568 569endif 570