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