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