xref: /linux/drivers/pinctrl/Kconfig (revision 07963c02067ffc04105a37ebc889392faee90164)
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# PINCTRL infrastructure and drivers
4#
5
6menuconfig PINCTRL
7	bool "Pin controllers"
8
9if PINCTRL
10
11config GENERIC_PINCTRL_GROUPS
12	bool
13
14config PINMUX
15	bool "Support pin multiplexing controllers" if COMPILE_TEST
16
17config GENERIC_PINMUX_FUNCTIONS
18	bool
19	select PINMUX
20
21config PINCONF
22	bool "Support pin configuration controllers" if COMPILE_TEST
23
24config GENERIC_PINCONF
25	bool
26	select PINCONF
27
28config 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
34config 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
52config 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
68config 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
79config 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
90config 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
102config 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
116config 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
130config PINCTRL_AW9523
131	tristate "Awinic AW9523/AW9523B I2C GPIO expander pinctrl driver"
132	depends on OF && I2C
133	select PINMUX
134	select PINCONF
135	select GENERIC_PINCONF
136	select GPIOLIB
137	select GPIOLIB_IRQCHIP
138	select REGMAP
139	select REGMAP_I2C
140	help
141	  The Awinic AW9523/AW9523B is a multi-function I2C GPIO
142	  expander with PWM functionality. This driver bundles a
143	  pinctrl driver to select the function muxing and a GPIO
144	  driver to handle GPIO, when the GPIO function is selected.
145
146	  Say yes to enable pinctrl and GPIO support for the AW9523(B).
147
148config PINCTRL_BM1880
149	bool "Bitmain BM1880 Pinctrl driver"
150	depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
151	default ARCH_BITMAIN
152	select PINMUX
153	help
154	  Pinctrl driver for Bitmain BM1880 SoC.
155
156config PINCTRL_CY8C95X0
157	tristate "Cypress CY8C95X0 I2C pinctrl and GPIO driver"
158	depends on I2C
159	select GPIOLIB
160	select GPIOLIB_IRQCHIP
161	select PINMUX
162	select PINCONF
163	select GENERIC_PINCONF
164	select REGMAP_I2C
165	help
166	  Support for 20/40/60 pin Cypress Cy8C95x0 pinctrl/gpio I2C expander.
167	  This driver can also be built as a module. If so, the module will be
168	  called pinctrl-cy8c95x0.
169
170config PINCTRL_DA850_PUPD
171	tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"
172	depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
173	select PINCONF
174	select GENERIC_PINCONF
175	help
176	  Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
177	  pull-up and pull-down pin groups.
178
179config PINCTRL_DA9062
180	tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
181	depends on MFD_DA9062
182	select GPIOLIB
183	help
184	  The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
185	  different functions. This driver bundles a pinctrl driver to select the
186	  function muxing and a GPIO driver to handle the GPIO when the GPIO
187	  function is selected.
188
189	  Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
190
191config PINCTRL_DIGICOLOR
192	bool
193	depends on ARCH_DIGICOLOR || COMPILE_TEST
194	select PINMUX
195	select GENERIC_PINCONF
196
197config PINCTRL_EP93XX
198	bool
199	depends on ARCH_EP93XX || COMPILE_TEST
200	select PINMUX
201	select GENERIC_PINCONF
202	select MFD_SYSCON
203
204config PINCTRL_EQUILIBRIUM
205	tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
206	depends on OF && HAS_IOMEM
207	depends on X86 || COMPILE_TEST
208	select PINMUX
209	select PINCONF
210	select GPIOLIB
211	select GPIO_GENERIC
212	select GPIOLIB_IRQCHIP
213	select GENERIC_PINCONF
214	select GENERIC_PINCTRL_GROUPS
215	select GENERIC_PINMUX_FUNCTIONS
216	help
217	  Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
218	  Mountain network processor SoC that supports both the GPIO and pin
219	  control frameworks. It provides interfaces to setup pin muxing, assign
220	  desired pin functions, configure GPIO attributes for LGM SoC pins.
221	  Pin muxing and pin config settings are retrieved from device tree.
222
223config PINCTRL_EYEQ5
224	bool "Mobileye EyeQ5 pinctrl driver"
225	depends on OF
226	depends on MACH_EYEQ5 || COMPILE_TEST
227	select PINMUX
228	select GENERIC_PINCONF
229	select AUXILIARY_BUS
230	default MACH_EYEQ5
231	help
232	  Pin controller driver for the Mobileye EyeQ5 platform. It does both
233	  pin config & pin muxing. It does not handle GPIO.
234
235	  Pin muxing supports two functions for each pin: first is GPIO, second
236	  is pin-dependent. Pin config is about bias & drive strength.
237
238config PINCTRL_GEMINI
239	bool
240	depends on ARCH_GEMINI
241	default ARCH_GEMINI
242	select PINMUX
243	select GENERIC_PINCONF
244	select MFD_SYSCON
245
246config PINCTRL_INGENIC
247	bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
248	default MACH_INGENIC
249	depends on OF
250	depends on MIPS || COMPILE_TEST
251	select GENERIC_PINCONF
252	select GENERIC_PINCTRL_GROUPS
253	select GENERIC_PINMUX_FUNCTIONS
254	select GPIOLIB
255	select GPIOLIB_IRQCHIP
256	select REGMAP_MMIO
257
258config PINCTRL_K210
259	bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
260	depends on RISCV && SOC_CANAAN_K210 && OF
261	select GENERIC_PINMUX_FUNCTIONS
262	select GENERIC_PINCONF
263	select GPIOLIB
264	select OF_GPIO
265	select REGMAP_MMIO
266	default SOC_CANAAN_K210
267	help
268	  Add support for the Canaan Kendryte K210 RISC-V SOC Field
269	  Programmable IO Array (FPIOA) controller.
270
271config PINCTRL_K230
272	bool "Pinctrl driver for the Canaan Kendryte K230 SoC"
273	depends on OF
274	select GENERIC_PINCTRL_GROUPS
275	select GENERIC_PINMUX_FUNCTIONS
276	select GENERIC_PINCONF
277	select REGMAP_MMIO
278	help
279	  Add support for the Canaan Kendryte K230 RISC-V SOC pin controller.
280
281config PINCTRL_KEEMBAY
282	tristate "Pinctrl driver for Intel Keem Bay SoC"
283	depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
284	depends on HAS_IOMEM
285	select PINMUX
286	select PINCONF
287	select GENERIC_PINCONF
288	select GENERIC_PINCTRL_GROUPS
289	select GENERIC_PINMUX_FUNCTIONS
290	select GPIOLIB
291	select GPIOLIB_IRQCHIP
292	select GPIO_GENERIC
293	help
294	  This selects pin control driver for the Intel Keem Bay SoC.
295	  It provides pin config functions such as pull-up, pull-down,
296	  interrupt, drive strength, sec lock, Schmitt trigger, slew
297	  rate control and direction control. This module will be
298	  called as pinctrl-keembay.
299
300config PINCTRL_LANTIQ
301	bool
302	depends on LANTIQ
303	select PINMUX
304	select PINCONF
305
306config PINCTRL_FALCON
307	bool
308	depends on SOC_FALCON
309	depends on PINCTRL_LANTIQ
310
311config PINCTRL_LOONGSON2
312	tristate "Pinctrl driver for the Loongson-2 SoC"
313	depends on OF && (LOONGARCH || COMPILE_TEST)
314	select PINMUX
315	select GENERIC_PINCONF
316	help
317	 This selects pin control driver for the Loongson-2 SoC. It
318	 provides pin config functions multiplexing.  GPIO pin pull-up,
319	 pull-down functions are not supported. Say yes to enable
320	 pinctrl for Loongson-2 SoC.
321
322config PINCTRL_XWAY
323	bool
324	depends on SOC_TYPE_XWAY
325	depends on PINCTRL_LANTIQ
326
327config PINCTRL_LPC18XX
328	bool "NXP LPC18XX/43XX SCU pinctrl driver"
329	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
330	default ARCH_LPC18XX
331	select PINMUX
332	select GENERIC_PINCONF
333	help
334	  Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
335
336config PINCTRL_MAX77620
337	tristate "MAX77620/MAX20024 Pincontrol support"
338	depends on MFD_MAX77620 && OF
339	select PINMUX
340	select GENERIC_PINCONF
341	help
342	  Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
343	  This PMIC has 8 GPIO pins that work as GPIO as well as special
344	  function in alternate mode. This driver also configure push-pull,
345	  open drain, FPS slots etc.
346
347config PINCTRL_MCP23S08_I2C
348	tristate
349	select REGMAP_I2C
350
351config PINCTRL_MCP23S08_SPI
352	tristate
353	select REGMAP_SPI
354
355config PINCTRL_MCP23S08
356	tristate "Microchip MCP23xxx I/O expander"
357	depends on SPI_MASTER || I2C
358	select GPIOLIB
359	select GPIOLIB_IRQCHIP
360	select GENERIC_PINCONF
361	select PINCTRL_MCP23S08_I2C if I2C
362	select PINCTRL_MCP23S08_SPI if SPI_MASTER
363	help
364	  SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
365	  MCP23008 / MCP23017 / MCP23018 I/O expanders.
366	  This provides a GPIO interface supporting inputs and outputs and a
367	  corresponding interrupt-controller.
368
369config PINCTRL_MICROCHIP_SGPIO
370	tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
371	depends on OF
372	depends on HAS_IOMEM
373	select GPIOLIB
374	select GPIOLIB_IRQCHIP
375	select GENERIC_PINCONF
376	select GENERIC_PINCTRL_GROUPS
377	select GENERIC_PINMUX_FUNCTIONS
378	select OF_GPIO
379	help
380	  Support for the serial GPIO interface used on Microsemi and
381	  Microchip SoCs. By using a serial interface, the SIO
382	  controller significantly extends the number of available
383	  GPIOs with a minimum number of additional pins on the
384	  device. The primary purpose of the SIO controller is to
385	  connect control signals from SFP modules and to act as an
386	  LED controller.
387
388	  If compiled as a module, the module name will be
389	  pinctrl-microchip-sgpio.
390
391config PINCTRL_OCELOT
392	tristate "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
393	depends on OF
394	depends on HAS_IOMEM
395	select GPIOLIB
396	select GPIOLIB_IRQCHIP
397	select GENERIC_PINCONF
398	select GENERIC_PINCTRL_GROUPS
399	select GENERIC_PINMUX_FUNCTIONS
400	select OF_GPIO
401	select REGMAP_MMIO
402	help
403	  Support for the internal GPIO interfaces on Microsemi Ocelot and
404	  Jaguar2 SoCs.
405
406	  If conpiled as a module, the module name will be pinctrl-ocelot.
407
408config PINCTRL_PALMAS
409	tristate "Pinctrl driver for the PALMAS Series MFD devices"
410	depends on OF && MFD_PALMAS
411	select PINMUX
412	select GENERIC_PINCONF
413	help
414	  Palmas device supports the configuration of pins for different
415	  functionality. This driver supports the pinmux, push-pull and
416	  open drain configuration for the Palmas series devices like
417	  TPS65913, TPS80036 etc.
418
419config PINCTRL_PEF2256
420	tristate "Lantiq PEF2256 (FALC56) pin controller driver"
421	depends on OF && FRAMER_PEF2256
422	select PINMUX
423	select PINCONF
424	select GENERIC_PINCONF
425	help
426	  This option enables the pin controller support for the Lantiq PEF2256
427	  framer, also known as FALC56.
428
429	  If unsure, say N.
430
431	  To compile this driver as a module, choose M here: the
432	  module will be called pinctrl-pef2256.
433
434config PINCTRL_PIC32
435	bool "Microchip PIC32 pin controller driver"
436	depends on OF
437	depends on MACH_PIC32
438	select PINMUX
439	select GENERIC_PINCONF
440	select GPIOLIB_IRQCHIP
441	select OF_GPIO
442	help
443	  This is the pin controller and gpio driver for Microchip PIC32
444	  microcontrollers. This option is selected automatically when specific
445	  machine and arch are selected to build.
446
447config PINCTRL_PIC32MZDA
448	def_bool y if PIC32MZDA
449	select PINCTRL_PIC32
450
451config PINCTRL_PISTACHIO
452	bool "IMG Pistachio SoC pinctrl driver"
453	depends on OF && (MIPS || COMPILE_TEST)
454	depends on GPIOLIB
455	select PINMUX
456	select GENERIC_PINCONF
457	select GPIOLIB_IRQCHIP
458	select OF_GPIO
459	help
460	  This support pinctrl and GPIO driver for IMG Pistachio SoC.
461
462config PINCTRL_RK805
463	tristate "Pinctrl and GPIO driver for RK805 PMIC"
464	depends on MFD_RK8XX
465	select GPIOLIB
466	select PINMUX
467	select GENERIC_PINCONF
468	help
469	  This selects the pinctrl driver for RK805.
470
471config PINCTRL_ROCKCHIP
472	tristate "Rockchip gpio and pinctrl driver"
473	depends on ARCH_ROCKCHIP || COMPILE_TEST
474	depends on OF
475	select GPIOLIB
476	select PINMUX
477	select GENERIC_PINCONF
478	select GENERIC_IRQ_CHIP
479	select MFD_SYSCON
480	select OF_GPIO
481	default ARCH_ROCKCHIP
482	help
483          This support pinctrl and GPIO driver for Rockchip SoCs.
484
485config PINCTRL_SCMI
486	tristate "Pinctrl driver using SCMI protocol interface"
487	depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
488	select PINMUX
489	select GENERIC_PINCONF
490	help
491	  This driver provides support for pinctrl which is controlled
492	  by firmware that implements the SCMI interface.
493	  It uses SCMI Message Protocol to interact with the
494	  firmware providing all the pinctrl controls.
495
496config PINCTRL_SINGLE
497	tristate "One-register-per-pin type device tree based pinctrl driver"
498	depends on OF
499	depends on HAS_IOMEM
500	select GENERIC_PINCTRL_GROUPS
501	select GENERIC_PINMUX_FUNCTIONS
502	select GENERIC_PINCONF
503	help
504	  This selects the device tree based generic pinctrl driver.
505
506config PINCTRL_ST
507	bool
508	depends on OF
509	select PINMUX
510	select PINCONF
511	select GPIOLIB_IRQCHIP
512
513config PINCTRL_STMFX
514	tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
515	depends on I2C
516	depends on OF_GPIO
517	select GENERIC_PINCONF
518	select GPIOLIB_IRQCHIP
519	select MFD_STMFX
520	help
521	  Driver for STMicroelectronics Multi-Function eXpander (STMFX)
522	  GPIO expander.
523	  This provides a GPIO interface supporting inputs and outputs,
524	  and configuring push-pull, open-drain, and can also be used as
525	  interrupt-controller.
526
527config PINCTRL_SX150X
528	bool "Semtech SX150x I2C GPIO expander pinctrl driver"
529	depends on I2C=y
530	select PINMUX
531	select PINCONF
532	select GENERIC_PINCONF
533	select GPIOLIB
534	select GPIOLIB_IRQCHIP
535	select REGMAP
536	help
537	  Say Y here to provide support for Semtech SX150x-series I2C
538	  GPIO expanders as pinctrl module.
539	  Compatible models include:
540	  - 8 bits:  sx1508q, sx1502q
541	  - 16 bits: sx1509q, sx1506q
542
543config PINCTRL_TB10X
544	bool
545	depends on OF && ARC_PLAT_TB10X
546	select GPIOLIB
547
548config PINCTRL_TPS6594
549	tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
550	depends on OF && MFD_TPS6594
551	default MFD_TPS6594
552	select PINMUX
553	select GPIOLIB
554	select REGMAP
555	select GPIO_REGMAP
556	select GENERIC_PINCONF
557	help
558	  Say Y to select the pinmuxing and GPIOs driver for the TPS6594
559	  PMICs chip family.
560
561	  This driver can also be built as a module
562	  called tps6594-pinctrl.
563
564config PINCTRL_TH1520
565	tristate "Pinctrl driver for the T-Head TH1520 SoC"
566	depends on ARCH_THEAD || COMPILE_TEST
567	select GENERIC_PINMUX_FUNCTIONS
568	select GENERIC_PINCONF
569	select PINMUX
570	help
571	  This is the driver for the pin controller blocks on the
572	  T-Head TH1520 SoC.
573
574	  This driver is needed for RISC-V development boards like
575	  the BeagleV Ahead and the LicheePi 4A.
576
577config PINCTRL_ZYNQ
578	bool "Pinctrl driver for Xilinx Zynq"
579	depends on ARCH_ZYNQ
580	select PINMUX
581	select GENERIC_PINCONF
582	help
583	  This selects the pinctrl driver for Xilinx Zynq.
584
585config PINCTRL_ZYNQMP
586	tristate "Pinctrl driver for Xilinx ZynqMP"
587	depends on ZYNQMP_FIRMWARE
588	select PINMUX
589	select GENERIC_PINCONF
590	default ZYNQMP_FIRMWARE
591	help
592	  This selects the pinctrl driver for Xilinx ZynqMP platform.
593	  This driver will query the pin information from the firmware
594	  and allow configuring the pins.
595	  Configuration can include the mux function to select on those
596	  pin(s)/group(s), and various pin configuration parameters
597	  such as pull-up, slew rate, etc.
598	  This driver can also be built as a module. If so, the module
599	  will be called pinctrl-zynqmp.
600
601config PINCTRL_MLXBF3
602	tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
603	depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
604	select PINMUX
605	select GPIOLIB
606	select GPIOLIB_IRQCHIP
607	help
608	  Say Y to select the pinctrl driver for BlueField-3 SoCs.
609	  This pin controller allows selecting the mux function for
610	  each pin. This driver can also be built as a module called
611	  pinctrl-mlxbf3.
612
613source "drivers/pinctrl/actions/Kconfig"
614source "drivers/pinctrl/aspeed/Kconfig"
615source "drivers/pinctrl/bcm/Kconfig"
616source "drivers/pinctrl/berlin/Kconfig"
617source "drivers/pinctrl/cirrus/Kconfig"
618source "drivers/pinctrl/freescale/Kconfig"
619source "drivers/pinctrl/intel/Kconfig"
620source "drivers/pinctrl/mediatek/Kconfig"
621source "drivers/pinctrl/meson/Kconfig"
622source "drivers/pinctrl/mvebu/Kconfig"
623source "drivers/pinctrl/nomadik/Kconfig"
624source "drivers/pinctrl/nuvoton/Kconfig"
625source "drivers/pinctrl/nxp/Kconfig"
626source "drivers/pinctrl/pxa/Kconfig"
627source "drivers/pinctrl/qcom/Kconfig"
628source "drivers/pinctrl/realtek/Kconfig"
629source "drivers/pinctrl/renesas/Kconfig"
630source "drivers/pinctrl/samsung/Kconfig"
631source "drivers/pinctrl/sophgo/Kconfig"
632source "drivers/pinctrl/spear/Kconfig"
633source "drivers/pinctrl/sprd/Kconfig"
634source "drivers/pinctrl/starfive/Kconfig"
635source "drivers/pinctrl/stm32/Kconfig"
636source "drivers/pinctrl/sunplus/Kconfig"
637source "drivers/pinctrl/sunxi/Kconfig"
638source "drivers/pinctrl/tegra/Kconfig"
639source "drivers/pinctrl/ti/Kconfig"
640source "drivers/pinctrl/uniphier/Kconfig"
641source "drivers/pinctrl/visconti/Kconfig"
642source "drivers/pinctrl/vt8500/Kconfig"
643
644endif
645