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