xref: /linux/drivers/pinctrl/Kconfig (revision 8a8d6bbe1d3bc7137c777ba06246d7e9c08dde4d)
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	tristate "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_DA850_PUPD
139	tristate "TI DA850/OMAP-L138/AM18XX pull-up and pull-down groups"
140	depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
141	select PINCONF
142	select GENERIC_PINCONF
143	help
144	  Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
145	  pull-up and pull-down pin groups.
146
147config PINCTRL_DA9062
148	tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
149	depends on MFD_DA9062
150	select GPIOLIB
151	help
152	  The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
153	  different functions. This driver bundles a pinctrl driver to select the
154	  function muxing and a GPIO driver to handle the GPIO when the GPIO
155	  function is selected.
156
157	  Say Y to enable pinctrl and GPIO support for the DA9062 PMIC.
158
159config PINCTRL_DIGICOLOR
160	bool
161	depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
162	select PINMUX
163	select GENERIC_PINCONF
164
165config PINCTRL_EQUILIBRIUM
166	tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
167	depends on OF && HAS_IOMEM
168	depends on X86 || COMPILE_TEST
169	select PINMUX
170	select PINCONF
171	select GPIOLIB
172	select GPIO_GENERIC
173	select GPIOLIB_IRQCHIP
174	select GENERIC_PINCONF
175	select GENERIC_PINCTRL_GROUPS
176	select GENERIC_PINMUX_FUNCTIONS
177	help
178	  Equilibrium driver is a pinctrl and GPIO driver for Intel Lightning
179	  Mountain network processor SoC that supports both the GPIO and pin
180	  control frameworks. It provides interfaces to setup pin muxing, assign
181	  desired pin functions, configure GPIO attributes for LGM SoC pins.
182	  Pin muxing and pin config settings are retrieved from device tree.
183
184config PINCTRL_GEMINI
185	bool
186	depends on ARCH_GEMINI
187	default ARCH_GEMINI
188	select PINMUX
189	select GENERIC_PINCONF
190	select MFD_SYSCON
191
192config PINCTRL_INGENIC
193	bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
194	default MACH_INGENIC
195	depends on OF
196	depends on MIPS || COMPILE_TEST
197	select GENERIC_PINCONF
198	select GENERIC_PINCTRL_GROUPS
199	select GENERIC_PINMUX_FUNCTIONS
200	select GPIOLIB
201	select GPIOLIB_IRQCHIP
202	select REGMAP_MMIO
203
204config PINCTRL_K210
205	bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
206	depends on RISCV && SOC_CANAAN && OF
207	select GENERIC_PINMUX_FUNCTIONS
208	select GENERIC_PINCONF
209	select GPIOLIB
210	select OF_GPIO
211	select REGMAP_MMIO
212	default SOC_CANAAN
213	help
214	  Add support for the Canaan Kendryte K210 RISC-V SOC Field
215	  Programmable IO Array (FPIOA) controller.
216
217config PINCTRL_KEEMBAY
218	tristate "Pinctrl driver for Intel Keem Bay SoC"
219	depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
220	depends on HAS_IOMEM
221	select PINMUX
222	select PINCONF
223	select GENERIC_PINCONF
224	select GENERIC_PINCTRL_GROUPS
225	select GENERIC_PINMUX_FUNCTIONS
226	select GPIOLIB
227	select GPIOLIB_IRQCHIP
228	select GPIO_GENERIC
229	help
230	  This selects pin control driver for the Intel Keem Bay SoC.
231	  It provides pin config functions such as pull-up, pull-down,
232	  interrupt, drive strength, sec lock, Schmitt trigger, slew
233	  rate control and direction control. This module will be
234	  called as pinctrl-keembay.
235
236config PINCTRL_LANTIQ
237	bool
238	depends on LANTIQ
239	select PINMUX
240	select PINCONF
241
242config PINCTRL_FALCON
243	bool
244	depends on SOC_FALCON
245	depends on PINCTRL_LANTIQ
246
247config PINCTRL_XWAY
248	bool
249	depends on SOC_TYPE_XWAY
250	depends on PINCTRL_LANTIQ
251
252config PINCTRL_LPC18XX
253	bool "NXP LPC18XX/43XX SCU pinctrl driver"
254	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
255	default ARCH_LPC18XX
256	select PINMUX
257	select GENERIC_PINCONF
258	help
259	  Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
260
261config PINCTRL_MAX77620
262	tristate "MAX77620/MAX20024 Pincontrol support"
263	depends on MFD_MAX77620 && OF
264	select PINMUX
265	select GENERIC_PINCONF
266	help
267	  Say Y here to enable Pin control support for Maxim MAX77620 PMIC.
268	  This PMIC has 8 GPIO pins that work as GPIO as well as special
269	  function in alternate mode. This driver also configure push-pull,
270	  open drain, FPS slots etc.
271
272config PINCTRL_MCP23S08_I2C
273	tristate
274	select REGMAP_I2C
275
276config PINCTRL_MCP23S08_SPI
277	tristate
278	select REGMAP_SPI
279
280config PINCTRL_MCP23S08
281	tristate "Microchip MCP23xxx I/O expander"
282	depends on SPI_MASTER || I2C
283	select GPIOLIB
284	select GPIOLIB_IRQCHIP
285	select GENERIC_PINCONF
286	select PINCTRL_MCP23S08_I2C if I2C
287	select PINCTRL_MCP23S08_SPI if SPI_MASTER
288	help
289	  SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
290	  MCP23008 / MCP23017 / MCP23018 I/O expanders.
291	  This provides a GPIO interface supporting inputs and outputs and a
292	  corresponding interrupt-controller.
293
294config PINCTRL_MICROCHIP_SGPIO
295	bool "Pinctrl driver for Microsemi/Microchip Serial GPIO"
296	depends on OF
297	depends on HAS_IOMEM
298	select GPIOLIB
299	select GPIOLIB_IRQCHIP
300	select GENERIC_PINCONF
301	select GENERIC_PINCTRL_GROUPS
302	select GENERIC_PINMUX_FUNCTIONS
303	select OF_GPIO
304	help
305	  Support for the serial GPIO interface used on Microsemi and
306	  Microchip SoCs. By using a serial interface, the SIO
307	  controller significantly extends the number of available
308	  GPIOs with a minimum number of additional pins on the
309	  device. The primary purpose of the SIO controller is to
310	  connect control signals from SFP modules and to act as an
311	  LED controller.
312
313config PINCTRL_OCELOT
314	bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
315	depends on OF
316	depends on HAS_IOMEM
317	select GPIOLIB
318	select GPIOLIB_IRQCHIP
319	select GENERIC_PINCONF
320	select GENERIC_PINCTRL_GROUPS
321	select GENERIC_PINMUX_FUNCTIONS
322	select OF_GPIO
323	select REGMAP_MMIO
324
325config PINCTRL_OXNAS
326	bool
327	depends on OF
328	select PINMUX
329	select PINCONF
330	select GENERIC_PINCONF
331	select GPIOLIB
332	select OF_GPIO
333	select GPIOLIB_IRQCHIP
334	select MFD_SYSCON
335
336config PINCTRL_PALMAS
337	tristate "Pinctrl driver for the PALMAS Series MFD devices"
338	depends on OF && MFD_PALMAS
339	select PINMUX
340	select GENERIC_PINCONF
341	help
342	  Palmas device supports the configuration of pins for different
343	  functionality. This driver supports the pinmux, push-pull and
344	  open drain configuration for the Palmas series devices like
345	  TPS65913, TPS80036 etc.
346
347config PINCTRL_PIC32
348	bool "Microchip PIC32 pin controller driver"
349	depends on OF
350	depends on MACH_PIC32
351	select PINMUX
352	select GENERIC_PINCONF
353	select GPIOLIB_IRQCHIP
354	select OF_GPIO
355	help
356	  This is the pin controller and gpio driver for Microchip PIC32
357	  microcontrollers. This option is selected automatically when specific
358	  machine and arch are selected to build.
359
360config PINCTRL_PIC32MZDA
361	def_bool y if PIC32MZDA
362	select PINCTRL_PIC32
363
364config PINCTRL_PISTACHIO
365	bool "IMG Pistachio SoC pinctrl driver"
366	depends on OF && (MIPS || COMPILE_TEST)
367	depends on GPIOLIB
368	select PINMUX
369	select GENERIC_PINCONF
370	select GPIOLIB_IRQCHIP
371	select OF_GPIO
372	help
373	  This support pinctrl and GPIO driver for IMG Pistachio SoC.
374
375config PINCTRL_RK805
376	tristate "Pinctrl and GPIO driver for RK805 PMIC"
377	depends on MFD_RK808
378	select GPIOLIB
379	select PINMUX
380	select GENERIC_PINCONF
381	help
382	  This selects the pinctrl driver for RK805.
383
384config PINCTRL_ROCKCHIP
385	tristate "Rockchip gpio and pinctrl driver"
386	depends on ARCH_ROCKCHIP || COMPILE_TEST
387	depends on OF
388	select GPIOLIB
389	select PINMUX
390	select GENERIC_PINCONF
391	select GENERIC_IRQ_CHIP
392	select MFD_SYSCON
393	select OF_GPIO
394	default ARCH_ROCKCHIP
395	help
396          This support pinctrl and GPIO driver for Rockchip SoCs.
397
398config PINCTRL_SINGLE
399	tristate "One-register-per-pin type device tree based pinctrl driver"
400	depends on OF
401	depends on HAS_IOMEM
402	select GENERIC_PINCTRL_GROUPS
403	select GENERIC_PINMUX_FUNCTIONS
404	select GENERIC_PINCONF
405	help
406	  This selects the device tree based generic pinctrl driver.
407
408config PINCTRL_ST
409	bool
410	depends on OF
411	select PINMUX
412	select PINCONF
413	select GPIOLIB_IRQCHIP
414
415config PINCTRL_STMFX
416	tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
417	depends on I2C
418	depends on OF_GPIO
419	select GENERIC_PINCONF
420	select GPIOLIB_IRQCHIP
421	select MFD_STMFX
422	help
423	  Driver for STMicroelectronics Multi-Function eXpander (STMFX)
424	  GPIO expander.
425	  This provides a GPIO interface supporting inputs and outputs,
426	  and configuring push-pull, open-drain, and can also be used as
427	  interrupt-controller.
428
429config PINCTRL_SX150X
430	bool "Semtech SX150x I2C GPIO expander pinctrl driver"
431	depends on I2C=y
432	select PINMUX
433	select PINCONF
434	select GENERIC_PINCONF
435	select GPIOLIB
436	select GPIOLIB_IRQCHIP
437	select REGMAP
438	help
439	  Say Y here to provide support for Semtech SX150x-series I2C
440	  GPIO expanders as pinctrl module.
441	  Compatible models include:
442	  - 8 bits:  sx1508q, sx1502q
443	  - 16 bits: sx1509q, sx1506q
444
445config PINCTRL_TB10X
446	bool
447	depends on OF && ARC_PLAT_TB10X
448	select GPIOLIB
449
450config PINCTRL_THUNDERBAY
451	tristate "Generic pinctrl and GPIO driver for Intel Thunder Bay SoC"
452	depends on ARCH_THUNDERBAY || (ARM64 && COMPILE_TEST)
453	depends on HAS_IOMEM
454	select PINMUX
455	select PINCONF
456	select GENERIC_PINCONF
457	select GENERIC_PINCTRL_GROUPS
458	select GENERIC_PINMUX_FUNCTIONS
459	select GPIOLIB
460	select GPIOLIB_IRQCHIP
461	select GPIO_GENERIC
462	help
463	  This selects pin control driver for the Intel Thunder Bay SoC.
464	  It provides pin config functions such as pull-up, pull-down,
465	  interrupt, drive strength, sec lock, Schmitt trigger, slew
466	  rate control and direction control. This module will be
467	  called as pinctrl-thunderbay.
468
469config PINCTRL_ZYNQ
470	bool "Pinctrl driver for Xilinx Zynq"
471	depends on ARCH_ZYNQ
472	select PINMUX
473	select GENERIC_PINCONF
474	help
475	  This selects the pinctrl driver for Xilinx Zynq.
476
477config PINCTRL_ZYNQMP
478	tristate "Pinctrl driver for Xilinx ZynqMP"
479	depends on ZYNQMP_FIRMWARE
480	select PINMUX
481	select GENERIC_PINCONF
482	default ZYNQMP_FIRMWARE
483	help
484	  This selects the pinctrl driver for Xilinx ZynqMP platform.
485	  This driver will query the pin information from the firmware
486	  and allow configuring the pins.
487	  Configuration can include the mux function to select on those
488	  pin(s)/group(s), and various pin configuration parameters
489	  such as pull-up, slew rate, etc.
490	  This driver can also be built as a module. If so, the module
491	  will be called pinctrl-zynqmp.
492
493source "drivers/pinctrl/actions/Kconfig"
494source "drivers/pinctrl/aspeed/Kconfig"
495source "drivers/pinctrl/bcm/Kconfig"
496source "drivers/pinctrl/berlin/Kconfig"
497source "drivers/pinctrl/cirrus/Kconfig"
498source "drivers/pinctrl/freescale/Kconfig"
499source "drivers/pinctrl/intel/Kconfig"
500source "drivers/pinctrl/mediatek/Kconfig"
501source "drivers/pinctrl/meson/Kconfig"
502source "drivers/pinctrl/mvebu/Kconfig"
503source "drivers/pinctrl/nomadik/Kconfig"
504source "drivers/pinctrl/nuvoton/Kconfig"
505source "drivers/pinctrl/pxa/Kconfig"
506source "drivers/pinctrl/qcom/Kconfig"
507source "drivers/pinctrl/ralink/Kconfig"
508source "drivers/pinctrl/renesas/Kconfig"
509source "drivers/pinctrl/samsung/Kconfig"
510source "drivers/pinctrl/spear/Kconfig"
511source "drivers/pinctrl/sprd/Kconfig"
512source "drivers/pinctrl/stm32/Kconfig"
513source "drivers/pinctrl/sunxi/Kconfig"
514source "drivers/pinctrl/tegra/Kconfig"
515source "drivers/pinctrl/ti/Kconfig"
516source "drivers/pinctrl/uniphier/Kconfig"
517source "drivers/pinctrl/visconti/Kconfig"
518source "drivers/pinctrl/vt8500/Kconfig"
519
520endif
521