blob: af608b7b0ef1a112d7adb2fb991d5d82a4932e8f [file] [log] [blame]
Masahiro Yamada0b11dbf2015-07-26 02:46:26 +09001#
2# GPIO infrastructure and drivers
3#
4
5menu "GPIO Support"
6
Masahiro Yamadada333ae2014-10-23 22:26:09 +09007config DM_GPIO
8 bool "Enable Driver Model for GPIO drivers"
9 depends on DM
10 help
Simon Glassf94a1be2015-02-05 21:41:35 -070011 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.
Albert ARIBAUD \(3ADEV\)606f7042015-03-31 11:40:46 +020016
Simon Glassbcee8d62019-12-06 21:41:35 -070017config 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
28config 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
Heiko Schocher49b10cb2019-07-17 06:59:51 +020039config GPIO_HOG
Heiko Schocher5fc7cf82019-06-12 06:11:46 +020040 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
Thomas Chou88d5ecf2015-10-21 21:33:45 +080049config 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
Álvaro Fernández Rojase64bdb22017-05-07 20:09:30 +020056config BCM6345_GPIO
57 bool "BCM6345 GPIO driver"
Philippe Reynes17f34ca2020-01-07 20:14:15 +010058 depends on DM_GPIO && (ARCH_BMIPS || ARCH_BCM68360 || \
59 ARCH_BCM6858 || ARCH_BCM63158)
Álvaro Fernández Rojase64bdb22017-05-07 20:09:30 +020060 help
61 This driver supports the GPIO banks on BCM6345 SoCs.
62
Jason Li2ccacf32020-01-30 12:34:56 -080063config 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
Marek Vasute30a70c2015-06-23 15:54:19 +020071config 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
Wenyou Yang5a07a5f2017-03-23 12:46:19 +080078config AT91_GPIO
79 bool "AT91 PIO GPIO driver"
Wenyou Yang5a07a5f2017-03-23 12:46:19 +080080 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
Wenyou Yang2c62c562015-11-04 14:25:13 +080090config ATMEL_PIO4
91 bool "ATMEL PIO4 driver"
Wenyou Yangee3311d2016-07-20 17:16:26 +080092 depends on DM_GPIO
Wenyou Yang2c62c562015-11-04 14:25:13 +080093 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
Adam Ford5d653af2018-07-10 07:01:20 -0500101config DA8XX_GPIO
102 bool "DA8xx GPIO Driver"
103 help
104 This driver supports the DA8xx GPIO controller
105
Simon Glass64b17972016-03-11 22:07:27 -0700106config 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
Simon Glass7e589bc2019-12-06 21:42:54 -0700115config 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
Bin Meng72436892017-07-30 06:23:28 -0700124config 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
Peng Fand665eb62017-02-22 16:21:45 +0800130config 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
Eugeniy Paltsev3194c3c2017-10-16 16:21:32 +0300137config HSDK_CREG_GPIO
138 bool "HSDK CREG GPIO griver"
Alexey Brodkind5fbcd52017-12-10 20:55:44 +0300139 depends on DM_GPIO
Eugeniy Paltsev3194c3c2017-10-16 16:21:32 +0300140 default n
141 help
142 This driver supports CREG GPIOs on Synopsys HSDK SOC.
143
Albert ARIBAUD \(3ADEV\)606f7042015-03-31 11:40:46 +0200144config LPC32XX_GPIO
145 bool "LPC32XX GPIO driver"
146 depends on DM
147 default n
148 help
149 Support for the LPC32XX GPIO driver.
Simon Glassd79c50a2015-03-06 13:19:01 -0700150
Lars Povlsenbe8313f2019-01-02 09:52:21 +0100151config 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
Mateusz Kulikowski81a87e12016-03-31 23:12:15 +0200162config 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
Adam Ford8bbff6a2018-02-04 09:32:43 -0600176config MXC_GPIO
Hannes Schmelzer8fd05fc2018-06-07 12:10:09 +0200177 bool "Freescale/NXP MXC GPIO driver"
Adam Ford8bbff6a2018-02-04 09:32:43 -0600178 help
179 Support GPIO controllers on various i.MX platforms
180
Lukasz Majewski54847932019-08-13 18:10:39 +0200181config MXS_GPIO
182 bool "Freescale/NXP MXS GPIO driver"
183 help
184 Support GPIO controllers on i.MX23 and i.MX28 platforms
185
Tom Rini29cb2b32017-05-12 22:33:21 -0400186config 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
Simon Glass00913622017-08-04 16:34:32 -0600194config 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
Mateusz Kulikowski120800d2016-03-31 23:12:31 +0200203config 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
Vignesh R5746b0d2016-08-02 10:14:24 +0530213config 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
Marek Vasutf5f69592017-09-15 21:13:56 +0200220config 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
Marek Vasut86b8e7d2019-05-04 16:00:17 +0200226config 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
Simon Glass1f8f7732015-08-30 16:55:27 -0600232config 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
Simon Glassd79c50a2015-03-06 13:19:01 -0700241config 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
252config 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.
Bhuvanchandra DVd348a942015-06-01 18:37:16 +0530261
Andre Przywara10cfbaa2019-06-23 15:09:46 +0100262config SUNXI_GPIO
263 bool "Allwinner GPIO driver"
264 depends on ARCH_SUNXI
265 help
266 Support the GPIO device in Allwinner SoCs.
267
Vipul Kumar71d5a142018-02-28 11:32:22 +0530268config XILINX_GPIO
269 bool "Xilinx GPIO driver"
Michal Simek4a693662018-07-13 08:26:28 +0200270 depends on DM_GPIO
Vipul Kumar71d5a142018-02-28 11:32:22 +0530271 help
272 This config enable the Xilinx GPIO driver for Microblaze.
273
Simon Glass90d99e52017-08-04 16:34:54 -0600274config 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
Stephen Warren601800b2016-05-12 12:07:41 -0600283config 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
Stephen Warren074a1fd2016-05-25 14:38:51 -0600290config 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
Masahiro Yamadab9a66b62016-02-16 17:03:48 +0900298config GPIO_UNIPHIER
299 bool "UniPhier GPIO"
300 depends on ARCH_UNIPHIER
301 help
302 Say yes here to support UniPhier GPIOs.
303
Bhuvanchandra DVd348a942015-06-01 18:37:16 +0530304config 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.
Masahiro Yamada0b11dbf2015-07-26 02:46:26 +0900310
Purna Chandra Mandal386d9342016-01-28 15:30:13 +0530311config 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
Patrice Chotard95fbdd12019-06-21 15:39:22 +0200318config STM32_GPIO
Vikas Manocha77417102017-04-10 15:02:57 -0700319 bool "ST STM32 GPIO driver"
Trevor Woerner71f63542020-05-06 08:02:42 -0400320 depends on DM_GPIO && (ARCH_STM32 || ARCH_STM32MP)
Vikas Manocha77417102017-04-10 15:02:57 -0700321 default y
322 help
323 Device model driver support for STM32 GPIO controller. It should be
Patrice Chotard95fbdd12019-06-21 15:39:22 +0200324 usable on many stm32 families like stm32f4/f7/h7 and stm32mp1.
Vikas Manocha77417102017-04-10 15:02:57 -0700325 Tested on STM32F7.
326
Sagar Shrikant Kadamd26b4042019-10-01 10:00:46 -0700327config 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
Stefan Roese704d9a62016-02-12 13:46:50 +0100334config 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
Siva Durga Prasad Paladugu2978ae22016-03-10 16:27:39 +0530341config ZYNQ_GPIO
342 bool "Zynq GPIO driver"
Ashok Reddy Soma98248522019-09-16 03:35:16 -0600343 depends on DM_GPIO && (ARCH_ZYNQ || ARCH_ZYNQMP || ARCH_VERSAL)
Siva Durga Prasad Paladugu2978ae22016-03-10 16:27:39 +0530344 default y
345 help
346 Supports GPIO access on Zynq SoC.
347
Peng Fan9300f712016-05-03 10:02:23 +0800348config 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
Peng Fan03773432016-04-14 21:45:06 +0800356config 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
mario.six@gdsys.cc07d31f82016-05-25 15:15:20 +0200378
Peng Fan16103682018-12-21 06:21:21 +0000379config 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
Mario Six3c216832018-01-15 11:07:48 +0100402config MPC8XXX_GPIO
403 bool "Freescale MPC8XXX GPIO driver"
mario.six@gdsys.cc07d31f82016-05-25 15:15:20 +0200404 depends on DM_GPIO
405 help
Mario Six3c216832018-01-15 11:07:48 +0100406 This driver supports the built-in GPIO controller of MPC8XXX CPUs.
mario.six@gdsys.cc07d31f82016-05-25 15:15:20 +0200407 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
mario.six@gdsys.cc51781782016-05-25 15:15:22 +0200421 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.
Stefan Roese4751e552018-10-08 12:38:01 +0200424
Klaus H. Sorensen3fb22bc2020-02-11 15:20:22 +0000425config 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
Stefan Roese4751e552018-10-08 12:38:01 +0200433config MT7621_GPIO
434 bool "MediaTek MT7621 GPIO driver"
Weijie Gao16b94902019-04-30 11:13:58 +0800435 depends on DM_GPIO && SOC_MT7628
Stefan Roese4751e552018-10-08 12:38:01 +0200436 default y
437 help
438 Say yes here to support MediaTek MT7621 compatible GPIOs.
439
Masahiro Yamada0b11dbf2015-07-26 02:46:26 +0900440endmenu