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_EQUILIBRIUM
198 tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
199 depends on OF && HAS_IOMEM
200 depends on X86 || COMPILE_TEST
205 select GPIOLIB_IRQCHIP
206 select GENERIC_PINCONF
207 select GENERIC_PINCTRL_GROUPS
208 select GENERIC_PINMUX_FUNCTIONS
210 Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
211 Mountain network processor SoC that supports both the GPIO and pin
212 control frameworks. It provides interfaces to setup pin muxing, assign
213 desired pin functions, configure GPIO attributes for LGM SoC pins.
214 Pin muxing and pin config settings are retrieved from device tree.
216 config PINCTRL_GEMINI
218 depends on ARCH_GEMINI
221 select GENERIC_PINCONF
224 config PINCTRL_INGENIC
225 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
228 depends on MIPS || COMPILE_TEST
229 select GENERIC_PINCONF
230 select GENERIC_PINCTRL_GROUPS
231 select GENERIC_PINMUX_FUNCTIONS
233 select GPIOLIB_IRQCHIP
237 bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
238 depends on RISCV && SOC_CANAAN && OF
239 select GENERIC_PINMUX_FUNCTIONS
240 select GENERIC_PINCONF
246 Add support for the Canaan Kendryte K210 RISC-V SOC Field
247 Programmable IO Array (FPIOA) controller.
249 config PINCTRL_KEEMBAY
250 tristate "Pinctrl driver for Intel Keem Bay SoC"
251 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
255 select GENERIC_PINCONF
256 select GENERIC_PINCTRL_GROUPS
257 select GENERIC_PINMUX_FUNCTIONS
259 select GPIOLIB_IRQCHIP
262 This selects pin control driver for the Intel Keem Bay SoC.
263 It provides pin config functions such as pull-up, pull-down,
264 interrupt, drive strength, sec lock, Schmitt trigger, slew
265 rate control and direction control. This module will be
266 called as pinctrl-keembay.
268 config PINCTRL_LANTIQ
274 config PINCTRL_FALCON
276 depends on SOC_FALCON
277 depends on PINCTRL_LANTIQ
279 config PINCTRL_LOONGSON2
280 tristate "Pinctrl driver for the Loongson-2 SoC"
281 depends on OF && (LOONGARCH || COMPILE_TEST)
283 select GENERIC_PINCONF
285 This selects pin control driver for the Loongson-2 SoC. It
286 provides pin config functions multiplexing. GPIO pin pull-up,
287 pull-down functions are not supported. Say yes to enable
288 pinctrl for Loongson-2 SoC.
292 depends on SOC_TYPE_XWAY
293 depends on PINCTRL_LANTIQ
295 config PINCTRL_LPC18XX
296 bool "NXP LPC18XX/43XX SCU pinctrl driver"
297 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
300 select GENERIC_PINCONF
302 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
304 config PINCTRL_MAX77620
305 tristate "MAX77620/MAX20024 Pincontrol support"
306 depends on MFD_MAX77620 && OF
308 select GENERIC_PINCONF
310 Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
311 This PMIC has 8 GPIO pins that work as GPIO as well as special
312 function in alternate mode. This driver also configure push-pull,
313 open drain, FPS slots etc.
315 config PINCTRL_MCP23S08_I2C
319 config PINCTRL_MCP23S08_SPI
323 config PINCTRL_MCP23S08
324 tristate "Microchip MCP23xxx I/O expander"
325 depends on SPI_MASTER || I2C
327 select GPIOLIB_IRQCHIP
328 select GENERIC_PINCONF
329 select PINCTRL_MCP23S08_I2C if I2C
330 select PINCTRL_MCP23S08_SPI if SPI_MASTER
332 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
333 MCP23008 / MCP23017 / MCP23018 I/O expanders.
334 This provides a GPIO interface supporting inputs and outputs and a
335 corresponding interrupt-controller.
337 config PINCTRL_MICROCHIP_SGPIO
338 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
342 select GPIOLIB_IRQCHIP
343 select GENERIC_PINCONF
344 select GENERIC_PINCTRL_GROUPS
345 select GENERIC_PINMUX_FUNCTIONS
348 Support for the serial GPIO interface used on Microsemi and
349 Microchip SoCs. By using a serial interface, the SIO
350 controller significantly extends the number of available
351 GPIOs with a minimum number of additional pins on the
352 device. The primary purpose of the SIO controller is to
353 connect control signals from SFP modules and to act as an
356 If compiled as a module, the module name will be
357 pinctrl-microchip-sgpio.
359 config PINCTRL_OCELOT
360 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
364 select GPIOLIB_IRQCHIP
365 select GENERIC_PINCONF
366 select GENERIC_PINCTRL_GROUPS
367 select GENERIC_PINMUX_FUNCTIONS
371 Support for the internal GPIO interfaces on Microsemi Ocelot and
374 If conpiled as a module, the module name will be pinctrl-ocelot.
376 config PINCTRL_PALMAS
377 tristate "Pinctrl driver for the PALMAS Series MFD devices"
378 depends on OF && MFD_PALMAS
380 select GENERIC_PINCONF
382 Palmas device supports the configuration of pins for different
383 functionality. This driver supports the pinmux, push-pull and
384 open drain configuration for the Palmas series devices like
385 TPS65913, TPS80036 etc.
387 config PINCTRL_PEF2256
388 tristate "Lantiq PEF2256 (FALC56) pin controller driver"
389 depends on OF && FRAMER_PEF2256
392 select GENERIC_PINCONF
394 This option enables the pin controller support for the Lantiq PEF2256
395 framer, also known as FALC56.
399 To compile this driver as a module, choose M here: the
400 module will be called pinctrl-pef2256.
403 bool "Microchip PIC32 pin controller driver"
405 depends on MACH_PIC32
407 select GENERIC_PINCONF
408 select GPIOLIB_IRQCHIP
411 This is the pin controller and gpio driver for Microchip PIC32
412 microcontrollers. This option is selected automatically when specific
413 machine and arch are selected to build.
415 config PINCTRL_PIC32MZDA
416 def_bool y if PIC32MZDA
419 config PINCTRL_PISTACHIO
420 bool "IMG Pistachio SoC pinctrl driver"
421 depends on OF && (MIPS || COMPILE_TEST)
424 select GENERIC_PINCONF
425 select GPIOLIB_IRQCHIP
428 This support pinctrl and GPIO driver for IMG Pistachio SoC.
431 tristate "Pinctrl and GPIO driver for RK805 PMIC"
435 select GENERIC_PINCONF
437 This selects the pinctrl driver for RK805.
439 config PINCTRL_ROCKCHIP
440 tristate "Rockchip gpio and pinctrl driver"
441 depends on ARCH_ROCKCHIP || COMPILE_TEST
445 select GENERIC_PINCONF
446 select GENERIC_IRQ_CHIP
449 default ARCH_ROCKCHIP
451 This support pinctrl and GPIO driver for Rockchip SoCs.
453 config PINCTRL_SINGLE
454 tristate "One-register-per-pin type device tree based pinctrl driver"
457 select GENERIC_PINCTRL_GROUPS
458 select GENERIC_PINMUX_FUNCTIONS
459 select GENERIC_PINCONF
461 This selects the device tree based generic pinctrl driver.
468 select GPIOLIB_IRQCHIP
471 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
474 select GENERIC_PINCONF
475 select GPIOLIB_IRQCHIP
478 Driver for STMicroelectronics Multi-Function eXpander (STMFX)
480 This provides a GPIO interface supporting inputs and outputs,
481 and configuring push-pull, open-drain, and can also be used as
482 interrupt-controller.
484 config PINCTRL_SX150X
485 bool "Semtech SX150x I2C GPIO expander pinctrl driver"
489 select GENERIC_PINCONF
491 select GPIOLIB_IRQCHIP
494 Say Y here to provide support for Semtech SX150x-series I2C
495 GPIO expanders as pinctrl module.
496 Compatible models include:
497 - 8 bits: sx1508q, sx1502q
498 - 16 bits: sx1509q, sx1506q
502 depends on OF && ARC_PLAT_TB10X
505 config PINCTRL_TPS6594
506 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
507 depends on OF && MFD_TPS6594
513 select GENERIC_PINCONF
515 Say Y to select the pinmuxing and GPIOs driver for the TPS6594
518 This driver can also be built as a module
519 called tps6594-pinctrl.
522 bool "Pinctrl driver for Xilinx Zynq"
525 select GENERIC_PINCONF
527 This selects the pinctrl driver for Xilinx Zynq.
529 config PINCTRL_ZYNQMP
530 tristate "Pinctrl driver for Xilinx ZynqMP"
531 depends on ZYNQMP_FIRMWARE
533 select GENERIC_PINCONF
534 default ZYNQMP_FIRMWARE
536 This selects the pinctrl driver for Xilinx ZynqMP platform.
537 This driver will query the pin information from the firmware
538 and allow configuring the pins.
539 Configuration can include the mux function to select on those
540 pin(s)/group(s), and various pin configuration parameters
541 such as pull-up, slew rate, etc.
542 This driver can also be built as a module. If so, the module
543 will be called pinctrl-zynqmp.
545 config PINCTRL_MLXBF3
546 tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
547 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
550 select GPIOLIB_IRQCHIP
552 Say Y to select the pinctrl driver for BlueField-3 SoCs.
553 This pin controller allows selecting the mux function for
554 each pin. This driver can also be built as a module called
557 source "drivers/pinctrl/actions/Kconfig"
558 source "drivers/pinctrl/aspeed/Kconfig"
559 source "drivers/pinctrl/bcm/Kconfig"
560 source "drivers/pinctrl/berlin/Kconfig"
561 source "drivers/pinctrl/cirrus/Kconfig"
562 source "drivers/pinctrl/freescale/Kconfig"
563 source "drivers/pinctrl/intel/Kconfig"
564 source "drivers/pinctrl/mediatek/Kconfig"
565 source "drivers/pinctrl/meson/Kconfig"
566 source "drivers/pinctrl/mvebu/Kconfig"
567 source "drivers/pinctrl/nomadik/Kconfig"
568 source "drivers/pinctrl/nuvoton/Kconfig"
569 source "drivers/pinctrl/nxp/Kconfig"
570 source "drivers/pinctrl/pxa/Kconfig"
571 source "drivers/pinctrl/qcom/Kconfig"
572 source "drivers/pinctrl/realtek/Kconfig"
573 source "drivers/pinctrl/renesas/Kconfig"
574 source "drivers/pinctrl/samsung/Kconfig"
575 source "drivers/pinctrl/spear/Kconfig"
576 source "drivers/pinctrl/sprd/Kconfig"
577 source "drivers/pinctrl/starfive/Kconfig"
578 source "drivers/pinctrl/stm32/Kconfig"
579 source "drivers/pinctrl/sunplus/Kconfig"
580 source "drivers/pinctrl/sunxi/Kconfig"
581 source "drivers/pinctrl/tegra/Kconfig"
582 source "drivers/pinctrl/ti/Kconfig"
583 source "drivers/pinctrl/uniphier/Kconfig"
584 source "drivers/pinctrl/visconti/Kconfig"
585 source "drivers/pinctrl/vt8500/Kconfig"