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