af608b7b0ef1a112d7adb2fb991d5d82a4932e8f
[platform/kernel/u-boot.git] / drivers / gpio / Kconfig
1 #
2 # GPIO infrastructure and drivers
3 #
4
5 menu "GPIO Support"
6
7 config DM_GPIO
8         bool "Enable Driver Model for GPIO drivers"
9         depends on DM
10         help
11           Enable driver model for GPIO access. The standard GPIO
12           interface (gpio_get_value(), etc.) is then implemented by
13           the GPIO uclass. Drivers provide methods to query the
14           particular GPIOs that they provide. The uclass interface
15           is defined in include/asm-generic/gpio.h.
16
17 config SPL_DM_GPIO
18         bool "Enable Driver Model for GPIO drivers in SPL"
19         depends on DM_GPIO && SPL_DM && SPL_GPIO_SUPPORT
20         default y
21         help
22           Enable driver model for GPIO access in SPL. The standard GPIO
23           interface (gpio_get_value(), etc.) is then implemented by
24           the GPIO uclass. Drivers provide methods to query the
25           particular GPIOs that they provide. The uclass interface
26           is defined in include/asm-generic/gpio.h.
27
28 config TPL_DM_GPIO
29         bool "Enable Driver Model for GPIO drivers in TPL"
30         depends on DM_GPIO && TPL_DM && TPL_GPIO_SUPPORT
31         default y
32         help
33           Enable driver model for GPIO access in TPL. The standard GPIO
34           interface (gpio_get_value(), etc.) is then implemented by
35           the GPIO uclass. Drivers provide methods to query the
36           particular GPIOs that they provide. The uclass interface
37           is defined in include/asm-generic/gpio.h.
38
39 config GPIO_HOG
40         bool "Enable GPIO hog support"
41         depends on DM_GPIO
42         default n
43         help
44           Enable gpio hog support
45           The GPIO chip may contain GPIO hog definitions. GPIO hogging
46           is a mechanism providing automatic GPIO request and config-
47           uration as part of the gpio-controller's driver probe function.
48
49 config ALTERA_PIO
50         bool "Altera PIO driver"
51         depends on DM_GPIO
52         help
53           Select this to enable PIO for Altera devices. Please find
54           details on the "Embedded Peripherals IP User Guide" of Altera.
55
56 config BCM6345_GPIO
57         bool "BCM6345 GPIO driver"
58         depends on DM_GPIO && (ARCH_BMIPS || ARCH_BCM68360 || \
59                                ARCH_BCM6858 || ARCH_BCM63158)
60         help
61           This driver supports the GPIO banks on BCM6345 SoCs.
62
63 config CORTINA_GPIO
64         bool "Cortina-Access GPIO driver"
65         depends on DM_GPIO && CORTINA_PLATFORM
66         help
67           Enable support for the GPIO controller in Cortina CAxxxx SoCs.
68           This driver supports all CPU ISA variants supported by Cortina
69           Access CAxxxx SoCs.
70
71 config DWAPB_GPIO
72         bool "DWAPB GPIO driver"
73         depends on DM && DM_GPIO
74         default n
75         help
76           Support for the Designware APB GPIO driver.
77
78 config AT91_GPIO
79         bool "AT91 PIO GPIO driver"
80         default n
81         help
82           Say yes here to select AT91 PIO GPIO driver. AT91 PIO
83           controller manages up to 32 fully programmable input/output
84           lines. Each I/O line may be dedicated as a general-purpose
85           I/O or be assigned to a function of an embedded peripheral.
86           The assignment to a function of an embedded peripheral is
87           the responsibility of AT91 Pinctrl driver. This driver is
88           responsible for the general-purpose I/O.
89
90 config ATMEL_PIO4
91         bool "ATMEL PIO4 driver"
92         depends on DM_GPIO
93         default n
94         help
95           Say yes here to support the Atmel PIO4 driver.
96           The PIO4 is new version of Atmel PIO controller, which manages
97           up to 128 fully programmable input/output lines. Each I/O line
98           may be dedicated as a general purpose I/O or be assigned to
99           a function of an embedded peripheral.
100
101 config DA8XX_GPIO
102         bool "DA8xx GPIO Driver"
103         help
104           This driver supports the DA8xx GPIO controller
105
106 config INTEL_BROADWELL_GPIO
107         bool "Intel Broadwell GPIO driver"
108         depends on DM
109         help
110           This driver supports Broadwell U devices which have an expanded
111           GPIO feature set. The difference is large enough to merit a separate
112           driver from the common Intel ICH6 driver. It supports a total of
113           95 GPIOs which can be configured from the device tree.
114
115 config INTEL_GPIO
116         bool "Intel generic GPIO driver"
117         depends on DM_GPIO
118         help
119           Say yes here to select Intel generic GPIO driver. This controller
120           supports recent chips (e.g. Apollo Lake). It permits basic GPIO
121           control including setting pins to input/output. It makes use of its
122           parent pinctrl driver to actually effect changes.
123
124 config INTEL_ICH6_GPIO
125         bool "Intel ICH6 compatible legacy GPIO driver"
126         depends on DM_GPIO
127         help
128           Say yes here to select Intel ICH6 compatible legacy GPIO driver.
129
130 config IMX_RGPIO2P
131         bool "i.MX7ULP RGPIO2P driver"
132         depends on DM
133         default n
134         help
135           This driver supports i.MX7ULP Rapid GPIO2P controller.
136
137 config HSDK_CREG_GPIO
138         bool "HSDK CREG GPIO griver"
139         depends on DM_GPIO
140         default n
141         help
142           This driver supports CREG GPIOs on Synopsys HSDK SOC.
143
144 config LPC32XX_GPIO
145         bool "LPC32XX GPIO driver"
146         depends on DM
147         default n
148         help
149           Support for the LPC32XX GPIO driver.
150
151 config MSCC_SGPIO
152         bool "Microsemi Serial GPIO driver"
153         depends on DM_GPIO && SOC_VCOREIII
154         help
155           Support for the VCoreIII SoC serial GPIO device. By using a
156           serial interface, the SIO controller significantly extends
157           the number of available GPIOs with a minimum number of
158           additional pins on the device. The primary purpose of the
159           SIO controller is to connect control signals from SFP
160           modules and to act as an LED controller.
161
162 config MSM_GPIO
163         bool "Qualcomm GPIO driver"
164         depends on DM_GPIO
165         default n
166         help
167           Support GPIO controllers on Qualcomm Snapdragon family of SoCs.
168           This controller have single bank (default name "soc"), every
169           gpio has it's own set of registers.
170           Only simple GPIO operations are supported (get/set, change of
171           direction and checking pin function).
172           Supported devices:
173           - APQ8016
174           - MSM8916
175
176 config MXC_GPIO
177         bool "Freescale/NXP MXC GPIO driver"
178         help
179           Support GPIO controllers on various i.MX platforms
180
181 config MXS_GPIO
182         bool "Freescale/NXP MXS GPIO driver"
183         help
184           Support GPIO controllers on i.MX23 and i.MX28 platforms
185
186 config OMAP_GPIO
187         bool "TI OMAP GPIO driver"
188         depends on ARCH_OMAP2PLUS
189         default y
190         help
191           Support GPIO controllers on the TI OMAP3/4/5 and related (such as
192           AM335x/AM43xx/AM57xx/DRA7xx/etc) families of SoCs.
193
194 config CMD_PCA953X
195         bool "Enable the pca953x command"
196         help
197           Deprecated: This should be converted to driver model.
198
199           This command provides access to a pca953x GPIO device using the
200           legacy GPIO interface. Several subcommands are provided which mirror
201           the standard 'gpio' command. It should use that instead.
202
203 config PM8916_GPIO
204         bool "Qualcomm PM8916 PMIC GPIO/keypad driver"
205         depends on DM_GPIO && PMIC_PM8916
206         help
207           Support for GPIO pins and power/reset buttons found on
208           Qualcomm PM8916 PMIC.
209           Default name for GPIO bank is "pm8916".
210           Power and reset buttons are placed in "pm8916_key" bank and
211           have gpio numbers 0 and 1 respectively.
212
213 config PCF8575_GPIO
214         bool "PCF8575 I2C GPIO Expander driver"
215         depends on DM_GPIO && DM_I2C
216         help
217          Support for PCF8575 I2C 16-bit GPIO expander. Most of these
218          chips are from NXP and TI.
219
220 config RCAR_GPIO
221         bool "Renesas RCar GPIO driver"
222         depends on DM_GPIO && ARCH_RMOBILE
223         help
224           This driver supports the GPIO banks on Renesas RCar SoCs.
225
226 config RZA1_GPIO
227         bool "Renesas RZ/A1 GPIO driver"
228         depends on DM_GPIO && RZA1
229         help
230           This driver supports the GPIO banks on Renesas RZ/A1 R7S72100 SoCs.
231
232 config ROCKCHIP_GPIO
233         bool "Rockchip GPIO driver"
234         depends on DM_GPIO
235         help
236           Support GPIO access on Rockchip SoCs. The GPIOs are arranged into
237           a number of banks (different for each SoC type) each with 32 GPIOs.
238           The GPIOs for a device are defined in the device tree with one node
239           for each bank.
240
241 config SANDBOX_GPIO
242         bool "Enable sandbox GPIO driver"
243         depends on SANDBOX && DM && DM_GPIO
244         help
245           This driver supports some simulated GPIOs which can be adjusted
246           using 'back door' functions like sandbox_gpio_set_value(). Then the
247           GPIOs can be inspected through the normal get_get_value()
248           interface. The purpose of this is to allow GPIOs to be used as
249           normal in sandbox, perhaps with test code actually driving the
250           behaviour of those GPIOs.
251
252 config SANDBOX_GPIO_COUNT
253         int "Number of sandbox GPIOs"
254         depends on SANDBOX_GPIO
255         default 128
256         help
257           The sandbox driver can support any number of GPIOs. Generally these
258           are specified using the device tree. But you can also have a number
259           of 'anonymous' GPIOs that do not belong to any device or bank.
260           Select a suitable value depending on your needs.
261
262 config SUNXI_GPIO
263         bool "Allwinner GPIO driver"
264         depends on ARCH_SUNXI
265         help
266           Support the GPIO device in Allwinner SoCs.
267
268 config XILINX_GPIO
269         bool "Xilinx GPIO driver"
270         depends on DM_GPIO
271         help
272           This config enable the Xilinx GPIO driver for Microblaze.
273
274 config CMD_TCA642X
275         bool "tca642x - Command to access tca642x state"
276         help
277           DEPRECATED - This needs conversion to driver model
278
279           This provides a way to looking at the pin state of this device.
280           This mirrors the 'gpio' command and that should be used in preference
281           to custom code.
282
283 config TEGRA_GPIO
284         bool "Tegra20..210 GPIO driver"
285         depends on DM_GPIO
286         help
287           Support for the GPIO controller contained in NVIDIA Tegra20 through
288           Tegra210.
289
290 config TEGRA186_GPIO
291         bool "Tegra186 GPIO driver"
292         depends on DM_GPIO
293         help
294           Support for the GPIO controller contained in NVIDIA Tegra186. This
295           covers both the "main" and "AON" controller instances, even though
296           they have slightly different register layout.
297
298 config GPIO_UNIPHIER
299         bool "UniPhier GPIO"
300         depends on ARCH_UNIPHIER
301         help
302           Say yes here to support UniPhier GPIOs.
303
304 config VYBRID_GPIO
305         bool "Vybrid GPIO driver"
306         depends on DM
307         default n
308         help
309           Say yes here to support Vybrid vf610 GPIOs.
310
311 config PIC32_GPIO
312         bool "Microchip PIC32 GPIO driver"
313         depends on DM_GPIO && MACH_PIC32
314         default y
315         help
316           Say yes here to support Microchip PIC32 GPIOs.
317
318 config STM32_GPIO
319         bool "ST STM32 GPIO driver"
320         depends on DM_GPIO && (ARCH_STM32 || ARCH_STM32MP)
321         default y
322         help
323           Device model driver support for STM32 GPIO controller. It should be
324           usable on many stm32 families like stm32f4/f7/h7 and stm32mp1.
325           Tested on STM32F7.
326
327 config SIFIVE_GPIO
328         bool "SiFive GPIO driver"
329         depends on DM_GPIO
330         help
331           Device model driver for GPIO controller present in SiFive FU540 SoC. This
332           driver enables GPIO interface on HiFive Unleashed A00 board.
333
334 config MVEBU_GPIO
335         bool "Marvell MVEBU GPIO driver"
336         depends on DM_GPIO && ARCH_MVEBU
337         default y
338         help
339           Say yes here to support Marvell MVEBU (Armada XP/38x) GPIOs.
340
341 config ZYNQ_GPIO
342         bool "Zynq GPIO driver"
343         depends on DM_GPIO && (ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL)
344         default y
345         help
346           Supports GPIO access on Zynq SoC.
347
348 config DM_74X164
349         bool "74x164 serial-in/parallel-out 8-bits shift register"
350         depends on DM_GPIO
351         help
352           Driver for 74x164 compatible serial-in/parallel-out 8-outputs
353           shift registers, such as 74lv165, 74hc595.
354           This driver can be used to provide access to more gpio outputs.
355
356 config DM_PCA953X
357         bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports"
358         depends on DM_GPIO
359         help
360           Say yes here to provide access to several register-oriented
361           SMBus I/O expanders, made mostly by NXP or TI.  Compatible
362           models include:
363
364           4 bits:       pca9536, pca9537
365
366           8 bits:       max7310, max7315, pca6107, pca9534, pca9538, pca9554,
367                         pca9556, pca9557, pca9574, tca6408, xra1202
368
369           16 bits:      max7312, max7313, pca9535, pca9539, pca9555, pca9575,
370                         tca6416
371
372           24 bits:      tca6424
373
374           40 bits:      pca9505, pca9698
375
376           Now, max 24 bits chips and PCA953X compatible chips are
377           supported
378
379 config SPL_DM_PCA953X
380         bool "PCA95[357]x, PCA9698, TCA64xx, and MAX7310 I/O ports in SPL"
381         depends on DM_GPIO
382         help
383           Say yes here to provide access to several register-oriented
384           SMBus I/O expanders, made mostly by NXP or TI.  Compatible
385           models include:
386
387           4 bits:       pca9536, pca9537
388
389           8 bits:       max7310, max7315, pca6107, pca9534, pca9538, pca9554,
390                         pca9556, pca9557, pca9574, tca6408, xra1202
391
392           16 bits:      max7312, max7313, pca9535, pca9539, pca9555, pca9575,
393                         tca6416
394
395           24 bits:      tca6424
396
397           40 bits:      pca9505, pca9698
398
399           Now, max 24 bits chips and PCA953X compatible chips are
400           supported
401
402 config MPC8XXX_GPIO
403         bool "Freescale MPC8XXX GPIO driver"
404         depends on DM_GPIO
405         help
406           This driver supports the built-in GPIO controller of MPC8XXX CPUs.
407           Each GPIO bank is identified by its own entry in the device tree,
408           i.e.
409
410           gpio-controller@fc00 {
411                 #gpio-cells = <2>;
412                 compatible = "fsl,pq3-gpio";
413                 reg = <0xfc00 0x100>
414           }
415
416           By default, each bank is assumed to have 32 GPIOs, but the ngpios
417           setting is honored, so the number of GPIOs for each bank is
418           configurable to match the actual GPIO count of the SoC (e.g. the
419           32/32/23 banks of the P1022 SoC).
420
421           Aside from the standard functions of input/output mode, and output
422           value setting, the open-drain feature, which can configure individual
423           GPIOs to work as open-drain outputs, is supported.
424
425 config MPC83XX_SPISEL_BOOT
426         bool "Freescale MPC83XX SPISEL_BOOT driver"
427         depends on DM_GPIO && ARCH_MPC830X
428         help
429           GPIO driver to set/clear dedicated SPISEL_BOOT output on MPC83XX.
430
431           This pin is typically used as spi chip select to a spi nor flash.
432
433 config MT7621_GPIO
434         bool "MediaTek MT7621 GPIO driver"
435         depends on DM_GPIO && SOC_MT7628
436         default y
437         help
438           Say yes here to support MediaTek MT7621 compatible GPIOs.
439
440 endmenu