Merge tag '6.9-rc5-cifs-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6
[sfrench/cifs-2.6.git] / drivers / pinctrl / Kconfig
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # PINCTRL infrastructure and drivers
4 #
5
6 menuconfig PINCTRL
7         bool "Pin controllers"
8
9 if PINCTRL
10
11 config GENERIC_PINCTRL_GROUPS
12         bool
13
14 config PINMUX
15         bool "Support pin multiplexing controllers" if COMPILE_TEST
16
17 config GENERIC_PINMUX_FUNCTIONS
18         bool
19         select PINMUX
20
21 config PINCONF
22         bool "Support pin configuration controllers" if COMPILE_TEST
23
24 config GENERIC_PINCONF
25         bool
26         select PINCONF
27
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.
33
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.
48
49           Requires ACPI/FDT device enumeration code to set up a platform
50           device.
51
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.
64
65           This driver can also be built as a module. If so, the module
66           will be called pinctrl-apple-gpio.
67
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
78
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.
89
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
101
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.
115
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.
129
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.
145
146           Say yes to enable pinctrl and GPIO support for the AW9523(B).
147
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.
155
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.
169
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.
178
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.
188
189           Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
190
191 config PINCTRL_DIGICOLOR
192         bool
193         depends on ARCH_DIGICOLOR || COMPILE_TEST
194         select PINMUX
195         select GENERIC_PINCONF
196
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
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
216 config 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
224 config 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
236 config PINCTRL_K210
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
241         select GPIOLIB
242         select OF_GPIO
243         select REGMAP_MMIO
244         default SOC_CANAAN
245         help
246           Add support for the Canaan Kendryte K210 RISC-V SOC Field
247           Programmable IO Array (FPIOA) controller.
248
249 config 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
268 config PINCTRL_LANTIQ
269         bool
270         depends on LANTIQ
271         select PINMUX
272         select PINCONF
273
274 config PINCTRL_FALCON
275         bool
276         depends on SOC_FALCON
277         depends on PINCTRL_LANTIQ
278
279 config 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
290 config PINCTRL_XWAY
291         bool
292         depends on SOC_TYPE_XWAY
293         depends on PINCTRL_LANTIQ
294
295 config 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
304 config 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
315 config PINCTRL_MCP23S08_I2C
316         tristate
317         select REGMAP_I2C
318
319 config PINCTRL_MCP23S08_SPI
320         tristate
321         select REGMAP_SPI
322
323 config 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
337 config 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
359 config 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
376 config 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
387 config 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
402 config 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
415 config PINCTRL_PIC32MZDA
416         def_bool y if PIC32MZDA
417         select PINCTRL_PIC32
418
419 config 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
430 config 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
439 config 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
453 config PINCTRL_SINGLE
454         tristate "One-register-per-pin type device tree based pinctrl driver"
455         depends on OF
456         depends on HAS_IOMEM
457         select GENERIC_PINCTRL_GROUPS
458         select GENERIC_PINMUX_FUNCTIONS
459         select GENERIC_PINCONF
460         help
461           This selects the device tree based generic pinctrl driver.
462
463 config PINCTRL_ST
464         bool
465         depends on OF
466         select PINMUX
467         select PINCONF
468         select GPIOLIB_IRQCHIP
469
470 config PINCTRL_STMFX
471         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
472         depends on I2C
473         depends on OF_GPIO
474         select GENERIC_PINCONF
475         select GPIOLIB_IRQCHIP
476         select MFD_STMFX
477         help
478           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
479           GPIO expander.
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.
483
484 config PINCTRL_SX150X
485         bool "Semtech SX150x I2C GPIO expander pinctrl driver"
486         depends on I2C=y
487         select PINMUX
488         select PINCONF
489         select GENERIC_PINCONF
490         select GPIOLIB
491         select GPIOLIB_IRQCHIP
492         select REGMAP
493         help
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
499
500 config PINCTRL_TB10X
501         bool
502         depends on OF && ARC_PLAT_TB10X
503         select GPIOLIB
504
505 config PINCTRL_TPS6594
506         tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
507         depends on OF && MFD_TPS6594
508         default MFD_TPS6594
509         select PINMUX
510         select GPIOLIB
511         select REGMAP
512         select GPIO_REGMAP
513         select GENERIC_PINCONF
514         help
515           Say Y to select the pinmuxing and GPIOs driver for the TPS6594
516           PMICs chip family.
517
518           This driver can also be built as a module
519           called tps6594-pinctrl.
520
521 config PINCTRL_ZYNQ
522         bool "Pinctrl driver for Xilinx Zynq"
523         depends on ARCH_ZYNQ
524         select PINMUX
525         select GENERIC_PINCONF
526         help
527           This selects the pinctrl driver for Xilinx Zynq.
528
529 config PINCTRL_ZYNQMP
530         tristate "Pinctrl driver for Xilinx ZynqMP"
531         depends on ZYNQMP_FIRMWARE
532         select PINMUX
533         select GENERIC_PINCONF
534         default ZYNQMP_FIRMWARE
535         help
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.
544
545 config PINCTRL_MLXBF3
546         tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
547         depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
548         select PINMUX
549         select GPIOLIB
550         select GPIOLIB_IRQCHIP
551         help
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
555           pinctrl-mlxbf3.
556
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"
586
587 endif