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