Merge tag 'hsi-for-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi
[linux-2.6-microblaze.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 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_LOONGSON2
262         tristate "Pinctrl driver for the Loongson-2 SoC"
263         depends on OF && (LOONGARCH || COMPILE_TEST)
264         select PINMUX
265         select GENERIC_PINCONF
266         help
267          This selects pin control driver for the Loongson-2 SoC. It
268          provides pin config functions multiplexing.  GPIO pin pull-up,
269          pull-down functions are not supported. Say yes to enable
270          pinctrl for Loongson-2 SoC.
271
272 config PINCTRL_XWAY
273         bool
274         depends on SOC_TYPE_XWAY
275         depends on PINCTRL_LANTIQ
276
277 config PINCTRL_LPC18XX
278         bool "NXP LPC18XX/43XX SCU pinctrl driver"
279         depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
280         default ARCH_LPC18XX
281         select PINMUX
282         select GENERIC_PINCONF
283         help
284           Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
285
286 config PINCTRL_MAX77620
287         tristate "MAX77620/MAX20024 Pincontrol support"
288         depends on MFD_MAX77620 && OF
289         select PINMUX
290         select GENERIC_PINCONF
291         help
292           Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
293           This PMIC has 8 GPIO pins that work as GPIO as well as special
294           function in alternate mode. This driver also configure push-pull,
295           open drain, FPS slots etc.
296
297 config PINCTRL_MCP23S08_I2C
298         tristate
299         select REGMAP_I2C
300
301 config PINCTRL_MCP23S08_SPI
302         tristate
303         select REGMAP_SPI
304
305 config PINCTRL_MCP23S08
306         tristate "Microchip MCP23xxx I/O expander"
307         depends on SPI_MASTER || I2C
308         select GPIOLIB
309         select GPIOLIB_IRQCHIP
310         select GENERIC_PINCONF
311         select PINCTRL_MCP23S08_I2C if I2C
312         select PINCTRL_MCP23S08_SPI if SPI_MASTER
313         help
314           SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
315           MCP23008 / MCP23017 / MCP23018 I/O expanders.
316           This provides a GPIO interface supporting inputs and outputs and a
317           corresponding interrupt-controller.
318
319 config PINCTRL_MICROCHIP_SGPIO
320         tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
321         depends on OF
322         depends on HAS_IOMEM
323         select GPIOLIB
324         select GPIOLIB_IRQCHIP
325         select GENERIC_PINCONF
326         select GENERIC_PINCTRL_GROUPS
327         select GENERIC_PINMUX_FUNCTIONS
328         select OF_GPIO
329         help
330           Support for the serial GPIO interface used on Microsemi and
331           Microchip SoCs. By using a serial interface, the SIO
332           controller significantly extends the number of available
333           GPIOs with a minimum number of additional pins on the
334           device. The primary purpose of the SIO controller is to
335           connect control signals from SFP modules and to act as an
336           LED controller.
337
338           If compiled as a module, the module name will be
339           pinctrl-microchip-sgpio.
340
341 config PINCTRL_OCELOT
342         tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
343         depends on OF
344         depends on HAS_IOMEM
345         select GPIOLIB
346         select GPIOLIB_IRQCHIP
347         select GENERIC_PINCONF
348         select GENERIC_PINCTRL_GROUPS
349         select GENERIC_PINMUX_FUNCTIONS
350         select OF_GPIO
351         select REGMAP_MMIO
352         help
353           Support for the internal GPIO interfaces on Microsemi Ocelot and
354           Jaguar2 SoCs.
355
356           If conpiled as a module, the module name will be pinctrl-ocelot.
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_PEF2256
370         tristate "Lantiq PEF2256 (FALC56) pin controller driver"
371         depends on OF && FRAMER_PEF2256
372         select PINMUX
373         select PINCONF
374         select GENERIC_PINCONF
375         help
376           This option enables the pin controller support for the Lantiq PEF2256
377           framer, also known as FALC56.
378
379           If unsure, say N.
380
381           To compile this driver as a module, choose M here: the
382           module will be called pinctrl-pef2256.
383
384 config PINCTRL_PIC32
385         bool "Microchip PIC32 pin controller driver"
386         depends on OF
387         depends on MACH_PIC32
388         select PINMUX
389         select GENERIC_PINCONF
390         select GPIOLIB_IRQCHIP
391         select OF_GPIO
392         help
393           This is the pin controller and gpio driver for Microchip PIC32
394           microcontrollers. This option is selected automatically when specific
395           machine and arch are selected to build.
396
397 config PINCTRL_PIC32MZDA
398         def_bool y if PIC32MZDA
399         select PINCTRL_PIC32
400
401 config PINCTRL_PISTACHIO
402         bool "IMG Pistachio SoC pinctrl driver"
403         depends on OF && (MIPS || COMPILE_TEST)
404         depends on GPIOLIB
405         select PINMUX
406         select GENERIC_PINCONF
407         select GPIOLIB_IRQCHIP
408         select OF_GPIO
409         help
410           This support pinctrl and GPIO driver for IMG Pistachio SoC.
411
412 config PINCTRL_RK805
413         tristate "Pinctrl and GPIO driver for RK805 PMIC"
414         depends on MFD_RK8XX
415         select GPIOLIB
416         select PINMUX
417         select GENERIC_PINCONF
418         help
419           This selects the pinctrl driver for RK805.
420
421 config PINCTRL_ROCKCHIP
422         tristate "Rockchip gpio and pinctrl driver"
423         depends on ARCH_ROCKCHIP || COMPILE_TEST
424         depends on OF
425         select GPIOLIB
426         select PINMUX
427         select GENERIC_PINCONF
428         select GENERIC_IRQ_CHIP
429         select MFD_SYSCON
430         select OF_GPIO
431         default ARCH_ROCKCHIP
432         help
433           This support pinctrl and GPIO driver for Rockchip SoCs.
434
435 config PINCTRL_SINGLE
436         tristate "One-register-per-pin type device tree based pinctrl driver"
437         depends on OF
438         depends on HAS_IOMEM
439         select GENERIC_PINCTRL_GROUPS
440         select GENERIC_PINMUX_FUNCTIONS
441         select GENERIC_PINCONF
442         help
443           This selects the device tree based generic pinctrl driver.
444
445 config PINCTRL_ST
446         bool
447         depends on OF
448         select PINMUX
449         select PINCONF
450         select GPIOLIB_IRQCHIP
451
452 config PINCTRL_STMFX
453         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
454         depends on I2C
455         depends on OF_GPIO
456         select GENERIC_PINCONF
457         select GPIOLIB_IRQCHIP
458         select MFD_STMFX
459         help
460           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
461           GPIO expander.
462           This provides a GPIO interface supporting inputs and outputs,
463           and configuring push-pull, open-drain, and can also be used as
464           interrupt-controller.
465
466 config PINCTRL_SX150X
467         bool "Semtech SX150x I2C GPIO expander pinctrl driver"
468         depends on I2C=y
469         select PINMUX
470         select PINCONF
471         select GENERIC_PINCONF
472         select GPIOLIB
473         select GPIOLIB_IRQCHIP
474         select REGMAP
475         help
476           Say Y here to provide support for Semtech SX150x-series I2C
477           GPIO expanders as pinctrl module.
478           Compatible models include:
479           - 8 bits:  sx1508q, sx1502q
480           - 16 bits: sx1509q, sx1506q
481
482 config PINCTRL_TB10X
483         bool
484         depends on OF && ARC_PLAT_TB10X
485         select GPIOLIB
486
487 config PINCTRL_ZYNQ
488         bool "Pinctrl driver for Xilinx Zynq"
489         depends on ARCH_ZYNQ
490         select PINMUX
491         select GENERIC_PINCONF
492         help
493           This selects the pinctrl driver for Xilinx Zynq.
494
495 config PINCTRL_ZYNQMP
496         tristate "Pinctrl driver for Xilinx ZynqMP"
497         depends on ZYNQMP_FIRMWARE
498         select PINMUX
499         select GENERIC_PINCONF
500         default ZYNQMP_FIRMWARE
501         help
502           This selects the pinctrl driver for Xilinx ZynqMP platform.
503           This driver will query the pin information from the firmware
504           and allow configuring the pins.
505           Configuration can include the mux function to select on those
506           pin(s)/group(s), and various pin configuration parameters
507           such as pull-up, slew rate, etc.
508           This driver can also be built as a module. If so, the module
509           will be called pinctrl-zynqmp.
510
511 config PINCTRL_MLXBF3
512         tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
513         depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
514         select PINMUX
515         select GPIOLIB
516         select GPIOLIB_IRQCHIP
517         help
518           Say Y to select the pinctrl driver for BlueField-3 SoCs.
519           This pin controller allows selecting the mux function for
520           each pin. This driver can also be built as a module called
521           pinctrl-mlxbf3.
522
523 source "drivers/pinctrl/actions/Kconfig"
524 source "drivers/pinctrl/aspeed/Kconfig"
525 source "drivers/pinctrl/bcm/Kconfig"
526 source "drivers/pinctrl/berlin/Kconfig"
527 source "drivers/pinctrl/cirrus/Kconfig"
528 source "drivers/pinctrl/freescale/Kconfig"
529 source "drivers/pinctrl/intel/Kconfig"
530 source "drivers/pinctrl/mediatek/Kconfig"
531 source "drivers/pinctrl/meson/Kconfig"
532 source "drivers/pinctrl/mvebu/Kconfig"
533 source "drivers/pinctrl/nomadik/Kconfig"
534 source "drivers/pinctrl/nuvoton/Kconfig"
535 source "drivers/pinctrl/nxp/Kconfig"
536 source "drivers/pinctrl/pxa/Kconfig"
537 source "drivers/pinctrl/qcom/Kconfig"
538 source "drivers/pinctrl/realtek/Kconfig"
539 source "drivers/pinctrl/renesas/Kconfig"
540 source "drivers/pinctrl/samsung/Kconfig"
541 source "drivers/pinctrl/spear/Kconfig"
542 source "drivers/pinctrl/sprd/Kconfig"
543 source "drivers/pinctrl/starfive/Kconfig"
544 source "drivers/pinctrl/stm32/Kconfig"
545 source "drivers/pinctrl/sunplus/Kconfig"
546 source "drivers/pinctrl/sunxi/Kconfig"
547 source "drivers/pinctrl/tegra/Kconfig"
548 source "drivers/pinctrl/ti/Kconfig"
549 source "drivers/pinctrl/uniphier/Kconfig"
550 source "drivers/pinctrl/visconti/Kconfig"
551 source "drivers/pinctrl/vt8500/Kconfig"
552
553 endif