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_APPLE_GPIO 35 tristate "Apple SoC GPIO pin controller driver" 36 depends on ARCH_APPLE 37 select PINMUX 38 select GPIOLIB 39 select GPIOLIB_IRQCHIP 40 select GENERIC_PINCTRL_GROUPS 41 select GENERIC_PINMUX_FUNCTIONS 42 select OF_GPIO 43 help 44 This is the driver for the GPIO controller found on Apple ARM SoCs, 45 including M1. 46 47 This driver can also be built as a module. If so, the module 48 will be called pinctrl-apple-gpio. 49 50config PINCTRL_ARTPEC6 51 bool "Axis ARTPEC-6 pin controller driver" 52 depends on MACH_ARTPEC6 53 select PINMUX 54 select GENERIC_PINCONF 55 help 56 This is the driver for the Axis ARTPEC-6 pin controller. This driver 57 supports pin function multiplexing as well as pin bias and drive 58 strength configuration. Device tree integration instructions can be 59 found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt 60 61config PINCTRL_AS3722 62 tristate "Pinctrl and GPIO driver for ams AS3722 PMIC" 63 depends on MFD_AS3722 && GPIOLIB 64 select PINMUX 65 select GENERIC_PINCONF 66 help 67 AS3722 device supports the configuration of GPIO pins for different 68 functionality. This driver supports the pinmux, push-pull and 69 open drain configuration for the GPIO pins of AS3722 devices. It also 70 supports the GPIO functionality through gpiolib. 71 72config PINCTRL_AXP209 73 tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support" 74 depends on MFD_AXP20X 75 depends on OF 76 select PINMUX 77 select GENERIC_PINCONF 78 select GPIOLIB 79 help 80 AXP PMICs provides multiple GPIOs that can be muxed for different 81 functions. This driver bundles a pinctrl driver to select the function 82 muxing and a GPIO driver to handle the GPIO when the GPIO function is 83 selected. 84 Say yes to enable pinctrl and GPIO support for the AXP209 PMIC 85 86config PINCTRL_AT91 87 bool "AT91 pinctrl driver" 88 depends on OF 89 depends on ARCH_AT91 90 select PINMUX 91 select PINCONF 92 select GPIOLIB 93 select OF_GPIO 94 select GPIOLIB_IRQCHIP 95 help 96 Say Y here to enable the at91 pinctrl driver 97 98config PINCTRL_AT91PIO4 99 bool "AT91 PIO4 pinctrl driver" 100 depends on OF 101 depends on HAS_IOMEM 102 depends on ARCH_AT91 || COMPILE_TEST 103 select PINMUX 104 select GENERIC_PINCONF 105 select GPIOLIB 106 select GPIOLIB_IRQCHIP 107 select OF_GPIO 108 help 109 Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4 110 controller available on sama5d2 SoC. 111 112config PINCTRL_AMD 113 tristate "AMD GPIO pin control" 114 depends on HAS_IOMEM 115 depends on ACPI || COMPILE_TEST 116 select GPIOLIB 117 select GPIOLIB_IRQCHIP 118 select PINMUX 119 select PINCONF 120 select GENERIC_PINCONF 121 help 122 driver for memory mapped GPIO functionality on AMD platforms 123 (x86 or arm).Most pins are usually muxed to some other 124 functionality by firmware,so only a small amount is available 125 for gpio use. 126 127 Requires ACPI/FDT device enumeration code to set up a platform 128 device. 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 pullup/pulldown 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 pullup/pulldown 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 yes 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_LANTIQ 166 bool 167 depends on LANTIQ 168 select PINMUX 169 select PINCONF 170 171config PINCTRL_LPC18XX 172 bool "NXP LPC18XX/43XX SCU pinctrl driver" 173 depends on OF && (ARCH_LPC18XX || COMPILE_TEST) 174 default ARCH_LPC18XX 175 select PINMUX 176 select GENERIC_PINCONF 177 help 178 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU). 179 180config PINCTRL_FALCON 181 bool 182 depends on SOC_FALCON 183 depends on PINCTRL_LANTIQ 184 185config PINCTRL_GEMINI 186 bool 187 depends on ARCH_GEMINI 188 default ARCH_GEMINI 189 select PINMUX 190 select GENERIC_PINCONF 191 select MFD_SYSCON 192 193config PINCTRL_MCP23S08_I2C 194 tristate 195 select REGMAP_I2C 196 197config PINCTRL_MCP23S08_SPI 198 tristate 199 select REGMAP_SPI 200 201config PINCTRL_MCP23S08 202 tristate "Microchip MCP23xxx I/O expander" 203 depends on SPI_MASTER || I2C 204 select GPIOLIB 205 select GPIOLIB_IRQCHIP 206 select GENERIC_PINCONF 207 select PINCTRL_MCP23S08_I2C if I2C 208 select PINCTRL_MCP23S08_SPI if SPI_MASTER 209 help 210 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 / 211 MCP23008 / MCP23017 / MCP23018 I/O expanders. 212 This provides a GPIO interface supporting inputs and outputs and a 213 corresponding interrupt-controller. 214 215config PINCTRL_OXNAS 216 bool 217 depends on OF 218 select PINMUX 219 select PINCONF 220 select GENERIC_PINCONF 221 select GPIOLIB 222 select OF_GPIO 223 select GPIOLIB_IRQCHIP 224 select MFD_SYSCON 225 226config PINCTRL_ROCKCHIP 227 tristate "Rockchip gpio and pinctrl driver" 228 depends on ARCH_ROCKCHIP || COMPILE_TEST 229 depends on OF 230 select GPIOLIB 231 select PINMUX 232 select GENERIC_PINCONF 233 select GENERIC_IRQ_CHIP 234 select MFD_SYSCON 235 select OF_GPIO 236 default ARCH_ROCKCHIP 237 help 238 This support pinctrl and gpio driver for Rockchip SoCs. 239 240config PINCTRL_SINGLE 241 tristate "One-register-per-pin type device tree based pinctrl driver" 242 depends on OF 243 depends on HAS_IOMEM 244 select GENERIC_PINCTRL_GROUPS 245 select GENERIC_PINMUX_FUNCTIONS 246 select GENERIC_PINCONF 247 help 248 This selects the device tree based generic pinctrl driver. 249 250config PINCTRL_SX150X 251 bool "Semtech SX150x I2C GPIO expander pinctrl driver" 252 depends on I2C=y 253 select PINMUX 254 select PINCONF 255 select GENERIC_PINCONF 256 select GPIOLIB 257 select GPIOLIB_IRQCHIP 258 select REGMAP 259 help 260 Say yes here to provide support for Semtech SX150x-series I2C 261 GPIO expanders as pinctrl module. 262 Compatible models include: 263 - 8 bits: sx1508q, sx1502q 264 - 16 bits: sx1509q, sx1506q 265 266config PINCTRL_PISTACHIO 267 bool "IMG Pistachio SoC pinctrl driver" 268 depends on OF && (MIPS || COMPILE_TEST) 269 depends on GPIOLIB 270 select PINMUX 271 select GENERIC_PINCONF 272 select GPIOLIB_IRQCHIP 273 select OF_GPIO 274 help 275 This support pinctrl and gpio driver for IMG Pistachio SoC. 276 277config PINCTRL_ST 278 bool 279 depends on OF 280 select PINMUX 281 select PINCONF 282 select GPIOLIB_IRQCHIP 283 284config PINCTRL_STARFIVE 285 tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC" 286 depends on SOC_STARFIVE || COMPILE_TEST 287 depends on OF 288 default SOC_STARFIVE 289 select GENERIC_PINCTRL_GROUPS 290 select GENERIC_PINMUX_FUNCTIONS 291 select GENERIC_PINCONF 292 select GPIOLIB 293 select GPIOLIB_IRQCHIP 294 select OF_GPIO 295 help 296 Say yes here to support pin control on the StarFive JH7100 SoC. 297 This also provides an interface to the GPIO pins not used by other 298 peripherals supporting inputs, outputs, configuring pull-up/pull-down 299 and interrupts on input changes. 300 301config PINCTRL_STMFX 302 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver" 303 depends on I2C 304 depends on OF_GPIO 305 select GENERIC_PINCONF 306 select GPIOLIB_IRQCHIP 307 select MFD_STMFX 308 help 309 Driver for STMicroelectronics Multi-Function eXpander (STMFX) 310 GPIO expander. 311 This provides a GPIO interface supporting inputs and outputs, 312 and configuring push-pull, open-drain, and can also be used as 313 interrupt-controller. 314 315config PINCTRL_MAX77620 316 tristate "MAX77620/MAX20024 Pincontrol support" 317 depends on MFD_MAX77620 && OF 318 select PINMUX 319 select GENERIC_PINCONF 320 help 321 Say Yes here to enable Pin control support for Maxim PMIC MAX77620. 322 This PMIC has 8 GPIO pins that work as GPIO as well as special 323 function in alternate mode. This driver also configure push-pull, 324 open drain, FPS slots etc. 325 326config PINCTRL_PALMAS 327 tristate "Pinctrl driver for the PALMAS Series MFD devices" 328 depends on OF && MFD_PALMAS 329 select PINMUX 330 select GENERIC_PINCONF 331 help 332 Palmas device supports the configuration of pins for different 333 functionality. This driver supports the pinmux, push-pull and 334 open drain configuration for the Palmas series devices like 335 TPS65913, TPS80036 etc. 336 337config PINCTRL_PIC32 338 bool "Microchip PIC32 pin controller driver" 339 depends on OF 340 depends on MACH_PIC32 341 select PINMUX 342 select GENERIC_PINCONF 343 select GPIOLIB_IRQCHIP 344 select OF_GPIO 345 help 346 This is the pin controller and gpio driver for Microchip PIC32 347 microcontrollers. This option is selected automatically when specific 348 machine and arch are selected to build. 349 350config PINCTRL_PIC32MZDA 351 def_bool y if PIC32MZDA 352 select PINCTRL_PIC32 353 354config PINCTRL_ZYNQ 355 bool "Pinctrl driver for Xilinx Zynq" 356 depends on ARCH_ZYNQ 357 select PINMUX 358 select GENERIC_PINCONF 359 help 360 This selects the pinctrl driver for Xilinx Zynq. 361 362config PINCTRL_ZYNQMP 363 tristate "Pinctrl driver for Xilinx ZynqMP" 364 depends on ZYNQMP_FIRMWARE 365 select PINMUX 366 select GENERIC_PINCONF 367 default ZYNQMP_FIRMWARE 368 help 369 This selects the pinctrl driver for Xilinx ZynqMP platform. 370 This driver will query the pin information from the firmware 371 and allow configuring the pins. 372 Configuration can include the mux function to select on those 373 pin(s)/group(s), and various pin configuration parameters 374 such as pull-up, slew rate, etc. 375 This driver can also be built as a module. If so, the module 376 will be called pinctrl-zynqmp. 377 378config PINCTRL_INGENIC 379 bool "Pinctrl driver for the Ingenic JZ47xx SoCs" 380 default MACH_INGENIC 381 depends on OF 382 depends on MIPS || COMPILE_TEST 383 select GENERIC_PINCONF 384 select GENERIC_PINCTRL_GROUPS 385 select GENERIC_PINMUX_FUNCTIONS 386 select GPIOLIB 387 select GPIOLIB_IRQCHIP 388 select REGMAP_MMIO 389 390config PINCTRL_RK805 391 tristate "Pinctrl and GPIO driver for RK805 PMIC" 392 depends on MFD_RK808 393 select GPIOLIB 394 select PINMUX 395 select GENERIC_PINCONF 396 help 397 This selects the pinctrl driver for RK805. 398 399config PINCTRL_OCELOT 400 bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs" 401 depends on OF 402 depends on HAS_IOMEM 403 select GPIOLIB 404 select GPIOLIB_IRQCHIP 405 select GENERIC_PINCONF 406 select GENERIC_PINCTRL_GROUPS 407 select GENERIC_PINMUX_FUNCTIONS 408 select OF_GPIO 409 select REGMAP_MMIO 410 411config PINCTRL_MICROCHIP_SGPIO 412 bool "Pinctrl driver for Microsemi/Microchip Serial GPIO" 413 depends on OF 414 depends on HAS_IOMEM 415 select GPIOLIB 416 select GPIOLIB_IRQCHIP 417 select GENERIC_PINCONF 418 select GENERIC_PINCTRL_GROUPS 419 select GENERIC_PINMUX_FUNCTIONS 420 select OF_GPIO 421 help 422 Support for the serial GPIO interface used on Microsemi and 423 Microchip SoC's. By using a serial interface, the SIO 424 controller significantly extends the number of available 425 GPIOs with a minimum number of additional pins on the 426 device. The primary purpose of the SIO controller is to 427 connect control signals from SFP modules and to act as an 428 LED controller. 429 430config PINCTRL_K210 431 bool "Pinctrl driver for the Canaan Kendryte K210 SoC" 432 depends on RISCV && SOC_CANAAN && OF 433 select GENERIC_PINMUX_FUNCTIONS 434 select GENERIC_PINCONF 435 select GPIOLIB 436 select OF_GPIO 437 select REGMAP_MMIO 438 default SOC_CANAAN 439 help 440 Add support for the Canaan Kendryte K210 RISC-V SOC Field 441 Programmable IO Array (FPIOA) controller. 442 443config PINCTRL_KEEMBAY 444 tristate "Pinctrl driver for Intel Keem Bay SoC" 445 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST) 446 depends on HAS_IOMEM 447 select PINMUX 448 select PINCONF 449 select GENERIC_PINCONF 450 select GENERIC_PINCTRL_GROUPS 451 select GENERIC_PINMUX_FUNCTIONS 452 select GPIOLIB 453 select GPIOLIB_IRQCHIP 454 select GPIO_GENERIC 455 help 456 This selects pin control driver for the Intel Keembay SoC. 457 It provides pin config functions such as pullup, pulldown, 458 interrupt, drive strength, sec lock, schmitt trigger, slew 459 rate control and direction control. This module will be 460 called as pinctrl-keembay. 461 462source "drivers/pinctrl/actions/Kconfig" 463source "drivers/pinctrl/aspeed/Kconfig" 464source "drivers/pinctrl/bcm/Kconfig" 465source "drivers/pinctrl/berlin/Kconfig" 466source "drivers/pinctrl/freescale/Kconfig" 467source "drivers/pinctrl/intel/Kconfig" 468source "drivers/pinctrl/mvebu/Kconfig" 469source "drivers/pinctrl/nomadik/Kconfig" 470source "drivers/pinctrl/nuvoton/Kconfig" 471source "drivers/pinctrl/pxa/Kconfig" 472source "drivers/pinctrl/qcom/Kconfig" 473source "drivers/pinctrl/ralink/Kconfig" 474source "drivers/pinctrl/renesas/Kconfig" 475source "drivers/pinctrl/samsung/Kconfig" 476source "drivers/pinctrl/spear/Kconfig" 477source "drivers/pinctrl/sprd/Kconfig" 478source "drivers/pinctrl/stm32/Kconfig" 479source "drivers/pinctrl/sunxi/Kconfig" 480source "drivers/pinctrl/tegra/Kconfig" 481source "drivers/pinctrl/ti/Kconfig" 482source "drivers/pinctrl/uniphier/Kconfig" 483source "drivers/pinctrl/vt8500/Kconfig" 484source "drivers/pinctrl/mediatek/Kconfig" 485source "drivers/pinctrl/meson/Kconfig" 486source "drivers/pinctrl/cirrus/Kconfig" 487source "drivers/pinctrl/visconti/Kconfig" 488 489config PINCTRL_XWAY 490 bool 491 depends on SOC_TYPE_XWAY 492 depends on PINCTRL_LANTIQ 493 494config PINCTRL_TB10X 495 bool 496 depends on OF && ARC_PLAT_TB10X 497 select GPIOLIB 498 499config PINCTRL_EQUILIBRIUM 500 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC" 501 depends on OF && HAS_IOMEM 502 depends on X86 || COMPILE_TEST 503 select PINMUX 504 select PINCONF 505 select GPIOLIB 506 select GPIO_GENERIC 507 select GPIOLIB_IRQCHIP 508 select GENERIC_PINCONF 509 select GENERIC_PINCTRL_GROUPS 510 select GENERIC_PINMUX_FUNCTIONS 511 512 help 513 Equilibrium pinctrl driver is a pinctrl & GPIO driver for Intel Lightning 514 Mountain network processor SoC that supports both the linux GPIO and pin 515 control frameworks. It provides interfaces to setup pinmux, assign desired 516 pin functions, configure GPIO attributes for LGM SoC pins. Pinmux and 517 pinconf settings are retrieved from device tree. 518 519endif 520