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
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