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