xref: /openbmc/linux/drivers/pinctrl/Kconfig (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
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
538