xref: /linux/drivers/pinctrl/Kconfig (revision 2672031b20f6681514bef14ddcfe8c62c2757d11)
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_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
138config 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
152config 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
161config 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
173config PINCTRL_DIGICOLOR
174	bool
175	depends on ARCH_DIGICOLOR || COMPILE_TEST
176	select PINMUX
177	select GENERIC_PINCONF
178
179config 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
198config 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
206config 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
218config 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
231config 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
250config PINCTRL_LANTIQ
251	bool
252	depends on LANTIQ
253	select PINMUX
254	select PINCONF
255
256config PINCTRL_FALCON
257	bool
258	depends on SOC_FALCON
259	depends on PINCTRL_LANTIQ
260
261config 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
272config PINCTRL_XWAY
273	bool
274	depends on SOC_TYPE_XWAY
275	depends on PINCTRL_LANTIQ
276
277config 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
286config 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
297config PINCTRL_MCP23S08_I2C
298	tristate
299	select REGMAP_I2C
300
301config PINCTRL_MCP23S08_SPI
302	tristate
303	select REGMAP_SPI
304
305config 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
319config 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
341config 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
358config 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
369config PINCTRL_PEF2256
370	tristate "Lantiq PEF2256 (FALC56) pin controller driver"
371	depends on OF && FRAMER_PEF2256
372	select PINMUX
373	select PINCONF
374	select GENERIC_PINCONF
375	help
376	  This option enables the pin controller support for the Lantiq PEF2256
377	  framer, also known as FALC56.
378
379	  If unsure, say N.
380
381	  To compile this driver as a module, choose M here: the
382	  module will be called pinctrl-pef2256.
383
384config PINCTRL_PIC32
385	bool "Microchip PIC32 pin controller driver"
386	depends on OF
387	depends on MACH_PIC32
388	select PINMUX
389	select GENERIC_PINCONF
390	select GPIOLIB_IRQCHIP
391	select OF_GPIO
392	help
393	  This is the pin controller and gpio driver for Microchip PIC32
394	  microcontrollers. This option is selected automatically when specific
395	  machine and arch are selected to build.
396
397config PINCTRL_PIC32MZDA
398	def_bool y if PIC32MZDA
399	select PINCTRL_PIC32
400
401config PINCTRL_PISTACHIO
402	bool "IMG Pistachio SoC pinctrl driver"
403	depends on OF && (MIPS || COMPILE_TEST)
404	depends on GPIOLIB
405	select PINMUX
406	select GENERIC_PINCONF
407	select GPIOLIB_IRQCHIP
408	select OF_GPIO
409	help
410	  This support pinctrl and GPIO driver for IMG Pistachio SoC.
411
412config PINCTRL_RK805
413	tristate "Pinctrl and GPIO driver for RK805 PMIC"
414	depends on MFD_RK8XX
415	select GPIOLIB
416	select PINMUX
417	select GENERIC_PINCONF
418	help
419	  This selects the pinctrl driver for RK805.
420
421config PINCTRL_ROCKCHIP
422	tristate "Rockchip gpio and pinctrl driver"
423	depends on ARCH_ROCKCHIP || COMPILE_TEST
424	depends on OF
425	select GPIOLIB
426	select PINMUX
427	select GENERIC_PINCONF
428	select GENERIC_IRQ_CHIP
429	select MFD_SYSCON
430	select OF_GPIO
431	default ARCH_ROCKCHIP
432	help
433          This support pinctrl and GPIO driver for Rockchip SoCs.
434
435config PINCTRL_SINGLE
436	tristate "One-register-per-pin type device tree based pinctrl driver"
437	depends on OF
438	depends on HAS_IOMEM
439	select GENERIC_PINCTRL_GROUPS
440	select GENERIC_PINMUX_FUNCTIONS
441	select GENERIC_PINCONF
442	help
443	  This selects the device tree based generic pinctrl driver.
444
445config PINCTRL_ST
446	bool
447	depends on OF
448	select PINMUX
449	select PINCONF
450	select GPIOLIB_IRQCHIP
451
452config PINCTRL_STMFX
453	tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
454	depends on I2C
455	depends on OF_GPIO
456	select GENERIC_PINCONF
457	select GPIOLIB_IRQCHIP
458	select MFD_STMFX
459	help
460	  Driver for STMicroelectronics Multi-Function eXpander (STMFX)
461	  GPIO expander.
462	  This provides a GPIO interface supporting inputs and outputs,
463	  and configuring push-pull, open-drain, and can also be used as
464	  interrupt-controller.
465
466config PINCTRL_SX150X
467	bool "Semtech SX150x I2C GPIO expander pinctrl driver"
468	depends on I2C=y
469	select PINMUX
470	select PINCONF
471	select GENERIC_PINCONF
472	select GPIOLIB
473	select GPIOLIB_IRQCHIP
474	select REGMAP
475	help
476	  Say Y here to provide support for Semtech SX150x-series I2C
477	  GPIO expanders as pinctrl module.
478	  Compatible models include:
479	  - 8 bits:  sx1508q, sx1502q
480	  - 16 bits: sx1509q, sx1506q
481
482config PINCTRL_TB10X
483	bool
484	depends on OF && ARC_PLAT_TB10X
485	select GPIOLIB
486
487config PINCTRL_TPS6594
488	tristate "Pinctrl and GPIO driver for TI TPS6594 PMIC"
489	depends on OF && MFD_TPS6594
490	default MFD_TPS6594
491	select PINMUX
492	select GPIOLIB
493	select REGMAP
494	select GPIO_REGMAP
495	select GENERIC_PINCONF
496	help
497	  Say Y to select the pinmuxing and GPIOs driver for the TPS6594
498	  PMICs chip family.
499
500	  This driver can also be built as a module
501	  called tps6594-pinctrl.
502
503config PINCTRL_ZYNQ
504	bool "Pinctrl driver for Xilinx Zynq"
505	depends on ARCH_ZYNQ
506	select PINMUX
507	select GENERIC_PINCONF
508	help
509	  This selects the pinctrl driver for Xilinx Zynq.
510
511config PINCTRL_ZYNQMP
512	tristate "Pinctrl driver for Xilinx ZynqMP"
513	depends on ZYNQMP_FIRMWARE
514	select PINMUX
515	select GENERIC_PINCONF
516	default ZYNQMP_FIRMWARE
517	help
518	  This selects the pinctrl driver for Xilinx ZynqMP platform.
519	  This driver will query the pin information from the firmware
520	  and allow configuring the pins.
521	  Configuration can include the mux function to select on those
522	  pin(s)/group(s), and various pin configuration parameters
523	  such as pull-up, slew rate, etc.
524	  This driver can also be built as a module. If so, the module
525	  will be called pinctrl-zynqmp.
526
527config PINCTRL_MLXBF3
528	tristate "NVIDIA BlueField-3 SoC Pinctrl driver"
529	depends on (MELLANOX_PLATFORM && ARM64) || COMPILE_TEST
530	select PINMUX
531	select GPIOLIB
532	select GPIOLIB_IRQCHIP
533	help
534	  Say Y to select the pinctrl driver for BlueField-3 SoCs.
535	  This pin controller allows selecting the mux function for
536	  each pin. This driver can also be built as a module called
537	  pinctrl-mlxbf3.
538
539source "drivers/pinctrl/actions/Kconfig"
540source "drivers/pinctrl/aspeed/Kconfig"
541source "drivers/pinctrl/bcm/Kconfig"
542source "drivers/pinctrl/berlin/Kconfig"
543source "drivers/pinctrl/cirrus/Kconfig"
544source "drivers/pinctrl/freescale/Kconfig"
545source "drivers/pinctrl/intel/Kconfig"
546source "drivers/pinctrl/mediatek/Kconfig"
547source "drivers/pinctrl/meson/Kconfig"
548source "drivers/pinctrl/mvebu/Kconfig"
549source "drivers/pinctrl/nomadik/Kconfig"
550source "drivers/pinctrl/nuvoton/Kconfig"
551source "drivers/pinctrl/nxp/Kconfig"
552source "drivers/pinctrl/pxa/Kconfig"
553source "drivers/pinctrl/qcom/Kconfig"
554source "drivers/pinctrl/realtek/Kconfig"
555source "drivers/pinctrl/renesas/Kconfig"
556source "drivers/pinctrl/samsung/Kconfig"
557source "drivers/pinctrl/spear/Kconfig"
558source "drivers/pinctrl/sprd/Kconfig"
559source "drivers/pinctrl/starfive/Kconfig"
560source "drivers/pinctrl/stm32/Kconfig"
561source "drivers/pinctrl/sunplus/Kconfig"
562source "drivers/pinctrl/sunxi/Kconfig"
563source "drivers/pinctrl/tegra/Kconfig"
564source "drivers/pinctrl/ti/Kconfig"
565source "drivers/pinctrl/uniphier/Kconfig"
566source "drivers/pinctrl/visconti/Kconfig"
567source "drivers/pinctrl/vt8500/Kconfig"
568
569endif
570