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