Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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