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