Merge branch 'acpi-pfrut'
[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_APPLE_GPIO
35         tristate "Apple SoC GPIO pin controller driver"
36         depends on ARCH_APPLE
37         select PINMUX
38         select GPIOLIB
39         select GPIOLIB_IRQCHIP
40         select GENERIC_PINCTRL_GROUPS
41         select GENERIC_PINMUX_FUNCTIONS
42         select OF_GPIO
43         help
44           This is the driver for the GPIO controller found on Apple ARM SoCs,
45           including M1.
46
47           This driver can also be built as a module. If so, the module
48           will be called pinctrl-apple-gpio.
49
50 config PINCTRL_ARTPEC6
51         bool "Axis ARTPEC-6 pin controller driver"
52         depends on MACH_ARTPEC6
53         select PINMUX
54         select GENERIC_PINCONF
55         help
56           This is the driver for the Axis ARTPEC-6 pin controller. This driver
57           supports pin function multiplexing as well as pin bias and drive
58           strength configuration. Device tree integration instructions can be
59           found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
60
61 config PINCTRL_AS3722
62         tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
63         depends on MFD_AS3722 && GPIOLIB
64         select PINMUX
65         select GENERIC_PINCONF
66         help
67           AS3722 device supports the configuration of GPIO pins for different
68           functionality. This driver supports the pinmux, push-pull and
69           open drain configuration for the GPIO pins of AS3722 devices. It also
70           supports the GPIO functionality through gpiolib.
71
72 config PINCTRL_AXP209
73         tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
74         depends on MFD_AXP20X
75         depends on OF
76         select PINMUX
77         select GENERIC_PINCONF
78         select GPIOLIB
79         help
80           AXP PMICs provides multiple GPIOs that can be muxed for different
81           functions. This driver bundles a pinctrl driver to select the function
82           muxing and a GPIO driver to handle the GPIO when the GPIO function is
83           selected.
84           Say yes to enable pinctrl and GPIO support for the AXP209 PMIC
85
86 config PINCTRL_AT91
87         bool "AT91 pinctrl driver"
88         depends on OF
89         depends on ARCH_AT91
90         select PINMUX
91         select PINCONF
92         select GPIOLIB
93         select OF_GPIO
94         select GPIOLIB_IRQCHIP
95         help
96           Say Y here to enable the at91 pinctrl driver
97
98 config PINCTRL_AT91PIO4
99         bool "AT91 PIO4 pinctrl driver"
100         depends on OF
101         depends on HAS_IOMEM
102         depends on ARCH_AT91 || COMPILE_TEST
103         select PINMUX
104         select GENERIC_PINCONF
105         select GPIOLIB
106         select GPIOLIB_IRQCHIP
107         select OF_GPIO
108         help
109           Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
110           controller available on sama5d2 SoC.
111
112 config PINCTRL_AMD
113         tristate "AMD GPIO pin control"
114         depends on HAS_IOMEM
115         depends on ACPI || COMPILE_TEST
116         select GPIOLIB
117         select GPIOLIB_IRQCHIP
118         select PINMUX
119         select PINCONF
120         select GENERIC_PINCONF
121         help
122           driver for memory mapped GPIO functionality on AMD platforms
123           (x86 or arm).Most pins are usually muxed to some other
124           functionality by firmware,so only a small amount is available
125           for gpio use.
126
127           Requires ACPI/FDT device enumeration code to set up a platform
128           device.
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_DA850_PUPD
139         tristate "TI DA850/OMAP-L138/AM18XX pullup/pulldown groups"
140         depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
141         select PINCONF
142         select GENERIC_PINCONF
143         help
144           Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
145           pullup/pulldown pin groups.
146
147 config PINCTRL_DA9062
148         tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
149         depends on MFD_DA9062
150         select GPIOLIB
151         help
152           The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
153           different functions. This driver bundles a pinctrl driver to select the
154           function muxing and a GPIO driver to handle the GPIO when the GPIO
155           function is selected.
156
157           Say yes to enable pinctrl and GPIO support for the DA9062 PMIC.
158
159 config PINCTRL_DIGICOLOR
160         bool
161         depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
162         select PINMUX
163         select GENERIC_PINCONF
164
165 config PINCTRL_LANTIQ
166         bool
167         depends on LANTIQ
168         select PINMUX
169         select PINCONF
170
171 config PINCTRL_LPC18XX
172         bool "NXP LPC18XX/43XX SCU pinctrl driver"
173         depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
174         default ARCH_LPC18XX
175         select PINMUX
176         select GENERIC_PINCONF
177         help
178           Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
179
180 config PINCTRL_FALCON
181         bool
182         depends on SOC_FALCON
183         depends on PINCTRL_LANTIQ
184
185 config PINCTRL_GEMINI
186         bool
187         depends on ARCH_GEMINI
188         default ARCH_GEMINI
189         select PINMUX
190         select GENERIC_PINCONF
191         select MFD_SYSCON
192
193 config PINCTRL_MCP23S08_I2C
194         tristate
195         select REGMAP_I2C
196
197 config PINCTRL_MCP23S08_SPI
198         tristate
199         select REGMAP_SPI
200
201 config PINCTRL_MCP23S08
202         tristate "Microchip MCP23xxx I/O expander"
203         depends on SPI_MASTER || I2C
204         select GPIOLIB
205         select GPIOLIB_IRQCHIP
206         select GENERIC_PINCONF
207         select PINCTRL_MCP23S08_I2C if I2C
208         select PINCTRL_MCP23S08_SPI if SPI_MASTER
209         help
210           SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
211           MCP23008 / MCP23017 / MCP23018 I/O expanders.
212           This provides a GPIO interface supporting inputs and outputs and a
213           corresponding interrupt-controller.
214
215 config PINCTRL_OXNAS
216         bool
217         depends on OF
218         select PINMUX
219         select PINCONF
220         select GENERIC_PINCONF
221         select GPIOLIB
222         select OF_GPIO
223         select GPIOLIB_IRQCHIP
224         select MFD_SYSCON
225
226 config PINCTRL_ROCKCHIP
227         tristate "Rockchip gpio and pinctrl driver"
228         depends on ARCH_ROCKCHIP || COMPILE_TEST
229         depends on OF
230         select GPIOLIB
231         select PINMUX
232         select GENERIC_PINCONF
233         select GENERIC_IRQ_CHIP
234         select MFD_SYSCON
235         select OF_GPIO
236         default ARCH_ROCKCHIP
237         help
238           This support pinctrl and gpio driver for Rockchip SoCs.
239
240 config PINCTRL_SINGLE
241         tristate "One-register-per-pin type device tree based pinctrl driver"
242         depends on OF
243         depends on HAS_IOMEM
244         select GENERIC_PINCTRL_GROUPS
245         select GENERIC_PINMUX_FUNCTIONS
246         select GENERIC_PINCONF
247         help
248           This selects the device tree based generic pinctrl driver.
249
250 config PINCTRL_SX150X
251         bool "Semtech SX150x I2C GPIO expander pinctrl driver"
252         depends on I2C=y
253         select PINMUX
254         select PINCONF
255         select GENERIC_PINCONF
256         select GPIOLIB
257         select GPIOLIB_IRQCHIP
258         select REGMAP
259         help
260           Say yes here to provide support for Semtech SX150x-series I2C
261           GPIO expanders as pinctrl module.
262           Compatible models include:
263           - 8 bits:  sx1508q, sx1502q
264           - 16 bits: sx1509q, sx1506q
265
266 config PINCTRL_PISTACHIO
267         bool "IMG Pistachio SoC pinctrl driver"
268         depends on OF && (MIPS || COMPILE_TEST)
269         depends on GPIOLIB
270         select PINMUX
271         select GENERIC_PINCONF
272         select GPIOLIB_IRQCHIP
273         select OF_GPIO
274     help
275           This support pinctrl and gpio driver for IMG Pistachio SoC.
276
277 config PINCTRL_ST
278         bool
279         depends on OF
280         select PINMUX
281         select PINCONF
282         select GPIOLIB_IRQCHIP
283
284 config PINCTRL_STARFIVE
285         tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC"
286         depends on SOC_STARFIVE || COMPILE_TEST
287         depends on OF
288         default SOC_STARFIVE
289         select GENERIC_PINCTRL_GROUPS
290         select GENERIC_PINMUX_FUNCTIONS
291         select GENERIC_PINCONF
292         select GPIOLIB
293         select GPIOLIB_IRQCHIP
294         select OF_GPIO
295         help
296           Say yes here to support pin control on the StarFive JH7100 SoC.
297           This also provides an interface to the GPIO pins not used by other
298           peripherals supporting inputs, outputs, configuring pull-up/pull-down
299           and interrupts on input changes.
300
301 config PINCTRL_STMFX
302         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
303         depends on I2C
304         depends on OF_GPIO
305         select GENERIC_PINCONF
306         select GPIOLIB_IRQCHIP
307         select MFD_STMFX
308         help
309           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
310           GPIO expander.
311           This provides a GPIO interface supporting inputs and outputs,
312           and configuring push-pull, open-drain, and can also be used as
313           interrupt-controller.
314
315 config PINCTRL_MAX77620
316         tristate "MAX77620/MAX20024 Pincontrol support"
317         depends on MFD_MAX77620 && OF
318         select PINMUX
319         select GENERIC_PINCONF
320         help
321           Say Yes here to enable Pin control support for Maxim PMIC MAX77620.
322           This PMIC has 8 GPIO pins that work as GPIO as well as special
323           function in alternate mode. This driver also configure push-pull,
324           open drain, FPS slots etc.
325
326 config PINCTRL_PALMAS
327         tristate "Pinctrl driver for the PALMAS Series MFD devices"
328         depends on OF && MFD_PALMAS
329         select PINMUX
330         select GENERIC_PINCONF
331         help
332           Palmas device supports the configuration of pins for different
333           functionality. This driver supports the pinmux, push-pull and
334           open drain configuration for the Palmas series devices like
335           TPS65913, TPS80036 etc.
336
337 config PINCTRL_PIC32
338         bool "Microchip PIC32 pin controller driver"
339         depends on OF
340         depends on MACH_PIC32
341         select PINMUX
342         select GENERIC_PINCONF
343         select GPIOLIB_IRQCHIP
344         select OF_GPIO
345         help
346           This is the pin controller and gpio driver for Microchip PIC32
347           microcontrollers. This option is selected automatically when specific
348           machine and arch are selected to build.
349
350 config PINCTRL_PIC32MZDA
351         def_bool y if PIC32MZDA
352         select PINCTRL_PIC32
353
354 config PINCTRL_ZYNQ
355         bool "Pinctrl driver for Xilinx Zynq"
356         depends on ARCH_ZYNQ
357         select PINMUX
358         select GENERIC_PINCONF
359         help
360           This selects the pinctrl driver for Xilinx Zynq.
361
362 config PINCTRL_ZYNQMP
363         tristate "Pinctrl driver for Xilinx ZynqMP"
364         depends on ZYNQMP_FIRMWARE
365         select PINMUX
366         select GENERIC_PINCONF
367         default ZYNQMP_FIRMWARE
368         help
369           This selects the pinctrl driver for Xilinx ZynqMP platform.
370           This driver will query the pin information from the firmware
371           and allow configuring the pins.
372           Configuration can include the mux function to select on those
373           pin(s)/group(s), and various pin configuration parameters
374           such as pull-up, slew rate, etc.
375           This driver can also be built as a module. If so, the module
376           will be called pinctrl-zynqmp.
377
378 config PINCTRL_INGENIC
379         bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
380         default MACH_INGENIC
381         depends on OF
382         depends on MIPS || COMPILE_TEST
383         select GENERIC_PINCONF
384         select GENERIC_PINCTRL_GROUPS
385         select GENERIC_PINMUX_FUNCTIONS
386         select GPIOLIB
387         select GPIOLIB_IRQCHIP
388         select REGMAP_MMIO
389
390 config PINCTRL_RK805
391         tristate "Pinctrl and GPIO driver for RK805 PMIC"
392         depends on MFD_RK808
393         select GPIOLIB
394         select PINMUX
395         select GENERIC_PINCONF
396         help
397           This selects the pinctrl driver for RK805.
398
399 config PINCTRL_OCELOT
400         bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
401         depends on OF
402         depends on HAS_IOMEM
403         select GPIOLIB
404         select GPIOLIB_IRQCHIP
405         select GENERIC_PINCONF
406         select GENERIC_PINCTRL_GROUPS
407         select GENERIC_PINMUX_FUNCTIONS
408         select OF_GPIO
409         select REGMAP_MMIO
410
411 config PINCTRL_MICROCHIP_SGPIO
412         bool "Pinctrl driver for Microsemi/Microchip Serial GPIO"
413         depends on OF
414         depends on HAS_IOMEM
415         select GPIOLIB
416         select GPIOLIB_IRQCHIP
417         select GENERIC_PINCONF
418         select GENERIC_PINCTRL_GROUPS
419         select GENERIC_PINMUX_FUNCTIONS
420         select OF_GPIO
421         help
422           Support for the serial GPIO interface used on Microsemi and
423           Microchip SoC's. By using a serial interface, the SIO
424           controller significantly extends the number of available
425           GPIOs with a minimum number of additional pins on the
426           device. The primary purpose of the SIO controller is to
427           connect control signals from SFP modules and to act as an
428           LED controller.
429
430 config PINCTRL_K210
431         bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
432         depends on RISCV && SOC_CANAAN && OF
433         select GENERIC_PINMUX_FUNCTIONS
434         select GENERIC_PINCONF
435         select GPIOLIB
436         select OF_GPIO
437         select REGMAP_MMIO
438         default SOC_CANAAN
439         help
440           Add support for the Canaan Kendryte K210 RISC-V SOC Field
441           Programmable IO Array (FPIOA) controller.
442
443 config PINCTRL_KEEMBAY
444         tristate "Pinctrl driver for Intel Keem Bay SoC"
445         depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
446         depends on HAS_IOMEM
447         select PINMUX
448         select PINCONF
449         select GENERIC_PINCONF
450         select GENERIC_PINCTRL_GROUPS
451         select GENERIC_PINMUX_FUNCTIONS
452         select GPIOLIB
453         select GPIOLIB_IRQCHIP
454         select GPIO_GENERIC
455         help
456           This selects pin control driver for the Intel Keembay SoC.
457           It provides pin config functions such as pullup, pulldown,
458           interrupt, drive strength, sec lock, schmitt trigger, slew
459           rate control and direction control. This module will be
460           called as pinctrl-keembay.
461
462 source "drivers/pinctrl/actions/Kconfig"
463 source "drivers/pinctrl/aspeed/Kconfig"
464 source "drivers/pinctrl/bcm/Kconfig"
465 source "drivers/pinctrl/berlin/Kconfig"
466 source "drivers/pinctrl/freescale/Kconfig"
467 source "drivers/pinctrl/intel/Kconfig"
468 source "drivers/pinctrl/mvebu/Kconfig"
469 source "drivers/pinctrl/nomadik/Kconfig"
470 source "drivers/pinctrl/nuvoton/Kconfig"
471 source "drivers/pinctrl/pxa/Kconfig"
472 source "drivers/pinctrl/qcom/Kconfig"
473 source "drivers/pinctrl/ralink/Kconfig"
474 source "drivers/pinctrl/renesas/Kconfig"
475 source "drivers/pinctrl/samsung/Kconfig"
476 source "drivers/pinctrl/spear/Kconfig"
477 source "drivers/pinctrl/sprd/Kconfig"
478 source "drivers/pinctrl/stm32/Kconfig"
479 source "drivers/pinctrl/sunxi/Kconfig"
480 source "drivers/pinctrl/tegra/Kconfig"
481 source "drivers/pinctrl/ti/Kconfig"
482 source "drivers/pinctrl/uniphier/Kconfig"
483 source "drivers/pinctrl/vt8500/Kconfig"
484 source "drivers/pinctrl/mediatek/Kconfig"
485 source "drivers/pinctrl/meson/Kconfig"
486 source "drivers/pinctrl/cirrus/Kconfig"
487 source "drivers/pinctrl/visconti/Kconfig"
488
489 config PINCTRL_XWAY
490         bool
491         depends on SOC_TYPE_XWAY
492         depends on PINCTRL_LANTIQ
493
494 config PINCTRL_TB10X
495         bool
496         depends on OF && ARC_PLAT_TB10X
497         select GPIOLIB
498
499 config PINCTRL_EQUILIBRIUM
500         tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
501         depends on OF && HAS_IOMEM
502         depends on X86 || COMPILE_TEST
503         select PINMUX
504         select PINCONF
505         select GPIOLIB
506         select GPIO_GENERIC
507         select GPIOLIB_IRQCHIP
508         select GENERIC_PINCONF
509         select GENERIC_PINCTRL_GROUPS
510         select GENERIC_PINMUX_FUNCTIONS
511
512         help
513           Equilibrium pinctrl driver is a pinctrl & GPIO driver for Intel Lightning
514           Mountain network processor SoC that supports both the linux GPIO and pin
515           control frameworks. It provides interfaces to setup pinmux, assign desired
516           pin functions, configure GPIO attributes for LGM SoC pins. Pinmux and
517           pinconf settings are retrieved from device tree.
518
519 endif