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