Merge branch 'kvm-selftest' into kvm-master
[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_STMFX
285         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
286         depends on I2C
287         depends on OF_GPIO
288         select GENERIC_PINCONF
289         select GPIOLIB_IRQCHIP
290         select MFD_STMFX
291         help
292           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
293           GPIO expander.
294           This provides a GPIO interface supporting inputs and outputs,
295           and configuring push-pull, open-drain, and can also be used as
296           interrupt-controller.
297
298 config PINCTRL_MAX77620
299         tristate "MAX77620/MAX20024 Pincontrol support"
300         depends on MFD_MAX77620 && OF
301         select PINMUX
302         select GENERIC_PINCONF
303         help
304           Say Yes here to enable Pin control support for Maxim PMIC MAX77620.
305           This PMIC has 8 GPIO pins that work as GPIO as well as special
306           function in alternate mode. This driver also configure push-pull,
307           open drain, FPS slots etc.
308
309 config PINCTRL_PALMAS
310         tristate "Pinctrl driver for the PALMAS Series MFD devices"
311         depends on OF && MFD_PALMAS
312         select PINMUX
313         select GENERIC_PINCONF
314         help
315           Palmas device supports the configuration of pins for different
316           functionality. This driver supports the pinmux, push-pull and
317           open drain configuration for the Palmas series devices like
318           TPS65913, TPS80036 etc.
319
320 config PINCTRL_PIC32
321         bool "Microchip PIC32 pin controller driver"
322         depends on OF
323         depends on MACH_PIC32
324         select PINMUX
325         select GENERIC_PINCONF
326         select GPIOLIB_IRQCHIP
327         select OF_GPIO
328         help
329           This is the pin controller and gpio driver for Microchip PIC32
330           microcontrollers. This option is selected automatically when specific
331           machine and arch are selected to build.
332
333 config PINCTRL_PIC32MZDA
334         def_bool y if PIC32MZDA
335         select PINCTRL_PIC32
336
337 config PINCTRL_ZYNQ
338         bool "Pinctrl driver for Xilinx Zynq"
339         depends on ARCH_ZYNQ
340         select PINMUX
341         select GENERIC_PINCONF
342         help
343           This selects the pinctrl driver for Xilinx Zynq.
344
345 config PINCTRL_ZYNQMP
346         tristate "Pinctrl driver for Xilinx ZynqMP"
347         depends on ZYNQMP_FIRMWARE
348         select PINMUX
349         select GENERIC_PINCONF
350         default ZYNQMP_FIRMWARE
351         help
352           This selects the pinctrl driver for Xilinx ZynqMP platform.
353           This driver will query the pin information from the firmware
354           and allow configuring the pins.
355           Configuration can include the mux function to select on those
356           pin(s)/group(s), and various pin configuration parameters
357           such as pull-up, slew rate, etc.
358           This driver can also be built as a module. If so, the module
359           will be called pinctrl-zynqmp.
360
361 config PINCTRL_INGENIC
362         bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
363         default MACH_INGENIC
364         depends on OF
365         depends on MIPS || COMPILE_TEST
366         select GENERIC_PINCONF
367         select GENERIC_PINCTRL_GROUPS
368         select GENERIC_PINMUX_FUNCTIONS
369         select GPIOLIB
370         select GPIOLIB_IRQCHIP
371         select REGMAP_MMIO
372
373 config PINCTRL_RK805
374         tristate "Pinctrl and GPIO driver for RK805 PMIC"
375         depends on MFD_RK808
376         select GPIOLIB
377         select PINMUX
378         select GENERIC_PINCONF
379         help
380           This selects the pinctrl driver for RK805.
381
382 config PINCTRL_OCELOT
383         bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
384         depends on OF
385         depends on HAS_IOMEM
386         select GPIOLIB
387         select GPIOLIB_IRQCHIP
388         select GENERIC_PINCONF
389         select GENERIC_PINCTRL_GROUPS
390         select GENERIC_PINMUX_FUNCTIONS
391         select OF_GPIO
392         select REGMAP_MMIO
393
394 config PINCTRL_MICROCHIP_SGPIO
395         bool "Pinctrl driver for Microsemi/Microchip Serial GPIO"
396         depends on OF
397         depends on HAS_IOMEM
398         select GPIOLIB
399         select GPIOLIB_IRQCHIP
400         select GENERIC_PINCONF
401         select GENERIC_PINCTRL_GROUPS
402         select GENERIC_PINMUX_FUNCTIONS
403         select OF_GPIO
404         help
405           Support for the serial GPIO interface used on Microsemi and
406           Microchip SoC's. By using a serial interface, the SIO
407           controller significantly extends the number of available
408           GPIOs with a minimum number of additional pins on the
409           device. The primary purpose of the SIO controller is to
410           connect control signals from SFP modules and to act as an
411           LED controller.
412
413 config PINCTRL_K210
414         bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
415         depends on RISCV && SOC_CANAAN && OF
416         select GENERIC_PINMUX_FUNCTIONS
417         select GENERIC_PINCONF
418         select GPIOLIB
419         select OF_GPIO
420         select REGMAP_MMIO
421         default SOC_CANAAN
422         help
423           Add support for the Canaan Kendryte K210 RISC-V SOC Field
424           Programmable IO Array (FPIOA) controller.
425
426 config PINCTRL_KEEMBAY
427         tristate "Pinctrl driver for Intel Keem Bay SoC"
428         depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
429         depends on HAS_IOMEM
430         select PINMUX
431         select PINCONF
432         select GENERIC_PINCONF
433         select GENERIC_PINCTRL_GROUPS
434         select GENERIC_PINMUX_FUNCTIONS
435         select GPIOLIB
436         select GPIOLIB_IRQCHIP
437         select GPIO_GENERIC
438         help
439           This selects pin control driver for the Intel Keembay SoC.
440           It provides pin config functions such as pullup, pulldown,
441           interrupt, drive strength, sec lock, schmitt trigger, slew
442           rate control and direction control. This module will be
443           called as pinctrl-keembay.
444
445 source "drivers/pinctrl/actions/Kconfig"
446 source "drivers/pinctrl/aspeed/Kconfig"
447 source "drivers/pinctrl/bcm/Kconfig"
448 source "drivers/pinctrl/berlin/Kconfig"
449 source "drivers/pinctrl/freescale/Kconfig"
450 source "drivers/pinctrl/intel/Kconfig"
451 source "drivers/pinctrl/mvebu/Kconfig"
452 source "drivers/pinctrl/nomadik/Kconfig"
453 source "drivers/pinctrl/nuvoton/Kconfig"
454 source "drivers/pinctrl/pxa/Kconfig"
455 source "drivers/pinctrl/qcom/Kconfig"
456 source "drivers/pinctrl/ralink/Kconfig"
457 source "drivers/pinctrl/renesas/Kconfig"
458 source "drivers/pinctrl/samsung/Kconfig"
459 source "drivers/pinctrl/spear/Kconfig"
460 source "drivers/pinctrl/sprd/Kconfig"
461 source "drivers/pinctrl/stm32/Kconfig"
462 source "drivers/pinctrl/sunxi/Kconfig"
463 source "drivers/pinctrl/tegra/Kconfig"
464 source "drivers/pinctrl/ti/Kconfig"
465 source "drivers/pinctrl/uniphier/Kconfig"
466 source "drivers/pinctrl/vt8500/Kconfig"
467 source "drivers/pinctrl/mediatek/Kconfig"
468 source "drivers/pinctrl/meson/Kconfig"
469 source "drivers/pinctrl/cirrus/Kconfig"
470 source "drivers/pinctrl/visconti/Kconfig"
471
472 config PINCTRL_XWAY
473         bool
474         depends on SOC_TYPE_XWAY
475         depends on PINCTRL_LANTIQ
476
477 config PINCTRL_TB10X
478         bool
479         depends on OF && ARC_PLAT_TB10X
480         select GPIOLIB
481
482 config PINCTRL_EQUILIBRIUM
483         tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
484         depends on OF && HAS_IOMEM
485         depends on X86 || COMPILE_TEST
486         select PINMUX
487         select PINCONF
488         select GPIOLIB
489         select GPIO_GENERIC
490         select GPIOLIB_IRQCHIP
491         select GENERIC_PINCONF
492         select GENERIC_PINCTRL_GROUPS
493         select GENERIC_PINMUX_FUNCTIONS
494
495         help
496           Equilibrium pinctrl driver is a pinctrl & GPIO driver for Intel Lightning
497           Mountain network processor SoC that supports both the linux GPIO and pin
498           control frameworks. It provides interfaces to setup pinmux, assign desired
499           pin functions, configure GPIO attributes for LGM SoC pins. Pinmux and
500           pinconf settings are retrieved from device tree.
501
502 endif