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_AW9523 131 tristate "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver" 132 depends on OF && I2C 133 select PINMUX 134 select PINCONF 135 select GENERIC_PINCONF 136 select GPIOLIB 137 select GPIOLIB_IRQCHIP 138 select REGMAP 139 select REGMAP_I2C 140 help 141 The Awinic AW9523/AW9523B is a multi-function I2C GPIO 142 expander with PWM functionality. This driver bundles a 143 pinctrl driver to select the function muxing and a GPIO 144 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_BM1880 149 bool "Bitmain BM1880 Pinctrl driver" 150 depends on OF && (ARCH_BITMAIN || COMPILE_TEST) 151 default ARCH_BITMAIN 152 select PINMUX 153 help 154 Pinctrl driver for Bitmain BM1880 SoC. 155 156config PINCTRL_CY8C95X0 157 tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver" 158 depends on I2C 159 select GPIOLIB 160 select GPIOLIB_IRQCHIP 161 select PINMUX 162 select PINCONF 163 select GENERIC_PINCONF 164 select REGMAP_I2C 165 help 166 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 be 168 called pinctrl-cy8c95x0. 169 170config PINCTRL_DA850_PUPD 171 tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups" 172 depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST) 173 select PINCONF 174 select GENERIC_PINCONF 175 help 176 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control 177 pull-up and pull-down pin groups. 178 179config PINCTRL_DA9062 180 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support" 181 depends on MFD_DA9062 182 select GPIOLIB 183 help 184 The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for 185 different functions. This driver bundles a pinctrl driver to select the 186 function muxing and a GPIO driver to handle the GPIO when the GPIO 187 function is selected. 188 189 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC. 190 191config PINCTRL_DIGICOLOR 192 bool 193 depends on ARCH_DIGICOLOR || COMPILE_TEST 194 select PINMUX 195 select GENERIC_PINCONF 196 197config PINCTRL_EP93XX 198 bool 199 depends on ARCH_EP93XX || COMPILE_TEST 200 select PINMUX 201 select GENERIC_PINCONF 202 select MFD_SYSCON 203 204config PINCTRL_EQUILIBRIUM 205 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC" 206 depends on OF && HAS_IOMEM 207 depends on X86 || COMPILE_TEST 208 select PINMUX 209 select PINCONF 210 select GPIOLIB 211 select GPIO_GENERIC 212 select GPIOLIB_IRQCHIP 213 select GENERIC_PINCONF 214 select GENERIC_PINCTRL_GROUPS 215 select GENERIC_PINMUX_FUNCTIONS 216 help 217 Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning 218 Mountain network processor SoC that supports both the GPIO and pin 219 control frameworks. It provides interfaces to setup pin muxing, assign 220 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_GEMINI 224 bool 225 depends on ARCH_GEMINI 226 default ARCH_GEMINI 227 select PINMUX 228 select GENERIC_PINCONF 229 select MFD_SYSCON 230 231config PINCTRL_INGENIC 232 bool "Pinctrl driver for the Ingenic JZ47xx SoCs" 233 default MACH_INGENIC 234 depends on OF 235 depends on MIPS || COMPILE_TEST 236 select GENERIC_PINCONF 237 select GENERIC_PINCTRL_GROUPS 238 select GENERIC_PINMUX_FUNCTIONS 239 select GPIOLIB 240 select GPIOLIB_IRQCHIP 241 select REGMAP_MMIO 242 243config PINCTRL_K210 244 bool "Pinctrl driver for the Canaan Kendryte K210 SoC" 245 depends on RISCV && SOC_CANAAN_K210 && OF 246 select GENERIC_PINMUX_FUNCTIONS 247 select GENERIC_PINCONF 248 select GPIOLIB 249 select OF_GPIO 250 select REGMAP_MMIO 251 default SOC_CANAAN_K210 252 help 253 Add support for the Canaan Kendryte K210 RISC-V SOC Field 254 Programmable IO Array (FPIOA) controller. 255 256config PINCTRL_KEEMBAY 257 tristate "Pinctrl driver for Intel Keem Bay SoC" 258 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST) 259 depends on HAS_IOMEM 260 select PINMUX 261 select PINCONF 262 select GENERIC_PINCONF 263 select GENERIC_PINCTRL_GROUPS 264 select GENERIC_PINMUX_FUNCTIONS 265 select GPIOLIB 266 select GPIOLIB_IRQCHIP 267 select GPIO_GENERIC 268 help 269 This selects pin control driver for the Intel Keem Bay SoC. 270 It provides pin config functions such as pull-up, pull-down, 271 interrupt, drive strength, sec lock, Schmitt trigger, slew 272 rate control and direction control. This module will be 273 called as pinctrl-keembay. 274 275config PINCTRL_LANTIQ 276 bool 277 depends on LANTIQ 278 select PINMUX 279 select PINCONF 280 281config PINCTRL_FALCON 282 bool 283 depends on SOC_FALCON 284 depends on PINCTRL_LANTIQ 285 286config PINCTRL_LOONGSON2 287 tristate "Pinctrl driver for the Loongson-2 SoC" 288 depends on OF && (LOONGARCH || COMPILE_TEST) 289 select PINMUX 290 select GENERIC_PINCONF 291 help 292 This selects pin control driver for the Loongson-2 SoC. It 293 provides pin config functions multiplexing. GPIO pin pull-up, 294 pull-down functions are not supported. Say yes to enable 295 pinctrl for Loongson-2 SoC. 296 297config PINCTRL_XWAY 298 bool 299 depends on SOC_TYPE_XWAY 300 depends on PINCTRL_LANTIQ 301 302config PINCTRL_LPC18XX 303 bool "NXP LPC18XX/43XX SCU pinctrl driver" 304 depends on OF && (ARCH_LPC18XX || COMPILE_TEST) 305 default ARCH_LPC18XX 306 select PINMUX 307 select GENERIC_PINCONF 308 help 309 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU). 310 311config PINCTRL_MAX77620 312 tristate "MAX77620/MAX20024 Pincontrol support" 313 depends on MFD_MAX77620 && OF 314 select PINMUX 315 select GENERIC_PINCONF 316 help 317 Say Y here to enable Pin control support for Maxim MAX77620 PMIC. 318 This PMIC has 8 GPIO pins that work as GPIO as well as special 319 function in alternate mode. This driver also configure push-pull, 320 open drain, FPS slots etc. 321 322config PINCTRL_MCP23S08_I2C 323 tristate 324 select REGMAP_I2C 325 326config PINCTRL_MCP23S08_SPI 327 tristate 328 select REGMAP_SPI 329 330config PINCTRL_MCP23S08 331 tristate "Microchip MCP23xxx I/O expander" 332 depends on SPI_MASTER || I2C 333 select GPIOLIB 334 select GPIOLIB_IRQCHIP 335 select GENERIC_PINCONF 336 select PINCTRL_MCP23S08_I2C if I2C 337 select PINCTRL_MCP23S08_SPI if SPI_MASTER 338 help 339 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 / 340 MCP23008 / MCP23017 / MCP23018 I/O expanders. 341 This provides a GPIO interface supporting inputs and outputs and a 342 corresponding interrupt-controller. 343 344config PINCTRL_MICROCHIP_SGPIO 345 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO" 346 depends on OF 347 depends on HAS_IOMEM 348 select GPIOLIB 349 select GPIOLIB_IRQCHIP 350 select GENERIC_PINCONF 351 select GENERIC_PINCTRL_GROUPS 352 select GENERIC_PINMUX_FUNCTIONS 353 select OF_GPIO 354 help 355 Support for the serial GPIO interface used on Microsemi and 356 Microchip SoCs. By using a serial interface, the SIO 357 controller significantly extends the number of available 358 GPIOs with a minimum number of additional pins on the 359 device. The primary purpose of the SIO controller is to 360 connect control signals from SFP modules and to act as an 361 LED controller. 362 363 If compiled as a module, the module name will be 364 pinctrl-microchip-sgpio. 365 366config PINCTRL_OCELOT 367 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs" 368 depends on OF 369 depends on HAS_IOMEM 370 select GPIOLIB 371 select GPIOLIB_IRQCHIP 372 select GENERIC_PINCONF 373 select GENERIC_PINCTRL_GROUPS 374 select GENERIC_PINMUX_FUNCTIONS 375 select OF_GPIO 376 select REGMAP_MMIO 377 help 378 Support for the internal GPIO interfaces on Microsemi Ocelot and 379 Jaguar2 SoCs. 380 381 If conpiled as a module, the module name will be pinctrl-ocelot. 382 383config PINCTRL_PALMAS 384 tristate "Pinctrl driver for the PALMAS Series MFD devices" 385 depends on OF && MFD_PALMAS 386 select PINMUX 387 select GENERIC_PINCONF 388 help 389 Palmas device supports the configuration of pins for different 390 functionality. This driver supports the pinmux, push-pull and 391 open drain configuration for the Palmas series devices like 392 TPS65913, TPS80036 etc. 393 394config PINCTRL_PEF2256 395 tristate "Lantiq PEF2256 (FALC56) pin controller driver" 396 depends on OF && FRAMER_PEF2256 397 select PINMUX 398 select PINCONF 399 select GENERIC_PINCONF 400 help 401 This option enables the pin controller support for the Lantiq PEF2256 402 framer, also known as FALC56. 403 404 If unsure, say N. 405 406 To compile this driver as a module, choose M here: the 407 module will be called pinctrl-pef2256. 408 409config PINCTRL_PIC32 410 bool "Microchip PIC32 pin controller driver" 411 depends on OF 412 depends on MACH_PIC32 413 select PINMUX 414 select GENERIC_PINCONF 415 select GPIOLIB_IRQCHIP 416 select OF_GPIO 417 help 418 This is the pin controller and gpio driver for Microchip PIC32 419 microcontrollers. This option is selected automatically when specific 420 machine and arch are selected to build. 421 422config PINCTRL_PIC32MZDA 423 def_bool y if PIC32MZDA 424 select PINCTRL_PIC32 425 426config PINCTRL_PISTACHIO 427 bool "IMG Pistachio SoC pinctrl driver" 428 depends on OF && (MIPS || COMPILE_TEST) 429 depends on GPIOLIB 430 select PINMUX 431 select GENERIC_PINCONF 432 select GPIOLIB_IRQCHIP 433 select OF_GPIO 434 help 435 This support pinctrl and GPIO driver for IMG Pistachio SoC. 436 437config PINCTRL_RK805 438 tristate "Pinctrl and GPIO driver for RK805 PMIC" 439 depends on MFD_RK8XX 440 select GPIOLIB 441 select PINMUX 442 select GENERIC_PINCONF 443 help 444 This selects the pinctrl driver for RK805. 445 446config PINCTRL_ROCKCHIP 447 tristate "Rockchip gpio and pinctrl driver" 448 depends on ARCH_ROCKCHIP || COMPILE_TEST 449 depends on OF 450 select GPIOLIB 451 select PINMUX 452 select GENERIC_PINCONF 453 select GENERIC_IRQ_CHIP 454 select MFD_SYSCON 455 select OF_GPIO 456 default ARCH_ROCKCHIP 457 help 458 This support pinctrl and GPIO driver for Rockchip SoCs. 459 460config PINCTRL_SCMI 461 tristate "Pinctrl driver using SCMI protocol interface" 462 depends on ARM_SCMI_PROTOCOL || COMPILE_TEST 463 select PINMUX 464 select GENERIC_PINCONF 465 help 466 This driver provides support for pinctrl which is controlled 467 by firmware that implements the SCMI interface. 468 It uses SCMI Message Protocol to interact with the 469 firmware providing all the pinctrl controls. 470 471config PINCTRL_SINGLE 472 tristate "One-register-per-pin type device tree based pinctrl driver" 473 depends on OF 474 depends on HAS_IOMEM 475 select GENERIC_PINCTRL_GROUPS 476 select GENERIC_PINMUX_FUNCTIONS 477 select GENERIC_PINCONF 478 help 479 This selects the device tree based generic pinctrl driver. 480 481config PINCTRL_ST 482 bool 483 depends on OF 484 select PINMUX 485 select PINCONF 486 select GPIOLIB_IRQCHIP 487 488config PINCTRL_STMFX 489 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver" 490 depends on I2C 491 depends on OF_GPIO 492 select GENERIC_PINCONF 493 select GPIOLIB_IRQCHIP 494 select MFD_STMFX 495 help 496 Driver for STMicroelectronics Multi-Function eXpander (STMFX) 497 GPIO expander. 498 This provides a GPIO interface supporting inputs and outputs, 499 and configuring push-pull, open-drain, and can also be used as 500 interrupt-controller. 501 502config PINCTRL_SX150X 503 bool "Semtech SX150x I2C GPIO expander pinctrl driver" 504 depends on I2C=y 505 select PINMUX 506 select PINCONF 507 select GENERIC_PINCONF 508 select GPIOLIB 509 select GPIOLIB_IRQCHIP 510 select REGMAP 511 help 512 Say Y here to provide support for Semtech SX150x-series I2C 513 GPIO expanders as pinctrl module. 514 Compatible models include: 515 - 8 bits: sx1508q, sx1502q 516 - 16 bits: sx1509q, sx1506q 517 518config PINCTRL_TB10X 519 bool 520 depends on OF && ARC_PLAT_TB10X 521 select GPIOLIB 522 523config PINCTRL_TPS6594 524 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC" 525 depends on OF && MFD_TPS6594 526 default MFD_TPS6594 527 select PINMUX 528 select GPIOLIB 529 select REGMAP 530 select GPIO_REGMAP 531 select GENERIC_PINCONF 532 help 533 Say Y to select the pinmuxing and GPIOs driver for the TPS6594 534 PMICs chip family. 535 536 This driver can also be built as a module 537 called tps6594-pinctrl. 538 539config PINCTRL_ZYNQ 540 bool "Pinctrl driver for Xilinx Zynq" 541 depends on ARCH_ZYNQ 542 select PINMUX 543 select GENERIC_PINCONF 544 help 545 This selects the pinctrl driver for Xilinx Zynq. 546 547config PINCTRL_ZYNQMP 548 tristate "Pinctrl driver for Xilinx ZynqMP" 549 depends on ZYNQMP_FIRMWARE 550 select PINMUX 551 select GENERIC_PINCONF 552 default ZYNQMP_FIRMWARE 553 help 554 This selects the pinctrl driver for Xilinx ZynqMP platform. 555 This driver will query the pin information from the firmware 556 and allow configuring the pins. 557 Configuration can include the mux function to select on those 558 pin(s)/group(s), and various pin configuration parameters 559 such as pull-up, slew rate, etc. 560 This driver can also be built as a module. If so, the module 561 will be called pinctrl-zynqmp. 562 563config PINCTRL_MLXBF3 564 tristate "NVIDIA BlueField-3 SoC Pinctrl driver" 565 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST 566 select PINMUX 567 select GPIOLIB 568 select GPIOLIB_IRQCHIP 569 help 570 Say Y to select the pinctrl driver for BlueField-3 SoCs. 571 This pin controller allows selecting the mux function for 572 each pin. This driver can also be built as a module called 573 pinctrl-mlxbf3. 574 575source "drivers/pinctrl/actions/Kconfig" 576source "drivers/pinctrl/aspeed/Kconfig" 577source "drivers/pinctrl/bcm/Kconfig" 578source "drivers/pinctrl/berlin/Kconfig" 579source "drivers/pinctrl/cirrus/Kconfig" 580source "drivers/pinctrl/freescale/Kconfig" 581source "drivers/pinctrl/intel/Kconfig" 582source "drivers/pinctrl/mediatek/Kconfig" 583source "drivers/pinctrl/meson/Kconfig" 584source "drivers/pinctrl/mvebu/Kconfig" 585source "drivers/pinctrl/nomadik/Kconfig" 586source "drivers/pinctrl/nuvoton/Kconfig" 587source "drivers/pinctrl/nxp/Kconfig" 588source "drivers/pinctrl/pxa/Kconfig" 589source "drivers/pinctrl/qcom/Kconfig" 590source "drivers/pinctrl/realtek/Kconfig" 591source "drivers/pinctrl/renesas/Kconfig" 592source "drivers/pinctrl/samsung/Kconfig" 593source "drivers/pinctrl/spear/Kconfig" 594source "drivers/pinctrl/sprd/Kconfig" 595source "drivers/pinctrl/starfive/Kconfig" 596source "drivers/pinctrl/stm32/Kconfig" 597source "drivers/pinctrl/sunplus/Kconfig" 598source "drivers/pinctrl/sunxi/Kconfig" 599source "drivers/pinctrl/tegra/Kconfig" 600source "drivers/pinctrl/ti/Kconfig" 601source "drivers/pinctrl/uniphier/Kconfig" 602source "drivers/pinctrl/visconti/Kconfig" 603source "drivers/pinctrl/vt8500/Kconfig" 604 605endif 606