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_AW9523
131 tristate "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver"
135 select GENERIC_PINCONF
137 select GPIOLIB_IRQCHIP
141 The Awinic AW9523/AW9523B is a multi-function I2C GPIO
142 expander with PWM functionality. This driver bundles a
143 pinctrl driver to select the function muxing and a GPIO
144 driver to handle GPIO, when the GPIO function is selected.
146 Say yes to enable pinctrl and GPIO support for the AW9523(B).
148 config PINCTRL_BM1880
149 bool "Bitmain BM1880 Pinctrl driver"
150 depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
154 Pinctrl driver for Bitmain BM1880 SoC.
156 config PINCTRL_CY8C95X0
157 tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver"
160 select GPIOLIB_IRQCHIP
163 select GENERIC_PINCONF
166 Support for 20/40/60 pin Cypress Cy8C95x0 pinctrl/gpio I2C expander.
167 This driver can also be built as a module. If so, the module will be
168 called pinctrl-cy8c95x0.
170 config PINCTRL_DA850_PUPD
171 tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"
172 depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
174 select GENERIC_PINCONF
176 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
177 pull-up and pull-down pin groups.
179 config PINCTRL_DA9062
180 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
181 depends on MFD_DA9062
184 The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
185 different functions. This driver bundles a pinctrl driver to select the
186 function muxing and a GPIO driver to handle the GPIO when the GPIO
187 function is selected.
189 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
191 config PINCTRL_DIGICOLOR
193 depends on ARCH_DIGICOLOR || COMPILE_TEST
195 select GENERIC_PINCONF
197 config PINCTRL_EP93XX
199 depends on ARCH_EP93XX || COMPILE_TEST
201 select GENERIC_PINCONF
204 config PINCTRL_EQUILIBRIUM
205 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
206 depends on OF && HAS_IOMEM
207 depends on X86 || COMPILE_TEST
212 select GPIOLIB_IRQCHIP
213 select GENERIC_PINCONF
214 select GENERIC_PINCTRL_GROUPS
215 select GENERIC_PINMUX_FUNCTIONS
217 Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
218 Mountain network processor SoC that supports both the GPIO and pin
219 control frameworks. It provides interfaces to setup pin muxing, assign
220 desired pin functions, configure GPIO attributes for LGM SoC pins.
221 Pin muxing and pin config settings are retrieved from device tree.
224 bool "Mobileye EyeQ5 pinctrl driver"
226 depends on MACH_EYEQ5 || COMPILE_TEST
228 select GENERIC_PINCONF
232 Pin controller driver for the Mobileye EyeQ5 platform. It does both
233 pin config & pin muxing. It does not handle GPIO.
235 Pin muxing supports two functions for each pin: first is GPIO, second
236 is pin-dependent. Pin config is about bias & drive strength.
238 config PINCTRL_GEMINI
240 depends on ARCH_GEMINI
243 select GENERIC_PINCONF
246 config PINCTRL_INGENIC
247 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
250 depends on MIPS || COMPILE_TEST
251 select GENERIC_PINCONF
252 select GENERIC_PINCTRL_GROUPS
253 select GENERIC_PINMUX_FUNCTIONS
255 select GPIOLIB_IRQCHIP
259 bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
260 depends on RISCV && SOC_CANAAN_K210 && OF
261 select GENERIC_PINMUX_FUNCTIONS
262 select GENERIC_PINCONF
266 default SOC_CANAAN_K210
268 Add support for the Canaan Kendryte K210 RISC-V SOC Field
269 Programmable IO Array (FPIOA) controller.
272 bool "Pinctrl driver for the Canaan Kendryte K230 SoC"
274 depends on ARCH_CANAAN || COMPILE_TEST
275 select GENERIC_PINCTRL_GROUPS
276 select GENERIC_PINMUX_FUNCTIONS
277 select GENERIC_PINCONF
280 Add support for the Canaan Kendryte K230 RISC-V SOC pin controller.
282 config PINCTRL_KEEMBAY
283 tristate "Pinctrl driver for Intel Keem Bay SoC"
284 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
288 select GENERIC_PINCONF
289 select GENERIC_PINCTRL_GROUPS
290 select GENERIC_PINMUX_FUNCTIONS
292 select GPIOLIB_IRQCHIP
295 This selects pin control driver for the Intel Keem Bay SoC.
296 It provides pin config functions such as pull-up, pull-down,
297 interrupt, drive strength, sec lock, Schmitt trigger, slew
298 rate control and direction control. This module will be
299 called as pinctrl-keembay.
301 config PINCTRL_LANTIQ
307 config PINCTRL_FALCON
309 depends on SOC_FALCON
310 depends on PINCTRL_LANTIQ
312 config PINCTRL_LOONGSON2
313 tristate "Pinctrl driver for the Loongson-2 SoC"
314 depends on OF && (LOONGARCH || COMPILE_TEST)
316 select GENERIC_PINCONF
318 This selects pin control driver for the Loongson-2 SoC. It
319 provides pin config functions multiplexing. GPIO pin pull-up,
320 pull-down functions are not supported. Say yes to enable
321 pinctrl for Loongson-2 SoC.
325 depends on SOC_TYPE_XWAY
326 depends on PINCTRL_LANTIQ
328 config PINCTRL_LPC18XX
329 bool "NXP LPC18XX/43XX SCU pinctrl driver"
330 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
333 select GENERIC_PINCONF
335 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
337 config PINCTRL_MAX77620
338 tristate "MAX77620/MAX20024 Pincontrol support"
339 depends on MFD_MAX77620 && OF
341 select GENERIC_PINCONF
343 Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
344 This PMIC has 8 GPIO pins that work as GPIO as well as special
345 function in alternate mode. This driver also configure push-pull,
346 open drain, FPS slots etc.
348 config PINCTRL_MCP23S08_I2C
352 config PINCTRL_MCP23S08_SPI
356 config PINCTRL_MCP23S08
357 tristate "Microchip MCP23xxx I/O expander"
358 depends on SPI_MASTER || I2C
360 select GPIOLIB_IRQCHIP
361 select GENERIC_PINCONF
362 select PINCTRL_MCP23S08_I2C if I2C
363 select PINCTRL_MCP23S08_SPI if SPI_MASTER
365 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
366 MCP23008 / MCP23017 / MCP23018 I/O expanders.
367 This provides a GPIO interface supporting inputs and outputs and a
368 corresponding interrupt-controller.
370 config PINCTRL_MICROCHIP_SGPIO
371 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
375 select GPIOLIB_IRQCHIP
376 select GENERIC_PINCONF
377 select GENERIC_PINCTRL_GROUPS
378 select GENERIC_PINMUX_FUNCTIONS
381 Support for the serial GPIO interface used on Microsemi and
382 Microchip SoCs. By using a serial interface, the SIO
383 controller significantly extends the number of available
384 GPIOs with a minimum number of additional pins on the
385 device. The primary purpose of the SIO controller is to
386 connect control signals from SFP modules and to act as an
389 If compiled as a module, the module name will be
390 pinctrl-microchip-sgpio.
392 config PINCTRL_OCELOT
393 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
397 select GPIOLIB_IRQCHIP
398 select GENERIC_PINCONF
399 select GENERIC_PINCTRL_GROUPS
400 select GENERIC_PINMUX_FUNCTIONS
404 Support for the internal GPIO interfaces on Microsemi Ocelot and
407 If conpiled as a module, the module name will be pinctrl-ocelot.
409 config PINCTRL_PALMAS
410 tristate "Pinctrl driver for the PALMAS Series MFD devices"
411 depends on OF && MFD_PALMAS
413 select GENERIC_PINCONF
415 Palmas device supports the configuration of pins for different
416 functionality. This driver supports the pinmux, push-pull and
417 open drain configuration for the Palmas series devices like
418 TPS65913, TPS80036 etc.
420 config PINCTRL_PEF2256
421 tristate "Lantiq PEF2256 (FALC56) pin controller driver"
422 depends on OF && FRAMER_PEF2256
425 select GENERIC_PINCONF
427 This option enables the pin controller support for the Lantiq PEF2256
428 framer, also known as FALC56.
432 To compile this driver as a module, choose M here: the
433 module will be called pinctrl-pef2256.
436 bool "Microchip PIC32 pin controller driver"
438 depends on MACH_PIC32
440 select GENERIC_PINCONF
441 select GPIOLIB_IRQCHIP
444 This is the pin controller and gpio driver for Microchip PIC32
445 microcontrollers. This option is selected automatically when specific
446 machine and arch are selected to build.
448 config PINCTRL_PIC32MZDA
449 def_bool y if PIC32MZDA
452 config PINCTRL_PISTACHIO
453 bool "IMG Pistachio SoC pinctrl driver"
454 depends on OF && (MIPS || COMPILE_TEST)
457 select GENERIC_PINCONF
458 select GPIOLIB_IRQCHIP
461 This support pinctrl and GPIO driver for IMG Pistachio SoC.
464 tristate "Pinctrl and GPIO driver for RK805 PMIC"
468 select GENERIC_PINCONF
470 This selects the pinctrl driver for RK805.
472 config PINCTRL_ROCKCHIP
473 tristate "Rockchip gpio and pinctrl driver"
474 depends on ARCH_ROCKCHIP || COMPILE_TEST
478 select GENERIC_PINCONF
479 select GENERIC_IRQ_CHIP
482 default ARCH_ROCKCHIP
484 This support pinctrl and GPIO driver for Rockchip SoCs.
487 tristate "Pinctrl driver using SCMI protocol interface"
488 depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
490 select GENERIC_PINCONF
492 This driver provides support for pinctrl which is controlled
493 by firmware that implements the SCMI interface.
494 It uses SCMI Message Protocol to interact with the
495 firmware providing all the pinctrl controls.
497 config PINCTRL_SINGLE
498 tristate "One-register-per-pin type device tree based pinctrl driver"
501 select GENERIC_PINCTRL_GROUPS
502 select GENERIC_PINMUX_FUNCTIONS
503 select GENERIC_PINCONF
505 This selects the device tree based generic pinctrl driver.
512 select GPIOLIB_IRQCHIP
515 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
518 select GENERIC_PINCONF
519 select GPIOLIB_IRQCHIP
522 Driver for STMicroelectronics Multi-Function eXpander (STMFX)
524 This provides a GPIO interface supporting inputs and outputs,
525 and configuring push-pull, open-drain, and can also be used as
526 interrupt-controller.
528 config PINCTRL_SX150X
529 bool "Semtech SX150x I2C GPIO expander pinctrl driver"
533 select GENERIC_PINCONF
535 select GPIOLIB_IRQCHIP
538 Say Y here to provide support for Semtech SX150x-series I2C
539 GPIO expanders as pinctrl module.
540 Compatible models include:
541 - 8 bits: sx1508q, sx1502q
542 - 16 bits: sx1509q, sx1506q
546 depends on OF && ARC_PLAT_TB10X
549 config PINCTRL_TPS6594
550 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
551 depends on OF && MFD_TPS6594
557 select GENERIC_PINCONF
559 Say Y to select the pinmuxing and GPIOs driver for the TPS6594
562 This driver can also be built as a module
563 called tps6594-pinctrl.
565 config PINCTRL_TH1520
566 tristate "Pinctrl driver for the T-Head TH1520 SoC"
567 depends on ARCH_THEAD || COMPILE_TEST
569 select GENERIC_PINMUX_FUNCTIONS
570 select GENERIC_PINCONF
573 This is the driver for the pin controller blocks on the
576 This driver is needed for RISC-V development boards like
577 the BeagleV Ahead and the LicheePi 4A.
580 bool "Pinctrl driver for Xilinx Zynq"
583 select GENERIC_PINCONF
585 This selects the pinctrl driver for Xilinx Zynq.
587 config PINCTRL_ZYNQMP
588 tristate "Pinctrl driver for Xilinx ZynqMP"
589 depends on ZYNQMP_FIRMWARE
591 select GENERIC_PINCONF
592 default ZYNQMP_FIRMWARE
594 This selects the pinctrl driver for Xilinx ZynqMP platform.
595 This driver will query the pin information from the firmware
596 and allow configuring the pins.
597 Configuration can include the mux function to select on those
598 pin(s)/group(s), and various pin configuration parameters
599 such as pull-up, slew rate, etc.
600 This driver can also be built as a module. If so, the module
601 will be called pinctrl-zynqmp.
603 config PINCTRL_MLXBF3
604 tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
605 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
608 select GPIOLIB_IRQCHIP
610 Say Y to select the pinctrl driver for BlueField-3 SoCs.
611 This pin controller allows selecting the mux function for
612 each pin. This driver can also be built as a module called
615 source "drivers/pinctrl/actions/Kconfig"
616 source "drivers/pinctrl/aspeed/Kconfig"
617 source "drivers/pinctrl/bcm/Kconfig"
618 source "drivers/pinctrl/berlin/Kconfig"
619 source "drivers/pinctrl/cirrus/Kconfig"
620 source "drivers/pinctrl/freescale/Kconfig"
621 source "drivers/pinctrl/intel/Kconfig"
622 source "drivers/pinctrl/mediatek/Kconfig"
623 source "drivers/pinctrl/meson/Kconfig"
624 source "drivers/pinctrl/mvebu/Kconfig"
625 source "drivers/pinctrl/nomadik/Kconfig"
626 source "drivers/pinctrl/nuvoton/Kconfig"
627 source "drivers/pinctrl/nxp/Kconfig"
628 source "drivers/pinctrl/pxa/Kconfig"
629 source "drivers/pinctrl/qcom/Kconfig"
630 source "drivers/pinctrl/realtek/Kconfig"
631 source "drivers/pinctrl/renesas/Kconfig"
632 source "drivers/pinctrl/samsung/Kconfig"
633 source "drivers/pinctrl/sophgo/Kconfig"
634 source "drivers/pinctrl/spacemit/Kconfig"
635 source "drivers/pinctrl/spear/Kconfig"
636 source "drivers/pinctrl/sprd/Kconfig"
637 source "drivers/pinctrl/starfive/Kconfig"
638 source "drivers/pinctrl/stm32/Kconfig"
639 source "drivers/pinctrl/sunplus/Kconfig"
640 source "drivers/pinctrl/sunxi/Kconfig"
641 source "drivers/pinctrl/tegra/Kconfig"
642 source "drivers/pinctrl/ti/Kconfig"
643 source "drivers/pinctrl/uniphier/Kconfig"
644 source "drivers/pinctrl/visconti/Kconfig"
645 source "drivers/pinctrl/vt8500/Kconfig"