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