2 # platform-neutral GPIO infrastructure and expanders
5 config ARCH_WANT_OPTIONAL_GPIOLIB
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.
15 config ARCH_REQUIRE_GPIOLIB
19 Platforms select gpiolib if they use this infrastructure
20 for all their GPIOs, usually starting with ones integrated
22 Selecting this from the architecture code will cause the gpiolib
23 code to always get built in.
29 depends on ARCH_WANT_OPTIONAL_GPIOLIB || ARCH_REQUIRE_GPIOLIB
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 expansion card drivers below.
41 bool "Debug GPIO calls"
42 depends on DEBUG_KERNEL
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.
52 bool "/sys/class/gpio/... (sysfs interface)"
53 depends on SYSFS && EXPERIMENTAL
55 Say Y here to add a sysfs interface for GPIOs.
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.
63 Kernel drivers may also request that a particular GPIO be
64 exported to userspace; this can be useful when debugging.
66 # put expanders in the right section, in alphabetical order
71 comment "Memory mapped GPIO expanders:"
73 config GPIO_BASIC_MMIO
74 tristate "Basic memory-mapped GPIO controllers support"
76 Say yes here to support basic memory-mapped GPIO controllers.
79 tristate "IT8761E GPIO support"
82 Say yes here to support GPIO functionality of IT8761E super I/O chip.
85 bool "PrimeCell PL061 GPIO support"
88 Say yes here to support the PrimeCell PL061 GPIO device
91 bool "Xilinx GPIO support"
92 depends on PPC_OF || MICROBLAZE
94 Say yes here to support the Xilinx FPGA GPIO device
97 tristate "NEC VR4100 series General-purpose I/O Uint support"
100 Say yes here to support the NEC VR4100 series General-purpose I/O Uint
103 tristate "Intel SCH GPIO"
104 depends on GPIOLIB && PCI
108 Say yes here to support GPIO interface on Intel Poulsbo SCH.
109 The Intel SCH contains a total of 14 GPIO pins. Ten GPIOs are
110 powered by the core power rail and are turned off during sleep
111 modes (S3 and higher). The remaining four GPIOs are powered by
112 the Intel SCH suspend power supply. These GPIOs remain
113 active during S3. The suspend powered GPIOs can be used to wake the
114 system from the Suspend-to-RAM state.
116 This driver can also be built as a module. If so, the module
117 will be called sch-gpio.
119 comment "I2C GPIO expanders:"
122 tristate "Maxim MAX7300 GPIO expander"
126 GPIO driver for Maxim MAX7301 I2C-based GPIO expander.
129 tristate "MAX7319, MAX7320-7327 I2C Port Expanders"
132 Say yes here to support the MAX7319, MAX7320-7327 series of I2C
133 Port Expanders. Each IO port on these chips has a fixed role of
134 Input (designated by 'I'), Push-Pull Output ('O'), or Open-Drain
135 Input and Output (designed by 'P'). The combinations are listed
138 8 bits: max7319 (8I), max7320 (8O), max7321 (8P),
139 max7322 (4I4O), max7323 (4P4O)
141 16 bits: max7324 (8I8O), max7325 (8P8O),
142 max7326 (4I12O), max7327 (4P12O)
144 Board setup code must specify the model to use, and the start
145 number for these GPIOs.
147 config GPIO_MAX732X_IRQ
148 bool "Interrupt controller support for MAX732x"
149 depends on GPIO_MAX732X=y && GENERIC_HARDIRQS
151 Say yes here to enable the max732x to be used as an interrupt
152 controller. It requires the driver to be built in the kernel.
155 tristate "PCA953x, PCA955x, TCA64xx, and MAX7310 I/O ports"
158 Say yes here to provide access to several register-oriented
159 SMBus I/O expanders, made mostly by NXP or TI. Compatible
162 4 bits: pca9536, pca9537
164 8 bits: max7310, pca9534, pca9538, pca9554, pca9557,
167 16 bits: pca9535, pca9539, pca9555, tca6416
169 This driver can also be built as a module. If so, the module
170 will be called pca953x.
172 config GPIO_PCA953X_IRQ
173 bool "Interrupt controller support for PCA953x"
174 depends on GPIO_PCA953X=y
176 Say yes here to enable the pca953x to be used as an interrupt
177 controller. It requires the driver to be built in the kernel.
180 tristate "PCF857x, PCA{85,96}7x, and MAX732[89] I2C GPIO expanders"
183 Say yes here to provide access to most "quasi-bidirectional" I2C
184 GPIO expanders used for additional digital outputs or inputs.
185 Most of these parts are from NXP, though TI is a second source for
186 some of them. Compatible models include:
188 8 bits: pcf8574, pcf8574a, pca8574, pca8574a,
189 pca9670, pca9672, pca9674, pca9674a,
192 16 bits: pcf8575, pcf8575c, pca8575,
193 pca9671, pca9673, pca9675
195 Your board setup code will need to declare the expanders in
196 use, and assign numbers to the GPIOs they expose. Those GPIOs
197 can then be used from drivers and other kernel code, just like
198 other GPIOs, but only accessible from task contexts.
200 This driver provides an in-kernel interface to those GPIOs using
201 platform-neutral GPIO calls.
204 bool "Semtech SX150x I2C GPIO expander"
208 Say yes here to provide support for Semtech SX150-series I2C
209 GPIO expanders. Compatible models include:
218 This enables support for the GPIOs found on the STMPE I/O
223 depends on MFD_TC35892
225 This enables support for the GPIOs found on the TC35892
229 tristate "TWL4030, TWL5030, and TPS659x0 GPIOs"
230 depends on TWL4030_CORE
232 Say yes here to access the GPIO signals of various multi-function
233 power management chips from Texas Instruments.
236 tristate "WM831x GPIOs"
237 depends on MFD_WM831X
239 Say yes here to access the GPIO signals of WM831x power management
240 chips from Wolfson Microelectronics.
243 tristate "WM8350 GPIOs"
244 depends on MFD_WM8350
246 Say yes here to access the GPIO signals of WM8350 power management
247 chips from Wolfson Microelectronics.
250 tristate "WM8994 GPIOs"
251 depends on MFD_WM8994
253 Say yes here to access the GPIO signals of WM8994 audio hub
254 CODECs from Wolfson Microelectronics.
257 tristate "GPIO Support for ADP5520 PMIC"
258 depends on PMIC_ADP5520
260 This option enables support for on-chip GPIO found
261 on Analog Devices ADP5520 PMICs.
263 To compile this driver as a module, choose M here: the module will
264 be called adp5520-gpio.
267 tristate "ADP5588 I2C GPIO expander"
270 This option enables support for 18 GPIOs found
271 on Analog Devices ADP5588 GPIO Expanders.
272 To compile this driver as a module, choose M here: the module will be
275 comment "PCI GPIO expanders:"
278 tristate "AMD CS5535/CS5536 GPIO support"
279 depends on PCI && !CS5535_GPIO
281 The AMD CS5535 and CS5536 southbridges support 28 GPIO pins that
282 can be used for quite a number of things. The CS5535/6 is found on
283 AMD Geode and Lemote Yeeloong devices.
288 tristate "BT8XX GPIO abuser"
289 depends on PCI && VIDEO_BT848=n
291 The BT8xx frame grabber chip has 24 GPIO pins than can be abused
292 as a cheap PCI GPIO card.
294 This chip can be found on Miro, Hauppauge and STB TV-cards.
296 The card needs to be physically altered for using it as a
297 GPIO card. For more information on how to build a GPIO card
298 from a BT8xx TV card, see the documentation file at
299 Documentation/bt8xxgpio.txt
304 bool "Intel Langwell/Penwell GPIO support"
307 Say Y here to support Intel Langwell/Penwell GPIO.
309 config GPIO_TIMBERDALE
310 bool "Support for timberdale GPIO IP"
311 depends on MFD_TIMBERDALE && GPIOLIB && HAS_IOMEM
313 Add support for the GPIO IP in the timberdale FPGA.
316 tristate "RDC R-321x GPIO support"
317 depends on PCI && GPIOLIB
321 Support for the RDC R321x SoC GPIOs over southbridge
322 PCI configuration space.
324 comment "SPI GPIO expanders:"
327 tristate "Maxim MAX7301 GPIO expander"
328 depends on SPI_MASTER
331 GPIO driver for Maxim MAX7301 SPI-based GPIO expander.
334 tristate "Microchip MCP23S08 I/O expander"
335 depends on SPI_MASTER
337 SPI driver for Microchip MCP23S08 I/O expander. This provides
338 a GPIO interface supporting inputs and outputs.
341 tristate "Freescale MC33880 high-side/low-side switch"
342 depends on SPI_MASTER
344 SPI driver for Freescale MC33880 high-side/low-side switch.
345 This provides GPIO interface supporting inputs and outputs.
348 tristate "74x164 serial-in/parallel-out 8-bits shift register"
349 depends on SPI_MASTER
351 Platform driver for 74x164 compatible serial-in/parallel-out
352 8-outputs shift registers. This driver can be used to provide access
353 to more gpio outputs.
355 comment "AC97 GPIO expanders:"
358 bool "Philips UCB1400 GPIO"
359 depends on UCB1400_CORE
361 This enables support for the Philips UCB1400 GPIO pins.
362 The UCB1400 is an AC97 audio codec.
364 To compile this driver as a module, choose M here: the
365 module will be called ucb1400_gpio.
367 comment "MODULbus GPIO expanders:"
370 tristate "Janz VMOD-TTL Digital IO Module"
371 depends on MFD_JANZ_CMODIO
373 This enables support for the Janz VMOD-TTL Digital IO module.
374 This driver provides support for driving the pins in output
375 mode only. Input mode is not supported.