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_APPLE_GPIO
35	tristate "Apple SoC GPIO pin controller driver"
36	depends on ARCH_APPLE
37	select PINMUX
38	select GPIOLIB
39	select GPIOLIB_IRQCHIP
40	select GENERIC_PINCTRL_GROUPS
41	select GENERIC_PINMUX_FUNCTIONS
42	select OF_GPIO
43	help
44	  This is the driver for the GPIO controller found on Apple ARM SoCs,
45	  including M1.
46
47	  This driver can also be built as a module. If so, the module
48	  will be called pinctrl-apple-gpio.
49
50config PINCTRL_ARTPEC6
51	bool "Axis ARTPEC-6 pin controller driver"
52	depends on MACH_ARTPEC6
53	select PINMUX
54	select GENERIC_PINCONF
55	help
56	  This is the driver for the Axis ARTPEC-6 pin controller. This driver
57	  supports pin function multiplexing as well as pin bias and drive
58	  strength configuration. Device tree integration instructions can be
59	  found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
60
61config PINCTRL_AS3722
62	tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
63	depends on MFD_AS3722 && GPIOLIB
64	select PINMUX
65	select GENERIC_PINCONF
66	help
67	  AS3722 device supports the configuration of GPIO pins for different
68	  functionality. This driver supports the pinmux, push-pull and
69	  open drain configuration for the GPIO pins of AS3722 devices. It also
70	  supports the GPIO functionality through gpiolib.
71
72config PINCTRL_AXP209
73	tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
74	depends on MFD_AXP20X
75	depends on OF
76	select PINMUX
77	select GENERIC_PINCONF
78	select GPIOLIB
79	help
80	  AXP PMICs provides multiple GPIOs that can be muxed for different
81	  functions. This driver bundles a pinctrl driver to select the function
82	  muxing and a GPIO driver to handle the GPIO when the GPIO function is
83	  selected.
84	  Say yes to enable pinctrl and GPIO support for the AXP209 PMIC
85
86config PINCTRL_AT91
87	bool "AT91 pinctrl driver"
88	depends on OF
89	depends on ARCH_AT91
90	select PINMUX
91	select PINCONF
92	select GPIOLIB
93	select OF_GPIO
94	select GPIOLIB_IRQCHIP
95	help
96	  Say Y here to enable the at91 pinctrl driver
97
98config PINCTRL_AT91PIO4
99	bool "AT91 PIO4 pinctrl driver"
100	depends on OF
101	depends on HAS_IOMEM
102	depends on ARCH_AT91 || COMPILE_TEST
103	select PINMUX
104	select GENERIC_PINCONF
105	select GPIOLIB
106	select GPIOLIB_IRQCHIP
107	select OF_GPIO
108	help
109	  Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
110	  controller available on sama5d2 SoC.
111
112config PINCTRL_AMD
113	tristate "AMD GPIO pin control"
114	depends on HAS_IOMEM
115	depends on ACPI || COMPILE_TEST
116	select GPIOLIB
117	select GPIOLIB_IRQCHIP
118	select PINMUX
119	select PINCONF
120	select GENERIC_PINCONF
121	help
122	  driver for memory mapped GPIO functionality on AMD platforms
123	  (x86 or arm).Most pins are usually muxed to some other
124	  functionality by firmware,so only a small amount is available
125	  for gpio use.
126
127	  Requires ACPI/FDT device enumeration code to set up a platform
128	  device.
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 pullup/pulldown 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	  pullup/pulldown 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 yes 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_LANTIQ
166	bool
167	depends on LANTIQ
168	select PINMUX
169	select PINCONF
170
171config PINCTRL_LPC18XX
172	bool "NXP LPC18XX/43XX SCU pinctrl driver"
173	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
174	default ARCH_LPC18XX
175	select PINMUX
176	select GENERIC_PINCONF
177	help
178	  Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
179
180config PINCTRL_FALCON
181	bool
182	depends on SOC_FALCON
183	depends on PINCTRL_LANTIQ
184
185config PINCTRL_GEMINI
186	bool
187	depends on ARCH_GEMINI
188	default ARCH_GEMINI
189	select PINMUX
190	select GENERIC_PINCONF
191	select MFD_SYSCON
192
193config PINCTRL_MCP23S08_I2C
194	tristate
195	select REGMAP_I2C
196
197config PINCTRL_MCP23S08_SPI
198	tristate
199	select REGMAP_SPI
200
201config PINCTRL_MCP23S08
202	tristate "Microchip MCP23xxx I/O expander"
203	depends on SPI_MASTER || I2C
204	select GPIOLIB
205	select GPIOLIB_IRQCHIP
206	select GENERIC_PINCONF
207	select PINCTRL_MCP23S08_I2C if I2C
208	select PINCTRL_MCP23S08_SPI if SPI_MASTER
209	help
210	  SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
211	  MCP23008 / MCP23017 / MCP23018 I/O expanders.
212	  This provides a GPIO interface supporting inputs and outputs and a
213	  corresponding interrupt-controller.
214
215config PINCTRL_OXNAS
216	bool
217	depends on OF
218	select PINMUX
219	select PINCONF
220	select GENERIC_PINCONF
221	select GPIOLIB
222	select OF_GPIO
223	select GPIOLIB_IRQCHIP
224	select MFD_SYSCON
225
226config PINCTRL_ROCKCHIP
227	tristate "Rockchip gpio and pinctrl driver"
228	depends on ARCH_ROCKCHIP || COMPILE_TEST
229	depends on OF
230	select GPIOLIB
231	select PINMUX
232	select GENERIC_PINCONF
233	select GENERIC_IRQ_CHIP
234	select MFD_SYSCON
235	select OF_GPIO
236	default ARCH_ROCKCHIP
237	help
238          This support pinctrl and gpio driver for Rockchip SoCs.
239
240config PINCTRL_SINGLE
241	tristate "One-register-per-pin type device tree based pinctrl driver"
242	depends on OF
243	depends on HAS_IOMEM
244	select GENERIC_PINCTRL_GROUPS
245	select GENERIC_PINMUX_FUNCTIONS
246	select GENERIC_PINCONF
247	help
248	  This selects the device tree based generic pinctrl driver.
249
250config PINCTRL_SX150X
251	bool "Semtech SX150x I2C GPIO expander pinctrl driver"
252	depends on I2C=y
253	select PINMUX
254	select PINCONF
255	select GENERIC_PINCONF
256	select GPIOLIB
257	select GPIOLIB_IRQCHIP
258	select REGMAP
259	help
260	  Say yes here to provide support for Semtech SX150x-series I2C
261	  GPIO expanders as pinctrl module.
262	  Compatible models include:
263	  - 8 bits:  sx1508q, sx1502q
264	  - 16 bits: sx1509q, sx1506q
265
266config PINCTRL_PISTACHIO
267	bool "IMG Pistachio SoC pinctrl driver"
268	depends on OF && (MIPS || COMPILE_TEST)
269	depends on GPIOLIB
270	select PINMUX
271	select GENERIC_PINCONF
272	select GPIOLIB_IRQCHIP
273	select OF_GPIO
274    help
275	  This support pinctrl and gpio driver for IMG Pistachio SoC.
276
277config PINCTRL_ST
278	bool
279	depends on OF
280	select PINMUX
281	select PINCONF
282	select GPIOLIB_IRQCHIP
283
284config PINCTRL_STMFX
285	tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
286	depends on I2C
287	depends on OF_GPIO
288	select GENERIC_PINCONF
289	select GPIOLIB_IRQCHIP
290	select MFD_STMFX
291	help
292	  Driver for STMicroelectronics Multi-Function eXpander (STMFX)
293	  GPIO expander.
294	  This provides a GPIO interface supporting inputs and outputs,
295	  and configuring push-pull, open-drain, and can also be used as
296	  interrupt-controller.
297
298config PINCTRL_MAX77620
299	tristate "MAX77620/MAX20024 Pincontrol support"
300	depends on MFD_MAX77620 && OF
301	select PINMUX
302	select GENERIC_PINCONF
303	help
304	  Say Yes here to enable Pin control support for Maxim PMIC MAX77620.
305	  This PMIC has 8 GPIO pins that work as GPIO as well as special
306	  function in alternate mode. This driver also configure push-pull,
307	  open drain, FPS slots etc.
308
309config PINCTRL_PALMAS
310	tristate "Pinctrl driver for the PALMAS Series MFD devices"
311	depends on OF && MFD_PALMAS
312	select PINMUX
313	select GENERIC_PINCONF
314	help
315	  Palmas device supports the configuration of pins for different
316	  functionality. This driver supports the pinmux, push-pull and
317	  open drain configuration for the Palmas series devices like
318	  TPS65913, TPS80036 etc.
319
320config PINCTRL_PIC32
321	bool "Microchip PIC32 pin controller driver"
322	depends on OF
323	depends on MACH_PIC32
324	select PINMUX
325	select GENERIC_PINCONF
326	select GPIOLIB_IRQCHIP
327	select OF_GPIO
328	help
329	  This is the pin controller and gpio driver for Microchip PIC32
330	  microcontrollers. This option is selected automatically when specific
331	  machine and arch are selected to build.
332
333config PINCTRL_PIC32MZDA
334	def_bool y if PIC32MZDA
335	select PINCTRL_PIC32
336
337config PINCTRL_ZYNQ
338	bool "Pinctrl driver for Xilinx Zynq"
339	depends on ARCH_ZYNQ
340	select PINMUX
341	select GENERIC_PINCONF
342	help
343	  This selects the pinctrl driver for Xilinx Zynq.
344
345config PINCTRL_ZYNQMP
346	tristate "Pinctrl driver for Xilinx ZynqMP"
347	depends on ZYNQMP_FIRMWARE
348	select PINMUX
349	select GENERIC_PINCONF
350	default ZYNQMP_FIRMWARE
351	help
352	  This selects the pinctrl driver for Xilinx ZynqMP platform.
353	  This driver will query the pin information from the firmware
354	  and allow configuring the pins.
355	  Configuration can include the mux function to select on those
356	  pin(s)/group(s), and various pin configuration parameters
357	  such as pull-up, slew rate, etc.
358	  This driver can also be built as a module. If so, the module
359	  will be called pinctrl-zynqmp.
360
361config PINCTRL_INGENIC
362	bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
363	default MACH_INGENIC
364	depends on OF
365	depends on MIPS || COMPILE_TEST
366	select GENERIC_PINCONF
367	select GENERIC_PINCTRL_GROUPS
368	select GENERIC_PINMUX_FUNCTIONS
369	select GPIOLIB
370	select GPIOLIB_IRQCHIP
371	select REGMAP_MMIO
372
373config PINCTRL_RK805
374	tristate "Pinctrl and GPIO driver for RK805 PMIC"
375	depends on MFD_RK808
376	select GPIOLIB
377	select PINMUX
378	select GENERIC_PINCONF
379	help
380	  This selects the pinctrl driver for RK805.
381
382config PINCTRL_OCELOT
383	bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
384	depends on OF
385	depends on HAS_IOMEM
386	select GPIOLIB
387	select GPIOLIB_IRQCHIP
388	select GENERIC_PINCONF
389	select GENERIC_PINCTRL_GROUPS
390	select GENERIC_PINMUX_FUNCTIONS
391	select OF_GPIO
392	select REGMAP_MMIO
393
394config PINCTRL_MICROCHIP_SGPIO
395	bool "Pinctrl driver for Microsemi/Microchip Serial GPIO"
396	depends on OF
397	depends on HAS_IOMEM
398	select GPIOLIB
399	select GPIOLIB_IRQCHIP
400	select GENERIC_PINCONF
401	select GENERIC_PINCTRL_GROUPS
402	select GENERIC_PINMUX_FUNCTIONS
403	select OF_GPIO
404	help
405	  Support for the serial GPIO interface used on Microsemi and
406	  Microchip SoC's. By using a serial interface, the SIO
407	  controller significantly extends the number of available
408	  GPIOs with a minimum number of additional pins on the
409	  device. The primary purpose of the SIO controller is to
410	  connect control signals from SFP modules and to act as an
411	  LED controller.
412
413config PINCTRL_K210
414	bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
415	depends on RISCV && SOC_CANAAN && OF
416	select GENERIC_PINMUX_FUNCTIONS
417	select GENERIC_PINCONF
418	select GPIOLIB
419	select OF_GPIO
420	select REGMAP_MMIO
421	default SOC_CANAAN
422	help
423	  Add support for the Canaan Kendryte K210 RISC-V SOC Field
424	  Programmable IO Array (FPIOA) controller.
425
426config PINCTRL_KEEMBAY
427	tristate "Pinctrl driver for Intel Keem Bay SoC"
428	depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
429	depends on HAS_IOMEM
430	select PINMUX
431	select PINCONF
432	select GENERIC_PINCONF
433	select GENERIC_PINCTRL_GROUPS
434	select GENERIC_PINMUX_FUNCTIONS
435	select GPIOLIB
436	select GPIOLIB_IRQCHIP
437	select GPIO_GENERIC
438	help
439	  This selects pin control driver for the Intel Keembay SoC.
440	  It provides pin config functions such as pullup, pulldown,
441	  interrupt, drive strength, sec lock, schmitt trigger, slew
442	  rate control and direction control. This module will be
443	  called as pinctrl-keembay.
444
445source "drivers/pinctrl/actions/Kconfig"
446source "drivers/pinctrl/aspeed/Kconfig"
447source "drivers/pinctrl/bcm/Kconfig"
448source "drivers/pinctrl/berlin/Kconfig"
449source "drivers/pinctrl/freescale/Kconfig"
450source "drivers/pinctrl/intel/Kconfig"
451source "drivers/pinctrl/mvebu/Kconfig"
452source "drivers/pinctrl/nomadik/Kconfig"
453source "drivers/pinctrl/nuvoton/Kconfig"
454source "drivers/pinctrl/pxa/Kconfig"
455source "drivers/pinctrl/qcom/Kconfig"
456source "drivers/pinctrl/ralink/Kconfig"
457source "drivers/pinctrl/renesas/Kconfig"
458source "drivers/pinctrl/samsung/Kconfig"
459source "drivers/pinctrl/spear/Kconfig"
460source "drivers/pinctrl/sprd/Kconfig"
461source "drivers/pinctrl/stm32/Kconfig"
462source "drivers/pinctrl/sunxi/Kconfig"
463source "drivers/pinctrl/tegra/Kconfig"
464source "drivers/pinctrl/ti/Kconfig"
465source "drivers/pinctrl/uniphier/Kconfig"
466source "drivers/pinctrl/vt8500/Kconfig"
467source "drivers/pinctrl/mediatek/Kconfig"
468source "drivers/pinctrl/meson/Kconfig"
469source "drivers/pinctrl/cirrus/Kconfig"
470source "drivers/pinctrl/visconti/Kconfig"
471
472config PINCTRL_XWAY
473	bool
474	depends on SOC_TYPE_XWAY
475	depends on PINCTRL_LANTIQ
476
477config PINCTRL_TB10X
478	bool
479	depends on OF && ARC_PLAT_TB10X
480	select GPIOLIB
481
482config PINCTRL_EQUILIBRIUM
483	tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
484	depends on OF && HAS_IOMEM
485	depends on X86 || COMPILE_TEST
486	select PINMUX
487	select PINCONF
488	select GPIOLIB
489	select GPIO_GENERIC
490	select GPIOLIB_IRQCHIP
491	select GENERIC_PINCONF
492	select GENERIC_PINCTRL_GROUPS
493	select GENERIC_PINMUX_FUNCTIONS
494
495	help
496	  Equilibrium pinctrl driver is a pinctrl & GPIO driver for Intel Lightning
497	  Mountain network processor SoC that supports both the linux GPIO and pin
498	  control frameworks. It provides interfaces to setup pinmux, assign desired
499	  pin functions, configure GPIO attributes for LGM SoC pins. Pinmux and
500	  pinconf settings are retrieved from device tree.
501
502endif
503