GNU Linux-libre 6.1.24-gnu
[releases.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_BM1880
131         bool "Bitmain BM1880 Pinctrl driver"
132         depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
133         default ARCH_BITMAIN
134         select PINMUX
135         help
136           Pinctrl driver for Bitmain BM1880 SoC.
137
138 config PINCTRL_CY8C95X0
139         tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver"
140         depends on I2C
141         select GPIOLIB
142         select GPIOLIB_IRQCHIP
143         select PINMUX
144         select PINCONF
145         select GENERIC_PINCONF
146         select REGMAP_I2C
147         help
148           Support for 20/40/60 pin Cypress Cy8C95x0 pinctrl/gpio I2C expander.
149           This driver can also be built as a module. If so, the module will be
150           called pinctrl-cy8c95x0.
151
152 config PINCTRL_DA850_PUPD
153         tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"
154         depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
155         select PINCONF
156         select GENERIC_PINCONF
157         help
158           Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
159           pull-up and pull-down pin groups.
160
161 config PINCTRL_DA9062
162         tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
163         depends on MFD_DA9062
164         select GPIOLIB
165         help
166           The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
167           different functions. This driver bundles a pinctrl driver to select the
168           function muxing and a GPIO driver to handle the GPIO when the GPIO
169           function is selected.
170
171           Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
172
173 config PINCTRL_DIGICOLOR
174         bool
175         depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
176         select PINMUX
177         select GENERIC_PINCONF
178
179 config PINCTRL_EQUILIBRIUM
180         tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
181         depends on OF && HAS_IOMEM
182         depends on X86 || COMPILE_TEST
183         select PINMUX
184         select PINCONF
185         select GPIOLIB
186         select GPIO_GENERIC
187         select GPIOLIB_IRQCHIP
188         select GENERIC_PINCONF
189         select GENERIC_PINCTRL_GROUPS
190         select GENERIC_PINMUX_FUNCTIONS
191         help
192           Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
193           Mountain network processor SoC that supports both the GPIO and pin
194           control frameworks. It provides interfaces to setup pin muxing, assign
195           desired pin functions, configure GPIO attributes for LGM SoC pins.
196           Pin muxing and pin config settings are retrieved from device tree.
197
198 config PINCTRL_GEMINI
199         bool
200         depends on ARCH_GEMINI
201         default ARCH_GEMINI
202         select PINMUX
203         select GENERIC_PINCONF
204         select MFD_SYSCON
205
206 config PINCTRL_INGENIC
207         bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
208         default MACH_INGENIC
209         depends on OF
210         depends on MIPS || COMPILE_TEST
211         select GENERIC_PINCONF
212         select GENERIC_PINCTRL_GROUPS
213         select GENERIC_PINMUX_FUNCTIONS
214         select GPIOLIB
215         select GPIOLIB_IRQCHIP
216         select REGMAP_MMIO
217
218 config PINCTRL_K210
219         bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
220         depends on RISCV && SOC_CANAAN && OF
221         select GENERIC_PINMUX_FUNCTIONS
222         select GENERIC_PINCONF
223         select GPIOLIB
224         select OF_GPIO
225         select REGMAP_MMIO
226         default SOC_CANAAN
227         help
228           Add support for the Canaan Kendryte K210 RISC-V SOC Field
229           Programmable IO Array (FPIOA) controller.
230
231 config PINCTRL_KEEMBAY
232         tristate "Pinctrl driver for Intel Keem Bay SoC"
233         depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
234         depends on HAS_IOMEM
235         select PINMUX
236         select PINCONF
237         select GENERIC_PINCONF
238         select GENERIC_PINCTRL_GROUPS
239         select GENERIC_PINMUX_FUNCTIONS
240         select GPIOLIB
241         select GPIOLIB_IRQCHIP
242         select GPIO_GENERIC
243         help
244           This selects pin control driver for the Intel Keem Bay SoC.
245           It provides pin config functions such as pull-up, pull-down,
246           interrupt, drive strength, sec lock, Schmitt trigger, slew
247           rate control and direction control. This module will be
248           called as pinctrl-keembay.
249
250 config PINCTRL_LANTIQ
251         bool
252         depends on LANTIQ
253         select PINMUX
254         select PINCONF
255
256 config PINCTRL_FALCON
257         bool
258         depends on SOC_FALCON
259         depends on PINCTRL_LANTIQ
260
261 config PINCTRL_XWAY
262         bool
263         depends on SOC_TYPE_XWAY
264         depends on PINCTRL_LANTIQ
265
266 config PINCTRL_LPC18XX
267         bool "NXP LPC18XX/43XX SCU pinctrl driver"
268         depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
269         default ARCH_LPC18XX
270         select PINMUX
271         select GENERIC_PINCONF
272         help
273           Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
274
275 config PINCTRL_MAX77620
276         tristate "MAX77620/MAX20024 Pincontrol support"
277         depends on MFD_MAX77620 && OF
278         select PINMUX
279         select GENERIC_PINCONF
280         help
281           Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
282           This PMIC has 8 GPIO pins that work as GPIO as well as special
283           function in alternate mode. This driver also configure push-pull,
284           open drain, FPS slots etc.
285
286 config PINCTRL_MCP23S08_I2C
287         tristate
288         select REGMAP_I2C
289
290 config PINCTRL_MCP23S08_SPI
291         tristate
292         select REGMAP_SPI
293
294 config PINCTRL_MCP23S08
295         tristate "Microchip MCP23xxx I/O expander"
296         depends on SPI_MASTER || I2C
297         select GPIOLIB
298         select GPIOLIB_IRQCHIP
299         select GENERIC_PINCONF
300         select PINCTRL_MCP23S08_I2C if I2C
301         select PINCTRL_MCP23S08_SPI if SPI_MASTER
302         help
303           SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
304           MCP23008 / MCP23017 / MCP23018 I/O expanders.
305           This provides a GPIO interface supporting inputs and outputs and a
306           corresponding interrupt-controller.
307
308 config PINCTRL_MICROCHIP_SGPIO
309         tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
310         depends on OF
311         depends on HAS_IOMEM
312         select GPIOLIB
313         select GPIOLIB_IRQCHIP
314         select GENERIC_PINCONF
315         select GENERIC_PINCTRL_GROUPS
316         select GENERIC_PINMUX_FUNCTIONS
317         select OF_GPIO
318         help
319           Support for the serial GPIO interface used on Microsemi and
320           Microchip SoCs. By using a serial interface, the SIO
321           controller significantly extends the number of available
322           GPIOs with a minimum number of additional pins on the
323           device. The primary purpose of the SIO controller is to
324           connect control signals from SFP modules and to act as an
325           LED controller.
326
327           If compiled as a module, the module name will be
328           pinctrl-microchip-sgpio.
329
330 config PINCTRL_OCELOT
331         tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
332         depends on OF
333         depends on HAS_IOMEM
334         select GPIOLIB
335         select GPIOLIB_IRQCHIP
336         select GENERIC_PINCONF
337         select GENERIC_PINCTRL_GROUPS
338         select GENERIC_PINMUX_FUNCTIONS
339         select OF_GPIO
340         select REGMAP_MMIO
341         help
342           Support for the internal GPIO interfaces on Microsemi Ocelot and
343           Jaguar2 SoCs.
344
345           If conpiled as a module, the module name will be pinctrl-ocelot.
346
347 config PINCTRL_OXNAS
348         bool
349         depends on OF
350         select PINMUX
351         select PINCONF
352         select GENERIC_PINCONF
353         select GPIOLIB
354         select OF_GPIO
355         select GPIOLIB_IRQCHIP
356         select MFD_SYSCON
357
358 config PINCTRL_PALMAS
359         tristate "Pinctrl driver for the PALMAS Series MFD devices"
360         depends on OF && MFD_PALMAS
361         select PINMUX
362         select GENERIC_PINCONF
363         help
364           Palmas device supports the configuration of pins for different
365           functionality. This driver supports the pinmux, push-pull and
366           open drain configuration for the Palmas series devices like
367           TPS65913, TPS80036 etc.
368
369 config PINCTRL_PIC32
370         bool "Microchip PIC32 pin controller driver"
371         depends on OF
372         depends on MACH_PIC32
373         select PINMUX
374         select GENERIC_PINCONF
375         select GPIOLIB_IRQCHIP
376         select OF_GPIO
377         help
378           This is the pin controller and gpio driver for Microchip PIC32
379           microcontrollers. This option is selected automatically when specific
380           machine and arch are selected to build.
381
382 config PINCTRL_PIC32MZDA
383         def_bool y if PIC32MZDA
384         select PINCTRL_PIC32
385
386 config PINCTRL_PISTACHIO
387         bool "IMG Pistachio SoC pinctrl driver"
388         depends on OF && (MIPS || COMPILE_TEST)
389         depends on GPIOLIB
390         select PINMUX
391         select GENERIC_PINCONF
392         select GPIOLIB_IRQCHIP
393         select OF_GPIO
394         help
395           This support pinctrl and GPIO driver for IMG Pistachio SoC.
396
397 config PINCTRL_RK805
398         tristate "Pinctrl and GPIO driver for RK805 PMIC"
399         depends on MFD_RK808
400         select GPIOLIB
401         select PINMUX
402         select GENERIC_PINCONF
403         help
404           This selects the pinctrl driver for RK805.
405
406 config PINCTRL_ROCKCHIP
407         tristate "Rockchip gpio and pinctrl driver"
408         depends on ARCH_ROCKCHIP || COMPILE_TEST
409         depends on OF
410         select GPIOLIB
411         select PINMUX
412         select GENERIC_PINCONF
413         select GENERIC_IRQ_CHIP
414         select MFD_SYSCON
415         select OF_GPIO
416         default ARCH_ROCKCHIP
417         help
418           This support pinctrl and GPIO driver for Rockchip SoCs.
419
420 config PINCTRL_SINGLE
421         tristate "One-register-per-pin type device tree based pinctrl driver"
422         depends on OF
423         depends on HAS_IOMEM
424         select GENERIC_PINCTRL_GROUPS
425         select GENERIC_PINMUX_FUNCTIONS
426         select GENERIC_PINCONF
427         help
428           This selects the device tree based generic pinctrl driver.
429
430 config PINCTRL_ST
431         bool
432         depends on OF
433         select PINMUX
434         select PINCONF
435         select GPIOLIB_IRQCHIP
436
437 config PINCTRL_STMFX
438         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
439         depends on I2C
440         depends on OF_GPIO
441         select GENERIC_PINCONF
442         select GPIOLIB_IRQCHIP
443         select MFD_STMFX
444         help
445           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
446           GPIO expander.
447           This provides a GPIO interface supporting inputs and outputs,
448           and configuring push-pull, open-drain, and can also be used as
449           interrupt-controller.
450
451 config PINCTRL_SX150X
452         bool "Semtech SX150x I2C GPIO expander pinctrl driver"
453         depends on I2C=y
454         select PINMUX
455         select PINCONF
456         select GENERIC_PINCONF
457         select GPIOLIB
458         select GPIOLIB_IRQCHIP
459         select REGMAP
460         help
461           Say Y here to provide support for Semtech SX150x-series I2C
462           GPIO expanders as pinctrl module.
463           Compatible models include:
464           - 8 bits:  sx1508q, sx1502q
465           - 16 bits: sx1509q, sx1506q
466
467 config PINCTRL_TB10X
468         bool
469         depends on OF && ARC_PLAT_TB10X
470         select GPIOLIB
471
472 config PINCTRL_THUNDERBAY
473         tristate "Generic pinctrl and GPIO driver for Intel Thunder Bay SoC"
474         depends on ARCH_THUNDERBAY || (ARM64 && COMPILE_TEST)
475         depends on HAS_IOMEM
476         select PINMUX
477         select PINCONF
478         select GENERIC_PINCONF
479         select GENERIC_PINCTRL_GROUPS
480         select GENERIC_PINMUX_FUNCTIONS
481         select GPIOLIB
482         select GPIOLIB_IRQCHIP
483         select GPIO_GENERIC
484         help
485           This selects pin control driver for the Intel Thunder Bay SoC.
486           It provides pin config functions such as pull-up, pull-down,
487           interrupt, drive strength, sec lock, Schmitt trigger, slew
488           rate control and direction control. This module will be
489           called as pinctrl-thunderbay.
490
491 config PINCTRL_ZYNQ
492         bool "Pinctrl driver for Xilinx Zynq"
493         depends on ARCH_ZYNQ
494         select PINMUX
495         select GENERIC_PINCONF
496         help
497           This selects the pinctrl driver for Xilinx Zynq.
498
499 config PINCTRL_ZYNQMP
500         tristate "Pinctrl driver for Xilinx ZynqMP"
501         depends on ZYNQMP_FIRMWARE
502         select PINMUX
503         select GENERIC_PINCONF
504         default ZYNQMP_FIRMWARE
505         help
506           This selects the pinctrl driver for Xilinx ZynqMP platform.
507           This driver will query the pin information from the firmware
508           and allow configuring the pins.
509           Configuration can include the mux function to select on those
510           pin(s)/group(s), and various pin configuration parameters
511           such as pull-up, slew rate, etc.
512           This driver can also be built as a module. If so, the module
513           will be called pinctrl-zynqmp.
514
515 source "drivers/pinctrl/actions/Kconfig"
516 source "drivers/pinctrl/aspeed/Kconfig"
517 source "drivers/pinctrl/bcm/Kconfig"
518 source "drivers/pinctrl/berlin/Kconfig"
519 source "drivers/pinctrl/cirrus/Kconfig"
520 source "drivers/pinctrl/freescale/Kconfig"
521 source "drivers/pinctrl/intel/Kconfig"
522 source "drivers/pinctrl/mediatek/Kconfig"
523 source "drivers/pinctrl/meson/Kconfig"
524 source "drivers/pinctrl/mvebu/Kconfig"
525 source "drivers/pinctrl/nomadik/Kconfig"
526 source "drivers/pinctrl/nuvoton/Kconfig"
527 source "drivers/pinctrl/pxa/Kconfig"
528 source "drivers/pinctrl/qcom/Kconfig"
529 source "drivers/pinctrl/ralink/Kconfig"
530 source "drivers/pinctrl/renesas/Kconfig"
531 source "drivers/pinctrl/samsung/Kconfig"
532 source "drivers/pinctrl/spear/Kconfig"
533 source "drivers/pinctrl/sprd/Kconfig"
534 source "drivers/pinctrl/starfive/Kconfig"
535 source "drivers/pinctrl/stm32/Kconfig"
536 source "drivers/pinctrl/sunplus/Kconfig"
537 source "drivers/pinctrl/sunxi/Kconfig"
538 source "drivers/pinctrl/tegra/Kconfig"
539 source "drivers/pinctrl/ti/Kconfig"
540 source "drivers/pinctrl/uniphier/Kconfig"
541 source "drivers/pinctrl/visconti/Kconfig"
542 source "drivers/pinctrl/vt8500/Kconfig"
543
544 endif