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_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
201 select PINMUX
202 select PINCONF
203 select GPIOLIB
204 select GPIO_GENERIC
205 select GPIOLIB_IRQCHIP
206 select GENERIC_PINCONF
207 select GENERIC_PINCTRL_GROUPS
208 select GENERIC_PINMUX_FUNCTIONS
209 help
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.
215
216config PINCTRL_GEMINI
217 bool
218 depends on ARCH_GEMINI
219 default ARCH_GEMINI
220 select PINMUX
221 select GENERIC_PINCONF
222 select MFD_SYSCON
223
224config PINCTRL_INGENIC
225 bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
226 default MACH_INGENIC
227 depends on OF
228 depends on MIPS || COMPILE_TEST
229 select GENERIC_PINCONF
230 select GENERIC_PINCTRL_GROUPS
231 select GENERIC_PINMUX_FUNCTIONS
232 select GPIOLIB
233 select GPIOLIB_IRQCHIP
234 select REGMAP_MMIO
235
236config PINCTRL_K210
237 bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
238 depends on RISCV && SOC_CANAAN_K210 && OF
239 select GENERIC_PINMUX_FUNCTIONS
240 select GENERIC_PINCONF
241 select GPIOLIB
242 select OF_GPIO
243 select REGMAP_MMIO
244 default SOC_CANAAN_K210
245 help
246 Add support for the Canaan Kendryte K210 RISC-V SOC Field
247 Programmable IO Array (FPIOA) controller.
248
249config PINCTRL_KEEMBAY
250 tristate "Pinctrl driver for Intel Keem Bay SoC"
251 depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
252 depends on HAS_IOMEM
253 select PINMUX
254 select PINCONF
255 select GENERIC_PINCONF
256 select GENERIC_PINCTRL_GROUPS
257 select GENERIC_PINMUX_FUNCTIONS
258 select GPIOLIB
259 select GPIOLIB_IRQCHIP
260 select GPIO_GENERIC
261 help
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.
267
268config PINCTRL_LANTIQ
269 bool
270 depends on LANTIQ
271 select PINMUX
272 select PINCONF
273
274config PINCTRL_FALCON
275 bool
276 depends on SOC_FALCON
277 depends on PINCTRL_LANTIQ
278
279config PINCTRL_LOONGSON2
280 tristate "Pinctrl driver for the Loongson-2 SoC"
281 depends on OF && (LOONGARCH || COMPILE_TEST)
282 select PINMUX
283 select GENERIC_PINCONF
284 help
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.
289
290config PINCTRL_XWAY
291 bool
292 depends on SOC_TYPE_XWAY
293 depends on PINCTRL_LANTIQ
294
295config PINCTRL_LPC18XX
296 bool "NXP LPC18XX/43XX SCU pinctrl driver"
297 depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
298 default ARCH_LPC18XX
299 select PINMUX
300 select GENERIC_PINCONF
301 help
302 Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
303
304config PINCTRL_MAX77620
305 tristate "MAX77620/MAX20024 Pincontrol support"
306 depends on MFD_MAX77620 && OF
307 select PINMUX
308 select GENERIC_PINCONF
309 help
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.
314
315config PINCTRL_MCP23S08_I2C
316 tristate
317 select REGMAP_I2C
318
319config PINCTRL_MCP23S08_SPI
320 tristate
321 select REGMAP_SPI
322
323config PINCTRL_MCP23S08
324 tristate "Microchip MCP23xxx I/O expander"
325 depends on SPI_MASTER || I2C
326 select GPIOLIB
327 select GPIOLIB_IRQCHIP
328 select GENERIC_PINCONF
329 select PINCTRL_MCP23S08_I2C if I2C
330 select PINCTRL_MCP23S08_SPI if SPI_MASTER
331 help
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.
336
337config PINCTRL_MICROCHIP_SGPIO
338 tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
339 depends on OF
340 depends on HAS_IOMEM
341 select GPIOLIB
342 select GPIOLIB_IRQCHIP
343 select GENERIC_PINCONF
344 select GENERIC_PINCTRL_GROUPS
345 select GENERIC_PINMUX_FUNCTIONS
346 select OF_GPIO
347 help
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
354 LED controller.
355
356 If compiled as a module, the module name will be
357 pinctrl-microchip-sgpio.
358
359config PINCTRL_OCELOT
360 tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
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 select REGMAP_MMIO
370 help
371 Support for the internal GPIO interfaces on Microsemi Ocelot and
372 Jaguar2 SoCs.
373
374 If conpiled as a module, the module name will be pinctrl-ocelot.
375
376config PINCTRL_PALMAS
377 tristate "Pinctrl driver for the PALMAS Series MFD devices"
378 depends on OF && MFD_PALMAS
379 select PINMUX
380 select GENERIC_PINCONF
381 help
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.
386
387config PINCTRL_PEF2256
388 tristate "Lantiq PEF2256 (FALC56) pin controller driver"
389 depends on OF && FRAMER_PEF2256
390 select PINMUX
391 select PINCONF
392 select GENERIC_PINCONF
393 help
394 This option enables the pin controller support for the Lantiq PEF2256
395 framer, also known as FALC56.
396
397 If unsure, say N.
398
399 To compile this driver as a module, choose M here: the
400 module will be called pinctrl-pef2256.
401
402config PINCTRL_PIC32
403 bool "Microchip PIC32 pin controller driver"
404 depends on OF
405 depends on MACH_PIC32
406 select PINMUX
407 select GENERIC_PINCONF
408 select GPIOLIB_IRQCHIP
409 select OF_GPIO
410 help
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.
414
415config PINCTRL_PIC32MZDA
416 def_bool y if PIC32MZDA
417 select PINCTRL_PIC32
418
419config PINCTRL_PISTACHIO
420 bool "IMG Pistachio SoC pinctrl driver"
421 depends on OF && (MIPS || COMPILE_TEST)
422 depends on GPIOLIB
423 select PINMUX
424 select GENERIC_PINCONF
425 select GPIOLIB_IRQCHIP
426 select OF_GPIO
427 help
428 This support pinctrl and GPIO driver for IMG Pistachio SoC.
429
430config PINCTRL_RK805
431 tristate "Pinctrl and GPIO driver for RK805 PMIC"
432 depends on MFD_RK8XX
433 select GPIOLIB
434 select PINMUX
435 select GENERIC_PINCONF
436 help
437 This selects the pinctrl driver for RK805.
438
439config PINCTRL_ROCKCHIP
440 tristate "Rockchip gpio and pinctrl driver"
441 depends on ARCH_ROCKCHIP || COMPILE_TEST
442 depends on OF
443 select GPIOLIB
444 select PINMUX
445 select GENERIC_PINCONF
446 select GENERIC_IRQ_CHIP
447 select MFD_SYSCON
448 select OF_GPIO
449 default ARCH_ROCKCHIP
450 help
451 This support pinctrl and GPIO driver for Rockchip SoCs.
452
453config PINCTRL_SCMI
454 tristate "Pinctrl driver using SCMI protocol interface"
455 depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
456 select PINMUX
457 select GENERIC_PINCONF
458 help
459 This driver provides support for pinctrl which is controlled
460 by firmware that implements the SCMI interface.
461 It uses SCMI Message Protocol to interact with the
462 firmware providing all the pinctrl controls.
463
464config PINCTRL_SINGLE
465 tristate "One-register-per-pin type device tree based pinctrl driver"
466 depends on OF
467 depends on HAS_IOMEM
468 select GENERIC_PINCTRL_GROUPS
469 select GENERIC_PINMUX_FUNCTIONS
470 select GENERIC_PINCONF
471 help
472 This selects the device tree based generic pinctrl driver.
473
474config PINCTRL_ST
475 bool
476 depends on OF
477 select PINMUX
478 select PINCONF
479 select GPIOLIB_IRQCHIP
480
481config PINCTRL_STMFX
482 tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
483 depends on I2C
484 depends on OF_GPIO
485 select GENERIC_PINCONF
486 select GPIOLIB_IRQCHIP
487 select MFD_STMFX
488 help
489 Driver for STMicroelectronics Multi-Function eXpander (STMFX)
490 GPIO expander.
491 This provides a GPIO interface supporting inputs and outputs,
492 and configuring push-pull, open-drain, and can also be used as
493 interrupt-controller.
494
495config PINCTRL_SX150X
496 bool "Semtech SX150x I2C GPIO expander pinctrl driver"
497 depends on I2C=y
498 select PINMUX
499 select PINCONF
500 select GENERIC_PINCONF
501 select GPIOLIB
502 select GPIOLIB_IRQCHIP
503 select REGMAP
504 help
505 Say Y here to provide support for Semtech SX150x-series I2C
506 GPIO expanders as pinctrl module.
507 Compatible models include:
508 - 8 bits: sx1508q, sx1502q
509 - 16 bits: sx1509q, sx1506q
510
511config PINCTRL_TB10X
512 bool
513 depends on OF && ARC_PLAT_TB10X
514 select GPIOLIB
515
516config PINCTRL_TPS6594
517 tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
518 depends on OF && MFD_TPS6594
519 default MFD_TPS6594
520 select PINMUX
521 select GPIOLIB
522 select REGMAP
523 select GPIO_REGMAP
524 select GENERIC_PINCONF
525 help
526 Say Y to select the pinmuxing and GPIOs driver for the TPS6594
527 PMICs chip family.
528
529 This driver can also be built as a module
530 called tps6594-pinctrl.
531
532config PINCTRL_ZYNQ
533 bool "Pinctrl driver for Xilinx Zynq"
534 depends on ARCH_ZYNQ
535 select PINMUX
536 select GENERIC_PINCONF
537 help
538 This selects the pinctrl driver for Xilinx Zynq.
539
540config PINCTRL_ZYNQMP
541 tristate "Pinctrl driver for Xilinx ZynqMP"
542 depends on ZYNQMP_FIRMWARE
543 select PINMUX
544 select GENERIC_PINCONF
545 default ZYNQMP_FIRMWARE
546 help
547 This selects the pinctrl driver for Xilinx ZynqMP platform.
548 This driver will query the pin information from the firmware
549 and allow configuring the pins.
550 Configuration can include the mux function to select on those
551 pin(s)/group(s), and various pin configuration parameters
552 such as pull-up, slew rate, etc.
553 This driver can also be built as a module. If so, the module
554 will be called pinctrl-zynqmp.
555
556config PINCTRL_MLXBF3
557 tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
558 depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
559 select PINMUX
560 select GPIOLIB
561 select GPIOLIB_IRQCHIP
562 help
563 Say Y to select the pinctrl driver for BlueField-3 SoCs.
564 This pin controller allows selecting the mux function for
565 each pin. This driver can also be built as a module called
566 pinctrl-mlxbf3.
567
568source "drivers/pinctrl/actions/Kconfig"
569source "drivers/pinctrl/aspeed/Kconfig"
570source "drivers/pinctrl/bcm/Kconfig"
571source "drivers/pinctrl/berlin/Kconfig"
572source "drivers/pinctrl/cirrus/Kconfig"
573source "drivers/pinctrl/freescale/Kconfig"
574source "drivers/pinctrl/intel/Kconfig"
575source "drivers/pinctrl/mediatek/Kconfig"
576source "drivers/pinctrl/meson/Kconfig"
577source "drivers/pinctrl/mvebu/Kconfig"
578source "drivers/pinctrl/nomadik/Kconfig"
579source "drivers/pinctrl/nuvoton/Kconfig"
580source "drivers/pinctrl/nxp/Kconfig"
581source "drivers/pinctrl/pxa/Kconfig"
582source "drivers/pinctrl/qcom/Kconfig"
583source "drivers/pinctrl/realtek/Kconfig"
584source "drivers/pinctrl/renesas/Kconfig"
585source "drivers/pinctrl/samsung/Kconfig"
586source "drivers/pinctrl/spear/Kconfig"
587source "drivers/pinctrl/sprd/Kconfig"
588source "drivers/pinctrl/starfive/Kconfig"
589source "drivers/pinctrl/stm32/Kconfig"
590source "drivers/pinctrl/sunplus/Kconfig"
591source "drivers/pinctrl/sunxi/Kconfig"
592source "drivers/pinctrl/tegra/Kconfig"
593source "drivers/pinctrl/ti/Kconfig"
594source "drivers/pinctrl/uniphier/Kconfig"
595source "drivers/pinctrl/visconti/Kconfig"
596source "drivers/pinctrl/vt8500/Kconfig"
597
598endif