Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / drivers / pinctrl / Kconfig
blob95a8e2b9a614abcc3cf64d10aa7a14c7047441cb
1 # SPDX-License-Identifier: GPL-2.0-only
3 # PINCTRL infrastructure and drivers
6 menuconfig PINCTRL
7         bool "Pin controllers"
9 if PINCTRL
11 config GENERIC_PINCTRL_GROUPS
12         bool
14 config PINMUX
15         bool "Support pin multiplexing controllers" if COMPILE_TEST
17 config GENERIC_PINMUX_FUNCTIONS
18         bool
19         select PINMUX
21 config PINCONF
22         bool "Support pin configuration controllers" if COMPILE_TEST
24 config GENERIC_PINCONF
25         bool
26         select PINCONF
28 config 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.
34 config 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.
49           Requires ACPI/FDT device enumeration code to set up a platform
50           device.
52 config 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.
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
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
79 config 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.
90 config 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
102 config 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.
116 config 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.
130 config 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.
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)
151         default ARCH_BITMAIN
152         select PINMUX
153         help
154           Pinctrl driver for Bitmain BM1880 SoC.
156 config 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.
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)
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.
179 config 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.
189           Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
191 config PINCTRL_DIGICOLOR
192         bool
193         depends on ARCH_DIGICOLOR || COMPILE_TEST
194         select PINMUX
195         select GENERIC_PINCONF
197 config PINCTRL_EP93XX
198         bool
199         depends on ARCH_EP93XX || COMPILE_TEST
200         select PINMUX
201         select GENERIC_PINCONF
202         select MFD_SYSCON
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
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.
223 config 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.
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
239         bool
240         depends on ARCH_GEMINI
241         default ARCH_GEMINI
242         select PINMUX
243         select GENERIC_PINCONF
244         select MFD_SYSCON
246 config 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
258 config 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.
271 config PINCTRL_K230
272         bool "Pinctrl driver for the Canaan Kendryte K230 SoC"
273         depends on OF
274         depends on ARCH_CANAAN || COMPILE_TEST
275         select GENERIC_PINCTRL_GROUPS
276         select GENERIC_PINMUX_FUNCTIONS
277         select GENERIC_PINCONF
278         select REGMAP_MMIO
279         help
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)
285         depends on HAS_IOMEM
286         select PINMUX
287         select PINCONF
288         select GENERIC_PINCONF
289         select GENERIC_PINCTRL_GROUPS
290         select GENERIC_PINMUX_FUNCTIONS
291         select GPIOLIB
292         select GPIOLIB_IRQCHIP
293         select GPIO_GENERIC
294         help
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
302         bool
303         depends on LANTIQ
304         select PINMUX
305         select PINCONF
307 config PINCTRL_FALCON
308         bool
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)
315         select PINMUX
316         select GENERIC_PINCONF
317         help
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.
323 config PINCTRL_XWAY
324         bool
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)
331         default ARCH_LPC18XX
332         select PINMUX
333         select GENERIC_PINCONF
334         help
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
340         select PINMUX
341         select GENERIC_PINCONF
342         help
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
349         tristate
350         select REGMAP_I2C
352 config PINCTRL_MCP23S08_SPI
353         tristate
354         select REGMAP_SPI
356 config PINCTRL_MCP23S08
357         tristate "Microchip MCP23xxx I/O expander"
358         depends on SPI_MASTER || I2C
359         select GPIOLIB
360         select GPIOLIB_IRQCHIP
361         select GENERIC_PINCONF
362         select PINCTRL_MCP23S08_I2C if I2C
363         select PINCTRL_MCP23S08_SPI if SPI_MASTER
364         help
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"
372         depends on OF
373         depends on HAS_IOMEM
374         select GPIOLIB
375         select GPIOLIB_IRQCHIP
376         select GENERIC_PINCONF
377         select GENERIC_PINCTRL_GROUPS
378         select GENERIC_PINMUX_FUNCTIONS
379         select OF_GPIO
380         help
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
387           LED controller.
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"
394         depends on OF
395         depends on HAS_IOMEM
396         select GPIOLIB
397         select GPIOLIB_IRQCHIP
398         select GENERIC_PINCONF
399         select GENERIC_PINCTRL_GROUPS
400         select GENERIC_PINMUX_FUNCTIONS
401         select OF_GPIO
402         select REGMAP_MMIO
403         help
404           Support for the internal GPIO interfaces on Microsemi Ocelot and
405           Jaguar2 SoCs.
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
412         select PINMUX
413         select GENERIC_PINCONF
414         help
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
423         select PINMUX
424         select PINCONF
425         select GENERIC_PINCONF
426         help
427           This option enables the pin controller support for the Lantiq PEF2256
428           framer, also known as FALC56.
430           If unsure, say N.
432           To compile this driver as a module, choose M here: the
433           module will be called pinctrl-pef2256.
435 config PINCTRL_PIC32
436         bool "Microchip PIC32 pin controller driver"
437         depends on OF
438         depends on MACH_PIC32
439         select PINMUX
440         select GENERIC_PINCONF
441         select GPIOLIB_IRQCHIP
442         select OF_GPIO
443         help
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
450         select PINCTRL_PIC32
452 config PINCTRL_PISTACHIO
453         bool "IMG Pistachio SoC pinctrl driver"
454         depends on OF && (MIPS || COMPILE_TEST)
455         depends on GPIOLIB
456         select PINMUX
457         select GENERIC_PINCONF
458         select GPIOLIB_IRQCHIP
459         select OF_GPIO
460         help
461           This support pinctrl and GPIO driver for IMG Pistachio SoC.
463 config PINCTRL_RK805
464         tristate "Pinctrl and GPIO driver for RK805 PMIC"
465         depends on MFD_RK8XX
466         select GPIOLIB
467         select PINMUX
468         select GENERIC_PINCONF
469         help
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
475         depends on OF
476         select GPIOLIB
477         select PINMUX
478         select GENERIC_PINCONF
479         select GENERIC_IRQ_CHIP
480         select MFD_SYSCON
481         select OF_GPIO
482         default ARCH_ROCKCHIP
483         help
484           This support pinctrl and GPIO driver for Rockchip SoCs.
486 config PINCTRL_SCMI
487         tristate "Pinctrl driver using SCMI protocol interface"
488         depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
489         select PINMUX
490         select GENERIC_PINCONF
491         help
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"
499         depends on OF
500         depends on HAS_IOMEM
501         select GENERIC_PINCTRL_GROUPS
502         select GENERIC_PINMUX_FUNCTIONS
503         select GENERIC_PINCONF
504         help
505           This selects the device tree based generic pinctrl driver.
507 config PINCTRL_ST
508         bool
509         depends on OF
510         select PINMUX
511         select PINCONF
512         select GPIOLIB_IRQCHIP
514 config PINCTRL_STMFX
515         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
516         depends on I2C
517         depends on OF_GPIO
518         select GENERIC_PINCONF
519         select GPIOLIB_IRQCHIP
520         select MFD_STMFX
521         help
522           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
523           GPIO expander.
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"
530         depends on I2C=y
531         select PINMUX
532         select PINCONF
533         select GENERIC_PINCONF
534         select GPIOLIB
535         select GPIOLIB_IRQCHIP
536         select REGMAP
537         help
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
544 config PINCTRL_TB10X
545         bool
546         depends on OF && ARC_PLAT_TB10X
547         select GPIOLIB
549 config PINCTRL_TPS6594
550         tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
551         depends on OF && MFD_TPS6594
552         default MFD_TPS6594
553         select PINMUX
554         select GPIOLIB
555         select REGMAP
556         select GPIO_REGMAP
557         select GENERIC_PINCONF
558         help
559           Say Y to select the pinmuxing and GPIOs driver for the TPS6594
560           PMICs chip family.
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
568         depends on OF
569         select GENERIC_PINMUX_FUNCTIONS
570         select GENERIC_PINCONF
571         select PINMUX
572         help
573           This is the driver for the pin controller blocks on the
574           T-Head TH1520 SoC.
576           This driver is needed for RISC-V development boards like
577           the BeagleV Ahead and the LicheePi 4A.
579 config PINCTRL_ZYNQ
580         bool "Pinctrl driver for Xilinx Zynq"
581         depends on ARCH_ZYNQ
582         select PINMUX
583         select GENERIC_PINCONF
584         help
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
590         select PINMUX
591         select GENERIC_PINCONF
592         default ZYNQMP_FIRMWARE
593         help
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
606         select PINMUX
607         select GPIOLIB
608         select GPIOLIB_IRQCHIP
609         help
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
613           pinctrl-mlxbf3.
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"
647 endif