xref: /linux/drivers/gpio/Kconfig (revision 9f639269ed1522c7d69c54cc8b80ab8ee53fcb10)
1#
2# GPIO infrastructure and drivers
3#
4
5config ARCH_WANT_OPTIONAL_GPIOLIB
6	bool
7	help
8	  Select this config option from the architecture Kconfig, if
9	  it is possible to use gpiolib on the architecture, but let the
10	  user decide whether to actually build it or not.
11	  Select this instead of ARCH_REQUIRE_GPIOLIB, if your architecture does
12	  not depend on GPIOs being available, but rather let the user
13	  decide whether he needs it or not.
14
15config ARCH_REQUIRE_GPIOLIB
16	bool
17	select GPIOLIB
18	help
19	  Platforms select gpiolib if they use this infrastructure
20	  for all their GPIOs, usually starting with ones integrated
21	  into SOC processors.
22	  Selecting this from the architecture code will cause the gpiolib
23	  code to always get built in.
24
25
26
27menuconfig GPIOLIB
28	bool "GPIO Support"
29	depends on ARCH_WANT_OPTIONAL_GPIOLIB || ARCH_REQUIRE_GPIOLIB
30	select GENERIC_GPIO
31	help
32	  This enables GPIO support through the generic GPIO library.
33	  You only need to enable this, if you also want to enable
34	  one or more of the GPIO drivers below.
35
36	  If unsure, say N.
37
38if GPIOLIB
39
40config DEBUG_GPIO
41	bool "Debug GPIO calls"
42	depends on DEBUG_KERNEL
43	help
44	  Say Y here to add some extra checks and diagnostics to GPIO calls.
45	  These checks help ensure that GPIOs have been properly initialized
46	  before they are used, and that sleeping calls are not made from
47	  non-sleeping contexts.  They can make bitbanged serial protocols
48	  slower.  The diagnostics help catch the type of setup errors
49	  that are most common when setting up new platforms or boards.
50
51config GPIO_SYSFS
52	bool "/sys/class/gpio/... (sysfs interface)"
53	depends on SYSFS && EXPERIMENTAL
54	help
55	  Say Y here to add a sysfs interface for GPIOs.
56
57	  This is mostly useful to work around omissions in a system's
58	  kernel support.  Those are common in custom and semicustom
59	  hardware assembled using standard kernels with a minimum of
60	  custom patches.  In those cases, userspace code may import
61	  a given GPIO from the kernel, if no kernel driver requested it.
62
63	  Kernel drivers may also request that a particular GPIO be
64	  exported to userspace; this can be useful when debugging.
65
66config GPIO_GENERIC
67	tristate
68
69# put drivers in the right section, in alphabetical order
70
71config GPIO_DA9052
72	tristate "Dialog DA9052 GPIO"
73	depends on PMIC_DA9052 && BROKEN
74	help
75	  Say yes here to enable the GPIO driver for the DA9052 chip.
76
77config GPIO_MAX730X
78	tristate
79
80comment "Memory mapped GPIO drivers:"
81
82config GPIO_GENERIC_PLATFORM
83	tristate "Generic memory-mapped GPIO controller support (MMIO platform device)"
84	select GPIO_GENERIC
85	help
86	  Say yes here to support basic platform_device memory-mapped GPIO controllers.
87
88config GPIO_IT8761E
89	tristate "IT8761E GPIO support"
90	depends on X86  # unconditional access to IO space.
91	help
92	  Say yes here to support GPIO functionality of IT8761E super I/O chip.
93
94config GPIO_EM
95	tristate "Emma Mobile GPIO"
96	depends on ARM
97	help
98	  Say yes here to support GPIO on Renesas Emma Mobile SoCs.
99
100config GPIO_EP93XX
101	def_bool y
102	depends on ARCH_EP93XX
103	select GPIO_GENERIC
104
105config GPIO_MPC5200
106	def_bool y
107	depends on PPC_MPC52xx
108
109config GPIO_MPC8XXX
110	bool "MPC512x/MPC8xxx GPIO support"
111	depends on PPC_MPC512x || PPC_MPC831x || PPC_MPC834x || PPC_MPC837x || \
112		   FSL_SOC_BOOKE || PPC_86xx
113	help
114	  Say Y here if you're going to use hardware that connects to the
115	  MPC512x/831x/834x/837x/8572/8610 GPIOs.
116
117config GPIO_MSM_V1
118	tristate "Qualcomm MSM GPIO v1"
119	depends on GPIOLIB && ARCH_MSM
120	help
121	  Say yes here to support the GPIO interface on ARM v6 based
122	  Qualcomm MSM chips.  Most of the pins on the MSM can be
123	  selected for GPIO, and are controlled by this driver.
124
125config GPIO_MSM_V2
126	tristate "Qualcomm MSM GPIO v2"
127	depends on GPIOLIB && ARCH_MSM
128	help
129	  Say yes here to support the GPIO interface on ARM v7 based
130	  Qualcomm MSM chips.  Most of the pins on the MSM can be
131	  selected for GPIO, and are controlled by this driver.
132
133config GPIO_MXC
134	def_bool y
135	depends on ARCH_MXC
136	select GPIO_GENERIC
137	select GENERIC_IRQ_CHIP
138
139config GPIO_MXS
140	def_bool y
141	depends on ARCH_MXS
142	select GPIO_GENERIC
143	select GENERIC_IRQ_CHIP
144
145config GPIO_PL061
146	bool "PrimeCell PL061 GPIO support"
147	depends on ARM_AMBA
148	select GENERIC_IRQ_CHIP
149	help
150	  Say yes here to support the PrimeCell PL061 GPIO device
151
152config GPIO_PXA
153	bool "PXA GPIO support"
154	depends on ARCH_PXA || ARCH_MMP
155	help
156	  Say yes here to support the PXA GPIO device
157
158config GPIO_XILINX
159	bool "Xilinx GPIO support"
160	depends on PPC_OF || MICROBLAZE
161	help
162	  Say yes here to support the Xilinx FPGA GPIO device
163
164config GPIO_VR41XX
165	tristate "NEC VR4100 series General-purpose I/O Uint support"
166	depends on CPU_VR41XX
167	help
168	  Say yes here to support the NEC VR4100 series General-purpose I/O Uint
169
170config GPIO_SCH
171	tristate "Intel SCH/TunnelCreek GPIO"
172	depends on PCI && X86
173	select MFD_CORE
174	select LPC_SCH
175	help
176	  Say yes here to support GPIO interface on Intel Poulsbo SCH
177	  or Intel Tunnel Creek processor.
178	  The Intel SCH contains a total of 14 GPIO pins. Ten GPIOs are
179	  powered by the core power rail and are turned off during sleep
180	  modes (S3 and higher). The remaining four GPIOs are powered by
181	  the Intel SCH suspend power supply. These GPIOs remain
182	  active during S3. The suspend powered GPIOs can be used to wake the
183	  system from the Suspend-to-RAM state.
184	  The Intel Tunnel Creek processor has 5 GPIOs powered by the
185	  core power rail and 9 from suspend power supply.
186
187config GPIO_VX855
188	tristate "VIA VX855/VX875 GPIO"
189	depends on PCI
190	select MFD_CORE
191	select MFD_VX855
192	help
193	  Support access to the VX855/VX875 GPIO lines through the gpio library.
194
195	  This driver provides common support for accessing the device,
196	  additional drivers must be enabled in order to use the
197	  functionality of the device.
198
199config GPIO_GE_FPGA
200	bool "GE FPGA based GPIO"
201	depends on GE_FPGA
202	help
203	  Support for common GPIO functionality provided on some GE Single Board
204	  Computers.
205
206	  This driver provides basic support (configure as input or output, read
207	  and write pin state) for GPIO implemented in a number of GE single
208	  board computers.
209
210comment "I2C GPIO expanders:"
211
212config GPIO_MAX7300
213	tristate "Maxim MAX7300 GPIO expander"
214	depends on I2C
215	select GPIO_MAX730X
216	help
217	  GPIO driver for Maxim MAX7301 I2C-based GPIO expander.
218
219config GPIO_MAX732X
220	tristate "MAX7319, MAX7320-7327 I2C Port Expanders"
221	depends on I2C
222	help
223	  Say yes here to support the MAX7319, MAX7320-7327 series of I2C
224	  Port Expanders. Each IO port on these chips has a fixed role of
225	  Input (designated by 'I'), Push-Pull Output ('O'), or Open-Drain
226	  Input and Output (designed by 'P'). The combinations are listed
227	  below:
228
229	  8 bits:	max7319 (8I), max7320 (8O), max7321 (8P),
230		  	max7322 (4I4O), max7323 (4P4O)
231
232	  16 bits:	max7324 (8I8O), max7325 (8P8O),
233		  	max7326 (4I12O), max7327 (4P12O)
234
235	  Board setup code must specify the model to use, and the start
236	  number for these GPIOs.
237
238config GPIO_MAX732X_IRQ
239	bool "Interrupt controller support for MAX732x"
240	depends on GPIO_MAX732X=y && GENERIC_HARDIRQS
241	help
242	  Say yes here to enable the max732x to be used as an interrupt
243	  controller. It requires the driver to be built in the kernel.
244
245config GPIO_MC9S08DZ60
246	bool "MX35 3DS BOARD MC9S08DZ60 GPIO functions"
247	depends on I2C && MACH_MX35_3DS
248	help
249	  Select this to enable the MC9S08DZ60 GPIO driver
250
251config GPIO_PCA953X
252	tristate "PCA953x, PCA955x, TCA64xx, and MAX7310 I/O ports"
253	depends on I2C
254	help
255	  Say yes here to provide access to several register-oriented
256	  SMBus I/O expanders, made mostly by NXP or TI.  Compatible
257	  models include:
258
259	  4 bits:	pca9536, pca9537
260
261	  8 bits:	max7310, pca9534, pca9538, pca9554, pca9557,
262	  		tca6408
263
264	  16 bits:	pca9535, pca9539, pca9555, tca6416
265
266config GPIO_PCA953X_IRQ
267	bool "Interrupt controller support for PCA953x"
268	depends on GPIO_PCA953X=y
269	help
270	  Say yes here to enable the pca953x to be used as an interrupt
271	  controller. It requires the driver to be built in the kernel.
272
273config GPIO_PCF857X
274	tristate "PCF857x, PCA{85,96}7x, and MAX732[89] I2C GPIO expanders"
275	depends on I2C
276	help
277	  Say yes here to provide access to most "quasi-bidirectional" I2C
278	  GPIO expanders used for additional digital outputs or inputs.
279	  Most of these parts are from NXP, though TI is a second source for
280	  some of them.  Compatible models include:
281
282	  8 bits:   pcf8574, pcf8574a, pca8574, pca8574a,
283	            pca9670, pca9672, pca9674, pca9674a,
284	  	    max7328, max7329
285
286	  16 bits:  pcf8575, pcf8575c, pca8575,
287	            pca9671, pca9673, pca9675
288
289	  Your board setup code will need to declare the expanders in
290	  use, and assign numbers to the GPIOs they expose.  Those GPIOs
291	  can then be used from drivers and other kernel code, just like
292	  other GPIOs, but only accessible from task contexts.
293
294	  This driver provides an in-kernel interface to those GPIOs using
295	  platform-neutral GPIO calls.
296
297config GPIO_SX150X
298	bool "Semtech SX150x I2C GPIO expander"
299	depends on I2C=y
300	default n
301	help
302	  Say yes here to provide support for Semtech SX150-series I2C
303	  GPIO expanders. Compatible models include:
304
305	  8 bits:  sx1508q
306	  16 bits: sx1509q
307
308config GPIO_STMPE
309	bool "STMPE GPIOs"
310	depends on MFD_STMPE
311	help
312	  This enables support for the GPIOs found on the STMPE I/O
313	  Expanders.
314
315config GPIO_TC3589X
316	bool "TC3589X GPIOs"
317	depends on MFD_TC3589X
318	help
319	  This enables support for the GPIOs found on the TC3589X
320	  I/O Expander.
321
322config GPIO_TPS65912
323	tristate "TI TPS65912 GPIO"
324	depends on (MFD_TPS65912_I2C || MFD_TPS65912_SPI)
325	help
326	  This driver supports TPS65912 gpio chip
327
328config GPIO_TWL4030
329	tristate "TWL4030, TWL5030, and TPS659x0 GPIOs"
330	depends on TWL4030_CORE
331	help
332	  Say yes here to access the GPIO signals of various multi-function
333	  power management chips from Texas Instruments.
334
335config GPIO_WM831X
336	tristate "WM831x GPIOs"
337	depends on MFD_WM831X
338	help
339	  Say yes here to access the GPIO signals of WM831x power management
340	  chips from Wolfson Microelectronics.
341
342config GPIO_WM8350
343	tristate "WM8350 GPIOs"
344	depends on MFD_WM8350
345	help
346	  Say yes here to access the GPIO signals of WM8350 power management
347	  chips from Wolfson Microelectronics.
348
349config GPIO_WM8994
350	tristate "WM8994 GPIOs"
351	depends on MFD_WM8994
352	help
353	  Say yes here to access the GPIO signals of WM8994 audio hub
354	  CODECs from Wolfson Microelectronics.
355
356config GPIO_ADP5520
357	tristate "GPIO Support for ADP5520 PMIC"
358	depends on PMIC_ADP5520
359	help
360	  This option enables support for on-chip GPIO found
361	  on Analog Devices ADP5520 PMICs.
362
363config GPIO_ADP5588
364	tristate "ADP5588 I2C GPIO expander"
365	depends on I2C
366	help
367	  This option enables support for 18 GPIOs found
368	  on Analog Devices ADP5588 GPIO Expanders.
369
370config GPIO_ADP5588_IRQ
371	bool "Interrupt controller support for ADP5588"
372	depends on GPIO_ADP5588=y
373	help
374	  Say yes here to enable the adp5588 to be used as an interrupt
375	  controller. It requires the driver to be built in the kernel.
376
377comment "PCI GPIO expanders:"
378
379config GPIO_CS5535
380	tristate "AMD CS5535/CS5536 GPIO support"
381	depends on PCI && X86 && MFD_CS5535
382	help
383	  The AMD CS5535 and CS5536 southbridges support 28 GPIO pins that
384	  can be used for quite a number of things.  The CS5535/6 is found on
385	  AMD Geode and Lemote Yeeloong devices.
386
387	  If unsure, say N.
388
389config GPIO_BT8XX
390	tristate "BT8XX GPIO abuser"
391	depends on PCI && VIDEO_BT848=n
392	help
393	  The BT8xx frame grabber chip has 24 GPIO pins than can be abused
394	  as a cheap PCI GPIO card.
395
396	  This chip can be found on Miro, Hauppauge and STB TV-cards.
397
398	  The card needs to be physically altered for using it as a
399	  GPIO card. For more information on how to build a GPIO card
400	  from a BT8xx TV card, see the documentation file at
401	  Documentation/bt8xxgpio.txt
402
403	  If unsure, say N.
404
405config GPIO_LANGWELL
406	bool "Intel Langwell/Penwell GPIO support"
407	depends on PCI && X86
408	help
409	  Say Y here to support Intel Langwell/Penwell GPIO.
410
411config GPIO_PCH
412	tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
413	depends on PCI && X86
414	select GENERIC_IRQ_CHIP
415	help
416	  This driver is for PCH(Platform controller Hub) GPIO of Intel Topcliff
417	  which is an IOH(Input/Output Hub) for x86 embedded processor.
418	  This driver can access PCH GPIO device.
419
420	  This driver also can be used for LAPIS Semiconductor IOH(Input/
421	  Output Hub), ML7223 and ML7831.
422	  ML7223 IOH is for MP(Media Phone) use.
423	  ML7831 IOH is for general purpose use.
424	  ML7223/ML7831 is companion chip for Intel Atom E6xx series.
425	  ML7223/ML7831 is completely compatible for Intel EG20T PCH.
426
427config GPIO_ML_IOH
428	tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
429	depends on PCI
430	select GENERIC_IRQ_CHIP
431	help
432	  ML7213 is companion chip for Intel Atom E6xx series.
433	  This driver can be used for OKI SEMICONDUCTOR ML7213 IOH(Input/Output
434	  Hub) which is for IVI(In-Vehicle Infotainment) use.
435	  This driver can access the IOH's GPIO device.
436
437config GPIO_SODAVILLE
438	bool "Intel Sodaville GPIO support"
439	depends on X86 && PCI && OF
440	select GPIO_GENERIC
441	select GENERIC_IRQ_CHIP
442	help
443	  Say Y here to support Intel Sodaville GPIO.
444
445config GPIO_TIMBERDALE
446	bool "Support for timberdale GPIO IP"
447	depends on MFD_TIMBERDALE && HAS_IOMEM
448	---help---
449	Add support for the GPIO IP in the timberdale FPGA.
450
451config GPIO_RDC321X
452	tristate "RDC R-321x GPIO support"
453	depends on PCI
454	select MFD_CORE
455	select MFD_RDC321X
456	help
457	  Support for the RDC R321x SoC GPIOs over southbridge
458	  PCI configuration space.
459
460comment "SPI GPIO expanders:"
461
462config GPIO_MAX7301
463	tristate "Maxim MAX7301 GPIO expander"
464	depends on SPI_MASTER
465	select GPIO_MAX730X
466	help
467	  GPIO driver for Maxim MAX7301 SPI-based GPIO expander.
468
469config GPIO_MCP23S08
470	tristate "Microchip MCP23xxx I/O expander"
471	depends on SPI_MASTER || I2C
472	help
473	  SPI/I2C driver for Microchip MCP23S08/MCP23S17/MCP23008/MCP23017
474	  I/O expanders.
475	  This provides a GPIO interface supporting inputs and outputs.
476
477config GPIO_MC33880
478	tristate "Freescale MC33880 high-side/low-side switch"
479	depends on SPI_MASTER
480	help
481	  SPI driver for Freescale MC33880 high-side/low-side switch.
482	  This provides GPIO interface supporting inputs and outputs.
483
484config GPIO_74X164
485	tristate "74x164 serial-in/parallel-out 8-bits shift register"
486	depends on SPI_MASTER
487	help
488	  Platform driver for 74x164 compatible serial-in/parallel-out
489	  8-outputs shift registers. This driver can be used to provide access
490	  to more gpio outputs.
491
492comment "AC97 GPIO expanders:"
493
494config GPIO_UCB1400
495	bool "Philips UCB1400 GPIO"
496	depends on UCB1400_CORE
497	help
498	  This enables support for the Philips UCB1400 GPIO pins.
499	  The UCB1400 is an AC97 audio codec.
500
501comment "MODULbus GPIO expanders:"
502
503config GPIO_JANZ_TTL
504	tristate "Janz VMOD-TTL Digital IO Module"
505	depends on MFD_JANZ_CMODIO
506	help
507	  This enables support for the Janz VMOD-TTL Digital IO module.
508	  This driver provides support for driving the pins in output
509	  mode only. Input mode is not supported.
510
511config GPIO_AB8500
512	bool "ST-Ericsson AB8500 Mixed Signal Circuit gpio functions"
513	depends on AB8500_CORE && BROKEN
514	help
515	  Select this to enable the AB8500 IC GPIO driver
516
517config GPIO_TPS65910
518	bool "TPS65910 GPIO"
519	depends on MFD_TPS65910
520	help
521	  Select this option to enable GPIO driver for the TPS65910
522	  chip family.
523endif
524