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