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_CY8C95X0
139 tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver"
142 select GPIOLIB_IRQCHIP
145 select GENERIC_PINCONF
148 Support for 20/40/60 pin Cypress Cy8C95x0 pinctrl/gpio I2C expander.
149 This driver can also be built as a module. If so, the module will be
150 called pinctrl-cy8c95x0.
152 config PINCTRL_DA850_PUPD
153 tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"
154 depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
156 select GENERIC_PINCONF
158 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
159 pull-up and pull-down pin groups.
161 config PINCTRL_DA9062
162 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
163 depends on MFD_DA9062
166 The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
167 different functions. This driver bundles a pinctrl driver to select the
168 function muxing and a GPIO driver to handle the GPIO when the GPIO
169 function is selected.
171 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
173 config PINCTRL_DIGICOLOR
175 depends on ARCH_DIGICOLOR || COMPILE_TEST
177 select GENERIC_PINCONF
179 config PINCTRL_EQUILIBRIUM
180 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
181 depends on OF && HAS_IOMEM
182 depends on X86 || COMPILE_TEST
187 select GPIOLIB_IRQCHIP
188 select GENERIC_PINCONF
189 select GENERIC_PINCTRL_GROUPS
190 select GENERIC_PINMUX_FUNCTIONS
192 Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
193 Mountain network processor SoC that supports both the GPIO and pin
194 control frameworks. It provides interfaces to setup pin muxing, assign
195 desired pin functions, configure GPIO attributes for LGM SoC pins.
196 Pin muxing and pin config settings are retrieved from device tree.
198 config PINCTRL_GEMINI
200 depends on ARCH_GEMINI
203 select GENERIC_PINCONF
206 config PINCTRL_INGENIC
207 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
210 depends on MIPS || COMPILE_TEST
211 select GENERIC_PINCONF
212 select GENERIC_PINCTRL_GROUPS
213 select GENERIC_PINMUX_FUNCTIONS
215 select GPIOLIB_IRQCHIP
219 bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
220 depends on RISCV && SOC_CANAAN && OF
221 select GENERIC_PINMUX_FUNCTIONS
222 select GENERIC_PINCONF
228 Add support for the Canaan Kendryte K210 RISC-V SOC Field
229 Programmable IO Array (FPIOA) controller.
231 config PINCTRL_KEEMBAY
232 tristate "Pinctrl driver for Intel Keem Bay SoC"
233 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
237 select GENERIC_PINCONF
238 select GENERIC_PINCTRL_GROUPS
239 select GENERIC_PINMUX_FUNCTIONS
241 select GPIOLIB_IRQCHIP
244 This selects pin control driver for the Intel Keem Bay SoC.
245 It provides pin config functions such as pull-up, pull-down,
246 interrupt, drive strength, sec lock, Schmitt trigger, slew
247 rate control and direction control. This module will be
248 called as pinctrl-keembay.
250 config PINCTRL_LANTIQ
256 config PINCTRL_FALCON
258 depends on SOC_FALCON
259 depends on PINCTRL_LANTIQ
261 config PINCTRL_LOONGSON2
262 tristate "Pinctrl driver for the Loongson-2 SoC"
263 depends on OF && (LOONGARCH || COMPILE_TEST)
265 select GENERIC_PINCONF
267 This selects pin control driver for the Loongson-2 SoC. It
268 provides pin config functions multiplexing. GPIO pin pull-up,
269 pull-down functions are not supported. Say yes to enable
270 pinctrl for Loongson-2 SoC.
274 depends on SOC_TYPE_XWAY
275 depends on PINCTRL_LANTIQ
277 config PINCTRL_LPC18XX
278 bool "NXP LPC18XX/43XX SCU pinctrl driver"
279 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
282 select GENERIC_PINCONF
284 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
286 config PINCTRL_MAX77620
287 tristate "MAX77620/MAX20024 Pincontrol support"
288 depends on MFD_MAX77620 && OF
290 select GENERIC_PINCONF
292 Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
293 This PMIC has 8 GPIO pins that work as GPIO as well as special
294 function in alternate mode. This driver also configure push-pull,
295 open drain, FPS slots etc.
297 config PINCTRL_MCP23S08_I2C
301 config PINCTRL_MCP23S08_SPI
305 config PINCTRL_MCP23S08
306 tristate "Microchip MCP23xxx I/O expander"
307 depends on SPI_MASTER || I2C
309 select GPIOLIB_IRQCHIP
310 select GENERIC_PINCONF
311 select PINCTRL_MCP23S08_I2C if I2C
312 select PINCTRL_MCP23S08_SPI if SPI_MASTER
314 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
315 MCP23008 / MCP23017 / MCP23018 I/O expanders.
316 This provides a GPIO interface supporting inputs and outputs and a
317 corresponding interrupt-controller.
319 config PINCTRL_MICROCHIP_SGPIO
320 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
324 select GPIOLIB_IRQCHIP
325 select GENERIC_PINCONF
326 select GENERIC_PINCTRL_GROUPS
327 select GENERIC_PINMUX_FUNCTIONS
330 Support for the serial GPIO interface used on Microsemi and
331 Microchip SoCs. By using a serial interface, the SIO
332 controller significantly extends the number of available
333 GPIOs with a minimum number of additional pins on the
334 device. The primary purpose of the SIO controller is to
335 connect control signals from SFP modules and to act as an
338 If compiled as a module, the module name will be
339 pinctrl-microchip-sgpio.
341 config PINCTRL_OCELOT
342 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
346 select GPIOLIB_IRQCHIP
347 select GENERIC_PINCONF
348 select GENERIC_PINCTRL_GROUPS
349 select GENERIC_PINMUX_FUNCTIONS
353 Support for the internal GPIO interfaces on Microsemi Ocelot and
356 If conpiled as a module, the module name will be pinctrl-ocelot.
358 config PINCTRL_PALMAS
359 tristate "Pinctrl driver for the PALMAS Series MFD devices"
360 depends on OF && MFD_PALMAS
362 select GENERIC_PINCONF
364 Palmas device supports the configuration of pins for different
365 functionality. This driver supports the pinmux, push-pull and
366 open drain configuration for the Palmas series devices like
367 TPS65913, TPS80036 etc.
370 bool "Microchip PIC32 pin controller driver"
372 depends on MACH_PIC32
374 select GENERIC_PINCONF
375 select GPIOLIB_IRQCHIP
378 This is the pin controller and gpio driver for Microchip PIC32
379 microcontrollers. This option is selected automatically when specific
380 machine and arch are selected to build.
382 config PINCTRL_PIC32MZDA
383 def_bool y if PIC32MZDA
386 config PINCTRL_PISTACHIO
387 bool "IMG Pistachio SoC pinctrl driver"
388 depends on OF && (MIPS || COMPILE_TEST)
391 select GENERIC_PINCONF
392 select GPIOLIB_IRQCHIP
395 This support pinctrl and GPIO driver for IMG Pistachio SoC.
398 tristate "Pinctrl and GPIO driver for RK805 PMIC"
402 select GENERIC_PINCONF
404 This selects the pinctrl driver for RK805.
406 config PINCTRL_ROCKCHIP
407 tristate "Rockchip gpio and pinctrl driver"
408 depends on ARCH_ROCKCHIP || COMPILE_TEST
412 select GENERIC_PINCONF
413 select GENERIC_IRQ_CHIP
416 default ARCH_ROCKCHIP
418 This support pinctrl and GPIO driver for Rockchip SoCs.
420 config PINCTRL_SINGLE
421 tristate "One-register-per-pin type device tree based pinctrl driver"
424 select GENERIC_PINCTRL_GROUPS
425 select GENERIC_PINMUX_FUNCTIONS
426 select GENERIC_PINCONF
428 This selects the device tree based generic pinctrl driver.
435 select GPIOLIB_IRQCHIP
438 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
441 select GENERIC_PINCONF
442 select GPIOLIB_IRQCHIP
445 Driver for STMicroelectronics Multi-Function eXpander (STMFX)
447 This provides a GPIO interface supporting inputs and outputs,
448 and configuring push-pull, open-drain, and can also be used as
449 interrupt-controller.
451 config PINCTRL_SX150X
452 bool "Semtech SX150x I2C GPIO expander pinctrl driver"
456 select GENERIC_PINCONF
458 select GPIOLIB_IRQCHIP
461 Say Y here to provide support for Semtech SX150x-series I2C
462 GPIO expanders as pinctrl module.
463 Compatible models include:
464 - 8 bits: sx1508q, sx1502q
465 - 16 bits: sx1509q, sx1506q
469 depends on OF && ARC_PLAT_TB10X
473 bool "Pinctrl driver for Xilinx Zynq"
476 select GENERIC_PINCONF
478 This selects the pinctrl driver for Xilinx Zynq.
480 config PINCTRL_ZYNQMP
481 tristate "Pinctrl driver for Xilinx ZynqMP"
482 depends on ZYNQMP_FIRMWARE
484 select GENERIC_PINCONF
485 default ZYNQMP_FIRMWARE
487 This selects the pinctrl driver for Xilinx ZynqMP platform.
488 This driver will query the pin information from the firmware
489 and allow configuring the pins.
490 Configuration can include the mux function to select on those
491 pin(s)/group(s), and various pin configuration parameters
492 such as pull-up, slew rate, etc.
493 This driver can also be built as a module. If so, the module
494 will be called pinctrl-zynqmp.
496 config PINCTRL_MLXBF3
497 tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
498 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
501 select GPIOLIB_IRQCHIP
503 Say Y to select the pinctrl driver for BlueField-3 SoCs.
504 This pin controller allows selecting the mux function for
505 each pin. This driver can also be built as a module called
508 source "drivers/pinctrl/actions/Kconfig"
509 source "drivers/pinctrl/aspeed/Kconfig"
510 source "drivers/pinctrl/bcm/Kconfig"
511 source "drivers/pinctrl/berlin/Kconfig"
512 source "drivers/pinctrl/cirrus/Kconfig"
513 source "drivers/pinctrl/freescale/Kconfig"
514 source "drivers/pinctrl/intel/Kconfig"
515 source "drivers/pinctrl/mediatek/Kconfig"
516 source "drivers/pinctrl/meson/Kconfig"
517 source "drivers/pinctrl/mvebu/Kconfig"
518 source "drivers/pinctrl/nomadik/Kconfig"
519 source "drivers/pinctrl/nuvoton/Kconfig"
520 source "drivers/pinctrl/nxp/Kconfig"
521 source "drivers/pinctrl/pxa/Kconfig"
522 source "drivers/pinctrl/qcom/Kconfig"
523 source "drivers/pinctrl/renesas/Kconfig"
524 source "drivers/pinctrl/samsung/Kconfig"
525 source "drivers/pinctrl/spear/Kconfig"
526 source "drivers/pinctrl/sprd/Kconfig"
527 source "drivers/pinctrl/starfive/Kconfig"
528 source "drivers/pinctrl/stm32/Kconfig"
529 source "drivers/pinctrl/sunplus/Kconfig"
530 source "drivers/pinctrl/sunxi/Kconfig"
531 source "drivers/pinctrl/tegra/Kconfig"
532 source "drivers/pinctrl/ti/Kconfig"
533 source "drivers/pinctrl/uniphier/Kconfig"
534 source "drivers/pinctrl/visconti/Kconfig"
535 source "drivers/pinctrl/vt8500/Kconfig"