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_EYEQ5 224 bool "Mobileye EyeQ5 pinctrl driver" 225 depends on OF 226 depends on MACH_EYEQ5 || COMPILE_TEST 227 select PINMUX 228 select GENERIC_PINCONF 229 select AUXILIARY_BUS 230 default MACH_EYEQ5 231 help 232 Pin controller driver for the Mobileye EyeQ5 platform. It does both 233 pin config & pin muxing. It does not handle GPIO. 234 235 Pin muxing supports two functions for each pin: first is GPIO, second 236 is pin-dependent. Pin config is about bias & drive strength. 237 238config PINCTRL_GEMINI 239 bool 240 depends on ARCH_GEMINI 241 default ARCH_GEMINI 242 select PINMUX 243 select GENERIC_PINCONF 244 select MFD_SYSCON 245 246config PINCTRL_INGENIC 247 bool "Pinctrl driver for the Ingenic JZ47xx SoCs" 248 default MACH_INGENIC 249 depends on OF 250 depends on MIPS || COMPILE_TEST 251 select GENERIC_PINCONF 252 select GENERIC_PINCTRL_GROUPS 253 select GENERIC_PINMUX_FUNCTIONS 254 select GPIOLIB 255 select GPIOLIB_IRQCHIP 256 select REGMAP_MMIO 257 258config PINCTRL_K210 259 bool "Pinctrl driver for the Canaan Kendryte K210 SoC" 260 depends on RISCV && SOC_CANAAN_K210 && OF 261 select GENERIC_PINMUX_FUNCTIONS 262 select GENERIC_PINCONF 263 select GPIOLIB 264 select OF_GPIO 265 select REGMAP_MMIO 266 default SOC_CANAAN_K210 267 help 268 Add support for the Canaan Kendryte K210 RISC-V SOC Field 269 Programmable IO Array (FPIOA) controller. 270 271config PINCTRL_K230 272 bool "Pinctrl driver for the Canaan Kendryte K230 SoC" 273 depends on OF 274 depends on ARCH_CANAAN || COMPILE_TEST 275 select GENERIC_PINCTRL_GROUPS 276 select GENERIC_PINMUX_FUNCTIONS 277 select GENERIC_PINCONF 278 select REGMAP_MMIO 279 help 280 Add support for the Canaan Kendryte K230 RISC-V SOC pin controller. 281 282config PINCTRL_KEEMBAY 283 tristate "Pinctrl driver for Intel Keem Bay SoC" 284 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST) 285 depends on HAS_IOMEM 286 select PINMUX 287 select PINCONF 288 select GENERIC_PINCONF 289 select GENERIC_PINCTRL_GROUPS 290 select GENERIC_PINMUX_FUNCTIONS 291 select GPIOLIB 292 select GPIOLIB_IRQCHIP 293 select GPIO_GENERIC 294 help 295 This selects pin control driver for the Intel Keem Bay SoC. 296 It provides pin config functions such as pull-up, pull-down, 297 interrupt, drive strength, sec lock, Schmitt trigger, slew 298 rate control and direction control. This module will be 299 called as pinctrl-keembay. 300 301config PINCTRL_LANTIQ 302 bool 303 depends on LANTIQ 304 select PINMUX 305 select PINCONF 306 307config PINCTRL_FALCON 308 bool 309 depends on SOC_FALCON 310 depends on PINCTRL_LANTIQ 311 312config PINCTRL_LOONGSON2 313 tristate "Pinctrl driver for the Loongson-2 SoC" 314 depends on OF && (LOONGARCH || COMPILE_TEST) 315 select PINMUX 316 select GENERIC_PINCONF 317 help 318 This selects pin control driver for the Loongson-2 SoC. It 319 provides pin config functions multiplexing. GPIO pin pull-up, 320 pull-down functions are not supported. Say yes to enable 321 pinctrl for Loongson-2 SoC. 322 323config PINCTRL_XWAY 324 bool 325 depends on SOC_TYPE_XWAY 326 depends on PINCTRL_LANTIQ 327 328config PINCTRL_LPC18XX 329 bool "NXP LPC18XX/43XX SCU pinctrl driver" 330 depends on OF && (ARCH_LPC18XX || COMPILE_TEST) 331 default ARCH_LPC18XX 332 select PINMUX 333 select GENERIC_PINCONF 334 help 335 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU). 336 337config PINCTRL_MAX77620 338 tristate "MAX77620/MAX20024 Pincontrol support" 339 depends on MFD_MAX77620 && OF 340 select PINMUX 341 select GENERIC_PINCONF 342 help 343 Say Y here to enable Pin control support for Maxim MAX77620 PMIC. 344 This PMIC has 8 GPIO pins that work as GPIO as well as special 345 function in alternate mode. This driver also configure push-pull, 346 open drain, FPS slots etc. 347 348config PINCTRL_MCP23S08_I2C 349 tristate 350 select REGMAP_I2C 351 352config PINCTRL_MCP23S08_SPI 353 tristate 354 select REGMAP_SPI 355 356config PINCTRL_MCP23S08 357 tristate "Microchip MCP23xxx I/O expander" 358 depends on SPI_MASTER || I2C 359 select GPIOLIB 360 select GPIOLIB_IRQCHIP 361 select GENERIC_PINCONF 362 select PINCTRL_MCP23S08_I2C if I2C 363 select PINCTRL_MCP23S08_SPI if SPI_MASTER 364 help 365 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 / 366 MCP23008 / MCP23017 / MCP23018 I/O expanders. 367 This provides a GPIO interface supporting inputs and outputs and a 368 corresponding interrupt-controller. 369 370config PINCTRL_MICROCHIP_SGPIO 371 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO" 372 depends on OF 373 depends on HAS_IOMEM 374 select GPIOLIB 375 select GPIOLIB_IRQCHIP 376 select GENERIC_PINCONF 377 select GENERIC_PINCTRL_GROUPS 378 select GENERIC_PINMUX_FUNCTIONS 379 select OF_GPIO 380 help 381 Support for the serial GPIO interface used on Microsemi and 382 Microchip SoCs. By using a serial interface, the SIO 383 controller significantly extends the number of available 384 GPIOs with a minimum number of additional pins on the 385 device. The primary purpose of the SIO controller is to 386 connect control signals from SFP modules and to act as an 387 LED controller. 388 389 If compiled as a module, the module name will be 390 pinctrl-microchip-sgpio. 391 392config PINCTRL_OCELOT 393 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs" 394 depends on OF 395 depends on HAS_IOMEM 396 select GPIOLIB 397 select GPIOLIB_IRQCHIP 398 select GENERIC_PINCONF 399 select GENERIC_PINCTRL_GROUPS 400 select GENERIC_PINMUX_FUNCTIONS 401 select OF_GPIO 402 select REGMAP_MMIO 403 help 404 Support for the internal GPIO interfaces on Microsemi Ocelot and 405 Jaguar2 SoCs. 406 407 If conpiled as a module, the module name will be pinctrl-ocelot. 408 409config PINCTRL_PALMAS 410 tristate "Pinctrl driver for the PALMAS Series MFD devices" 411 depends on OF && MFD_PALMAS 412 select PINMUX 413 select GENERIC_PINCONF 414 help 415 Palmas device supports the configuration of pins for different 416 functionality. This driver supports the pinmux, push-pull and 417 open drain configuration for the Palmas series devices like 418 TPS65913, TPS80036 etc. 419 420config PINCTRL_PEF2256 421 tristate "Lantiq PEF2256 (FALC56) pin controller driver" 422 depends on OF && FRAMER_PEF2256 423 select PINMUX 424 select PINCONF 425 select GENERIC_PINCONF 426 help 427 This option enables the pin controller support for the Lantiq PEF2256 428 framer, also known as FALC56. 429 430 If unsure, say N. 431 432 To compile this driver as a module, choose M here: the 433 module will be called pinctrl-pef2256. 434 435config PINCTRL_PIC32 436 bool "Microchip PIC32 pin controller driver" 437 depends on OF 438 depends on MACH_PIC32 439 select PINMUX 440 select GENERIC_PINCONF 441 select GPIOLIB_IRQCHIP 442 select OF_GPIO 443 help 444 This is the pin controller and gpio driver for Microchip PIC32 445 microcontrollers. This option is selected automatically when specific 446 machine and arch are selected to build. 447 448config PINCTRL_PIC32MZDA 449 def_bool y if PIC32MZDA 450 select PINCTRL_PIC32 451 452config PINCTRL_PISTACHIO 453 bool "IMG Pistachio SoC pinctrl driver" 454 depends on OF && (MIPS || COMPILE_TEST) 455 depends on GPIOLIB 456 select PINMUX 457 select GENERIC_PINCONF 458 select GPIOLIB_IRQCHIP 459 select OF_GPIO 460 help 461 This support pinctrl and GPIO driver for IMG Pistachio SoC. 462 463config PINCTRL_RK805 464 tristate "Pinctrl and GPIO driver for RK805 PMIC" 465 depends on MFD_RK8XX 466 select GPIOLIB 467 select PINMUX 468 select GENERIC_PINCONF 469 help 470 This selects the pinctrl driver for RK805. 471 472config PINCTRL_ROCKCHIP 473 tristate "Rockchip gpio and pinctrl driver" 474 depends on ARCH_ROCKCHIP || COMPILE_TEST 475 depends on OF 476 select GPIOLIB 477 select PINMUX 478 select GENERIC_PINCONF 479 select GENERIC_IRQ_CHIP 480 select MFD_SYSCON 481 select OF_GPIO 482 default ARCH_ROCKCHIP 483 help 484 This support pinctrl and GPIO driver for Rockchip SoCs. 485 486config PINCTRL_SCMI 487 tristate "Pinctrl driver using SCMI protocol interface" 488 depends on ARM_SCMI_PROTOCOL || COMPILE_TEST 489 select PINMUX 490 select GENERIC_PINCONF 491 help 492 This driver provides support for pinctrl which is controlled 493 by firmware that implements the SCMI interface. 494 It uses SCMI Message Protocol to interact with the 495 firmware providing all the pinctrl controls. 496 497config PINCTRL_SINGLE 498 tristate "One-register-per-pin type device tree based pinctrl driver" 499 depends on OF 500 depends on HAS_IOMEM 501 select GENERIC_PINCTRL_GROUPS 502 select GENERIC_PINMUX_FUNCTIONS 503 select GENERIC_PINCONF 504 help 505 This selects the device tree based generic pinctrl driver. 506 507config PINCTRL_ST 508 bool 509 depends on OF 510 select PINMUX 511 select PINCONF 512 select GPIOLIB_IRQCHIP 513 514config PINCTRL_STMFX 515 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver" 516 depends on I2C 517 depends on OF_GPIO 518 select GENERIC_PINCONF 519 select GPIOLIB_IRQCHIP 520 select MFD_STMFX 521 help 522 Driver for STMicroelectronics Multi-Function eXpander (STMFX) 523 GPIO expander. 524 This provides a GPIO interface supporting inputs and outputs, 525 and configuring push-pull, open-drain, and can also be used as 526 interrupt-controller. 527 528config PINCTRL_SX150X 529 bool "Semtech SX150x I2C GPIO expander pinctrl driver" 530 depends on I2C=y 531 select PINMUX 532 select PINCONF 533 select GENERIC_PINCONF 534 select GPIOLIB 535 select GPIOLIB_IRQCHIP 536 select REGMAP 537 help 538 Say Y here to provide support for Semtech SX150x-series I2C 539 GPIO expanders as pinctrl module. 540 Compatible models include: 541 - 8 bits: sx1508q, sx1502q 542 - 16 bits: sx1509q, sx1506q 543 544config PINCTRL_TB10X 545 bool 546 depends on OF && ARC_PLAT_TB10X 547 select GPIOLIB 548 549config PINCTRL_TPS6594 550 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC" 551 depends on OF && MFD_TPS6594 552 default MFD_TPS6594 553 select PINMUX 554 select GPIOLIB 555 select REGMAP 556 select GPIO_REGMAP 557 select GENERIC_PINCONF 558 help 559 Say Y to select the pinmuxing and GPIOs driver for the TPS6594 560 PMICs chip family. 561 562 This driver can also be built as a module 563 called tps6594-pinctrl. 564 565config PINCTRL_TH1520 566 tristate "Pinctrl driver for the T-Head TH1520 SoC" 567 depends on ARCH_THEAD || COMPILE_TEST 568 depends on OF 569 select GENERIC_PINMUX_FUNCTIONS 570 select GENERIC_PINCONF 571 select PINMUX 572 help 573 This is the driver for the pin controller blocks on the 574 T-Head TH1520 SoC. 575 576 This driver is needed for RISC-V development boards like 577 the BeagleV Ahead and the LicheePi 4A. 578 579config PINCTRL_ZYNQ 580 bool "Pinctrl driver for Xilinx Zynq" 581 depends on ARCH_ZYNQ 582 select PINMUX 583 select GENERIC_PINCONF 584 help 585 This selects the pinctrl driver for Xilinx Zynq. 586 587config PINCTRL_ZYNQMP 588 tristate "Pinctrl driver for Xilinx ZynqMP" 589 depends on ZYNQMP_FIRMWARE 590 select PINMUX 591 select GENERIC_PINCONF 592 default ZYNQMP_FIRMWARE 593 help 594 This selects the pinctrl driver for Xilinx ZynqMP platform. 595 This driver will query the pin information from the firmware 596 and allow configuring the pins. 597 Configuration can include the mux function to select on those 598 pin(s)/group(s), and various pin configuration parameters 599 such as pull-up, slew rate, etc. 600 This driver can also be built as a module. If so, the module 601 will be called pinctrl-zynqmp. 602 603config PINCTRL_MLXBF3 604 tristate "NVIDIA BlueField-3 SoC Pinctrl driver" 605 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST 606 select PINMUX 607 select GPIOLIB 608 select GPIOLIB_IRQCHIP 609 help 610 Say Y to select the pinctrl driver for BlueField-3 SoCs. 611 This pin controller allows selecting the mux function for 612 each pin. This driver can also be built as a module called 613 pinctrl-mlxbf3. 614 615source "drivers/pinctrl/actions/Kconfig" 616source "drivers/pinctrl/aspeed/Kconfig" 617source "drivers/pinctrl/bcm/Kconfig" 618source "drivers/pinctrl/berlin/Kconfig" 619source "drivers/pinctrl/cirrus/Kconfig" 620source "drivers/pinctrl/freescale/Kconfig" 621source "drivers/pinctrl/intel/Kconfig" 622source "drivers/pinctrl/mediatek/Kconfig" 623source "drivers/pinctrl/meson/Kconfig" 624source "drivers/pinctrl/mvebu/Kconfig" 625source "drivers/pinctrl/nomadik/Kconfig" 626source "drivers/pinctrl/nuvoton/Kconfig" 627source "drivers/pinctrl/nxp/Kconfig" 628source "drivers/pinctrl/pxa/Kconfig" 629source "drivers/pinctrl/qcom/Kconfig" 630source "drivers/pinctrl/realtek/Kconfig" 631source "drivers/pinctrl/renesas/Kconfig" 632source "drivers/pinctrl/samsung/Kconfig" 633source "drivers/pinctrl/sophgo/Kconfig" 634source "drivers/pinctrl/spacemit/Kconfig" 635source "drivers/pinctrl/spear/Kconfig" 636source "drivers/pinctrl/sprd/Kconfig" 637source "drivers/pinctrl/starfive/Kconfig" 638source "drivers/pinctrl/stm32/Kconfig" 639source "drivers/pinctrl/sunplus/Kconfig" 640source "drivers/pinctrl/sunxi/Kconfig" 641source "drivers/pinctrl/tegra/Kconfig" 642source "drivers/pinctrl/ti/Kconfig" 643source "drivers/pinctrl/uniphier/Kconfig" 644source "drivers/pinctrl/visconti/Kconfig" 645source "drivers/pinctrl/vt8500/Kconfig" 646 647endif 648