ff87fbfb397e2b4c77cd55c238125a710be54b8b
[platform/kernel/u-boot.git] / drivers / gpio / Kconfig
1 #
2 # GPIO infrastructure and drivers
3 #
4
5 menuconfig GPIO
6         bool "GPIO support"
7         default y
8         help
9           Enable support for GPIOs (General-purpose Input/Output) in U-Boot.
10           GPIOs allow U-Boot to read the state of an input line (high or
11           low) and set the state of an output line. This can be used to
12           drive LEDs, control power to various system parts and read user
13           input. GPIOs can be useful to enable a 'sign-of-life' LED,
14           for example. Enable this option to build the drivers in
15           drivers/gpio as part of an U-Boot build.
16
17 if GPIO
18
19 config DM_GPIO
20         bool "Enable Driver Model for GPIO drivers"
21         depends on DM
22         help
23           Enable driver model for GPIO access. The standard GPIO
24           interface (gpio_get_value(), etc.) is then implemented by
25           the GPIO uclass. Drivers provide methods to query the
26           particular GPIOs that they provide. The uclass interface
27           is defined in include/asm-generic/gpio.h.
28
29 config SPL_DM_GPIO
30         bool "Enable Driver Model for GPIO drivers in SPL"
31         depends on DM_GPIO && SPL_DM && SPL_GPIO
32         default y
33         help
34           Enable driver model for GPIO access in SPL. The standard GPIO
35           interface (gpio_get_value(), etc.) is then implemented by
36           the GPIO uclass. Drivers provide methods to query the
37           particular GPIOs that they provide. The uclass interface
38           is defined in include/asm-generic/gpio.h.
39
40 config TPL_DM_GPIO
41         bool "Enable Driver Model for GPIO drivers in TPL"
42         depends on DM_GPIO && TPL_DM && TPL_GPIO
43         default y
44         help
45           Enable driver model for GPIO access in TPL. The standard GPIO
46           interface (gpio_get_value(), etc.) is then implemented by
47           the GPIO uclass. Drivers provide methods to query the
48           particular GPIOs that they provide. The uclass interface
49           is defined in include/asm-generic/gpio.h.
50
51 config VPL_DM_GPIO
52         bool "Enable Driver Model for GPIO drivers in VPL"
53         depends on DM_GPIO && VPL_DM && VPL_GPIO
54         default y
55         help
56           Enable driver model for GPIO access in VPL. The standard GPIO
57           interface (gpio_get_value(), etc.) is then implemented by
58           the GPIO uclass. Drivers provide methods to query the
59           particular GPIOs that they provide. The uclass interface
60           is defined in include/asm-generic/gpio.h.
61
62 config GPIO_HOG
63         bool "Enable GPIO hog support"
64         depends on DM_GPIO
65         help
66           Enable gpio hog support
67           The GPIO chip may contain GPIO hog definitions. GPIO hogging
68           is a mechanism providing automatic GPIO request and config-
69           uration as part of the gpio-controller's driver probe function.
70
71 config SPL_GPIO_HOG
72         bool "Enable GPIO hog support in SPL"
73         depends on SPL_GPIO
74         help
75           Enable gpio hog support in SPL
76           The GPIO chip may contain GPIO hog definitions. GPIO hogging
77           is a mechanism providing automatic GPIO request and config-
78           uration as part of the gpio-controller's driver probe function.
79
80 config DM_GPIO_LOOKUP_LABEL
81         bool "Enable searching for gpio labelnames"
82         depends on DM_GPIO
83         help
84           This option enables searching for gpio names in
85           the defined gpio labels, if the search for the
86           gpio bank name failed. This makes sense if you use
87           different gpios on different hardware versions
88           for the same functionality in board code.
89
90 config SPL_DM_GPIO_LOOKUP_LABEL
91         bool "Enable searching for gpio labelnames"
92         depends on SPL_DM_GPIO
93         help
94           This option enables searching for gpio names in
95           the defined gpio labels, if the search for the
96           gpio bank name failed. This makes sense if you use
97           different gpios on different hardware versions
98           for the same functionality in board code.
99
100 config ALTERA_PIO
101         bool "Altera PIO driver"
102         depends on DM_GPIO
103         help
104           Select this to enable PIO for Altera devices. Please find
105           details on the "Embedded Peripherals IP User Guide" of Altera.
106
107 config BCM2835_GPIO
108         bool "BCM2835 GPIO driver"
109         depends on DM_GPIO
110
111 config BCM6345_GPIO
112         bool "BCM6345 GPIO driver"
113         depends on DM_GPIO && (ARCH_BMIPS || BCM6856 || \
114                                BCM6858 || BCM63158 || BCM6855)
115         help
116           This driver supports the GPIO banks on BCM6345 SoCs.
117
118 config CORTINA_GPIO
119         bool "Cortina-Access GPIO driver"
120         depends on DM_GPIO && CORTINA_PLATFORM
121         help
122           Enable support for the GPIO controller in Cortina CAxxxx SoCs.
123           This driver supports all CPU ISA variants supported by Cortina
124           Access CAxxxx SoCs.
125
126 config DWAPB_GPIO
127         bool "DWAPB GPIO driver"
128         depends on DM && DM_GPIO
129         help
130           Support for the Designware APB GPIO driver.
131
132 config AT91_GPIO
133         bool "AT91 PIO GPIO driver"
134         help
135           Say yes here to select AT91 PIO GPIO driver. AT91 PIO
136           controller manages up to 32 fully programmable input/output
137           lines. Each I/O line may be dedicated as a general-purpose
138           I/O or be assigned to a function of an embedded peripheral.
139           The assignment to a function of an embedded peripheral is
140           the responsibility of AT91 Pinctrl driver. This driver is
141           responsible for the general-purpose I/O.
142
143 config ATMEL_PIO4
144         bool "ATMEL PIO4 driver"
145         depends on DM_GPIO
146         help
147           Say yes here to support the Atmel PIO4 driver.
148           The PIO4 is new version of Atmel PIO controller, which manages
149           up to 128 fully programmable input/output lines. Each I/O line
150           may be dedicated as a general purpose I/O or be assigned to
151           a function of an embedded peripheral.
152
153 config ASPEED_GPIO
154         bool "Aspeed GPIO Driver"
155         help
156           Say yes here to support the Aspeed GPIO driver. The controller
157           is found in the AST2400, AST2500 and AST2600 BMC SoCs and
158           provides access to over 200 GPIOs on each chip.
159
160 config DA8XX_GPIO
161         bool "DA8xx GPIO Driver"
162         help
163           This driver supports the DA8xx GPIO controller
164
165 config FXL6408_GPIO
166         bool "FXL6408 I2C GPIO expander driver"
167         depends on DM_GPIO && DM_I2C
168         help
169           This driver supports the Fairchild FXL6408 device. FXL6408 is a
170           fully configurable 8-bit I2C-controlled GPIO expander.
171
172 config INTEL_BROADWELL_GPIO
173         bool "Intel Broadwell GPIO driver"
174         depends on DM
175         help
176           This driver supports Broadwell U devices which have an expanded
177           GPIO feature set. The difference is large enough to merit a separate
178           driver from the common Intel ICH6 driver. It supports a total of
179           95 GPIOs which can be configured from the device tree.
180
181 config INTEL_GPIO
182         bool "Intel generic GPIO driver"
183         depends on DM_GPIO
184         help
185           Say yes here to select Intel generic GPIO driver. This controller
186           supports recent chips (e.g. Apollo Lake). It permits basic GPIO
187           control including setting pins to input/output. It makes use of its
188           parent pinctrl driver to actually effect changes.
189
190 config INTEL_ICH6_GPIO
191         bool "Intel ICH6 compatible legacy GPIO driver"
192         depends on DM_GPIO
193         help
194           Say yes here to select Intel ICH6 compatible legacy GPIO driver.
195
196 config IMX_RGPIO2P
197         bool "i.MX7ULP RGPIO2P driver"
198         depends on DM
199         help
200           This driver supports i.MX7ULP Rapid GPIO2P controller.
201
202 config IPROC_GPIO
203         bool "Broadcom iProc GPIO driver(without pinconf)"
204         help
205           The Broadcom iProc based SoCs- Cygnus, NS2, NS3, NSP and Stingray,
206           use the same GPIO Controller IP hence this driver could be used
207           for all.
208
209           The Broadcom iProc based SoCs have multiple GPIO controllers and only
210           the always-ON GPIO controller (CRMU/AON) is supported by this driver.
211
212 config HSDK_CREG_GPIO
213         bool "HSDK CREG GPIO griver"
214         depends on DM_GPIO
215         help
216           This driver supports CREG GPIOs on Synopsys HSDK SOC.
217
218 config KIRKWOOD_GPIO
219         bool "Kirkwood GPIO driver"
220         help
221           This drdiver supports GPIOs on Kirkwood platforms
222
223 config LPC32XX_GPIO
224         bool "LPC32XX GPIO driver"
225         depends on DM
226         help
227           Support for the LPC32XX GPIO driver.
228
229 config MAX7320_GPIO
230         bool "MAX7320 I2C GPIO Expander driver"
231         depends on DM_GPIO && DM_I2C
232         help
233          Support for MAX7320 I2C 8/16-bit GPIO expander.
234          original maxim device has 8 push/pull outputs,
235          some clones offers 16bit.
236
237 config MCP230XX_GPIO
238         bool "MCP230XX GPIO driver"
239         depends on DM
240         help
241           Support for Microchip's MCP230XX I2C connected GPIO devices.
242           The following chips are supported:
243            - MCP23008
244            - MCP23017
245            - MCP23018
246
247 config MSCC_SGPIO
248         bool "Microsemi Serial GPIO driver"
249         depends on DM_GPIO && SOC_VCOREIII
250         help
251           Support for the VCoreIII SoC serial GPIO device. By using a
252           serial interface, the SIO controller significantly extends
253           the number of available GPIOs with a minimum number of
254           additional pins on the device. The primary purpose of the
255           SIO controller is to connect control signals from SFP
256           modules and to act as an LED controller.
257
258 config MSM_GPIO
259         bool "Qualcomm GPIO driver"
260         depends on DM_GPIO
261         help
262           Support GPIO controllers on Qualcomm Snapdragon family of SoCs.
263           This controller have single bank (default name "soc"), every
264           gpio has it's own set of registers.
265           Only simple GPIO operations are supported (get/set, change of
266           direction and checking pin function).
267           Supported devices:
268           - APQ8016
269           - MSM8916
270
271 config MXC_GPIO
272         bool "Freescale/NXP MXC GPIO driver"
273         help
274           Support GPIO controllers on various i.MX platforms
275
276 config MXS_GPIO
277         bool "Freescale/NXP MXS GPIO driver"
278         help
279           Support GPIO controllers on i.MX23 and i.MX28 platforms
280
281 config NPCM_GPIO
282         bool "Nuvoton NPCM GPIO driver"
283         depends on DM_GPIO
284         help
285           Support GPIO controllers on Nuvovon NPCM SoCs.
286           NPCM7xx/NPCM8xx contain 8 GPIO banks, each bank contains 32 pins.
287
288 config OMAP_GPIO
289         bool "TI OMAP GPIO driver"
290         depends on ARCH_OMAP2PLUS
291         default y
292         help
293           Support GPIO controllers on the TI OMAP3/4/5 and related (such as
294           AM335x/AM43xx/AM57xx/DRA7xx/etc) families of SoCs.
295
296 config CMD_PCA953X
297         bool "Enable the pca953x command"
298         help
299           Deprecated: This should be converted to driver model.
300
301           This command provides access to a pca953x GPIO device using the
302           legacy GPIO interface. Several subcommands are provided which mirror
303           the standard 'gpio' command. It should use that instead.
304
305 config QCOM_PMIC_GPIO
306         bool "Qualcomm generic PMIC GPIO/keypad driver"
307         depends on DM_GPIO && PMIC_QCOM
308         help
309           Support for GPIO pins and power/reset buttons found on
310           Qualcomm SoCs PMIC.
311           Default name for GPIO bank is "pm8916".
312           Power and reset buttons are placed in "pwkey_qcom" bank and
313           have gpio numbers 0 and 1 respectively.
314
315 config PCF8575_GPIO
316         bool "PCF8575 I2C GPIO Expander driver"
317         depends on DM_GPIO && DM_I2C
318         help
319          Support for PCF8575 I2C 16-bit GPIO expander. Most of these
320          chips are from NXP and TI.
321
322 config RCAR_GPIO
323         bool "Renesas RCar GPIO driver"
324         depends on DM_GPIO && ARCH_RMOBILE
325         help
326           This driver supports the GPIO banks on Renesas RCar SoCs.
327
328 config RZA1_GPIO
329         bool "Renesas RZ/A1 GPIO driver"
330         depends on DM_GPIO && RZA1
331         help
332           This driver supports the GPIO banks on Renesas RZ/A1 R7S72100 SoCs.
333
334 config ROCKCHIP_GPIO
335         bool "Rockchip GPIO driver"
336         depends on DM_GPIO
337         help
338           Support GPIO access on Rockchip SoCs. The GPIOs are arranged into
339           a number of banks (different for each SoC type) each with 32 GPIOs.
340           The GPIOs for a device are defined in the device tree with one node
341           for each bank.
342
343 config SANDBOX_GPIO
344         bool "Enable sandbox GPIO driver"
345         depends on SANDBOX && DM && DM_GPIO
346         help
347           This driver supports some simulated GPIOs which can be adjusted
348           using 'back door' functions like sandbox_gpio_set_value(). Then the
349           GPIOs can be inspected through the normal get_get_value()
350           interface. The purpose of this is to allow GPIOs to be used as
351           normal in sandbox, perhaps with test code actually driving the
352           behaviour of those GPIOs.
353
354 config SANDBOX_GPIO_COUNT
355         int "Number of sandbox GPIOs"
356         depends on SANDBOX_GPIO
357         default 128
358         help
359           The sandbox driver can support any number of GPIOs. Generally these
360           are specified using the device tree. But you can also have a number
361           of 'anonymous' GPIOs that do not belong to any device or bank.
362           Select a suitable value depending on your needs.
363
364 config SUNXI_GPIO
365         bool "Allwinner GPIO driver"
366         depends on ARCH_SUNXI
367         select SPL_STRTO if SPL
368         help
369           Support the GPIO device in Allwinner SoCs.
370
371 config XILINX_GPIO
372         bool "Xilinx GPIO driver"
373         depends on DM_GPIO
374         help
375           This config enable the Xilinx GPIO driver for Microblaze.
376
377 config CMD_TCA642X
378         bool "tca642x - Command to access tca642x state"
379         help
380           DEPRECATED - This needs conversion to driver model
381
382           This provides a way to looking at the pin state of this device.
383           This mirrors the 'gpio' command and that should be used in preference
384           to custom code.
385
386 config TEGRA_GPIO
387         bool "Tegra20..210 GPIO driver"
388         depends on DM_GPIO
389         help
390           Support for the GPIO controller contained in NVIDIA Tegra20 through
391           Tegra210.
392
393 config TEGRA186_GPIO
394         bool "Tegra186 GPIO driver"
395         depends on DM_GPIO
396         help
397           Support for the GPIO controller contained in NVIDIA Tegra186. This
398           covers both the "main" and "AON" controller instances, even though
399           they have slightly different register layout.
400
401 config GPIO_UNIPHIER
402         bool "UniPhier GPIO"
403         depends on ARCH_UNIPHIER
404         help
405           Say yes here to support UniPhier GPIOs.
406
407 config VYBRID_GPIO
408         bool "Vybrid GPIO driver"
409         depends on DM
410         help
411           Say yes here to support Vybrid vf610 GPIOs.
412
413 config PIC32_GPIO
414         bool "Microchip PIC32 GPIO driver"
415         depends on DM_GPIO && MACH_PIC32
416         default y
417         help
418           Say yes here to support Microchip PIC32 GPIOs.
419
420 config OCTEON_GPIO
421         bool "Octeon II/III/TX/TX2 GPIO driver"
422         depends on DM_GPIO && PCI && (ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2)
423         default y
424         help
425           Add support for the Marvell Octeon GPIO driver. This is used with
426           various Octeon parts such as Octeon II/III and OcteonTX/TX2.
427           Octeon II/III has 32 GPIOs (count defined via DT) and OcteonTX/TX2
428           has 64 GPIOs (count defined via internal register).
429
430 config STM32_GPIO
431         bool "ST STM32 GPIO driver"
432         depends on DM_GPIO && (ARCH_STM32 || ARCH_STM32MP)
433         default y
434         help
435           Device model driver support for STM32 GPIO controller. It should be
436           usable on many stm32 families like stm32f4/f7/h7 and stm32mp1.
437           Tested on STM32F7.
438
439 config SIFIVE_GPIO
440         bool "SiFive GPIO driver"
441         depends on DM_GPIO
442         help
443           Device model driver for GPIO controller present in SiFive FU540 SoC. This
444           driver enables GPIO interface on HiFive Unleashed A00 board.
445
446 config MVEBU_GPIO
447         bool "Marvell MVEBU GPIO driver"
448         depends on DM_GPIO && (ARCH_MVEBU || ARCH_KIRKWOOD)
449         default y
450         help
451           Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs.
452
453 config ZYNQ_GPIO
454         bool "Zynq GPIO driver"
455         depends on DM_GPIO
456         default y if ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL
457         help
458           Supports GPIO access on Zynq SoC.
459
460 config DM_74X164
461         bool "74x164 serial-in/parallel-out 8-bits shift register"
462         depends on DM_GPIO
463         help
464           Driver for 74x164 compatible serial-in/parallel-out 8-outputs
465           shift registers, such as 74lv165, 74hc595.
466           This driver can be used to provide access to more gpio outputs.
467
468 config DM_PCA953X
469         bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports"
470         depends on DM_GPIO && DM_I2C
471         help
472           Say yes here to provide access to several register-oriented
473           SMBus I/O expanders, made mostly by NXP or TI.  Compatible
474           models include:
475
476           4 bits:       pca9536, pca9537
477
478           8 bits:       max7310, max7315, pca6107, pca9534, pca9538, pca9554,
479                         pca9556, pca9557, pca9574, tca6408, xra1202
480
481           16 bits:      max7312, max7313, pca9535, pca9539, pca9555, pca9575,
482                         tca6416
483
484           24 bits:      tca6424
485
486           40 bits:      pca9505, pca9698
487
488           Now, max 24 bits chips and PCA953X compatible chips are
489           supported
490
491 config SPL_DM_PCA953X
492         bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports in SPL"
493         depends on SPL_DM_GPIO
494         help
495           Say yes here to provide access to several register-oriented
496           SMBus I/O expanders, made mostly by NXP or TI.  Compatible
497           models include:
498
499           4 bits:       pca9536, pca9537
500
501           8 bits:       max7310, max7315, pca6107, pca9534, pca9538, pca9554,
502                         pca9556, pca9557, pca9574, tca6408, xra1202
503
504           16 bits:      max7312, max7313, pca9535, pca9539, pca9555, pca9575,
505                         tca6416
506
507           24 bits:      tca6424
508
509           40 bits:      pca9505, pca9698
510
511           Now, max 24 bits chips and PCA953X compatible chips are
512           supported
513
514 config MPC8XXX_GPIO
515         bool "Freescale MPC8XXX GPIO driver"
516         depends on DM_GPIO
517         help
518           This driver supports the built-in GPIO controller of MPC8XXX CPUs.
519           Each GPIO bank is identified by its own entry in the device tree,
520           i.e.
521
522           gpio-controller@fc00 {
523                 #gpio-cells = <2>;
524                 compatible = "fsl,pq3-gpio";
525                 reg = <0xfc00 0x100>
526           }
527
528           By default, each bank is assumed to have 32 GPIOs, but the ngpios
529           setting is honored, so the number of GPIOs for each bank is
530           configurable to match the actual GPIO count of the SoC (e.g. the
531           32/32/23 banks of the P1022 SoC).
532
533           Aside from the standard functions of input/output mode, and output
534           value setting, the open-drain feature, which can configure individual
535           GPIOs to work as open-drain outputs, is supported.
536
537 config MPC83XX_SPISEL_BOOT
538         bool "Freescale MPC83XX SPISEL_BOOT driver"
539         depends on DM_GPIO && ARCH_MPC830X
540         help
541           GPIO driver to set/clear dedicated SPISEL_BOOT output on MPC83XX.
542
543           This pin is typically used as spi chip select to a spi nor flash.
544
545 config MT7620_GPIO
546         bool "MediaTek MT7620 GPIO driver"
547         depends on DM_GPIO && SOC_MT7620
548         default y
549         help
550           Device model driver for GPIO controller present in MediaTek MT7620
551           and earlier SoCs.
552
553 config MT7621_GPIO
554         bool "MediaTek MT7621 GPIO driver"
555         depends on DM_GPIO && (SOC_MT7621 || SOC_MT7628)
556         default y
557         help
558           Say yes here to support MediaTek MT7621 compatible GPIOs.
559
560 config NX_GPIO
561         bool "Nexell GPIO driver"
562         depends on DM_GPIO
563         help
564           Support GPIO access on Nexell SoCs. The GPIOs are arranged into
565           a number of banks (different for each SoC type) each with 32 GPIOs.
566           The GPIOs for a device are defined in the device tree with one node
567           for each bank.
568
569 config NOMADIK_GPIO
570         bool "Nomadik GPIO driver"
571         depends on DM_GPIO
572         help
573           Support GPIO access on ST-Ericsson Ux500 SoCs. The GPIOs are arranged
574           into a number of banks each with 32 GPIOs. The GPIOs for a device are
575           defined in the device tree with one node for each bank.
576
577 config ZYNQMP_GPIO_MODEPIN
578         bool "ZynqMP gpio modepin"
579         depends on DM_GPIO
580         help
581           This config enables the ZynqMP gpio modepin driver. ZynqMP modepin
582           driver will set and get the status of PS_MODE pins. These modepins
583           are accessed using xilinx firmware. In modepin register, [3:0] bits
584           set direction, [7:4] bits read IO, [11:8] bits set/clear IO.
585
586 config SL28CPLD_GPIO
587         bool "Kontron sl28cpld GPIO driver"
588         depends on DM_GPIO && SL28CPLD
589         help
590           Support GPIO access on Kontron sl28cpld board management controllers.
591
592 config SLG7XL45106_I2C_GPO
593         bool "slg7xl45106 i2c gpo expander"
594         depends on DM_GPIO
595         help
596            Support for slg7xl45106 i2c gpo expander. It is an i2c based
597            8-bit gpo expander, all gpo lines are controlled by writing
598            value into data register.
599
600 config TURRIS_OMNIA_MCU
601         bool "Turris Omnia MCU GPIO driver"
602         depends on DM_GPIO
603         default y if TARGET_TURRIS_OMNIA
604         help
605            Support for GPIOs on MCU connected to Turris Omnia via i2c.
606
607 config FTGPIO010
608         bool "Faraday Technology FTGPIO010 driver"
609         depends on DM_GPIO
610         help
611            Support for GPIOs on Faraday Technology's FTGPIO010 controller.
612
613 config ADP5585_GPIO
614         bool "ADP5585 GPIO driver"
615         depends on DM_GPIO && DM_I2C
616         help
617           Support ADP5585 GPIO expander.
618
619 endif