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