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