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