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