2# GPIO infrastructure and drivers
   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.
  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.
  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.
  35menuconfig GPIOLIB
  36        bool "GPIO Support"
  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.
  44          If unsure, say N.
  46if GPIOLIB
  48config OF_GPIO
  49        def_bool y
  50        depends on OF
  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.
  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.
  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.
  75          Kernel drivers may also request that a particular GPIO be
  76          exported to userspace; this can be useful when debugging.
  78config GPIO_GENERIC
  79        tristate
  81# put drivers in the right section, in alphabetical order
  83config GPIO_DA9052
  84        tristate "Dialog DA9052 GPIO"
  85        depends on PMIC_DA9052
  86        help
  87          Say yes here to enable the GPIO driver for the DA9052 chip.
  89config GPIO_MAX730X
  90        tristate
  92comment "Memory mapped GPIO drivers:"
  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.
 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.
 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.
 112config GPIO_EP93XX
 113        def_bool y
 114        depends on ARCH_EP93XX
 115        select GPIO_GENERIC
 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.
 125config GPIO_MPC5200
 126        def_bool y
 127        depends on PPC_MPC52xx
 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.
 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.
 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.
 153config GPIO_MVEBU
 154        def_bool y
 155        depends on ARCH_MVEBU
 156        select GPIO_GENERIC
 157        select GENERIC_IRQ_CHIP
 159config GPIO_MXC
 160        def_bool y
 161        depends on ARCH_MXC
 162        select GPIO_GENERIC
 163        select GENERIC_IRQ_CHIP
 165config GPIO_MXS
 166        def_bool y
 167        depends on ARCH_MXS
 168        select GPIO_GENERIC
 169        select GENERIC_IRQ_CHIP
 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
 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
 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.
 192config GPIO_VT8500
 193        bool "VIA/Wondermedia SoC GPIO Support"
 194        depends on ARCH_VT8500
 195        help
 196          Say yes here to support the VT8500/WM8505/WM8650 GPIO controller.
 198config GPIO_XILINX
 199        bool "Xilinx GPIO support"
 200        depends on PPC_OF || MICROBLAZE
 201        help
 202          Say yes here to support the Xilinx FPGA GPIO device
 204config GPIO_VR41XX
 205        tristate "NEC VR4100 series General-purpose I/O Uint support"
 206        depends on CPU_VR41XX
 207        help
 208          Say yes here to support the NEC VR4100 series General-purpose I/O Uint
 210config GPIO_SCH
 211        tristate "Intel SCH/TunnelCreek/Centerton GPIO"
 212        depends on PCI && X86
 213        select MFD_CORE
 214        select LPC_SCH
 215        help
 216          Say yes here to support GPIO interface on Intel Poulsbo SCH,
 217          Intel Tunnel Creek processor or Intel Centerton processor.
 218          The Intel SCH contains a total of 14 GPIO pins. Ten GPIOs are
 219          powered by the core power rail and are turned off during sleep
 220          modes (S3 and higher). The remaining four GPIOs are powered by
 221          the Intel SCH suspend power supply. These GPIOs remain
 222          active during S3. The suspend powered GPIOs can be used to wake the
 223          system from the Suspend-to-RAM state.
 224          The Intel Tunnel Creek processor has 5 GPIOs powered by the
 225          core power rail and 9 from suspend power supply.
 226          The Intel Centerton processor has a total of 30 GPIO pins.
 227          Twenty-one are powered by the core power rail and 9 from the
 228          suspend power supply.
 230config GPIO_ICH
 231        tristate "Intel ICH GPIO"
 232        depends on PCI && X86
 233        select MFD_CORE
 234        select LPC_ICH
 235        help
 236          Say yes here to support the GPIO functionality of a number of Intel
 237          ICH-based chipsets.  Currently supported devices: ICH6, ICH7, ICH8
 238          ICH9, ICH10, Series 5/3400 (eg Ibex Peak), Series 6/C200 (eg
 239          Cougar Point), NM10 (Tiger Point), and 3100 (Whitmore Lake).
 241          If unsure, say N.
 243config GPIO_VX855
 244        tristate "VIA VX855/VX875 GPIO"
 245        depends on PCI
 246        select MFD_CORE
 247        select MFD_VX855
 248        help
 249          Support access to the VX855/VX875 GPIO lines through the gpio library.
 251          This driver provides common support for accessing the device,
 252          additional drivers must be enabled in order to use the
 253          functionality of the device.
 255config GPIO_GE_FPGA
 256        bool "GE FPGA based GPIO"
 257        depends on GE_FPGA
 258        help
 259          Support for common GPIO functionality provided on some GE Single Board
 260          Computers.
 262          This driver provides basic support (configure as input or output, read
 263          and write pin state) for GPIO implemented in a number of GE single
 264          board computers.
 266comment "I2C GPIO expanders:"
 268config GPIO_ARIZONA
 269        tristate "Wolfson Microelectronics Arizona class devices"
 270        depends on MFD_ARIZONA
 271        help
 272          Support for GPIOs on Wolfson Arizona class devices.
 274config GPIO_MAX7300
 275        tristate "Maxim MAX7300 GPIO expander"
 276        depends on I2C
 277        select GPIO_MAX730X
 278        help
 279          GPIO driver for Maxim MAX7301 I2C-based GPIO expander.
 281config GPIO_MAX732X
 282        tristate "MAX7319, MAX7320-7327 I2C Port Expanders"
 283        depends on I2C
 284        help
 285          Say yes here to support the MAX7319, MAX7320-7327 series of I2C
 286          Port Expanders. Each IO port on these chips has a fixed role of
 287          Input (designated by 'I'), Push-Pull Output ('O'), or Open-Drain
 288          Input and Output (designed by 'P'). The combinations are listed
 289          below:
 291          8 bits:       max7319 (8I), max7320 (8O), max7321 (8P),
 292                        max7322 (4I4O), max7323 (4P4O)
 294          16 bits:      max7324 (8I8O), max7325 (8P8O),
 295                        max7326 (4I12O), max7327 (4P12O)
 297          Board setup code must specify the model to use, and the start
 298          number for these GPIOs.
 300config GPIO_MAX732X_IRQ
 301        bool "Interrupt controller support for MAX732x"
 302        depends on GPIO_MAX732X=y && GENERIC_HARDIRQS
 303        help
 304          Say yes here to enable the max732x to be used as an interrupt
 305          controller. It requires the driver to be built in the kernel.
 307config GPIO_MC9S08DZ60
 308        bool "MX35 3DS BOARD MC9S08DZ60 GPIO functions"
 309        depends on I2C=y && MACH_MX35_3DS
 310        help
 311          Select this to enable the MC9S08DZ60 GPIO driver
 313config GPIO_PCA953X
 314        tristate "PCA953x, PCA955x, PCA957x, TCA64xx, and MAX7310 I/O ports"
 315        depends on I2C
 316        help
 317          Say yes here to provide access to several register-oriented
 318          SMBus I/O expanders, made mostly by NXP or TI.  Compatible
 319          models include:
 321          4 bits:       pca9536, pca9537
 323          8 bits:       max7310, max7315, pca6107, pca9534, pca9538, pca9554,
 324                        pca9556, pca9557, pca9574, tca6408
 326          16 bits:      max7312, max7313, pca9535, pca9539, pca9555, pca9575,
 327                        tca6416
 329config GPIO_PCA953X_IRQ
 330        bool "Interrupt controller support for PCA953x"
 331        depends on GPIO_PCA953X=y
 332        help
 333          Say yes here to enable the pca953x to be used as an interrupt
 334          controller. It requires the driver to be built in the kernel.
 336config GPIO_PCF857X
 337        tristate "PCF857x, PCA{85,96}7x, and MAX732[89] I2C GPIO expanders"
 338        depends on I2C
 339        select IRQ_DOMAIN
 340        help
 341          Say yes here to provide access to most "quasi-bidirectional" I2C
 342          GPIO expanders used for additional digital outputs or inputs.
 343          Most of these parts are from NXP, though TI is a second source for
 344          some of them.  Compatible models include:
 346          8 bits:   pcf8574, pcf8574a, pca8574, pca8574a,
 347                    pca9670, pca9672, pca9674, pca9674a,
 348                    max7328, max7329
 350          16 bits:  pcf8575, pcf8575c, pca8575,
 351                    pca9671, pca9673, pca9675
 353          Your board setup code will need to declare the expanders in
 354          use, and assign numbers to the GPIOs they expose.  Those GPIOs
 355          can then be used from drivers and other kernel code, just like
 356          other GPIOs, but only accessible from task contexts.
 358          This driver provides an in-kernel interface to those GPIOs using
 359          platform-neutral GPIO calls.
 361config GPIO_RC5T583
 362        bool "RICOH RC5T583 GPIO"
 363        depends on MFD_RC5T583
 364        help
 365          Select this option to enable GPIO driver for the Ricoh RC5T583
 366          chip family.
 367          This driver provides the support for driving/reading the gpio pins
 368          of RC5T583 device through standard gpio library.
 370config GPIO_SX150X
 371        bool "Semtech SX150x I2C GPIO expander"
 372        depends on I2C=y
 373        default n
 374        help
 375          Say yes here to provide support for Semtech SX150-series I2C
 376          GPIO expanders. Compatible models include:
 378          8 bits:  sx1508q
 379          16 bits: sx1509q
 381config GPIO_STMPE
 382        bool "STMPE GPIOs"
 383        depends on MFD_STMPE
 384        help
 385          This enables support for the GPIOs found on the STMPE I/O
 386          Expanders.
 388config GPIO_STP_XWAY
 389        bool "XWAY STP GPIOs"
 390        depends on SOC_XWAY
 391        help
 392          This enables support for the Serial To Parallel (STP) unit found on
 393          XWAY SoC. The STP allows the SoC to drive a shift registers cascade,
 394          that can be up to 24 bit. This peripheral is aimed at driving leds.
 395          Some of the gpios/leds can be auto updated by the soc with dsl and
 396          phy status.
 398config GPIO_TC3589X
 399        bool "TC3589X GPIOs"
 400        depends on MFD_TC3589X
 401        help
 402          This enables support for the GPIOs found on the TC3589X
 403          I/O Expander.
 405config GPIO_TPS65912
 406        tristate "TI TPS65912 GPIO"
 407        depends on (MFD_TPS65912_I2C || MFD_TPS65912_SPI)
 408        help
 409          This driver supports TPS65912 gpio chip
 411config GPIO_TWL4030
 412        tristate "TWL4030, TWL5030, and TPS659x0 GPIOs"
 413        depends on TWL4030_CORE
 414        help
 415          Say yes here to access the GPIO signals of various multi-function
 416          power management chips from Texas Instruments.
 418config GPIO_TWL6040
 419        tristate "TWL6040 GPO"
 420        depends on TWL6040_CORE
 421        help
 422          Say yes here to access the GPO signals of twl6040
 423          audio chip from Texas Instruments.
 425config GPIO_WM831X
 426        tristate "WM831x GPIOs"
 427        depends on MFD_WM831X
 428        help
 429          Say yes here to access the GPIO signals of WM831x power management
 430          chips from Wolfson Microelectronics.
 432config GPIO_WM8350
 433        tristate "WM8350 GPIOs"
 434        depends on MFD_WM8350
 435        help
 436          Say yes here to access the GPIO signals of WM8350 power management
 437          chips from Wolfson Microelectronics.
 439config GPIO_WM8994
 440        tristate "WM8994 GPIOs"
 441        depends on MFD_WM8994
 442        help
 443          Say yes here to access the GPIO signals of WM8994 audio hub
 444          CODECs from Wolfson Microelectronics.
 446config GPIO_ADP5520
 447        tristate "GPIO Support for ADP5520 PMIC"
 448        depends on PMIC_ADP5520
 449        help
 450          This option enables support for on-chip GPIO found
 451          on Analog Devices ADP5520 PMICs.
 453config GPIO_ADP5588
 454        tristate "ADP5588 I2C GPIO expander"
 455        depends on I2C
 456        help
 457          This option enables support for 18 GPIOs found
 458          on Analog Devices ADP5588 GPIO Expanders.
 460config GPIO_ADP5588_IRQ
 461        bool "Interrupt controller support for ADP5588"
 462        depends on GPIO_ADP5588=y
 463        help
 464          Say yes here to enable the adp5588 to be used as an interrupt
 465          controller. It requires the driver to be built in the kernel.
 467config GPIO_ADNP
 468        tristate "Avionic Design N-bit GPIO expander"
 469        depends on I2C && OF_GPIO
 470        help
 471          This option enables support for N GPIOs found on Avionic Design
 472          I2C GPIO expanders. The register space will be extended by powers
 473          of two, so the controller will need to accomodate for that. For
 474          example: if a controller provides 48 pins, 6 registers will be
 475          enough to represent all pins, but the driver will assume a
 476          register layout for 64 pins (8 registers).
 478comment "PCI GPIO expanders:"
 480config GPIO_CS5535
 481        tristate "AMD CS5535/CS5536 GPIO support"
 482        depends on PCI && X86 && MFD_CS5535
 483        help
 484          The AMD CS5535 and CS5536 southbridges support 28 GPIO pins that
 485          can be used for quite a number of things.  The CS5535/6 is found on
 486          AMD Geode and Lemote Yeeloong devices.
 488          If unsure, say N.
 490config GPIO_BT8XX
 491        tristate "BT8XX GPIO abuser"
 492        depends on PCI && VIDEO_BT848=n
 493        help
 494          The BT8xx frame grabber chip has 24 GPIO pins than can be abused
 495          as a cheap PCI GPIO card.
 497          This chip can be found on Miro, Hauppauge and STB TV-cards.
 499          The card needs to be physically altered for using it as a
 500          GPIO card. For more information on how to build a GPIO card
 501          from a BT8xx TV card, see the documentation file at
 502          Documentation/bt8xxgpio.txt
 504          If unsure, say N.
 506config GPIO_AMD8111
 507        tristate "AMD 8111 GPIO driver"
 508        depends on PCI
 509        help
 510          The AMD 8111 south bridge contains 32 GPIO pins which can be used.
 512          Note, that usually system firmware/ACPI handles GPIO pins on their
 513          own and users might easily break their systems with uncarefull usage
 514          of this driver!
 516          If unsure, say N
 518config GPIO_LANGWELL
 519        bool "Intel Langwell/Penwell GPIO support"
 520        depends on PCI && X86
 521        select IRQ_DOMAIN
 522        help
 523          Say Y here to support Intel Langwell/Penwell GPIO.
 525config GPIO_PCH
 526        tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
 527        depends on PCI && X86
 528        select GENERIC_IRQ_CHIP
 529        help
 530          This driver is for PCH(Platform controller Hub) GPIO of Intel Topcliff
 531          which is an IOH(Input/Output Hub) for x86 embedded processor.
 532          This driver can access PCH GPIO device.
 534          This driver also can be used for LAPIS Semiconductor IOH(Input/
 535          Output Hub), ML7223 and ML7831.
 536          ML7223 IOH is for MP(Media Phone) use.
 537          ML7831 IOH is for general purpose use.
 538          ML7223/ML7831 is companion chip for Intel Atom E6xx series.
 539          ML7223/ML7831 is completely compatible for Intel EG20T PCH.
 541config GPIO_ML_IOH
 542        tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
 543        depends on PCI
 544        select GENERIC_IRQ_CHIP
 545        help
 546          ML7213 is companion chip for Intel Atom E6xx series.
 547          This driver can be used for OKI SEMICONDUCTOR ML7213 IOH(Input/Output
 548          Hub) which is for IVI(In-Vehicle Infotainment) use.
 549          This driver can access the IOH's GPIO device.
 552        bool "Intel Sodaville GPIO support"
 553        depends on X86 && PCI && OF
 554        select GPIO_GENERIC
 555        select GENERIC_IRQ_CHIP
 556        help
 557          Say Y here to support Intel Sodaville GPIO.
 560        bool "Support for timberdale GPIO IP"
 561        depends on MFD_TIMBERDALE && HAS_IOMEM
 562        ---help---
 563        Add support for the GPIO IP in the timberdale FPGA.
 565config GPIO_RDC321X
 566        tristate "RDC R-321x GPIO support"
 567        depends on PCI
 568        select MFD_CORE
 569        select MFD_RDC321X
 570        help
 571          Support for the RDC R321x SoC GPIOs over southbridge
 572          PCI configuration space.
 574comment "SPI GPIO expanders:"
 576config GPIO_MAX7301
 577        tristate "Maxim MAX7301 GPIO expander"
 578        depends on SPI_MASTER
 579        select GPIO_MAX730X
 580        help
 581          GPIO driver for Maxim MAX7301 SPI-based GPIO expander.
 583config GPIO_MCP23S08
 584        tristate "Microchip MCP23xxx I/O expander"
 585        depends on SPI_MASTER || I2C
 586        help
 587          SPI/I2C driver for Microchip MCP23S08/MCP23S17/MCP23008/MCP23017
 588          I/O expanders.
 589          This provides a GPIO interface supporting inputs and outputs.
 591config GPIO_MC33880
 592        tristate "Freescale MC33880 high-side/low-side switch"
 593        depends on SPI_MASTER
 594        help
 595          SPI driver for Freescale MC33880 high-side/low-side switch.
 596          This provides GPIO interface supporting inputs and outputs.
 598config GPIO_74X164
 599        tristate "74x164 serial-in/parallel-out 8-bits shift register"
 600        depends on SPI_MASTER
 601        help
 602          Platform driver for 74x164 compatible serial-in/parallel-out
 603          8-outputs shift registers. This driver can be used to provide access
 604          to more gpio outputs.
 606comment "AC97 GPIO expanders:"
 608config GPIO_UCB1400
 609        bool "Philips UCB1400 GPIO"
 610        depends on UCB1400_CORE
 611        help
 612          This enables support for the Philips UCB1400 GPIO pins.
 613          The UCB1400 is an AC97 audio codec.
 615comment "MODULbus GPIO expanders:"
 617config GPIO_JANZ_TTL
 618        tristate "Janz VMOD-TTL Digital IO Module"
 619        depends on MFD_JANZ_CMODIO
 620        help
 621          This enables support for the Janz VMOD-TTL Digital IO module.
 622          This driver provides support for driving the pins in output
 623          mode only. Input mode is not supported.
 625config GPIO_AB8500
 626        bool "ST-Ericsson AB8500 Mixed Signal Circuit gpio functions"
 627        depends on AB8500_CORE && BROKEN
 628        help
 629          Select this to enable the AB8500 IC GPIO driver
 631config GPIO_TPS6586X
 632        bool "TPS6586X GPIO"
 633        depends on MFD_TPS6586X
 634        help
 635          Select this option to enable GPIO driver for the TPS6586X
 636          chip family.
 638config GPIO_TPS65910
 639        bool "TPS65910 GPIO"
 640        depends on MFD_TPS65910
 641        help
 642          Select this option to enable GPIO driver for the TPS65910
 643          chip family.
 645config GPIO_MSIC
 646        bool "Intel MSIC mixed signal gpio support"
 647        depends on MFD_INTEL_MSIC
 648        help
 649          Enable support for GPIO on intel MSIC controllers found in
 650          intel MID devices
 653 kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.