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