2 # GPIO infrastructure and drivers
5 config ARCH_HAVE_CUSTOM_GPIO_H
8 Selecting this config option from the architecture Kconfig allows
9 the architecture to provide a custom asm/gpio.h implementation
10 overriding the default implementations. New uses of this are
13 config ARCH_WANT_OPTIONAL_GPIOLIB
16 Select this config option from the architecture Kconfig, if
17 it is possible to use gpiolib on the architecture, but let the
18 user decide whether to actually build it or not.
19 Select this instead of ARCH_REQUIRE_GPIOLIB, if your architecture does
20 not depend on GPIOs being available, but rather let the user
21 decide whether he needs it or not.
23 config ARCH_REQUIRE_GPIOLIB
27 Platforms select gpiolib if they use this infrastructure
28 for all their GPIOs, usually starting with ones integrated
30 Selecting this from the architecture code will cause the gpiolib
31 code to always get built in.
37 depends on ARCH_WANT_OPTIONAL_GPIOLIB || ARCH_REQUIRE_GPIOLIB
40 This enables GPIO support through the generic GPIO library.
41 You only need to enable this, if you also want to enable
42 one or more of the GPIO drivers below.
57 bool "Debug GPIO calls"
58 depends on DEBUG_KERNEL
60 Say Y here to add some extra checks and diagnostics to GPIO calls.
61 These checks help ensure that GPIOs have been properly initialized
62 before they are used, and that sleeping calls are not made from
63 non-sleeping contexts. They can make bitbanged serial protocols
64 slower. The diagnostics help catch the type of setup errors
65 that are most common when setting up new platforms or boards.
68 bool "/sys/class/gpio/... (sysfs interface)"
69 depends on SYSFS && EXPERIMENTAL
71 Say Y here to add a sysfs interface for GPIOs.
73 This is mostly useful to work around omissions in a system's
74 kernel support. Those are common in custom and semicustom
75 hardware assembled using standard kernels with a minimum of
76 custom patches. In those cases, userspace code may import
77 a given GPIO from the kernel, if no kernel driver requested it.
79 Kernel drivers may also request that a particular GPIO be
80 exported to userspace; this can be useful when debugging.
85 # put drivers in the right section, in alphabetical order
88 tristate "Dialog DA9052 GPIO"
89 depends on PMIC_DA9052
91 Say yes here to enable the GPIO driver for the DA9052 chip.
94 tristate "Dialog Semiconductor DA9055 GPIO"
97 Say yes here to enable the GPIO driver for the DA9055 chip.
99 The Dialog DA9055 PMIC chip has 3 GPIO pins that can be
100 be controller by this driver.
102 If driver is built as a module it will be called gpio-da9055.
107 comment "Memory mapped GPIO drivers:"
111 depends on ARCH_CLPS711X
113 config GPIO_GENERIC_PLATFORM
114 tristate "Generic memory-mapped GPIO controller support (MMIO platform device)"
117 Say yes here to support basic platform_device memory-mapped GPIO controllers.
120 tristate "IT8761E GPIO support"
121 depends on X86 # unconditional access to IO space.
123 Say yes here to support GPIO functionality of IT8761E super I/O chip.
126 tristate "Emma Mobile GPIO"
129 Say yes here to support GPIO on Renesas Emma Mobile SoCs.
133 depends on ARCH_EP93XX
136 config GPIO_MM_LANTIQ
137 bool "Lantiq Memory mapped GPIOs"
138 depends on LANTIQ && SOC_XWAY
140 This enables support for memory mapped GPIOs on the External Bus Unit
141 (EBU) found on Lantiq SoCs. The gpios are output only as they are
142 created by attaching a 16bit latch to the bus.
146 depends on PPC_MPC52xx
149 bool "MPC512x/MPC8xxx GPIO support"
150 depends on PPC_MPC512x || PPC_MPC831x || PPC_MPC834x || PPC_MPC837x || \
151 FSL_SOC_BOOKE || PPC_86xx
153 Say Y here if you're going to use hardware that connects to the
154 MPC512x/831x/834x/837x/8572/8610 GPIOs.
157 tristate "Qualcomm MSM GPIO v1"
158 depends on GPIOLIB && ARCH_MSM && (ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50)
160 Say yes here to support the GPIO interface on ARM v6 based
161 Qualcomm MSM chips. Most of the pins on the MSM can be
162 selected for GPIO, and are controlled by this driver.
165 tristate "Qualcomm MSM GPIO v2"
166 depends on GPIOLIB && ARCH_MSM
168 Say yes here to support the GPIO interface on ARM v7 based
169 Qualcomm MSM chips. Most of the pins on the MSM can be
170 selected for GPIO, and are controlled by this driver.
174 depends on PLAT_ORION
177 select GENERIC_IRQ_CHIP
183 select GENERIC_IRQ_CHIP
189 select GENERIC_IRQ_CHIP
192 bool "PrimeCell PL061 GPIO support"
193 depends on ARM && ARM_AMBA
194 select GENERIC_IRQ_CHIP
196 Say yes here to support the PrimeCell PL061 GPIO device
199 bool "PXA GPIO support"
200 depends on ARCH_PXA || ARCH_MMP
202 Say yes here to support the PXA GPIO device
204 config GPIO_SPEAR_SPICS
205 bool "ST SPEAr13xx SPI Chip Select as GPIO support"
206 depends on PLAT_SPEAR
207 select GENERIC_IRQ_CHIP
209 Say yes here to support ST SPEAr SPI Chip Select as GPIO device
212 bool "STA2x11/ConneXt GPIO support"
213 depends on MFD_STA2X11
214 select GENERIC_IRQ_CHIP
216 Say yes here to support the STA2x11/ConneXt GPIO device.
217 The GPIO module has 128 GPIO pins with alternate functions.
220 tristate "TS-5500 DIO blocks and compatibles"
222 This driver supports Digital I/O exposed by pin blocks found on some
223 Technologic Systems platforms. It includes, but is not limited to, 3
224 blocks of the TS-5500: DIO1, DIO2 and the LCD port, and the TS-5600
228 bool "VIA/Wondermedia SoC GPIO Support"
229 depends on ARCH_VT8500
231 Say yes here to support the VT8500/WM8505/WM8650 GPIO controller.
234 bool "Xilinx GPIO support"
235 depends on PPC_OF || MICROBLAZE
237 Say yes here to support the Xilinx FPGA GPIO device
240 tristate "NEC VR4100 series General-purpose I/O Uint support"
241 depends on CPU_VR41XX
243 Say yes here to support the NEC VR4100 series General-purpose I/O Uint
246 tristate "Intel SCH/TunnelCreek/Centerton GPIO"
247 depends on PCI && X86
251 Say yes here to support GPIO interface on Intel Poulsbo SCH,
252 Intel Tunnel Creek processor or Intel Centerton processor.
253 The Intel SCH contains a total of 14 GPIO pins. Ten GPIOs are
254 powered by the core power rail and are turned off during sleep
255 modes (S3 and higher). The remaining four GPIOs are powered by
256 the Intel SCH suspend power supply. These GPIOs remain
257 active during S3. The suspend powered GPIOs can be used to wake the
258 system from the Suspend-to-RAM state.
259 The Intel Tunnel Creek processor has 5 GPIOs powered by the
260 core power rail and 9 from suspend power supply.
261 The Intel Centerton processor has a total of 30 GPIO pins.
262 Twenty-one are powered by the core power rail and 9 from the
263 suspend power supply.
266 tristate "Intel ICH GPIO"
267 depends on PCI && X86
271 Say yes here to support the GPIO functionality of a number of Intel
272 ICH-based chipsets. Currently supported devices: ICH6, ICH7, ICH8
273 ICH9, ICH10, Series 5/3400 (eg Ibex Peak), Series 6/C200 (eg
274 Cougar Point), NM10 (Tiger Point), and 3100 (Whitmore Lake).
279 tristate "VIA VX855/VX875 GPIO"
284 Support access to the VX855/VX875 GPIO lines through the gpio library.
286 This driver provides common support for accessing the device,
287 additional drivers must be enabled in order to use the
288 functionality of the device.
291 bool "GE FPGA based GPIO"
294 Support for common GPIO functionality provided on some GE Single Board
297 This driver provides basic support (configure as input or output, read
298 and write pin state) for GPIO implemented in a number of GE single
301 config GPIO_LYNXPOINT
302 bool "Intel Lynxpoint GPIO support"
306 driver for GPIO functionality on Intel Lynxpoint PCH chipset
307 Requires ACPI device enumeration code to set up a platform device.
309 comment "I2C GPIO expanders:"
312 tristate "Wolfson Microelectronics Arizona class devices"
313 depends on MFD_ARIZONA
315 Support for GPIOs on Wolfson Arizona class devices.
318 tristate "Maxim MAX7300 GPIO expander"
322 GPIO driver for Maxim MAX7301 I2C-based GPIO expander.
325 tristate "MAX7319, MAX7320-7327 I2C Port Expanders"
328 Say yes here to support the MAX7319, MAX7320-7327 series of I2C
329 Port Expanders. Each IO port on these chips has a fixed role of
330 Input (designated by 'I'), Push-Pull Output ('O'), or Open-Drain
331 Input and Output (designed by 'P'). The combinations are listed
334 8 bits: max7319 (8I), max7320 (8O), max7321 (8P),
335 max7322 (4I4O), max7323 (4P4O)
337 16 bits: max7324 (8I8O), max7325 (8P8O),
338 max7326 (4I12O), max7327 (4P12O)
340 Board setup code must specify the model to use, and the start
341 number for these GPIOs.
343 config GPIO_MAX732X_IRQ
344 bool "Interrupt controller support for MAX732x"
345 depends on GPIO_MAX732X=y && GENERIC_HARDIRQS
347 Say yes here to enable the max732x to be used as an interrupt
348 controller. It requires the driver to be built in the kernel.
350 config GPIO_MC9S08DZ60
351 bool "MX35 3DS BOARD MC9S08DZ60 GPIO functions"
352 depends on I2C=y && MACH_MX35_3DS
354 Select this to enable the MC9S08DZ60 GPIO driver
357 tristate "PCA953x, PCA955x, PCA957x, TCA64xx, and MAX7310 I/O ports"
360 Say yes here to provide access to several register-oriented
361 SMBus I/O expanders, made mostly by NXP or TI. Compatible
364 4 bits: pca9536, pca9537
366 8 bits: max7310, max7315, pca6107, pca9534, pca9538, pca9554,
367 pca9556, pca9557, pca9574, tca6408
369 16 bits: max7312, max7313, pca9535, pca9539, pca9555, pca9575,
372 config GPIO_PCA953X_IRQ
373 bool "Interrupt controller support for PCA953x"
374 depends on GPIO_PCA953X=y
376 Say yes here to enable the pca953x to be used as an interrupt
377 controller. It requires the driver to be built in the kernel.
380 tristate "PCF857x, PCA{85,96}7x, and MAX732[89] I2C GPIO expanders"
384 Say yes here to provide access to most "quasi-bidirectional" I2C
385 GPIO expanders used for additional digital outputs or inputs.
386 Most of these parts are from NXP, though TI is a second source for
387 some of them. Compatible models include:
389 8 bits: pcf8574, pcf8574a, pca8574, pca8574a,
390 pca9670, pca9672, pca9674, pca9674a,
393 16 bits: pcf8575, pcf8575c, pca8575,
394 pca9671, pca9673, pca9675
396 Your board setup code will need to declare the expanders in
397 use, and assign numbers to the GPIOs they expose. Those GPIOs
398 can then be used from drivers and other kernel code, just like
399 other GPIOs, but only accessible from task contexts.
401 This driver provides an in-kernel interface to those GPIOs using
402 platform-neutral GPIO calls.
405 bool "RICOH RC5T583 GPIO"
406 depends on MFD_RC5T583
408 Select this option to enable GPIO driver for the Ricoh RC5T583
410 This driver provides the support for driving/reading the gpio pins
411 of RC5T583 device through standard gpio library.
414 bool "Semtech SX150x I2C GPIO expander"
418 Say yes here to provide support for Semtech SX150-series I2C
419 GPIO expanders. Compatible models include:
428 This enables support for the GPIOs found on the STMPE I/O
432 bool "XWAY STP GPIOs"
435 This enables support for the Serial To Parallel (STP) unit found on
436 XWAY SoC. The STP allows the SoC to drive a shift registers cascade,
437 that can be up to 24 bit. This peripheral is aimed at driving leds.
438 Some of the gpios/leds can be auto updated by the soc with dsl and
443 depends on MFD_TC3589X
445 This enables support for the GPIOs found on the TC3589X
449 tristate "TI TPS65912 GPIO"
450 depends on (MFD_TPS65912_I2C || MFD_TPS65912_SPI)
452 This driver supports TPS65912 gpio chip
455 tristate "TWL4030, TWL5030, and TPS659x0 GPIOs"
456 depends on TWL4030_CORE
458 Say yes here to access the GPIO signals of various multi-function
459 power management chips from Texas Instruments.
462 tristate "TWL6040 GPO"
463 depends on TWL6040_CORE
465 Say yes here to access the GPO signals of twl6040
466 audio chip from Texas Instruments.
469 tristate "WM831x GPIOs"
470 depends on MFD_WM831X
472 Say yes here to access the GPIO signals of WM831x power management
473 chips from Wolfson Microelectronics.
476 tristate "WM8350 GPIOs"
477 depends on MFD_WM8350
479 Say yes here to access the GPIO signals of WM8350 power management
480 chips from Wolfson Microelectronics.
483 tristate "WM8994 GPIOs"
484 depends on MFD_WM8994
486 Say yes here to access the GPIO signals of WM8994 audio hub
487 CODECs from Wolfson Microelectronics.
490 tristate "GPIO Support for ADP5520 PMIC"
491 depends on PMIC_ADP5520
493 This option enables support for on-chip GPIO found
494 on Analog Devices ADP5520 PMICs.
497 tristate "ADP5588 I2C GPIO expander"
500 This option enables support for 18 GPIOs found
501 on Analog Devices ADP5588 GPIO Expanders.
503 config GPIO_ADP5588_IRQ
504 bool "Interrupt controller support for ADP5588"
505 depends on GPIO_ADP5588=y
507 Say yes here to enable the adp5588 to be used as an interrupt
508 controller. It requires the driver to be built in the kernel.
511 tristate "Avionic Design N-bit GPIO expander"
512 depends on I2C && OF_GPIO
514 This option enables support for N GPIOs found on Avionic Design
515 I2C GPIO expanders. The register space will be extended by powers
516 of two, so the controller will need to accommodate for that. For
517 example: if a controller provides 48 pins, 6 registers will be
518 enough to represent all pins, but the driver will assume a
519 register layout for 64 pins (8 registers).
521 comment "PCI GPIO expanders:"
524 tristate "AMD CS5535/CS5536 GPIO support"
525 depends on PCI && X86 && MFD_CS5535
527 The AMD CS5535 and CS5536 southbridges support 28 GPIO pins that
528 can be used for quite a number of things. The CS5535/6 is found on
529 AMD Geode and Lemote Yeeloong devices.
534 tristate "BT8XX GPIO abuser"
535 depends on PCI && VIDEO_BT848=n
537 The BT8xx frame grabber chip has 24 GPIO pins than can be abused
538 as a cheap PCI GPIO card.
540 This chip can be found on Miro, Hauppauge and STB TV-cards.
542 The card needs to be physically altered for using it as a
543 GPIO card. For more information on how to build a GPIO card
544 from a BT8xx TV card, see the documentation file at
545 Documentation/bt8xxgpio.txt
550 tristate "AMD 8111 GPIO driver"
553 The AMD 8111 south bridge contains 32 GPIO pins which can be used.
555 Note, that usually system firmware/ACPI handles GPIO pins on their
556 own and users might easily break their systems with uncarefull usage
562 bool "Intel Langwell/Penwell GPIO support"
563 depends on PCI && X86
566 Say Y here to support Intel Langwell/Penwell GPIO.
569 tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
570 depends on PCI && X86
571 select GENERIC_IRQ_CHIP
573 This driver is for PCH(Platform controller Hub) GPIO of Intel Topcliff
574 which is an IOH(Input/Output Hub) for x86 embedded processor.
575 This driver can access PCH GPIO device.
577 This driver also can be used for LAPIS Semiconductor IOH(Input/
578 Output Hub), ML7223 and ML7831.
579 ML7223 IOH is for MP(Media Phone) use.
580 ML7831 IOH is for general purpose use.
581 ML7223/ML7831 is companion chip for Intel Atom E6xx series.
582 ML7223/ML7831 is completely compatible for Intel EG20T PCH.
585 tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
587 select GENERIC_IRQ_CHIP
589 ML7213 is companion chip for Intel Atom E6xx series.
590 This driver can be used for OKI SEMICONDUCTOR ML7213 IOH(Input/Output
591 Hub) which is for IVI(In-Vehicle Infotainment) use.
592 This driver can access the IOH's GPIO device.
594 config GPIO_SODAVILLE
595 bool "Intel Sodaville GPIO support"
596 depends on X86 && PCI && OF
598 select GENERIC_IRQ_CHIP
600 Say Y here to support Intel Sodaville GPIO.
602 config GPIO_TIMBERDALE
603 bool "Support for timberdale GPIO IP"
604 depends on MFD_TIMBERDALE && HAS_IOMEM
606 Add support for the GPIO IP in the timberdale FPGA.
609 tristate "RDC R-321x GPIO support"
614 Support for the RDC R321x SoC GPIOs over southbridge
615 PCI configuration space.
617 comment "SPI GPIO expanders:"
620 tristate "Maxim MAX7301 GPIO expander"
621 depends on SPI_MASTER
624 GPIO driver for Maxim MAX7301 SPI-based GPIO expander.
627 tristate "Microchip MCP23xxx I/O expander"
628 depends on SPI_MASTER || I2C
630 SPI/I2C driver for Microchip MCP23S08/MCP23S17/MCP23008/MCP23017
632 This provides a GPIO interface supporting inputs and outputs.
635 tristate "Freescale MC33880 high-side/low-side switch"
636 depends on SPI_MASTER
638 SPI driver for Freescale MC33880 high-side/low-side switch.
639 This provides GPIO interface supporting inputs and outputs.
642 tristate "74x164 serial-in/parallel-out 8-bits shift register"
643 depends on SPI_MASTER
645 Platform driver for 74x164 compatible serial-in/parallel-out
646 8-outputs shift registers. This driver can be used to provide access
647 to more gpio outputs.
649 comment "AC97 GPIO expanders:"
652 bool "Philips UCB1400 GPIO"
653 depends on UCB1400_CORE
655 This enables support for the Philips UCB1400 GPIO pins.
656 The UCB1400 is an AC97 audio codec.
658 comment "MODULbus GPIO expanders:"
661 tristate "Janz VMOD-TTL Digital IO Module"
662 depends on MFD_JANZ_CMODIO
664 This enables support for the Janz VMOD-TTL Digital IO module.
665 This driver provides support for driving the pins in output
666 mode only. Input mode is not supported.
669 bool "ST-Ericsson AB8500 Mixed Signal Circuit gpio functions"
670 depends on AB8500_CORE && BROKEN
672 Select this to enable the AB8500 IC GPIO driver
676 depends on MFD_TPS6586X
678 Select this option to enable GPIO driver for the TPS6586X
683 depends on MFD_TPS65910
685 Select this option to enable GPIO driver for the TPS65910
689 bool "Intel MSIC mixed signal gpio support"
690 depends on MFD_INTEL_MSIC
692 Enable support for GPIO on intel MSIC controllers found in
695 comment "USB GPIO expanders:"
697 config GPIO_VIPERBOARD
698 tristate "Viperboard GPIO a & b support"
699 depends on MFD_VIPERBOARD && USB
701 Say yes here to access the GPIO signals of Nano River
702 Technologies Viperboard. There are two GPIO chips on the
703 board: gpioa and gpiob.
704 See viperboard API specification and Nano
705 River Tech's viperboard.h for detailed meaning
706 of the module parameters.