xref: /linux-6.15/drivers/pinctrl/Kconfig (revision 035f9007)
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_GEMINI
224	bool
225	depends on ARCH_GEMINI
226	default ARCH_GEMINI
227	select PINMUX
228	select GENERIC_PINCONF
229	select MFD_SYSCON
230
231config PINCTRL_INGENIC
232	bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
233	default MACH_INGENIC
234	depends on OF
235	depends on MIPS || COMPILE_TEST
236	select GENERIC_PINCONF
237	select GENERIC_PINCTRL_GROUPS
238	select GENERIC_PINMUX_FUNCTIONS
239	select GPIOLIB
240	select GPIOLIB_IRQCHIP
241	select REGMAP_MMIO
242
243config PINCTRL_K210
244	bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
245	depends on RISCV && SOC_CANAAN_K210 && OF
246	select GENERIC_PINMUX_FUNCTIONS
247	select GENERIC_PINCONF
248	select GPIOLIB
249	select OF_GPIO
250	select REGMAP_MMIO
251	default SOC_CANAAN_K210
252	help
253	  Add support for the Canaan Kendryte K210 RISC-V SOC Field
254	  Programmable IO Array (FPIOA) controller.
255
256config PINCTRL_KEEMBAY
257	tristate "Pinctrl driver for Intel Keem Bay SoC"
258	depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
259	depends on HAS_IOMEM
260	select PINMUX
261	select PINCONF
262	select GENERIC_PINCONF
263	select GENERIC_PINCTRL_GROUPS
264	select GENERIC_PINMUX_FUNCTIONS
265	select GPIOLIB
266	select GPIOLIB_IRQCHIP
267	select GPIO_GENERIC
268	help
269	  This selects pin control driver for the Intel Keem Bay SoC.
270	  It provides pin config functions such as pull-up, pull-down,
271	  interrupt, drive strength, sec lock, Schmitt trigger, slew
272	  rate control and direction control. This module will be
273	  called as pinctrl-keembay.
274
275config PINCTRL_LANTIQ
276	bool
277	depends on LANTIQ
278	select PINMUX
279	select PINCONF
280
281config PINCTRL_FALCON
282	bool
283	depends on SOC_FALCON
284	depends on PINCTRL_LANTIQ
285
286config PINCTRL_LOONGSON2
287	tristate "Pinctrl driver for the Loongson-2 SoC"
288	depends on OF && (LOONGARCH || COMPILE_TEST)
289	select PINMUX
290	select GENERIC_PINCONF
291	help
292	 This selects pin control driver for the Loongson-2 SoC. It
293	 provides pin config functions multiplexing.  GPIO pin pull-up,
294	 pull-down functions are not supported. Say yes to enable
295	 pinctrl for Loongson-2 SoC.
296
297config PINCTRL_XWAY
298	bool
299	depends on SOC_TYPE_XWAY
300	depends on PINCTRL_LANTIQ
301
302config PINCTRL_LPC18XX
303	bool "NXP LPC18XX/43XX SCU pinctrl driver"
304	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
305	default ARCH_LPC18XX
306	select PINMUX
307	select GENERIC_PINCONF
308	help
309	  Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
310
311config PINCTRL_MAX77620
312	tristate "MAX77620/MAX20024 Pincontrol support"
313	depends on MFD_MAX77620 && OF
314	select PINMUX
315	select GENERIC_PINCONF
316	help
317	  Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
318	  This PMIC has 8 GPIO pins that work as GPIO as well as special
319	  function in alternate mode. This driver also configure push-pull,
320	  open drain, FPS slots etc.
321
322config PINCTRL_MCP23S08_I2C
323	tristate
324	select REGMAP_I2C
325
326config PINCTRL_MCP23S08_SPI
327	tristate
328	select REGMAP_SPI
329
330config PINCTRL_MCP23S08
331	tristate "Microchip MCP23xxx I/O expander"
332	depends on SPI_MASTER || I2C
333	select GPIOLIB
334	select GPIOLIB_IRQCHIP
335	select GENERIC_PINCONF
336	select PINCTRL_MCP23S08_I2C if I2C
337	select PINCTRL_MCP23S08_SPI if SPI_MASTER
338	help
339	  SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
340	  MCP23008 / MCP23017 / MCP23018 I/O expanders.
341	  This provides a GPIO interface supporting inputs and outputs and a
342	  corresponding interrupt-controller.
343
344config PINCTRL_MICROCHIP_SGPIO
345	tristate "Pinctrl driver for Microsemi/Microchip Serial GPIO"
346	depends on OF
347	depends on HAS_IOMEM
348	select GPIOLIB
349	select GPIOLIB_IRQCHIP
350	select GENERIC_PINCONF
351	select GENERIC_PINCTRL_GROUPS
352	select GENERIC_PINMUX_FUNCTIONS
353	select OF_GPIO
354	help
355	  Support for the serial GPIO interface used on Microsemi and
356	  Microchip SoCs. By using a serial interface, the SIO
357	  controller significantly extends the number of available
358	  GPIOs with a minimum number of additional pins on the
359	  device. The primary purpose of the SIO controller is to
360	  connect control signals from SFP modules and to act as an
361	  LED controller.
362
363	  If compiled as a module, the module name will be
364	  pinctrl-microchip-sgpio.
365
366config PINCTRL_OCELOT
367	tristate "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	help
378	  Support for the internal GPIO interfaces on Microsemi Ocelot and
379	  Jaguar2 SoCs.
380
381	  If conpiled as a module, the module name will be pinctrl-ocelot.
382
383config PINCTRL_PALMAS
384	tristate "Pinctrl driver for the PALMAS Series MFD devices"
385	depends on OF && MFD_PALMAS
386	select PINMUX
387	select GENERIC_PINCONF
388	help
389	  Palmas device supports the configuration of pins for different
390	  functionality. This driver supports the pinmux, push-pull and
391	  open drain configuration for the Palmas series devices like
392	  TPS65913, TPS80036 etc.
393
394config PINCTRL_PEF2256
395	tristate "Lantiq PEF2256 (FALC56) pin controller driver"
396	depends on OF && FRAMER_PEF2256
397	select PINMUX
398	select PINCONF
399	select GENERIC_PINCONF
400	help
401	  This option enables the pin controller support for the Lantiq PEF2256
402	  framer, also known as FALC56.
403
404	  If unsure, say N.
405
406	  To compile this driver as a module, choose M here: the
407	  module will be called pinctrl-pef2256.
408
409config PINCTRL_PIC32
410	bool "Microchip PIC32 pin controller driver"
411	depends on OF
412	depends on MACH_PIC32
413	select PINMUX
414	select GENERIC_PINCONF
415	select GPIOLIB_IRQCHIP
416	select OF_GPIO
417	help
418	  This is the pin controller and gpio driver for Microchip PIC32
419	  microcontrollers. This option is selected automatically when specific
420	  machine and arch are selected to build.
421
422config PINCTRL_PIC32MZDA
423	def_bool y if PIC32MZDA
424	select PINCTRL_PIC32
425
426config PINCTRL_PISTACHIO
427	bool "IMG Pistachio SoC pinctrl driver"
428	depends on OF && (MIPS || COMPILE_TEST)
429	depends on GPIOLIB
430	select PINMUX
431	select GENERIC_PINCONF
432	select GPIOLIB_IRQCHIP
433	select OF_GPIO
434	help
435	  This support pinctrl and GPIO driver for IMG Pistachio SoC.
436
437config PINCTRL_RK805
438	tristate "Pinctrl and GPIO driver for RK805 PMIC"
439	depends on MFD_RK8XX
440	select GPIOLIB
441	select PINMUX
442	select GENERIC_PINCONF
443	help
444	  This selects the pinctrl driver for RK805.
445
446config PINCTRL_ROCKCHIP
447	tristate "Rockchip gpio and pinctrl driver"
448	depends on ARCH_ROCKCHIP || COMPILE_TEST
449	depends on OF
450	select GPIOLIB
451	select PINMUX
452	select GENERIC_PINCONF
453	select GENERIC_IRQ_CHIP
454	select MFD_SYSCON
455	select OF_GPIO
456	default ARCH_ROCKCHIP
457	help
458          This support pinctrl and GPIO driver for Rockchip SoCs.
459
460config PINCTRL_SCMI
461	tristate "Pinctrl driver using SCMI protocol interface"
462	depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
463	select PINMUX
464	select GENERIC_PINCONF
465	help
466	  This driver provides support for pinctrl which is controlled
467	  by firmware that implements the SCMI interface.
468	  It uses SCMI Message Protocol to interact with the
469	  firmware providing all the pinctrl controls.
470
471config PINCTRL_SINGLE
472	tristate "One-register-per-pin type device tree based pinctrl driver"
473	depends on OF
474	depends on HAS_IOMEM
475	select GENERIC_PINCTRL_GROUPS
476	select GENERIC_PINMUX_FUNCTIONS
477	select GENERIC_PINCONF
478	help
479	  This selects the device tree based generic pinctrl driver.
480
481config PINCTRL_ST
482	bool
483	depends on OF
484	select PINMUX
485	select PINCONF
486	select GPIOLIB_IRQCHIP
487
488config PINCTRL_STMFX
489	tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
490	depends on I2C
491	depends on OF_GPIO
492	select GENERIC_PINCONF
493	select GPIOLIB_IRQCHIP
494	select MFD_STMFX
495	help
496	  Driver for STMicroelectronics Multi-Function eXpander (STMFX)
497	  GPIO expander.
498	  This provides a GPIO interface supporting inputs and outputs,
499	  and configuring push-pull, open-drain, and can also be used as
500	  interrupt-controller.
501
502config PINCTRL_SX150X
503	bool "Semtech SX150x I2C GPIO expander pinctrl driver"
504	depends on I2C=y
505	select PINMUX
506	select PINCONF
507	select GENERIC_PINCONF
508	select GPIOLIB
509	select GPIOLIB_IRQCHIP
510	select REGMAP
511	help
512	  Say Y here to provide support for Semtech SX150x-series I2C
513	  GPIO expanders as pinctrl module.
514	  Compatible models include:
515	  - 8 bits:  sx1508q, sx1502q
516	  - 16 bits: sx1509q, sx1506q
517
518config PINCTRL_TB10X
519	bool
520	depends on OF && ARC_PLAT_TB10X
521	select GPIOLIB
522
523config PINCTRL_TPS6594
524	tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
525	depends on OF && MFD_TPS6594
526	default MFD_TPS6594
527	select PINMUX
528	select GPIOLIB
529	select REGMAP
530	select GPIO_REGMAP
531	select GENERIC_PINCONF
532	help
533	  Say Y to select the pinmuxing and GPIOs driver for the TPS6594
534	  PMICs chip family.
535
536	  This driver can also be built as a module
537	  called tps6594-pinctrl.
538
539config PINCTRL_ZYNQ
540	bool "Pinctrl driver for Xilinx Zynq"
541	depends on ARCH_ZYNQ
542	select PINMUX
543	select GENERIC_PINCONF
544	help
545	  This selects the pinctrl driver for Xilinx Zynq.
546
547config PINCTRL_ZYNQMP
548	tristate "Pinctrl driver for Xilinx ZynqMP"
549	depends on ZYNQMP_FIRMWARE
550	select PINMUX
551	select GENERIC_PINCONF
552	default ZYNQMP_FIRMWARE
553	help
554	  This selects the pinctrl driver for Xilinx ZynqMP platform.
555	  This driver will query the pin information from the firmware
556	  and allow configuring the pins.
557	  Configuration can include the mux function to select on those
558	  pin(s)/group(s), and various pin configuration parameters
559	  such as pull-up, slew rate, etc.
560	  This driver can also be built as a module. If so, the module
561	  will be called pinctrl-zynqmp.
562
563config PINCTRL_MLXBF3
564	tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
565	depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
566	select PINMUX
567	select GPIOLIB
568	select GPIOLIB_IRQCHIP
569	help
570	  Say Y to select the pinctrl driver for BlueField-3 SoCs.
571	  This pin controller allows selecting the mux function for
572	  each pin. This driver can also be built as a module called
573	  pinctrl-mlxbf3.
574
575source "drivers/pinctrl/actions/Kconfig"
576source "drivers/pinctrl/aspeed/Kconfig"
577source "drivers/pinctrl/bcm/Kconfig"
578source "drivers/pinctrl/berlin/Kconfig"
579source "drivers/pinctrl/cirrus/Kconfig"
580source "drivers/pinctrl/freescale/Kconfig"
581source "drivers/pinctrl/intel/Kconfig"
582source "drivers/pinctrl/mediatek/Kconfig"
583source "drivers/pinctrl/meson/Kconfig"
584source "drivers/pinctrl/mvebu/Kconfig"
585source "drivers/pinctrl/nomadik/Kconfig"
586source "drivers/pinctrl/nuvoton/Kconfig"
587source "drivers/pinctrl/nxp/Kconfig"
588source "drivers/pinctrl/pxa/Kconfig"
589source "drivers/pinctrl/qcom/Kconfig"
590source "drivers/pinctrl/realtek/Kconfig"
591source "drivers/pinctrl/renesas/Kconfig"
592source "drivers/pinctrl/samsung/Kconfig"
593source "drivers/pinctrl/spear/Kconfig"
594source "drivers/pinctrl/sprd/Kconfig"
595source "drivers/pinctrl/starfive/Kconfig"
596source "drivers/pinctrl/stm32/Kconfig"
597source "drivers/pinctrl/sunplus/Kconfig"
598source "drivers/pinctrl/sunxi/Kconfig"
599source "drivers/pinctrl/tegra/Kconfig"
600source "drivers/pinctrl/ti/Kconfig"
601source "drivers/pinctrl/uniphier/Kconfig"
602source "drivers/pinctrl/visconti/Kconfig"
603source "drivers/pinctrl/vt8500/Kconfig"
604
605endif
606