2# GPIO infrastructure and drivers
   6        bool
   7        help
   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.
  16        bool
  17        select GPIOLIB
  18        help
  19          Platforms select gpiolib if they use this infrastructure
  20          for all their GPIOs, usually starting with ones integrated
  21          into SOC processors.
  22          Selecting this from the architecture code will cause the gpiolib
  23          code to always get built in.
  27menuconfig GPIOLIB
  28        bool "GPIO Support"
  30        select GENERIC_GPIO
  31        help
  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 drivers below.
  36          If unsure, say N.
  38if GPIOLIB
  40config DEBUG_GPIO
  41        bool "Debug GPIO calls"
  42        depends on DEBUG_KERNEL
  43        help
  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.
  51config GPIO_SYSFS
  52        bool "/sys/class/gpio/... (sysfs interface)"
  53        depends on SYSFS && EXPERIMENTAL
  54        help
  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.
  66config GPIO_GENERIC
  67        tristate
  69# put drivers in the right section, in alphabetical order
  71config GPIO_DA9052
  72        tristate "Dialog DA9052 GPIO"
  73        depends on PMIC_DA9052 && BROKEN
  74        help
  75          Say yes here to enable the GPIO driver for the DA9052 chip.
  77config GPIO_MAX730X
  78        tristate
  80comment "Memory mapped GPIO drivers:"
  83        tristate "Generic memory-mapped GPIO controller support (MMIO platform device)"
  84        select GPIO_GENERIC
  85        help
  86          Say yes here to support basic platform_device memory-mapped GPIO controllers.
  88config GPIO_IT8761E
  89        tristate "IT8761E GPIO support"
  90        depends on X86  # unconditional access to IO space.
  91        help
  92          Say yes here to support GPIO functionality of IT8761E super I/O chip.
  94config GPIO_EP93XX
  95        def_bool y
  96        depends on ARCH_EP93XX
  97        select GPIO_GENERIC
  99config GPIO_MPC5200
 100        def_bool y
 101        depends on PPC_MPC52xx
 103config GPIO_MPC8XXX
 104        bool "MPC512x/MPC8xxx GPIO support"
 105        depends on PPC_MPC512x || PPC_MPC831x || PPC_MPC834x || PPC_MPC837x || \
 106                   FSL_SOC_BOOKE || PPC_86xx
 107        help
 108          Say Y here if you're going to use hardware that connects to the
 109          MPC512x/831x/834x/837x/8572/8610 GPIOs.
 111config GPIO_MSM_V1
 112        tristate "Qualcomm MSM GPIO v1"
 113        depends on GPIOLIB && ARCH_MSM
 114        help
 115          Say yes here to support the GPIO interface on ARM v6 based
 116          Qualcomm MSM chips.  Most of the pins on the MSM can be
 117          selected for GPIO, and are controlled by this driver.
 119config GPIO_MSM_V2
 120        tristate "Qualcomm MSM GPIO v2"
 121        depends on GPIOLIB && ARCH_MSM
 122        help
 123          Say yes here to support the GPIO interface on ARM v7 based
 124          Qualcomm MSM chips.  Most of the pins on the MSM can be
 125          selected for GPIO, and are controlled by this driver.
 127config GPIO_MXC
 128        def_bool y
 129        depends on ARCH_MXC
 130        select GPIO_GENERIC
 131        select GENERIC_IRQ_CHIP
 133config GPIO_MXS
 134        def_bool y
 135        depends on ARCH_MXS
 136        select GPIO_GENERIC
 137        select GENERIC_IRQ_CHIP
 139config GPIO_PL061
 140        bool "PrimeCell PL061 GPIO support"
 141        depends on ARM_AMBA
 142        select GENERIC_IRQ_CHIP
 143        help
 144          Say yes here to support the PrimeCell PL061 GPIO device
 146config GPIO_PXA
 147        bool "PXA GPIO support"
 148        depends on ARCH_PXA || ARCH_MMP
 149        help
 150          Say yes here to support the PXA GPIO device
 152config GPIO_XILINX
 153        bool "Xilinx GPIO support"
 154        depends on PPC_OF || MICROBLAZE
 155        help
 156          Say yes here to support the Xilinx FPGA GPIO device
 158config GPIO_VR41XX
 159        tristate "NEC VR4100 series General-purpose I/O Uint support"
 160        depends on CPU_VR41XX
 161        help
 162          Say yes here to support the NEC VR4100 series General-purpose I/O Uint
 164config GPIO_SCH
 165        tristate "Intel SCH/TunnelCreek GPIO"
 166        depends on PCI && X86
 167        select MFD_CORE
 168        select LPC_SCH
 169        help
 170          Say yes here to support GPIO interface on Intel Poulsbo SCH
 171          or Intel Tunnel Creek processor.
 172          The Intel SCH contains a total of 14 GPIO pins. Ten GPIOs are
 173          powered by the core power rail and are turned off during sleep
 174          modes (S3 and higher). The remaining four GPIOs are powered by
 175          the Intel SCH suspend power supply. These GPIOs remain
 176          active during S3. The suspend powered GPIOs can be used to wake the
 177          system from the Suspend-to-RAM state.
 178          The Intel Tunnel Creek processor has 5 GPIOs powered by the
 179          core power rail and 9 from suspend power supply.
 181config GPIO_VX855
 182        tristate "VIA VX855/VX875 GPIO"
 183        depends on PCI
 184        select MFD_CORE
 185        select MFD_VX855
 186        help
 187          Support access to the VX855/VX875 GPIO lines through the gpio library.
 189          This driver provides common support for accessing the device,
 190          additional drivers must be enabled in order to use the
 191          functionality of the device.
 193comment "I2C GPIO expanders:"
 195config GPIO_MAX7300
 196        tristate "Maxim MAX7300 GPIO expander"
 197        depends on I2C
 198        select GPIO_MAX730X
 199        help
 200          GPIO driver for Maxim MAX7301 I2C-based GPIO expander.
 202config GPIO_MAX732X
 203        tristate "MAX7319, MAX7320-7327 I2C Port Expanders"
 204        depends on I2C
 205        help
 206          Say yes here to support the MAX7319, MAX7320-7327 series of I2C
 207          Port Expanders. Each IO port on these chips has a fixed role of
 208          Input (designated by 'I'), Push-Pull Output ('O'), or Open-Drain
 209          Input and Output (designed by 'P'). The combinations are listed
 210          below:
 212          8 bits:       max7319 (8I), max7320 (8O), max7321 (8P),
 213                        max7322 (4I4O), max7323 (4P4O)
 215          16 bits:      max7324 (8I8O), max7325 (8P8O),
 216                        max7326 (4I12O), max7327 (4P12O)
 218          Board setup code must specify the model to use, and the start
 219          number for these GPIOs.
 221config GPIO_MAX732X_IRQ
 222        bool "Interrupt controller support for MAX732x"
 223        depends on GPIO_MAX732X=y && GENERIC_HARDIRQS
 224        help
 225          Say yes here to enable the max732x to be used as an interrupt
 226          controller. It requires the driver to be built in the kernel.
 228config GPIO_PCA953X
 229        tristate "PCA953x, PCA955x, TCA64xx, and MAX7310 I/O ports"
 230        depends on I2C
 231        help
 232          Say yes here to provide access to several register-oriented
 233          SMBus I/O expanders, made mostly by NXP or TI.  Compatible
 234          models include:
 236          4 bits:       pca9536, pca9537
 238          8 bits:       max7310, pca9534, pca9538, pca9554, pca9557,
 239                        tca6408
 241          16 bits:      pca9535, pca9539, pca9555, tca6416
 243config GPIO_PCA953X_IRQ
 244        bool "Interrupt controller support for PCA953x"
 245        depends on GPIO_PCA953X=y
 246        help
 247          Say yes here to enable the pca953x to be used as an interrupt
 248          controller. It requires the driver to be built in the kernel.
 250config GPIO_PCF857X
 251        tristate "PCF857x, PCA{85,96}7x, and MAX732[89] I2C GPIO expanders"
 252        depends on I2C
 253        help
 254          Say yes here to provide access to most "quasi-bidirectional" I2C
 255          GPIO expanders used for additional digital outputs or inputs.
 256          Most of these parts are from NXP, though TI is a second source for
 257          some of them.  Compatible models include:
 259          8 bits:   pcf8574, pcf8574a, pca8574, pca8574a,
 260                    pca9670, pca9672, pca9674, pca9674a,
 261                    max7328, max7329
 263          16 bits:  pcf8575, pcf8575c, pca8575,
 264                    pca9671, pca9673, pca9675
 266          Your board setup code will need to declare the expanders in
 267          use, and assign numbers to the GPIOs they expose.  Those GPIOs
 268          can then be used from drivers and other kernel code, just like
 269          other GPIOs, but only accessible from task contexts.
 271          This driver provides an in-kernel interface to those GPIOs using
 272          platform-neutral GPIO calls.
 274config GPIO_SX150X
 275        bool "Semtech SX150x I2C GPIO expander"
 276        depends on I2C=y
 277        default n
 278        help
 279          Say yes here to provide support for Semtech SX150-series I2C
 280          GPIO expanders. Compatible models include:
 282          8 bits:  sx1508q
 283          16 bits: sx1509q
 285config GPIO_STMPE
 286        bool "STMPE GPIOs"
 287        depends on MFD_STMPE
 288        help
 289          This enables support for the GPIOs found on the STMPE I/O
 290          Expanders.
 292config GPIO_TC3589X
 293        bool "TC3589X GPIOs"
 294        depends on MFD_TC3589X
 295        help
 296          This enables support for the GPIOs found on the TC3589X
 297          I/O Expander.
 299config GPIO_TPS65912
 300        tristate "TI TPS65912 GPIO"
 301        depends on (MFD_TPS65912_I2C || MFD_TPS65912_SPI)
 302        help
 303          This driver supports TPS65912 gpio chip
 305config GPIO_TWL4030
 306        tristate "TWL4030, TWL5030, and TPS659x0 GPIOs"
 307        depends on TWL4030_CORE
 308        help
 309          Say yes here to access the GPIO signals of various multi-function
 310          power management chips from Texas Instruments.
 312config GPIO_WM831X
 313        tristate "WM831x GPIOs"
 314        depends on MFD_WM831X
 315        help
 316          Say yes here to access the GPIO signals of WM831x power management
 317          chips from Wolfson Microelectronics.
 319config GPIO_WM8350
 320        tristate "WM8350 GPIOs"
 321        depends on MFD_WM8350
 322        help
 323          Say yes here to access the GPIO signals of WM8350 power management
 324          chips from Wolfson Microelectronics.
 326config GPIO_WM8994
 327        tristate "WM8994 GPIOs"
 328        depends on MFD_WM8994
 329        help
 330          Say yes here to access the GPIO signals of WM8994 audio hub
 331          CODECs from Wolfson Microelectronics.
 333config GPIO_ADP5520
 334        tristate "GPIO Support for ADP5520 PMIC"
 335        depends on PMIC_ADP5520
 336        help
 337          This option enables support for on-chip GPIO found
 338          on Analog Devices ADP5520 PMICs.
 340config GPIO_ADP5588
 341        tristate "ADP5588 I2C GPIO expander"
 342        depends on I2C
 343        help
 344          This option enables support for 18 GPIOs found
 345          on Analog Devices ADP5588 GPIO Expanders.
 347config GPIO_ADP5588_IRQ
 348        bool "Interrupt controller support for ADP5588"
 349        depends on GPIO_ADP5588=y
 350        help
 351          Say yes here to enable the adp5588 to be used as an interrupt
 352          controller. It requires the driver to be built in the kernel.
 354comment "PCI GPIO expanders:"
 356config GPIO_CS5535
 357        tristate "AMD CS5535/CS5536 GPIO support"
 358        depends on PCI && X86 && MFD_CS5535
 359        help
 360          The AMD CS5535 and CS5536 southbridges support 28 GPIO pins that
 361          can be used for quite a number of things.  The CS5535/6 is found on
 362          AMD Geode and Lemote Yeeloong devices.
 364          If unsure, say N.
 366config GPIO_BT8XX
 367        tristate "BT8XX GPIO abuser"
 368        depends on PCI && VIDEO_BT848=n
 369        help
 370          The BT8xx frame grabber chip has 24 GPIO pins than can be abused
 371          as a cheap PCI GPIO card.
 373          This chip can be found on Miro, Hauppauge and STB TV-cards.
 375          The card needs to be physically altered for using it as a
 376          GPIO card. For more information on how to build a GPIO card
 377          from a BT8xx TV card, see the documentation file at
 378          Documentation/bt8xxgpio.txt
 380          If unsure, say N.
 382config GPIO_LANGWELL
 383        bool "Intel Langwell/Penwell GPIO support"
 384        depends on PCI && X86
 385        help
 386          Say Y here to support Intel Langwell/Penwell GPIO.
 388config GPIO_PCH
 389        tristate "Intel EG20T PCH/LAPIS Semiconductor IOH(ML7223/ML7831) GPIO"
 390        depends on PCI && X86
 391        select GENERIC_IRQ_CHIP
 392        help
 393          This driver is for PCH(Platform controller Hub) GPIO of Intel Topcliff
 394          which is an IOH(Input/Output Hub) for x86 embedded processor.
 395          This driver can access PCH GPIO device.
 397          This driver also can be used for LAPIS Semiconductor IOH(Input/
 398          Output Hub), ML7223 and ML7831.
 399          ML7223 IOH is for MP(Media Phone) use.
 400          ML7831 IOH is for general purpose use.
 401          ML7223/ML7831 is companion chip for Intel Atom E6xx series.
 402          ML7223/ML7831 is completely compatible for Intel EG20T PCH.
 404config GPIO_ML_IOH
 405        tristate "OKI SEMICONDUCTOR ML7213 IOH GPIO support"
 406        depends on PCI
 407        select GENERIC_IRQ_CHIP
 408        help
 409          ML7213 is companion chip for Intel Atom E6xx series.
 410          This driver can be used for OKI SEMICONDUCTOR ML7213 IOH(Input/Output
 411          Hub) which is for IVI(In-Vehicle Infotainment) use.
 412          This driver can access the IOH's GPIO device.
 415        bool "Support for timberdale GPIO IP"
 416        depends on MFD_TIMBERDALE && HAS_IOMEM
 417        ---help---
 418        Add support for the GPIO IP in the timberdale FPGA.
 420config GPIO_RDC321X
 421        tristate "RDC R-321x GPIO support"
 422        depends on PCI
 423        select MFD_CORE
 424        select MFD_RDC321X
 425        help
 426          Support for the RDC R321x SoC GPIOs over southbridge
 427          PCI configuration space.
 429comment "SPI GPIO expanders:"
 431config GPIO_MAX7301
 432        tristate "Maxim MAX7301 GPIO expander"
 433        depends on SPI_MASTER
 434        select GPIO_MAX730X
 435        help
 436          GPIO driver for Maxim MAX7301 SPI-based GPIO expander.
 438config GPIO_MCP23S08
 439        tristate "Microchip MCP23xxx I/O expander"
 440        depends on SPI_MASTER || I2C
 441        help
 442          SPI/I2C driver for Microchip MCP23S08/MCP23S17/MCP23008/MCP23017
 443          I/O expanders.
 444          This provides a GPIO interface supporting inputs and outputs.
 446config GPIO_MC33880
 447        tristate "Freescale MC33880 high-side/low-side switch"
 448        depends on SPI_MASTER
 449        help
 450          SPI driver for Freescale MC33880 high-side/low-side switch.
 451          This provides GPIO interface supporting inputs and outputs.
 453config GPIO_74X164
 454        tristate "74x164 serial-in/parallel-out 8-bits shift register"
 455        depends on SPI_MASTER
 456        help
 457          Platform driver for 74x164 compatible serial-in/parallel-out
 458          8-outputs shift registers. This driver can be used to provide access
 459          to more gpio outputs.
 461comment "AC97 GPIO expanders:"
 463config GPIO_UCB1400
 464        bool "Philips UCB1400 GPIO"
 465        depends on UCB1400_CORE
 466        help
 467          This enables support for the Philips UCB1400 GPIO pins.
 468          The UCB1400 is an AC97 audio codec.
 470comment "MODULbus GPIO expanders:"
 472config GPIO_JANZ_TTL
 473        tristate "Janz VMOD-TTL Digital IO Module"
 474        depends on MFD_JANZ_CMODIO
 475        help
 476          This enables support for the Janz VMOD-TTL Digital IO module.
 477          This driver provides support for driving the pins in output
 478          mode only. Input mode is not supported.
 480config GPIO_AB8500
 481        bool "ST-Ericsson AB8500 Mixed Signal Circuit gpio functions"
 482        depends on AB8500_CORE && BROKEN
 483        help
 484          Select this to enable the AB8500 IC GPIO driver
 486config GPIO_TPS65910
 487        bool "TPS65910 GPIO"
 488        depends on MFD_TPS65910
 489        help
 490          Select this option to enable GPIO driver for the TPS65910
 491          chip family.