scsi: core: Move scsi_host_busy() out of host lock if it is for per-command
[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_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_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_RK8XX
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_ZYNQ
473         bool "Pinctrl driver for Xilinx Zynq"
474         depends on ARCH_ZYNQ
475         select PINMUX
476         select GENERIC_PINCONF
477         help
478           This selects the pinctrl driver for Xilinx Zynq.
479
480 config PINCTRL_ZYNQMP
481         tristate "Pinctrl driver for Xilinx ZynqMP"
482         depends on ZYNQMP_FIRMWARE
483         select PINMUX
484         select GENERIC_PINCONF
485         default ZYNQMP_FIRMWARE
486         help
487           This selects the pinctrl driver for Xilinx ZynqMP platform.
488           This driver will query the pin information from the firmware
489           and allow configuring the pins.
490           Configuration can include the mux function to select on those
491           pin(s)/group(s), and various pin configuration parameters
492           such as pull-up, slew rate, etc.
493           This driver can also be built as a module. If so, the module
494           will be called pinctrl-zynqmp.
495
496 config PINCTRL_MLXBF3
497         tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
498         depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
499         select PINMUX
500         select GPIOLIB
501         select GPIOLIB_IRQCHIP
502         help
503           Say Y to select the pinctrl driver for BlueField-3 SoCs.
504           This pin controller allows selecting the mux function for
505           each pin. This driver can also be built as a module called
506           pinctrl-mlxbf3.
507
508 source "drivers/pinctrl/actions/Kconfig"
509 source "drivers/pinctrl/aspeed/Kconfig"
510 source "drivers/pinctrl/bcm/Kconfig"
511 source "drivers/pinctrl/berlin/Kconfig"
512 source "drivers/pinctrl/cirrus/Kconfig"
513 source "drivers/pinctrl/freescale/Kconfig"
514 source "drivers/pinctrl/intel/Kconfig"
515 source "drivers/pinctrl/mediatek/Kconfig"
516 source "drivers/pinctrl/meson/Kconfig"
517 source "drivers/pinctrl/mvebu/Kconfig"
518 source "drivers/pinctrl/nomadik/Kconfig"
519 source "drivers/pinctrl/nuvoton/Kconfig"
520 source "drivers/pinctrl/nxp/Kconfig"
521 source "drivers/pinctrl/pxa/Kconfig"
522 source "drivers/pinctrl/qcom/Kconfig"
523 source "drivers/pinctrl/renesas/Kconfig"
524 source "drivers/pinctrl/samsung/Kconfig"
525 source "drivers/pinctrl/spear/Kconfig"
526 source "drivers/pinctrl/sprd/Kconfig"
527 source "drivers/pinctrl/starfive/Kconfig"
528 source "drivers/pinctrl/stm32/Kconfig"
529 source "drivers/pinctrl/sunplus/Kconfig"
530 source "drivers/pinctrl/sunxi/Kconfig"
531 source "drivers/pinctrl/tegra/Kconfig"
532 source "drivers/pinctrl/ti/Kconfig"
533 source "drivers/pinctrl/uniphier/Kconfig"
534 source "drivers/pinctrl/visconti/Kconfig"
535 source "drivers/pinctrl/vt8500/Kconfig"
536
537 endif