Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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_AMD
35 bool "AMD GPIO pin control"
36 depends on HAS_IOMEM
37 depends on ACPI || COMPILE_TEST
38 select GPIOLIB
39 select GPIOLIB_IRQCHIP
40 select PINMUX
41 select PINCONF
42 select GENERIC_PINCONF
43 help
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
47 for GPIO use.
48
49 Requires ACPI/FDT device enumeration code to set up a platform
50 device.
51
52config PINCTRL_APPLE_GPIO
53 tristate "Apple SoC GPIO pin controller driver"
54 depends on ARCH_APPLE
55 select PINMUX
56 select GPIOLIB
57 select GPIOLIB_IRQCHIP
58 select GENERIC_PINCTRL_GROUPS
59 select GENERIC_PINMUX_FUNCTIONS
60 select OF_GPIO
61 help
62 This is the driver for the GPIO controller found on Apple ARM SoCs,
63 including M1.
64
65 This driver can also be built as a module. If so, the module
66 will be called pinctrl-apple-gpio.
67
68config PINCTRL_ARTPEC6
69 bool "Axis ARTPEC-6 pin controller driver"
70 depends on MACH_ARTPEC6
71 select PINMUX
72 select GENERIC_PINCONF
73 help
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
78
79config PINCTRL_AS3722
80 tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
81 depends on MFD_AS3722 && GPIOLIB
82 select PINMUX
83 select GENERIC_PINCONF
84 help
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.
89
90config PINCTRL_AT91
91 bool "AT91 pinctrl driver"
92 depends on OF
93 depends on ARCH_AT91
94 select PINMUX
95 select PINCONF
96 select GPIOLIB
97 select OF_GPIO
98 select GPIOLIB_IRQCHIP
99 help
100 Say Y here to enable the at91 pinctrl driver
101
102config PINCTRL_AT91PIO4
103 bool "AT91 PIO4 pinctrl driver"
104 depends on OF
105 depends on HAS_IOMEM
106 depends on ARCH_AT91 || COMPILE_TEST
107 select PINMUX
108 select GENERIC_PINCONF
109 select GPIOLIB
110 select GPIOLIB_IRQCHIP
111 select OF_GPIO
112 help
113 Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
114 controller available on sama5d2 SoC.
115
116config PINCTRL_AXP209
117 tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
118 depends on MFD_AXP20X
119 depends on OF
120 select PINMUX
121 select GENERIC_PINCONF
122 select GPIOLIB
123 help
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
127 selected.
128 Say Y to enable pinctrl and GPIO support for the AXP209 PMIC.
129
130config PINCTRL_AW9523
131 tristate "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver"
132 depends on OF && I2C
133 select PINMUX
134 select PINCONF
135 select GENERIC_PINCONF
136 select GPIOLIB
137 select GPIOLIB_IRQCHIP
138 select REGMAP
139 select REGMAP_I2C
140 help
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.
145
146 Say yes to enable pinctrl and GPIO support for the AW9523(B).
147
148config PINCTRL_BM1880
149 bool "Bitmain BM1880 Pinctrl driver"
150 depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
151 default ARCH_BITMAIN
152 select PINMUX
153 help
154 Pinctrl driver for Bitmain BM1880 SoC.
155
156config PINCTRL_CY8C95X0
157 tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver"
158 depends on I2C
159 select GPIOLIB
160 select GPIOLIB_IRQCHIP
161 select PINMUX
162 select PINCONF
163 select GENERIC_PINCONF
164 select REGMAP_I2C
165 help
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.
169
170config 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)
173 select PINCONF
174 select GENERIC_PINCONF
175 help
176 Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
177 pull-up and pull-down pin groups.
178
179config PINCTRL_DA9062
180 tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
181 depends on MFD_DA9062
182 select GPIOLIB
183 help
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.
188
189 Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
190
191config PINCTRL_DIGICOLOR
192 bool
193 depends on ARCH_DIGICOLOR || COMPILE_TEST
194 select PINMUX
195 select GENERIC_PINCONF
196
197config PINCTRL_EP93XX
198 bool
199 depends on ARCH_EP93XX || COMPILE_TEST
200 select PINMUX
201 select GENERIC_PINCONF
202 select MFD_SYSCON
203
204config 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
208 select PINMUX
209 select PINCONF
210 select GPIOLIB
211 select GPIO_GENERIC
212 select GPIOLIB_IRQCHIP
213 select GENERIC_PINCONF
214 select GENERIC_PINCTRL_GROUPS
215 select GENERIC_PINMUX_FUNCTIONS
216 help
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.
222
223config PINCTRL_EYEQ5
224 bool "Mobileye EyeQ5 pinctrl driver"
225 depends on OF
226 depends on MACH_EYEQ5 || COMPILE_TEST
227 select PINMUX
228 select GENERIC_PINCONF
229 select AUXILIARY_BUS
230 default MACH_EYEQ5
231 help
232 Pin controller driver for the Mobileye EyeQ5 platform. It does both
233 pin config & pin muxing. It does not handle GPIO.
234
235 Pin muxing supports two functions for each pin: first is GPIO, second
236 is pin-dependent. Pin config is about bias & drive strength.
237
238config PINCTRL_GEMINI
239 bool
240 depends on ARCH_GEMINI
241 default ARCH_GEMINI
242 select PINMUX
243 select GENERIC_PINCONF
244 select MFD_SYSCON
245
246config PINCTRL_INGENIC
247 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
248 default MACH_INGENIC
249 depends on OF
250 depends on MIPS || COMPILE_TEST
251 select GENERIC_PINCONF
252 select GENERIC_PINCTRL_GROUPS
253 select GENERIC_PINMUX_FUNCTIONS
254 select GPIOLIB
255 select GPIOLIB_IRQCHIP
256 select REGMAP_MMIO
257
258config PINCTRL_K210
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
263 select GPIOLIB
264 select OF_GPIO
265 select REGMAP_MMIO
266 default SOC_CANAAN_K210
267 help
268 Add support for the Canaan Kendryte K210 RISC-V SOC Field
269 Programmable IO Array (FPIOA) controller.
270
271config PINCTRL_KEEMBAY
272 tristate "Pinctrl driver for Intel Keem Bay SoC"
273 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
274 depends on HAS_IOMEM
275 select PINMUX
276 select PINCONF
277 select GENERIC_PINCONF
278 select GENERIC_PINCTRL_GROUPS
279 select GENERIC_PINMUX_FUNCTIONS
280 select GPIOLIB
281 select GPIOLIB_IRQCHIP
282 select GPIO_GENERIC
283 help
284 This selects pin control driver for the Intel Keem Bay SoC.
285 It provides pin config functions such as pull-up, pull-down,
286 interrupt, drive strength, sec lock, Schmitt trigger, slew
287 rate control and direction control. This module will be
288 called as pinctrl-keembay.
289
290config PINCTRL_LANTIQ
291 bool
292 depends on LANTIQ
293 select PINMUX
294 select PINCONF
295
296config PINCTRL_FALCON
297 bool
298 depends on SOC_FALCON
299 depends on PINCTRL_LANTIQ
300
301config PINCTRL_LOONGSON2
302 tristate "Pinctrl driver for the Loongson-2 SoC"
303 depends on OF && (LOONGARCH || COMPILE_TEST)
304 select PINMUX
305 select GENERIC_PINCONF
306 help
307 This selects pin control driver for the Loongson-2 SoC. It
308 provides pin config functions multiplexing. GPIO pin pull-up,
309 pull-down functions are not supported. Say yes to enable
310 pinctrl for Loongson-2 SoC.
311
312config PINCTRL_XWAY
313 bool
314 depends on SOC_TYPE_XWAY
315 depends on PINCTRL_LANTIQ
316
317config PINCTRL_LPC18XX
318 bool "NXP LPC18XX/43XX SCU pinctrl driver"
319 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
320 default ARCH_LPC18XX
321 select PINMUX
322 select GENERIC_PINCONF
323 help
324 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
325
326config PINCTRL_MAX77620
327 tristate "MAX77620/MAX20024 Pincontrol support"
328 depends on MFD_MAX77620 && OF
329 select PINMUX
330 select GENERIC_PINCONF
331 help
332 Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
333 This PMIC has 8 GPIO pins that work as GPIO as well as special
334 function in alternate mode. This driver also configure push-pull,
335 open drain, FPS slots etc.
336
337config PINCTRL_MCP23S08_I2C
338 tristate
339 select REGMAP_I2C
340
341config PINCTRL_MCP23S08_SPI
342 tristate
343 select REGMAP_SPI
344
345config PINCTRL_MCP23S08
346 tristate "Microchip MCP23xxx I/O expander"
347 depends on SPI_MASTER || I2C
348 select GPIOLIB
349 select GPIOLIB_IRQCHIP
350 select GENERIC_PINCONF
351 select PINCTRL_MCP23S08_I2C if I2C
352 select PINCTRL_MCP23S08_SPI if SPI_MASTER
353 help
354 SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
355 MCP23008 / MCP23017 / MCP23018 I/O expanders.
356 This provides a GPIO interface supporting inputs and outputs and a
357 corresponding interrupt-controller.
358
359config PINCTRL_MICROCHIP_SGPIO
360 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
361 depends on OF
362 depends on HAS_IOMEM
363 select GPIOLIB
364 select GPIOLIB_IRQCHIP
365 select GENERIC_PINCONF
366 select GENERIC_PINCTRL_GROUPS
367 select GENERIC_PINMUX_FUNCTIONS
368 select OF_GPIO
369 help
370 Support for the serial GPIO interface used on Microsemi and
371 Microchip SoCs. By using a serial interface, the SIO
372 controller significantly extends the number of available
373 GPIOs with a minimum number of additional pins on the
374 device. The primary purpose of the SIO controller is to
375 connect control signals from SFP modules and to act as an
376 LED controller.
377
378 If compiled as a module, the module name will be
379 pinctrl-microchip-sgpio.
380
381config PINCTRL_OCELOT
382 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
383 depends on OF
384 depends on HAS_IOMEM
385 select GPIOLIB
386 select GPIOLIB_IRQCHIP
387 select GENERIC_PINCONF
388 select GENERIC_PINCTRL_GROUPS
389 select GENERIC_PINMUX_FUNCTIONS
390 select OF_GPIO
391 select REGMAP_MMIO
392 help
393 Support for the internal GPIO interfaces on Microsemi Ocelot and
394 Jaguar2 SoCs.
395
396 If conpiled as a module, the module name will be pinctrl-ocelot.
397
398config PINCTRL_PALMAS
399 tristate "Pinctrl driver for the PALMAS Series MFD devices"
400 depends on OF && MFD_PALMAS
401 select PINMUX
402 select GENERIC_PINCONF
403 help
404 Palmas device supports the configuration of pins for different
405 functionality. This driver supports the pinmux, push-pull and
406 open drain configuration for the Palmas series devices like
407 TPS65913, TPS80036 etc.
408
409config PINCTRL_PEF2256
410 tristate "Lantiq PEF2256 (FALC56) pin controller driver"
411 depends on OF && FRAMER_PEF2256
412 select PINMUX
413 select PINCONF
414 select GENERIC_PINCONF
415 help
416 This option enables the pin controller support for the Lantiq PEF2256
417 framer, also known as FALC56.
418
419 If unsure, say N.
420
421 To compile this driver as a module, choose M here: the
422 module will be called pinctrl-pef2256.
423
424config PINCTRL_PIC32
425 bool "Microchip PIC32 pin controller driver"
426 depends on OF
427 depends on MACH_PIC32
428 select PINMUX
429 select GENERIC_PINCONF
430 select GPIOLIB_IRQCHIP
431 select OF_GPIO
432 help
433 This is the pin controller and gpio driver for Microchip PIC32
434 microcontrollers. This option is selected automatically when specific
435 machine and arch are selected to build.
436
437config PINCTRL_PIC32MZDA
438 def_bool y if PIC32MZDA
439 select PINCTRL_PIC32
440
441config PINCTRL_PISTACHIO
442 bool "IMG Pistachio SoC pinctrl driver"
443 depends on OF && (MIPS || COMPILE_TEST)
444 depends on GPIOLIB
445 select PINMUX
446 select GENERIC_PINCONF
447 select GPIOLIB_IRQCHIP
448 select OF_GPIO
449 help
450 This support pinctrl and GPIO driver for IMG Pistachio SoC.
451
452config PINCTRL_RK805
453 tristate "Pinctrl and GPIO driver for RK805 PMIC"
454 depends on MFD_RK8XX
455 select GPIOLIB
456 select PINMUX
457 select GENERIC_PINCONF
458 help
459 This selects the pinctrl driver for RK805.
460
461config PINCTRL_ROCKCHIP
462 tristate "Rockchip gpio and pinctrl driver"
463 depends on ARCH_ROCKCHIP || COMPILE_TEST
464 depends on OF
465 select GPIOLIB
466 select PINMUX
467 select GENERIC_PINCONF
468 select GENERIC_IRQ_CHIP
469 select MFD_SYSCON
470 select OF_GPIO
471 default ARCH_ROCKCHIP
472 help
473 This support pinctrl and GPIO driver for Rockchip SoCs.
474
475config PINCTRL_SCMI
476 tristate "Pinctrl driver using SCMI protocol interface"
477 depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
478 select PINMUX
479 select GENERIC_PINCONF
480 help
481 This driver provides support for pinctrl which is controlled
482 by firmware that implements the SCMI interface.
483 It uses SCMI Message Protocol to interact with the
484 firmware providing all the pinctrl controls.
485
486config PINCTRL_SINGLE
487 tristate "One-register-per-pin type device tree based pinctrl driver"
488 depends on OF
489 depends on HAS_IOMEM
490 select GENERIC_PINCTRL_GROUPS
491 select GENERIC_PINMUX_FUNCTIONS
492 select GENERIC_PINCONF
493 help
494 This selects the device tree based generic pinctrl driver.
495
496config PINCTRL_ST
497 bool
498 depends on OF
499 select PINMUX
500 select PINCONF
501 select GPIOLIB_IRQCHIP
502
503config PINCTRL_STMFX
504 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
505 depends on I2C
506 depends on OF_GPIO
507 select GENERIC_PINCONF
508 select GPIOLIB_IRQCHIP
509 select MFD_STMFX
510 help
511 Driver for STMicroelectronics Multi-Function eXpander (STMFX)
512 GPIO expander.
513 This provides a GPIO interface supporting inputs and outputs,
514 and configuring push-pull, open-drain, and can also be used as
515 interrupt-controller.
516
517config PINCTRL_SX150X
518 bool "Semtech SX150x I2C GPIO expander pinctrl driver"
519 depends on I2C=y
520 select PINMUX
521 select PINCONF
522 select GENERIC_PINCONF
523 select GPIOLIB
524 select GPIOLIB_IRQCHIP
525 select REGMAP
526 help
527 Say Y here to provide support for Semtech SX150x-series I2C
528 GPIO expanders as pinctrl module.
529 Compatible models include:
530 - 8 bits: sx1508q, sx1502q
531 - 16 bits: sx1509q, sx1506q
532
533config PINCTRL_TB10X
534 bool
535 depends on OF && ARC_PLAT_TB10X
536 select GPIOLIB
537
538config PINCTRL_TPS6594
539 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
540 depends on OF && MFD_TPS6594
541 default MFD_TPS6594
542 select PINMUX
543 select GPIOLIB
544 select REGMAP
545 select GPIO_REGMAP
546 select GENERIC_PINCONF
547 help
548 Say Y to select the pinmuxing and GPIOs driver for the TPS6594
549 PMICs chip family.
550
551 This driver can also be built as a module
552 called tps6594-pinctrl.
553
554config PINCTRL_ZYNQ
555 bool "Pinctrl driver for Xilinx Zynq"
556 depends on ARCH_ZYNQ
557 select PINMUX
558 select GENERIC_PINCONF
559 help
560 This selects the pinctrl driver for Xilinx Zynq.
561
562config PINCTRL_ZYNQMP
563 tristate "Pinctrl driver for Xilinx ZynqMP"
564 depends on ZYNQMP_FIRMWARE
565 select PINMUX
566 select GENERIC_PINCONF
567 default ZYNQMP_FIRMWARE
568 help
569 This selects the pinctrl driver for Xilinx ZynqMP platform.
570 This driver will query the pin information from the firmware
571 and allow configuring the pins.
572 Configuration can include the mux function to select on those
573 pin(s)/group(s), and various pin configuration parameters
574 such as pull-up, slew rate, etc.
575 This driver can also be built as a module. If so, the module
576 will be called pinctrl-zynqmp.
577
578config PINCTRL_MLXBF3
579 tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
580 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
581 select PINMUX
582 select GPIOLIB
583 select GPIOLIB_IRQCHIP
584 help
585 Say Y to select the pinctrl driver for BlueField-3 SoCs.
586 This pin controller allows selecting the mux function for
587 each pin. This driver can also be built as a module called
588 pinctrl-mlxbf3.
589
590source "drivers/pinctrl/actions/Kconfig"
591source "drivers/pinctrl/aspeed/Kconfig"
592source "drivers/pinctrl/bcm/Kconfig"
593source "drivers/pinctrl/berlin/Kconfig"
594source "drivers/pinctrl/cirrus/Kconfig"
595source "drivers/pinctrl/freescale/Kconfig"
596source "drivers/pinctrl/intel/Kconfig"
597source "drivers/pinctrl/mediatek/Kconfig"
598source "drivers/pinctrl/meson/Kconfig"
599source "drivers/pinctrl/mvebu/Kconfig"
600source "drivers/pinctrl/nomadik/Kconfig"
601source "drivers/pinctrl/nuvoton/Kconfig"
602source "drivers/pinctrl/nxp/Kconfig"
603source "drivers/pinctrl/pxa/Kconfig"
604source "drivers/pinctrl/qcom/Kconfig"
605source "drivers/pinctrl/realtek/Kconfig"
606source "drivers/pinctrl/renesas/Kconfig"
607source "drivers/pinctrl/samsung/Kconfig"
608source "drivers/pinctrl/sophgo/Kconfig"
609source "drivers/pinctrl/spear/Kconfig"
610source "drivers/pinctrl/sprd/Kconfig"
611source "drivers/pinctrl/starfive/Kconfig"
612source "drivers/pinctrl/stm32/Kconfig"
613source "drivers/pinctrl/sunplus/Kconfig"
614source "drivers/pinctrl/sunxi/Kconfig"
615source "drivers/pinctrl/tegra/Kconfig"
616source "drivers/pinctrl/ti/Kconfig"
617source "drivers/pinctrl/uniphier/Kconfig"
618source "drivers/pinctrl/visconti/Kconfig"
619source "drivers/pinctrl/vt8500/Kconfig"
620
621endif