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