1 # SPDX-License-Identifier: GPL-2.0-only
3 # PINCTRL infrastructure and drivers
11 config GENERIC_PINCTRL_GROUPS
15 bool "Support pin multiplexing controllers" if COMPILE_TEST
17 config GENERIC_PINMUX_FUNCTIONS
22 bool "Support pin configuration controllers" if COMPILE_TEST
24 config GENERIC_PINCONF
29 bool "Debug PINCTRL calls"
30 depends on DEBUG_KERNEL
32 Say Y here to add some extra checks and diagnostics to PINCTRL calls.
35 bool "AMD GPIO pin control"
37 depends on ACPI || COMPILE_TEST
39 select GPIOLIB_IRQCHIP
42 select GENERIC_PINCONF
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
49 Requires ACPI/FDT device enumeration code to set up a platform
52 config PINCTRL_APPLE_GPIO
53 tristate "Apple SoC GPIO pin controller driver"
57 select GPIOLIB_IRQCHIP
58 select GENERIC_PINCTRL_GROUPS
59 select GENERIC_PINMUX_FUNCTIONS
62 This is the driver for the GPIO controller found on Apple ARM SoCs,
65 This driver can also be built as a module. If so, the module
66 will be called pinctrl-apple-gpio.
68 config PINCTRL_ARTPEC6
69 bool "Axis ARTPEC-6 pin controller driver"
70 depends on MACH_ARTPEC6
72 select GENERIC_PINCONF
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
80 tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
81 depends on MFD_AS3722 && GPIOLIB
83 select GENERIC_PINCONF
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.
91 bool "AT91 pinctrl driver"
98 select GPIOLIB_IRQCHIP
100 Say Y here to enable the at91 pinctrl driver
102 config PINCTRL_AT91PIO4
103 bool "AT91 PIO4 pinctrl driver"
106 depends on ARCH_AT91 || COMPILE_TEST
108 select GENERIC_PINCONF
110 select GPIOLIB_IRQCHIP
113 Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
114 controller available on sama5d2 SoC.
116 config PINCTRL_AXP209
117 tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
118 depends on MFD_AXP20X
121 select GENERIC_PINCONF
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
128 Say Y to enable pinctrl and GPIO support for the AXP209 PMIC.
130 config PINCTRL_BM1880
131 bool "Bitmain BM1880 Pinctrl driver"
132 depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
136 Pinctrl driver for Bitmain BM1880 SoC.
138 config 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)
142 select GENERIC_PINCONF
144 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
145 pull-up and pull-down pin groups.
147 config PINCTRL_DA9062
148 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
149 depends on MFD_DA9062
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.
157 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
159 config PINCTRL_DIGICOLOR
161 depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
163 select GENERIC_PINCONF
165 config 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
173 select GPIOLIB_IRQCHIP
174 select GENERIC_PINCONF
175 select GENERIC_PINCTRL_GROUPS
176 select GENERIC_PINMUX_FUNCTIONS
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.
184 config PINCTRL_GEMINI
186 depends on ARCH_GEMINI
189 select GENERIC_PINCONF
192 config PINCTRL_INGENIC
193 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
196 depends on MIPS || COMPILE_TEST
197 select GENERIC_PINCONF
198 select GENERIC_PINCTRL_GROUPS
199 select GENERIC_PINMUX_FUNCTIONS
201 select GPIOLIB_IRQCHIP
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
214 Add support for the Canaan Kendryte K210 RISC-V SOC Field
215 Programmable IO Array (FPIOA) controller.
217 config PINCTRL_KEEMBAY
218 tristate "Pinctrl driver for Intel Keem Bay SoC"
219 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
223 select GENERIC_PINCONF
224 select GENERIC_PINCTRL_GROUPS
225 select GENERIC_PINMUX_FUNCTIONS
227 select GPIOLIB_IRQCHIP
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.
236 config PINCTRL_LANTIQ
242 config PINCTRL_FALCON
244 depends on SOC_FALCON
245 depends on PINCTRL_LANTIQ
249 depends on SOC_TYPE_XWAY
250 depends on PINCTRL_LANTIQ
252 config PINCTRL_LPC18XX
253 bool "NXP LPC18XX/43XX SCU pinctrl driver"
254 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
257 select GENERIC_PINCONF
259 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
261 config PINCTRL_MAX77620
262 tristate "MAX77620/MAX20024 Pincontrol support"
263 depends on MFD_MAX77620 && OF
265 select GENERIC_PINCONF
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.
272 config PINCTRL_MCP23S08_I2C
276 config PINCTRL_MCP23S08_SPI
280 config PINCTRL_MCP23S08
281 tristate "Microchip MCP23xxx I/O expander"
282 depends on SPI_MASTER || I2C
284 select GPIOLIB_IRQCHIP
285 select GENERIC_PINCONF
286 select PINCTRL_MCP23S08_I2C if I2C
287 select PINCTRL_MCP23S08_SPI if SPI_MASTER
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.
294 config PINCTRL_MICROCHIP_SGPIO
295 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
299 select GPIOLIB_IRQCHIP
300 select GENERIC_PINCONF
301 select GENERIC_PINCTRL_GROUPS
302 select GENERIC_PINMUX_FUNCTIONS
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
313 If compiled as a module, the module name will be
314 pinctrl-microchip-sgpio.
316 config PINCTRL_OCELOT
317 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
321 select GPIOLIB_IRQCHIP
322 select GENERIC_PINCONF
323 select GENERIC_PINCTRL_GROUPS
324 select GENERIC_PINMUX_FUNCTIONS
333 select GENERIC_PINCONF
336 select GPIOLIB_IRQCHIP
339 config PINCTRL_PALMAS
340 tristate "Pinctrl driver for the PALMAS Series MFD devices"
341 depends on OF && MFD_PALMAS
343 select GENERIC_PINCONF
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.
351 bool "Microchip PIC32 pin controller driver"
353 depends on MACH_PIC32
355 select GENERIC_PINCONF
356 select GPIOLIB_IRQCHIP
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.
363 config PINCTRL_PIC32MZDA
364 def_bool y if PIC32MZDA
367 config PINCTRL_PISTACHIO
368 bool "IMG Pistachio SoC pinctrl driver"
369 depends on OF && (MIPS || COMPILE_TEST)
372 select GENERIC_PINCONF
373 select GPIOLIB_IRQCHIP
376 This support pinctrl and GPIO driver for IMG Pistachio SoC.
379 tristate "Pinctrl and GPIO driver for RK805 PMIC"
383 select GENERIC_PINCONF
385 This selects the pinctrl driver for RK805.
387 config PINCTRL_ROCKCHIP
388 tristate "Rockchip gpio and pinctrl driver"
389 depends on ARCH_ROCKCHIP || COMPILE_TEST
393 select GENERIC_PINCONF
394 select GENERIC_IRQ_CHIP
397 default ARCH_ROCKCHIP
399 This support pinctrl and GPIO driver for Rockchip SoCs.
401 config PINCTRL_SINGLE
402 tristate "One-register-per-pin type device tree based pinctrl driver"
405 select GENERIC_PINCTRL_GROUPS
406 select GENERIC_PINMUX_FUNCTIONS
407 select GENERIC_PINCONF
409 This selects the device tree based generic pinctrl driver.
416 select GPIOLIB_IRQCHIP
418 config PINCTRL_STARFIVE
419 tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC"
420 depends on SOC_STARFIVE || COMPILE_TEST
423 select GENERIC_PINCTRL_GROUPS
424 select GENERIC_PINMUX_FUNCTIONS
425 select GENERIC_PINCONF
427 select GPIOLIB_IRQCHIP
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.
436 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
439 select GENERIC_PINCONF
440 select GPIOLIB_IRQCHIP
443 Driver for STMicroelectronics Multi-Function eXpander (STMFX)
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.
449 config PINCTRL_SX150X
450 bool "Semtech SX150x I2C GPIO expander pinctrl driver"
454 select GENERIC_PINCONF
456 select GPIOLIB_IRQCHIP
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
467 depends on OF && ARC_PLAT_TB10X
470 config PINCTRL_THUNDERBAY
471 tristate "Generic pinctrl and GPIO driver for Intel Thunder Bay SoC"
472 depends on ARCH_THUNDERBAY || (ARM64 && COMPILE_TEST)
476 select GENERIC_PINCONF
477 select GENERIC_PINCTRL_GROUPS
478 select GENERIC_PINMUX_FUNCTIONS
480 select GPIOLIB_IRQCHIP
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.
490 bool "Pinctrl driver for Xilinx Zynq"
493 select GENERIC_PINCONF
495 This selects the pinctrl driver for Xilinx Zynq.
497 config PINCTRL_ZYNQMP
498 tristate "Pinctrl driver for Xilinx ZynqMP"
499 depends on ZYNQMP_FIRMWARE
501 select GENERIC_PINCONF
502 default ZYNQMP_FIRMWARE
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.
513 source "drivers/pinctrl/actions/Kconfig"
514 source "drivers/pinctrl/aspeed/Kconfig"
515 source "drivers/pinctrl/bcm/Kconfig"
516 source "drivers/pinctrl/berlin/Kconfig"
517 source "drivers/pinctrl/cirrus/Kconfig"
518 source "drivers/pinctrl/freescale/Kconfig"
519 source "drivers/pinctrl/intel/Kconfig"
520 source "drivers/pinctrl/mediatek/Kconfig"
521 source "drivers/pinctrl/meson/Kconfig"
522 source "drivers/pinctrl/mvebu/Kconfig"
523 source "drivers/pinctrl/nomadik/Kconfig"
524 source "drivers/pinctrl/nuvoton/Kconfig"
525 source "drivers/pinctrl/pxa/Kconfig"
526 source "drivers/pinctrl/qcom/Kconfig"
527 source "drivers/pinctrl/ralink/Kconfig"
528 source "drivers/pinctrl/renesas/Kconfig"
529 source "drivers/pinctrl/samsung/Kconfig"
530 source "drivers/pinctrl/spear/Kconfig"
531 source "drivers/pinctrl/sprd/Kconfig"
532 source "drivers/pinctrl/stm32/Kconfig"
533 source "drivers/pinctrl/sunplus/Kconfig"
534 source "drivers/pinctrl/sunxi/Kconfig"
535 source "drivers/pinctrl/tegra/Kconfig"
536 source "drivers/pinctrl/ti/Kconfig"
537 source "drivers/pinctrl/uniphier/Kconfig"
538 source "drivers/pinctrl/visconti/Kconfig"
539 source "drivers/pinctrl/vt8500/Kconfig"