blktrace: remove unnessary stop block trace in 'blk_trace_shutdown'
[linux-block.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_DA850_PUPD
139         tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down 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           pull-up and pull-down 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 Y 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_EQUILIBRIUM
166         tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
167         depends on OF && HAS_IOMEM
168         depends on X86 || COMPILE_TEST
169         select PINMUX
170         select PINCONF
171         select GPIOLIB
172         select GPIO_GENERIC
173         select GPIOLIB_IRQCHIP
174         select GENERIC_PINCONF
175         select GENERIC_PINCTRL_GROUPS
176         select GENERIC_PINMUX_FUNCTIONS
177         help
178           Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
179           Mountain network processor SoC that supports both the GPIO and pin
180           control frameworks. It provides interfaces to setup pin muxing, assign
181           desired pin functions, configure GPIO attributes for LGM SoC pins.
182           Pin muxing and pin config settings are retrieved from device tree.
183
184 config PINCTRL_GEMINI
185         bool
186         depends on ARCH_GEMINI
187         default ARCH_GEMINI
188         select PINMUX
189         select GENERIC_PINCONF
190         select MFD_SYSCON
191
192 config PINCTRL_INGENIC
193         bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
194         default MACH_INGENIC
195         depends on OF
196         depends on MIPS || COMPILE_TEST
197         select GENERIC_PINCONF
198         select GENERIC_PINCTRL_GROUPS
199         select GENERIC_PINMUX_FUNCTIONS
200         select GPIOLIB
201         select GPIOLIB_IRQCHIP
202         select REGMAP_MMIO
203
204 config PINCTRL_K210
205         bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
206         depends on RISCV && SOC_CANAAN && OF
207         select GENERIC_PINMUX_FUNCTIONS
208         select GENERIC_PINCONF
209         select GPIOLIB
210         select OF_GPIO
211         select REGMAP_MMIO
212         default SOC_CANAAN
213         help
214           Add support for the Canaan Kendryte K210 RISC-V SOC Field
215           Programmable IO Array (FPIOA) controller.
216
217 config PINCTRL_KEEMBAY
218         tristate "Pinctrl driver for Intel Keem Bay SoC"
219         depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
220         depends on HAS_IOMEM
221         select PINMUX
222         select PINCONF
223         select GENERIC_PINCONF
224         select GENERIC_PINCTRL_GROUPS
225         select GENERIC_PINMUX_FUNCTIONS
226         select GPIOLIB
227         select GPIOLIB_IRQCHIP
228         select GPIO_GENERIC
229         help
230           This selects pin control driver for the Intel Keem Bay SoC.
231           It provides pin config functions such as pull-up, pull-down,
232           interrupt, drive strength, sec lock, Schmitt trigger, slew
233           rate control and direction control. This module will be
234           called as pinctrl-keembay.
235
236 config PINCTRL_LANTIQ
237         bool
238         depends on LANTIQ
239         select PINMUX
240         select PINCONF
241
242 config PINCTRL_FALCON
243         bool
244         depends on SOC_FALCON
245         depends on PINCTRL_LANTIQ
246
247 config PINCTRL_XWAY
248         bool
249         depends on SOC_TYPE_XWAY
250         depends on PINCTRL_LANTIQ
251
252 config PINCTRL_LPC18XX
253         bool "NXP LPC18XX/43XX SCU pinctrl driver"
254         depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
255         default ARCH_LPC18XX
256         select PINMUX
257         select GENERIC_PINCONF
258         help
259           Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
260
261 config PINCTRL_MAX77620
262         tristate "MAX77620/MAX20024 Pincontrol support"
263         depends on MFD_MAX77620 && OF
264         select PINMUX
265         select GENERIC_PINCONF
266         help
267           Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
268           This PMIC has 8 GPIO pins that work as GPIO as well as special
269           function in alternate mode. This driver also configure push-pull,
270           open drain, FPS slots etc.
271
272 config PINCTRL_MCP23S08_I2C
273         tristate
274         select REGMAP_I2C
275
276 config PINCTRL_MCP23S08_SPI
277         tristate
278         select REGMAP_SPI
279
280 config PINCTRL_MCP23S08
281         tristate "Microchip MCP23xxx I/O expander"
282         depends on SPI_MASTER || I2C
283         select GPIOLIB
284         select GPIOLIB_IRQCHIP
285         select GENERIC_PINCONF
286         select PINCTRL_MCP23S08_I2C if I2C
287         select PINCTRL_MCP23S08_SPI if SPI_MASTER
288         help
289           SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
290           MCP23008 / MCP23017 / MCP23018 I/O expanders.
291           This provides a GPIO interface supporting inputs and outputs and a
292           corresponding interrupt-controller.
293
294 config PINCTRL_MICROCHIP_SGPIO
295         tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
296         depends on OF
297         depends on HAS_IOMEM
298         select GPIOLIB
299         select GPIOLIB_IRQCHIP
300         select GENERIC_PINCONF
301         select GENERIC_PINCTRL_GROUPS
302         select GENERIC_PINMUX_FUNCTIONS
303         select OF_GPIO
304         help
305           Support for the serial GPIO interface used on Microsemi and
306           Microchip SoCs. By using a serial interface, the SIO
307           controller significantly extends the number of available
308           GPIOs with a minimum number of additional pins on the
309           device. The primary purpose of the SIO controller is to
310           connect control signals from SFP modules and to act as an
311           LED controller.
312
313           If compiled as a module, the module name will be
314           pinctrl-microchip-sgpio.
315
316 config PINCTRL_OCELOT
317         tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
318         depends on OF
319         depends on HAS_IOMEM
320         select GPIOLIB
321         select GPIOLIB_IRQCHIP
322         select GENERIC_PINCONF
323         select GENERIC_PINCTRL_GROUPS
324         select GENERIC_PINMUX_FUNCTIONS
325         select OF_GPIO
326         select REGMAP_MMIO
327
328 config PINCTRL_OXNAS
329         bool
330         depends on OF
331         select PINMUX
332         select PINCONF
333         select GENERIC_PINCONF
334         select GPIOLIB
335         select OF_GPIO
336         select GPIOLIB_IRQCHIP
337         select MFD_SYSCON
338
339 config PINCTRL_PALMAS
340         tristate "Pinctrl driver for the PALMAS Series MFD devices"
341         depends on OF && MFD_PALMAS
342         select PINMUX
343         select GENERIC_PINCONF
344         help
345           Palmas device supports the configuration of pins for different
346           functionality. This driver supports the pinmux, push-pull and
347           open drain configuration for the Palmas series devices like
348           TPS65913, TPS80036 etc.
349
350 config PINCTRL_PIC32
351         bool "Microchip PIC32 pin controller driver"
352         depends on OF
353         depends on MACH_PIC32
354         select PINMUX
355         select GENERIC_PINCONF
356         select GPIOLIB_IRQCHIP
357         select OF_GPIO
358         help
359           This is the pin controller and gpio driver for Microchip PIC32
360           microcontrollers. This option is selected automatically when specific
361           machine and arch are selected to build.
362
363 config PINCTRL_PIC32MZDA
364         def_bool y if PIC32MZDA
365         select PINCTRL_PIC32
366
367 config PINCTRL_PISTACHIO
368         bool "IMG Pistachio SoC pinctrl driver"
369         depends on OF && (MIPS || COMPILE_TEST)
370         depends on GPIOLIB
371         select PINMUX
372         select GENERIC_PINCONF
373         select GPIOLIB_IRQCHIP
374         select OF_GPIO
375         help
376           This support pinctrl and GPIO driver for IMG Pistachio SoC.
377
378 config PINCTRL_RK805
379         tristate "Pinctrl and GPIO driver for RK805 PMIC"
380         depends on MFD_RK808
381         select GPIOLIB
382         select PINMUX
383         select GENERIC_PINCONF
384         help
385           This selects the pinctrl driver for RK805.
386
387 config PINCTRL_ROCKCHIP
388         tristate "Rockchip gpio and pinctrl driver"
389         depends on ARCH_ROCKCHIP || COMPILE_TEST
390         depends on OF
391         select GPIOLIB
392         select PINMUX
393         select GENERIC_PINCONF
394         select GENERIC_IRQ_CHIP
395         select MFD_SYSCON
396         select OF_GPIO
397         default ARCH_ROCKCHIP
398         help
399           This support pinctrl and GPIO driver for Rockchip SoCs.
400
401 config PINCTRL_SINGLE
402         tristate "One-register-per-pin type device tree based pinctrl driver"
403         depends on OF
404         depends on HAS_IOMEM
405         select GENERIC_PINCTRL_GROUPS
406         select GENERIC_PINMUX_FUNCTIONS
407         select GENERIC_PINCONF
408         help
409           This selects the device tree based generic pinctrl driver.
410
411 config PINCTRL_ST
412         bool
413         depends on OF
414         select PINMUX
415         select PINCONF
416         select GPIOLIB_IRQCHIP
417
418 config PINCTRL_STARFIVE
419         tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC"
420         depends on SOC_STARFIVE || COMPILE_TEST
421         depends on OF
422         default SOC_STARFIVE
423         select GENERIC_PINCTRL_GROUPS
424         select GENERIC_PINMUX_FUNCTIONS
425         select GENERIC_PINCONF
426         select GPIOLIB
427         select GPIOLIB_IRQCHIP
428         select OF_GPIO
429         help
430           Say yes here to support pin control on the StarFive JH7100 SoC.
431           This also provides an interface to the GPIO pins not used by other
432           peripherals supporting inputs, outputs, configuring pull-up/pull-down
433           and interrupts on input changes.
434
435 config PINCTRL_STMFX
436         tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
437         depends on I2C
438         depends on OF_GPIO
439         select GENERIC_PINCONF
440         select GPIOLIB_IRQCHIP
441         select MFD_STMFX
442         help
443           Driver for STMicroelectronics Multi-Function eXpander (STMFX)
444           GPIO expander.
445           This provides a GPIO interface supporting inputs and outputs,
446           and configuring push-pull, open-drain, and can also be used as
447           interrupt-controller.
448
449 config PINCTRL_SX150X
450         bool "Semtech SX150x I2C GPIO expander pinctrl driver"
451         depends on I2C=y
452         select PINMUX
453         select PINCONF
454         select GENERIC_PINCONF
455         select GPIOLIB
456         select GPIOLIB_IRQCHIP
457         select REGMAP
458         help
459           Say Y here to provide support for Semtech SX150x-series I2C
460           GPIO expanders as pinctrl module.
461           Compatible models include:
462           - 8 bits:  sx1508q, sx1502q
463           - 16 bits: sx1509q, sx1506q
464
465 config PINCTRL_TB10X
466         bool
467         depends on OF && ARC_PLAT_TB10X
468         select GPIOLIB
469
470 config PINCTRL_THUNDERBAY
471         tristate "Generic pinctrl and GPIO driver for Intel Thunder Bay SoC"
472         depends on ARCH_THUNDERBAY || (ARM64 && COMPILE_TEST)
473         depends on HAS_IOMEM
474         select PINMUX
475         select PINCONF
476         select GENERIC_PINCONF
477         select GENERIC_PINCTRL_GROUPS
478         select GENERIC_PINMUX_FUNCTIONS
479         select GPIOLIB
480         select GPIOLIB_IRQCHIP
481         select GPIO_GENERIC
482         help
483           This selects pin control driver for the Intel Thunder Bay SoC.
484           It provides pin config functions such as pull-up, pull-down,
485           interrupt, drive strength, sec lock, Schmitt trigger, slew
486           rate control and direction control. This module will be
487           called as pinctrl-thunderbay.
488
489 config PINCTRL_ZYNQ
490         bool "Pinctrl driver for Xilinx Zynq"
491         depends on ARCH_ZYNQ
492         select PINMUX
493         select GENERIC_PINCONF
494         help
495           This selects the pinctrl driver for Xilinx Zynq.
496
497 config PINCTRL_ZYNQMP
498         tristate "Pinctrl driver for Xilinx ZynqMP"
499         depends on ZYNQMP_FIRMWARE
500         select PINMUX
501         select GENERIC_PINCONF
502         default ZYNQMP_FIRMWARE
503         help
504           This selects the pinctrl driver for Xilinx ZynqMP platform.
505           This driver will query the pin information from the firmware
506           and allow configuring the pins.
507           Configuration can include the mux function to select on those
508           pin(s)/group(s), and various pin configuration parameters
509           such as pull-up, slew rate, etc.
510           This driver can also be built as a module. If so, the module
511           will be called pinctrl-zynqmp.
512
513 source "drivers/pinctrl/actions/Kconfig"
514 source "drivers/pinctrl/aspeed/Kconfig"
515 source "drivers/pinctrl/bcm/Kconfig"
516 source "drivers/pinctrl/berlin/Kconfig"
517 source "drivers/pinctrl/cirrus/Kconfig"
518 source "drivers/pinctrl/freescale/Kconfig"
519 source "drivers/pinctrl/intel/Kconfig"
520 source "drivers/pinctrl/mediatek/Kconfig"
521 source "drivers/pinctrl/meson/Kconfig"
522 source "drivers/pinctrl/mvebu/Kconfig"
523 source "drivers/pinctrl/nomadik/Kconfig"
524 source "drivers/pinctrl/nuvoton/Kconfig"
525 source "drivers/pinctrl/pxa/Kconfig"
526 source "drivers/pinctrl/qcom/Kconfig"
527 source "drivers/pinctrl/ralink/Kconfig"
528 source "drivers/pinctrl/renesas/Kconfig"
529 source "drivers/pinctrl/samsung/Kconfig"
530 source "drivers/pinctrl/spear/Kconfig"
531 source "drivers/pinctrl/sprd/Kconfig"
532 source "drivers/pinctrl/stm32/Kconfig"
533 source "drivers/pinctrl/sunplus/Kconfig"
534 source "drivers/pinctrl/sunxi/Kconfig"
535 source "drivers/pinctrl/tegra/Kconfig"
536 source "drivers/pinctrl/ti/Kconfig"
537 source "drivers/pinctrl/uniphier/Kconfig"
538 source "drivers/pinctrl/visconti/Kconfig"
539 source "drivers/pinctrl/vt8500/Kconfig"
540
541 endif