xref: /openbmc/linux/drivers/pinctrl/Kconfig (revision 3a83e4e6)
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_ARTPEC6
35	bool "Axis ARTPEC-6 pin controller driver"
36	depends on MACH_ARTPEC6
37	select PINMUX
38	select GENERIC_PINCONF
39	help
40	  This is the driver for the Axis ARTPEC-6 pin controller. This driver
41	  supports pin function multiplexing as well as pin bias and drive
42	  strength configuration. Device tree integration instructions can be
43	  found in Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
44
45config PINCTRL_AS3722
46	tristate "Pinctrl and GPIO driver for ams AS3722 PMIC"
47	depends on MFD_AS3722 && GPIOLIB
48	select PINMUX
49	select GENERIC_PINCONF
50	help
51	  AS3722 device supports the configuration of GPIO pins for different
52	  functionality. This driver supports the pinmux, push-pull and
53	  open drain configuration for the GPIO pins of AS3722 devices. It also
54	  supports the GPIO functionality through gpiolib.
55
56config PINCTRL_AXP209
57	tristate "X-Powers AXP209 PMIC pinctrl and GPIO Support"
58	depends on MFD_AXP20X
59	depends on OF
60	select PINMUX
61	select GENERIC_PINCONF
62	select GPIOLIB
63	help
64	  AXP PMICs provides multiple GPIOs that can be muxed for different
65	  functions. This driver bundles a pinctrl driver to select the function
66	  muxing and a GPIO driver to handle the GPIO when the GPIO function is
67	  selected.
68	  Say yes to enable pinctrl and GPIO support for the AXP209 PMIC
69
70config PINCTRL_AT91
71	bool "AT91 pinctrl driver"
72	depends on OF
73	depends on ARCH_AT91
74	select PINMUX
75	select PINCONF
76	select GPIOLIB
77	select OF_GPIO
78	select GPIOLIB_IRQCHIP
79	help
80	  Say Y here to enable the at91 pinctrl driver
81
82config PINCTRL_AT91PIO4
83	bool "AT91 PIO4 pinctrl driver"
84	depends on OF
85	depends on ARCH_AT91 || COMPILE_TEST
86	select PINMUX
87	select GENERIC_PINCONF
88	select GPIOLIB
89	select GPIOLIB_IRQCHIP
90	select OF_GPIO
91	help
92	  Say Y here to enable the at91 pinctrl/gpio driver for Atmel PIO4
93	  controller available on sama5d2 SoC.
94
95config PINCTRL_AMD
96	tristate "AMD GPIO pin control"
97	depends on HAS_IOMEM
98	depends on ACPI || COMPILE_TEST
99	select GPIOLIB
100	select GPIOLIB_IRQCHIP
101	select PINMUX
102	select PINCONF
103	select GENERIC_PINCONF
104	help
105	  driver for memory mapped GPIO functionality on AMD platforms
106	  (x86 or arm).Most pins are usually muxed to some other
107	  functionality by firmware,so only a small amount is available
108	  for gpio use.
109
110	  Requires ACPI/FDT device enumeration code to set up a platform
111	  device.
112
113config PINCTRL_BM1880
114	bool "Bitmain BM1880 Pinctrl driver"
115	depends on OF && (ARCH_BITMAIN || COMPILE_TEST)
116	default ARCH_BITMAIN
117	select PINMUX
118	help
119	  Pinctrl driver for Bitmain BM1880 SoC.
120
121config PINCTRL_DA850_PUPD
122	tristate "TI DA850/OMAP-L138/AM18XX pullup/pulldown groups"
123	depends on OF && (ARCH_DAVINCI_DA850 || COMPILE_TEST)
124	select PINCONF
125	select GENERIC_PINCONF
126	help
127	  Driver for TI DA850/OMAP-L138/AM18XX pinconf. Used to control
128	  pullup/pulldown pin groups.
129
130config PINCTRL_DA9062
131	tristate "Dialog Semiconductor DA9062 PMIC pinctrl and GPIO Support"
132	depends on MFD_DA9062
133	select GPIOLIB
134	help
135	  The Dialog DA9062 PMIC provides multiple GPIOs that can be muxed for
136	  different functions. This driver bundles a pinctrl driver to select the
137	  function muxing and a GPIO driver to handle the GPIO when the GPIO
138	  function is selected.
139
140	  Say yes to enable pinctrl and GPIO support for the DA9062 PMIC.
141
142config PINCTRL_DIGICOLOR
143	bool
144	depends on OF && (ARCH_DIGICOLOR || COMPILE_TEST)
145	select PINMUX
146	select GENERIC_PINCONF
147
148config PINCTRL_LANTIQ
149	bool
150	depends on LANTIQ
151	select PINMUX
152	select PINCONF
153
154config PINCTRL_LPC18XX
155	bool "NXP LPC18XX/43XX SCU pinctrl driver"
156	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
157	default ARCH_LPC18XX
158	select PINMUX
159	select GENERIC_PINCONF
160	help
161	  Pinctrl driver for NXP LPC18xx/43xx System Control Unit (SCU).
162
163config PINCTRL_FALCON
164	bool
165	depends on SOC_FALCON
166	depends on PINCTRL_LANTIQ
167
168config PINCTRL_GEMINI
169	bool
170	depends on ARCH_GEMINI
171	default ARCH_GEMINI
172	select PINMUX
173	select GENERIC_PINCONF
174	select MFD_SYSCON
175
176config PINCTRL_MCP23S08_I2C
177	tristate
178	select REGMAP_I2C
179
180config PINCTRL_MCP23S08_SPI
181	tristate
182	select REGMAP_SPI
183
184config PINCTRL_MCP23S08
185	tristate "Microchip MCP23xxx I/O expander"
186	depends on SPI_MASTER || I2C
187	select GPIOLIB
188	select GPIOLIB_IRQCHIP
189	select GENERIC_PINCONF
190	select PINCTRL_MCP23S08_I2C if I2C
191	select PINCTRL_MCP23S08_SPI if SPI_MASTER
192	help
193	  SPI/I2C driver for Microchip MCP23S08 / MCP23S17 / MCP23S18 /
194	  MCP23008 / MCP23017 / MCP23018 I/O expanders.
195	  This provides a GPIO interface supporting inputs and outputs and a
196	  corresponding interrupt-controller.
197
198config PINCTRL_OXNAS
199	bool
200	depends on OF
201	select PINMUX
202	select PINCONF
203	select GENERIC_PINCONF
204	select GPIOLIB
205	select OF_GPIO
206	select GPIOLIB_IRQCHIP
207	select MFD_SYSCON
208
209config PINCTRL_ROCKCHIP
210	bool
211	select PINMUX
212	select GENERIC_PINCONF
213	select GENERIC_IRQ_CHIP
214	select MFD_SYSCON
215
216config PINCTRL_RZA1
217	bool "Renesas RZ/A1 gpio and pinctrl driver"
218	depends on OF
219	depends on ARCH_R7S72100 || COMPILE_TEST
220	select GPIOLIB
221	select GENERIC_PINCTRL_GROUPS
222	select GENERIC_PINMUX_FUNCTIONS
223	select GENERIC_PINCONF
224	help
225	  This selects pinctrl driver for Renesas RZ/A1 platforms.
226
227config PINCTRL_RZA2
228	bool "Renesas RZ/A2 gpio and pinctrl driver"
229	depends on OF
230	depends on ARCH_R7S9210 || COMPILE_TEST
231	select GPIOLIB
232	select GENERIC_PINCTRL_GROUPS
233	select GENERIC_PINMUX_FUNCTIONS
234	select GENERIC_PINCONF
235	help
236	  This selects GPIO and pinctrl driver for Renesas RZ/A2 platforms.
237
238config PINCTRL_RZN1
239	bool "Renesas RZ/N1 pinctrl driver"
240	depends on OF
241	depends on ARCH_RZN1 || COMPILE_TEST
242	select GENERIC_PINCTRL_GROUPS
243	select GENERIC_PINMUX_FUNCTIONS
244	select GENERIC_PINCONF
245	help
246	  This selects pinctrl driver for Renesas RZ/N1 devices.
247
248config PINCTRL_SINGLE
249	tristate "One-register-per-pin type device tree based pinctrl driver"
250	depends on OF
251	depends on HAS_IOMEM
252	select GENERIC_PINCTRL_GROUPS
253	select GENERIC_PINMUX_FUNCTIONS
254	select GENERIC_PINCONF
255	help
256	  This selects the device tree based generic pinctrl driver.
257
258config PINCTRL_SIRF
259	bool "CSR SiRFprimaII pin controller driver"
260	depends on ARCH_SIRF
261	select PINMUX
262	select PINCONF
263	select GENERIC_PINCONF
264	select GPIOLIB_IRQCHIP
265
266config PINCTRL_SX150X
267	bool "Semtech SX150x I2C GPIO expander pinctrl driver"
268	depends on I2C=y
269	select PINMUX
270	select PINCONF
271	select GENERIC_PINCONF
272	select GPIOLIB
273	select GPIOLIB_IRQCHIP
274	select REGMAP
275	help
276	  Say yes here to provide support for Semtech SX150x-series I2C
277	  GPIO expanders as pinctrl module.
278	  Compatible models include:
279	  - 8 bits:  sx1508q, sx1502q
280	  - 16 bits: sx1509q, sx1506q
281
282config PINCTRL_PISTACHIO
283	def_bool y if MACH_PISTACHIO
284	depends on GPIOLIB
285	select PINMUX
286	select GENERIC_PINCONF
287	select GPIOLIB_IRQCHIP
288	select OF_GPIO
289
290config PINCTRL_ST
291	bool
292	depends on OF
293	select PINMUX
294	select PINCONF
295	select GPIOLIB_IRQCHIP
296
297config PINCTRL_STMFX
298	tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
299	depends on I2C
300	depends on OF_GPIO
301	select GENERIC_PINCONF
302	select GPIOLIB_IRQCHIP
303	select MFD_STMFX
304	help
305	  Driver for STMicroelectronics Multi-Function eXpander (STMFX)
306	  GPIO expander.
307	  This provides a GPIO interface supporting inputs and outputs,
308	  and configuring push-pull, open-drain, and can also be used as
309	  interrupt-controller.
310
311config PINCTRL_U300
312	bool "U300 pin controller driver"
313	depends on ARCH_U300
314	select PINMUX
315	select GENERIC_PINCONF
316
317config PINCTRL_COH901
318	bool "ST-Ericsson U300 COH 901 335/571 GPIO"
319	depends on GPIOLIB && ARCH_U300 && PINCTRL_U300
320	select GPIOLIB_IRQCHIP
321	help
322	  Say yes here to support GPIO interface on ST-Ericsson U300.
323	  The names of the two IP block variants supported are
324	  COH 901 335 and COH 901 571/3. They contain 3, 5 or 7
325	  ports of 8 GPIO pins each.
326
327config PINCTRL_MAX77620
328	tristate "MAX77620/MAX20024 Pincontrol support"
329	depends on MFD_MAX77620 && OF
330	select PINMUX
331	select GENERIC_PINCONF
332	help
333	  Say Yes here to enable Pin control support for Maxim PMIC MAX77620.
334	  This PMIC has 8 GPIO pins that work as GPIO as well as special
335	  function in alternate mode. This driver also configure push-pull,
336	  open drain, FPS slots etc.
337
338config PINCTRL_PALMAS
339	tristate "Pinctrl driver for the PALMAS Series MFD devices"
340	depends on OF && MFD_PALMAS
341	select PINMUX
342	select GENERIC_PINCONF
343	help
344	  Palmas device supports the configuration of pins for different
345	  functionality. This driver supports the pinmux, push-pull and
346	  open drain configuration for the Palmas series devices like
347	  TPS65913, TPS80036 etc.
348
349config PINCTRL_PIC32
350	bool "Microchip PIC32 pin controller driver"
351	depends on OF
352	depends on MACH_PIC32
353	select PINMUX
354	select GENERIC_PINCONF
355	select GPIOLIB_IRQCHIP
356	select OF_GPIO
357	help
358	  This is the pin controller and gpio driver for Microchip PIC32
359	  microcontrollers. This option is selected automatically when specific
360	  machine and arch are selected to build.
361
362config PINCTRL_PIC32MZDA
363	def_bool y if PIC32MZDA
364	select PINCTRL_PIC32
365
366config PINCTRL_ZYNQ
367	bool "Pinctrl driver for Xilinx Zynq"
368	depends on ARCH_ZYNQ
369	select PINMUX
370	select GENERIC_PINCONF
371	help
372	  This selects the pinctrl driver for Xilinx Zynq.
373
374config PINCTRL_INGENIC
375	bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
376	default MACH_INGENIC
377	depends on OF
378	depends on MIPS || COMPILE_TEST
379	select GENERIC_PINCONF
380	select GENERIC_PINCTRL_GROUPS
381	select GENERIC_PINMUX_FUNCTIONS
382	select GPIOLIB
383	select GPIOLIB_IRQCHIP
384	select REGMAP_MMIO
385
386config PINCTRL_RK805
387	tristate "Pinctrl and GPIO driver for RK805 PMIC"
388	depends on MFD_RK808
389	select GPIOLIB
390	select PINMUX
391	select GENERIC_PINCONF
392	help
393	  This selects the pinctrl driver for RK805.
394
395config PINCTRL_OCELOT
396	bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
397	depends on OF
398	depends on HAS_IOMEM
399	select GPIOLIB
400	select GPIOLIB_IRQCHIP
401	select GENERIC_PINCONF
402	select GENERIC_PINCTRL_GROUPS
403	select GENERIC_PINMUX_FUNCTIONS
404	select OF_GPIO
405	select REGMAP_MMIO
406
407source "drivers/pinctrl/actions/Kconfig"
408source "drivers/pinctrl/aspeed/Kconfig"
409source "drivers/pinctrl/bcm/Kconfig"
410source "drivers/pinctrl/berlin/Kconfig"
411source "drivers/pinctrl/freescale/Kconfig"
412source "drivers/pinctrl/intel/Kconfig"
413source "drivers/pinctrl/mvebu/Kconfig"
414source "drivers/pinctrl/nomadik/Kconfig"
415source "drivers/pinctrl/nuvoton/Kconfig"
416source "drivers/pinctrl/pxa/Kconfig"
417source "drivers/pinctrl/qcom/Kconfig"
418source "drivers/pinctrl/samsung/Kconfig"
419source "drivers/pinctrl/sh-pfc/Kconfig"
420source "drivers/pinctrl/spear/Kconfig"
421source "drivers/pinctrl/sprd/Kconfig"
422source "drivers/pinctrl/stm32/Kconfig"
423source "drivers/pinctrl/sunxi/Kconfig"
424source "drivers/pinctrl/tegra/Kconfig"
425source "drivers/pinctrl/ti/Kconfig"
426source "drivers/pinctrl/uniphier/Kconfig"
427source "drivers/pinctrl/vt8500/Kconfig"
428source "drivers/pinctrl/mediatek/Kconfig"
429source "drivers/pinctrl/zte/Kconfig"
430source "drivers/pinctrl/meson/Kconfig"
431source "drivers/pinctrl/cirrus/Kconfig"
432
433config PINCTRL_XWAY
434	bool
435	depends on SOC_TYPE_XWAY
436	depends on PINCTRL_LANTIQ
437
438config PINCTRL_TB10X
439	bool
440	depends on OF && ARC_PLAT_TB10X
441	select GPIOLIB
442
443config PINCTRL_EQUILIBRIUM
444	tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
445	depends on OF && HAS_IOMEM
446	depends on X86 || COMPILE_TEST
447	select PINMUX
448	select PINCONF
449	select GPIOLIB
450	select GPIO_GENERIC
451	select GPIOLIB_IRQCHIP
452	select GENERIC_PINCONF
453	select GENERIC_PINCTRL_GROUPS
454	select GENERIC_PINMUX_FUNCTIONS
455
456	help
457	  Equilibrium pinctrl driver is a pinctrl & GPIO driver for Intel Lightning
458	  Mountain network processor SoC that supports both the linux GPIO and pin
459	  control frameworks. It provides interfaces to setup pinmux, assign desired
460	  pin functions, configure GPIO attributes for LGM SoC pins. Pinmux and
461	  pinconf settings are retrieved from device tree.
462
463endif
464