xref: /openbmc/linux/drivers/pinctrl/Kconfig (revision dfc66bef)
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_STARFIVE
285	tristate "Pinctrl and GPIO driver for the StarFive JH7100 SoC"
286	depends on SOC_STARFIVE || COMPILE_TEST
287	depends on OF
288	default SOC_STARFIVE
289	select GENERIC_PINCTRL_GROUPS
290	select GENERIC_PINMUX_FUNCTIONS
291	select GENERIC_PINCONF
292	select GPIOLIB
293	select GPIOLIB_IRQCHIP
294	select OF_GPIO
295	help
296	  Say yes here to support pin control on the StarFive JH7100 SoC.
297	  This also provides an interface to the GPIO pins not used by other
298	  peripherals supporting inputs, outputs, configuring pull-up/pull-down
299	  and interrupts on input changes.
300
301config PINCTRL_STMFX
302	tristate "STMicroelectronics STMFX GPIO expander pinctrl driver"
303	depends on I2C
304	depends on OF_GPIO
305	select GENERIC_PINCONF
306	select GPIOLIB_IRQCHIP
307	select MFD_STMFX
308	help
309	  Driver for STMicroelectronics Multi-Function eXpander (STMFX)
310	  GPIO expander.
311	  This provides a GPIO interface supporting inputs and outputs,
312	  and configuring push-pull, open-drain, and can also be used as
313	  interrupt-controller.
314
315config PINCTRL_MAX77620
316	tristate "MAX77620/MAX20024 Pincontrol support"
317	depends on MFD_MAX77620 && OF
318	select PINMUX
319	select GENERIC_PINCONF
320	help
321	  Say Yes here to enable Pin control support for Maxim PMIC MAX77620.
322	  This PMIC has 8 GPIO pins that work as GPIO as well as special
323	  function in alternate mode. This driver also configure push-pull,
324	  open drain, FPS slots etc.
325
326config PINCTRL_PALMAS
327	tristate "Pinctrl driver for the PALMAS Series MFD devices"
328	depends on OF && MFD_PALMAS
329	select PINMUX
330	select GENERIC_PINCONF
331	help
332	  Palmas device supports the configuration of pins for different
333	  functionality. This driver supports the pinmux, push-pull and
334	  open drain configuration for the Palmas series devices like
335	  TPS65913, TPS80036 etc.
336
337config PINCTRL_PIC32
338	bool "Microchip PIC32 pin controller driver"
339	depends on OF
340	depends on MACH_PIC32
341	select PINMUX
342	select GENERIC_PINCONF
343	select GPIOLIB_IRQCHIP
344	select OF_GPIO
345	help
346	  This is the pin controller and gpio driver for Microchip PIC32
347	  microcontrollers. This option is selected automatically when specific
348	  machine and arch are selected to build.
349
350config PINCTRL_PIC32MZDA
351	def_bool y if PIC32MZDA
352	select PINCTRL_PIC32
353
354config PINCTRL_ZYNQ
355	bool "Pinctrl driver for Xilinx Zynq"
356	depends on ARCH_ZYNQ
357	select PINMUX
358	select GENERIC_PINCONF
359	help
360	  This selects the pinctrl driver for Xilinx Zynq.
361
362config PINCTRL_ZYNQMP
363	tristate "Pinctrl driver for Xilinx ZynqMP"
364	depends on ZYNQMP_FIRMWARE
365	select PINMUX
366	select GENERIC_PINCONF
367	default ZYNQMP_FIRMWARE
368	help
369	  This selects the pinctrl driver for Xilinx ZynqMP platform.
370	  This driver will query the pin information from the firmware
371	  and allow configuring the pins.
372	  Configuration can include the mux function to select on those
373	  pin(s)/group(s), and various pin configuration parameters
374	  such as pull-up, slew rate, etc.
375	  This driver can also be built as a module. If so, the module
376	  will be called pinctrl-zynqmp.
377
378config PINCTRL_INGENIC
379	bool "Pinctrl driver for the Ingenic JZ47xx SoCs"
380	default MACH_INGENIC
381	depends on OF
382	depends on MIPS || COMPILE_TEST
383	select GENERIC_PINCONF
384	select GENERIC_PINCTRL_GROUPS
385	select GENERIC_PINMUX_FUNCTIONS
386	select GPIOLIB
387	select GPIOLIB_IRQCHIP
388	select REGMAP_MMIO
389
390config PINCTRL_RK805
391	tristate "Pinctrl and GPIO driver for RK805 PMIC"
392	depends on MFD_RK808
393	select GPIOLIB
394	select PINMUX
395	select GENERIC_PINCONF
396	help
397	  This selects the pinctrl driver for RK805.
398
399config PINCTRL_OCELOT
400	bool "Pinctrl driver for the Microsemi Ocelot and Jaguar2 SoCs"
401	depends on OF
402	depends on HAS_IOMEM
403	select GPIOLIB
404	select GPIOLIB_IRQCHIP
405	select GENERIC_PINCONF
406	select GENERIC_PINCTRL_GROUPS
407	select GENERIC_PINMUX_FUNCTIONS
408	select OF_GPIO
409	select REGMAP_MMIO
410
411config PINCTRL_MICROCHIP_SGPIO
412	bool "Pinctrl driver for Microsemi/Microchip Serial GPIO"
413	depends on OF
414	depends on HAS_IOMEM
415	select GPIOLIB
416	select GPIOLIB_IRQCHIP
417	select GENERIC_PINCONF
418	select GENERIC_PINCTRL_GROUPS
419	select GENERIC_PINMUX_FUNCTIONS
420	select OF_GPIO
421	help
422	  Support for the serial GPIO interface used on Microsemi and
423	  Microchip SoC's. By using a serial interface, the SIO
424	  controller significantly extends the number of available
425	  GPIOs with a minimum number of additional pins on the
426	  device. The primary purpose of the SIO controller is to
427	  connect control signals from SFP modules and to act as an
428	  LED controller.
429
430config PINCTRL_K210
431	bool "Pinctrl driver for the Canaan Kendryte K210 SoC"
432	depends on RISCV && SOC_CANAAN && OF
433	select GENERIC_PINMUX_FUNCTIONS
434	select GENERIC_PINCONF
435	select GPIOLIB
436	select OF_GPIO
437	select REGMAP_MMIO
438	default SOC_CANAAN
439	help
440	  Add support for the Canaan Kendryte K210 RISC-V SOC Field
441	  Programmable IO Array (FPIOA) controller.
442
443config PINCTRL_KEEMBAY
444	tristate "Pinctrl driver for Intel Keem Bay SoC"
445	depends on ARCH_KEEMBAY || (ARM64 && COMPILE_TEST)
446	depends on HAS_IOMEM
447	select PINMUX
448	select PINCONF
449	select GENERIC_PINCONF
450	select GENERIC_PINCTRL_GROUPS
451	select GENERIC_PINMUX_FUNCTIONS
452	select GPIOLIB
453	select GPIOLIB_IRQCHIP
454	select GPIO_GENERIC
455	help
456	  This selects pin control driver for the Intel Keembay SoC.
457	  It provides pin config functions such as pullup, pulldown,
458	  interrupt, drive strength, sec lock, schmitt trigger, slew
459	  rate control and direction control. This module will be
460	  called as pinctrl-keembay.
461
462source "drivers/pinctrl/actions/Kconfig"
463source "drivers/pinctrl/aspeed/Kconfig"
464source "drivers/pinctrl/bcm/Kconfig"
465source "drivers/pinctrl/berlin/Kconfig"
466source "drivers/pinctrl/freescale/Kconfig"
467source "drivers/pinctrl/intel/Kconfig"
468source "drivers/pinctrl/mvebu/Kconfig"
469source "drivers/pinctrl/nomadik/Kconfig"
470source "drivers/pinctrl/nuvoton/Kconfig"
471source "drivers/pinctrl/pxa/Kconfig"
472source "drivers/pinctrl/qcom/Kconfig"
473source "drivers/pinctrl/ralink/Kconfig"
474source "drivers/pinctrl/renesas/Kconfig"
475source "drivers/pinctrl/samsung/Kconfig"
476source "drivers/pinctrl/spear/Kconfig"
477source "drivers/pinctrl/sprd/Kconfig"
478source "drivers/pinctrl/stm32/Kconfig"
479source "drivers/pinctrl/sunxi/Kconfig"
480source "drivers/pinctrl/tegra/Kconfig"
481source "drivers/pinctrl/ti/Kconfig"
482source "drivers/pinctrl/uniphier/Kconfig"
483source "drivers/pinctrl/vt8500/Kconfig"
484source "drivers/pinctrl/mediatek/Kconfig"
485source "drivers/pinctrl/meson/Kconfig"
486source "drivers/pinctrl/cirrus/Kconfig"
487source "drivers/pinctrl/visconti/Kconfig"
488
489config PINCTRL_XWAY
490	bool
491	depends on SOC_TYPE_XWAY
492	depends on PINCTRL_LANTIQ
493
494config PINCTRL_TB10X
495	bool
496	depends on OF && ARC_PLAT_TB10X
497	select GPIOLIB
498
499config PINCTRL_EQUILIBRIUM
500	tristate "Generic pinctrl and GPIO driver for Intel Lightning Mountain SoC"
501	depends on OF && HAS_IOMEM
502	depends on X86 || COMPILE_TEST
503	select PINMUX
504	select PINCONF
505	select GPIOLIB
506	select GPIO_GENERIC
507	select GPIOLIB_IRQCHIP
508	select GENERIC_PINCONF
509	select GENERIC_PINCTRL_GROUPS
510	select GENERIC_PINMUX_FUNCTIONS
511
512	help
513	  Equilibrium pinctrl driver is a pinctrl & GPIO driver for Intel Lightning
514	  Mountain network processor SoC that supports both the linux GPIO and pin
515	  control frameworks. It provides interfaces to setup pinmux, assign desired
516	  pin functions, configure GPIO attributes for LGM SoC pins. Pinmux and
517	  pinconf settings are retrieved from device tree.
518
519endif
520