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