# SPDX-License-Identifier: GPL-2.0-only
#
# Touchscreen driver configuration
#
menuconfig INPUT_TOUCHSCREEN
	bool "Touchscreens"
	help
	  Say Y here, and a list of supported touchscreens will be displayed.
	  This option doesn't affect the kernel.

	  If unsure, say Y.

if INPUT_TOUCHSCREEN

config TOUCHSCREEN_88PM860X
	tristate "Marvell 88PM860x touchscreen"
	depends on MFD_88PM860X
	help
	  Say Y here if you have a 88PM860x PMIC and want to enable
	  support for the built-in touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called 88pm860x-ts.

config TOUCHSCREEN_ADS7846
	tristate "ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens"
	depends on SPI_MASTER
	depends on HWMON = n || HWMON
	help
	  Say Y here if you have a touchscreen interface using the
	  ADS7846/TSC2046/AD7873 or ADS7843/AD7843 controller,
	  and your board-specific setup code includes that in its
	  table of SPI devices.

	  If HWMON is selected, and the driver is told the reference voltage
	  on your board, you will also get hwmon interfaces for the voltage
	  (and on ads7846/tsc2046/ad7873, temperature) sensors of this chip.

	  If unsure, say N (but it's safe to say "Y").

	  To compile this driver as a module, choose M here: the
	  module will be called ads7846.

config TOUCHSCREEN_AD7877
	tristate "AD7877 based touchscreens"
	depends on SPI_MASTER
	help
	  Say Y here if you have a touchscreen interface using the
	  AD7877 controller, and your board-specific initialization
	  code includes that in its table of SPI devices.

	  If unsure, say N (but it's safe to say "Y").

	  To compile this driver as a module, choose M here: the
	  module will be called ad7877.

config TOUCHSCREEN_AD7879
	tristate "Analog Devices AD7879-1/AD7889-1 touchscreen interface"
	help
	  Say Y here if you want to support a touchscreen interface using
	  the AD7879-1/AD7889-1 controller.

	  You should select a bus connection too.

	  To compile this driver as a module, choose M here: the
	  module will be called ad7879.

config TOUCHSCREEN_AD7879_I2C
	tristate "support I2C bus connection"
	depends on TOUCHSCREEN_AD7879 && I2C
	select REGMAP_I2C
	help
	  Say Y here if you have AD7879-1/AD7889-1 hooked to an I2C bus.

	  To compile this driver as a module, choose M here: the
	  module will be called ad7879-i2c.

config TOUCHSCREEN_AD7879_SPI
	tristate "support SPI bus connection"
	depends on TOUCHSCREEN_AD7879 && SPI_MASTER
	select REGMAP_SPI
	help
	  Say Y here if you have AD7879-1/AD7889-1 hooked to a SPI bus.

	  If unsure, say N (but it's safe to say "Y").

	  To compile this driver as a module, choose M here: the
	  module will be called ad7879-spi.

config TOUCHSCREEN_ADC
	tristate "Generic ADC based resistive touchscreen"
	depends on IIO
	select IIO_BUFFER
	select IIO_BUFFER_CB
	help
	  Say Y here if you want to use the generic ADC
	  resistive touchscreen driver.

	  If unsure, say N (but it's safe to say "Y").

	  To compile this driver as a module, choose M here: the
	  module will be called resistive-adc-touch.ko.

config TOUCHSCREEN_AR1021_I2C
	tristate "Microchip AR1020/1021 i2c touchscreen"
	depends on I2C && OF
	help
	  Say Y here if you have the Microchip AR1020 or AR1021 touchscreen
	  controller chip in your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ar1021_i2c.

config TOUCHSCREEN_ATMEL_MXT
	tristate "Atmel mXT I2C Touchscreen"
	depends on I2C
	select FW_LOADER
	help
	  Say Y here if you have Atmel mXT series I2C touchscreen,
	  such as AT42QT602240/ATMXT224, connected to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called atmel_mxt_ts.

config TOUCHSCREEN_ATMEL_MXT_T37
	bool "Support T37 Diagnostic Data"
	depends on TOUCHSCREEN_ATMEL_MXT
	depends on VIDEO_DEV=y || (TOUCHSCREEN_ATMEL_MXT=m && VIDEO_DEV=m)
	select VIDEOBUF2_VMALLOC
	help
	  Say Y here if you want support to output data from the T37
	  Diagnostic Data object using a V4L device.

config TOUCHSCREEN_AUO_PIXCIR
	tristate "AUO in-cell touchscreen using Pixcir ICs"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have a AUO display with in-cell touchscreen
	  using Pixcir ICs.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called auo-pixcir-ts.

config TOUCHSCREEN_BU21013
	tristate "BU21013 based touch panel controllers"
	depends on I2C
	help
	  Say Y here if you have a bu21013 touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called bu21013_ts.

config TOUCHSCREEN_BU21029
	tristate "Rohm BU21029 based touch panel controllers"
	depends on I2C
	help
	  Say Y here if you have a Rohm BU21029 touchscreen controller
	  connected to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called bu21029_ts.

config TOUCHSCREEN_CHIPONE_ICN8318
	tristate "chipone icn8318 touchscreen controller"
	depends on GPIOLIB || COMPILE_TEST
	depends on I2C
	depends on OF
	help
	  Say Y here if you have a ChipOne icn8318 based I2C touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called chipone_icn8318.

config TOUCHSCREEN_CHIPONE_ICN8505
	tristate "chipone icn8505 touchscreen controller"
	depends on I2C && ACPI
	help
	  Say Y here if you have a ChipOne icn8505 based I2C touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called chipone_icn8505.

config TOUCHSCREEN_CY8CTMA140
	tristate "cy8ctma140 touchscreen"
	depends on I2C
	help
	  Say Y here if you have a Cypress CY8CTMA140 capacitive
	  touchscreen also just known as "TMA140"

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called cy8ctma140.

config TOUCHSCREEN_CY8CTMG110
	tristate "cy8ctmg110 touchscreen"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have a cy8ctmg110 capacitive touchscreen on
	  an AAVA device.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called cy8ctmg110_ts.

config TOUCHSCREEN_CYTTSP_CORE
	tristate "Cypress TTSP touchscreen"
	help
	  Say Y here if you have a touchscreen using controller from
	  the Cypress TrueTouch(tm) Standard Product family connected
	  to your system. You will also need to select appropriate
	  bus connection below.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called cyttsp_core.

config TOUCHSCREEN_CYTTSP_I2C
	tristate "support I2C bus connection"
	depends on TOUCHSCREEN_CYTTSP_CORE && I2C
	help
	  Say Y here if the touchscreen is connected via I2C bus.

	  To compile this driver as a module, choose M here: the
	  module will be called cyttsp_i2c.

config TOUCHSCREEN_CYTTSP_SPI
	tristate "support SPI bus connection"
	depends on TOUCHSCREEN_CYTTSP_CORE && SPI_MASTER
	help
	  Say Y here if the touchscreen is connected via SPI bus.

	  To compile this driver as a module, choose M here: the
	  module will be called cyttsp_spi.

config TOUCHSCREEN_CYTTSP4_CORE
	tristate "Cypress TrueTouch Gen4 Touchscreen Driver"
	help
	  Core driver for Cypress TrueTouch(tm) Standard Product
	  Generation4 touchscreen controllers.

	  Say Y here if you have a Cypress Gen4 touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here.

config TOUCHSCREEN_CYTTSP4_I2C
	tristate "support I2C bus connection"
	depends on TOUCHSCREEN_CYTTSP4_CORE && I2C
	help
	  Say Y here if the touchscreen is connected via I2C bus.

	  To compile this driver as a module, choose M here: the
	  module will be called cyttsp4_i2c.

config TOUCHSCREEN_CYTTSP4_SPI
	tristate "support SPI bus connection"
	depends on TOUCHSCREEN_CYTTSP4_CORE && SPI_MASTER
	help
	  Say Y here if the touchscreen is connected via SPI bus.

	  To compile this driver as a module, choose M here: the
	  module will be called cyttsp4_spi.

config TOUCHSCREEN_DA9034
	tristate "Touchscreen support for Dialog Semiconductor DA9034"
	depends on PMIC_DA903X
	default y
	help
	  Say Y here to enable the support for the touchscreen found
	  on Dialog Semiconductor DA9034 PMIC.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called da9034-ts.

config TOUCHSCREEN_DA9052
	tristate "Dialog DA9052/DA9053 TSI"
	depends on PMIC_DA9052
	help
	  Say Y here to support the touchscreen found on Dialog Semiconductor
	  DA9052-BC and DA9053-AA/Bx PMICs.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called da9052_tsi.

config TOUCHSCREEN_DYNAPRO
	tristate "Dynapro serial touchscreen"
	select SERIO
	help
	  Say Y here if you have a Dynapro serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called dynapro.

config TOUCHSCREEN_HAMPSHIRE
	tristate "Hampshire serial touchscreen"
	select SERIO
	help
	  Say Y here if you have a Hampshire serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called hampshire.

config TOUCHSCREEN_EETI
	tristate "EETI touchscreen panel support"
	depends on I2C
	help
	  Say Y here to enable support for I2C connected EETI touch panels.

	  To compile this driver as a module, choose M here: the
	  module will be called eeti_ts.

config TOUCHSCREEN_EGALAX
	tristate "EETI eGalax multi-touch panel support"
	depends on I2C && OF
	help
	  Say Y here to enable support for I2C connected EETI
	  eGalax multi-touch panels.

	  To compile this driver as a module, choose M here: the
	  module will be called egalax_ts.

config TOUCHSCREEN_EGALAX_SERIAL
	tristate "EETI eGalax serial touchscreen"
	select SERIO
	help
	  Say Y here to enable support for serial connected EETI
	  eGalax touch panels.

	  To compile this driver as a module, choose M here: the
	  module will be called egalax_ts_serial.

config TOUCHSCREEN_EXC3000
	tristate "EETI EXC3000 multi-touch panel support"
	depends on I2C
	help
	  Say Y here to enable support for I2C connected EETI
	  EXC3000 multi-touch panels.

	  To compile this driver as a module, choose M here: the
	  module will be called exc3000.

config TOUCHSCREEN_FUJITSU
	tristate "Fujitsu serial touchscreen"
	select SERIO
	help
	  Say Y here if you have the Fujitsu touchscreen (such as one
	  installed in Lifebook P series laptop) connected to your
	  system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called fujitsu-ts.

config TOUCHSCREEN_GOODIX
	tristate "Goodix I2C touchscreen"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have the Goodix touchscreen (such as one
	  installed in Onda v975w tablets) connected to your
	  system. It also supports 5-finger chip models, which can be
	  found on ARM tablets, like Wexler TAB7200 and MSI Primo73.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called goodix.

config TOUCHSCREEN_HIDEEP
	tristate "HiDeep Touch IC"
	depends on I2C
	help
	  Say Y here if you have a touchscreen using HiDeep.

	  If unsure, say N.

	  To compile this driver as a module, choose M here : the
	  module will be called hideep_ts.

config TOUCHSCREEN_HYCON_HY46XX
	tristate "Hycon hy46xx touchscreen support"
	depends on I2C
	help
	  Say Y here if you have a touchscreen using Hycon hy46xx

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called hycon-hy46xx.

config TOUCHSCREEN_ILI210X
	tristate "Ilitek ILI210X based touchscreen"
	depends on I2C
	select CRC_CCITT
	help
	  Say Y here if you have a ILI210X based touchscreen
	  controller. This driver supports models ILI2102,
	  ILI2102s, ILI2103, ILI2103s and ILI2105.
	  Such kind of chipsets can be found in Amazon Kindle Fire
	  touchscreens.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ili210x.

config TOUCHSCREEN_ILITEK
	tristate "Ilitek I2C 213X/23XX/25XX/Lego Series Touch ICs"
	depends on I2C
	help
	  Say Y here if you have touchscreen with ILITEK touch IC,
	  it supports 213X/23XX/25XX and other Lego series.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ilitek_ts_i2c.

config TOUCHSCREEN_IPROC
	tristate "IPROC touch panel driver support"
	depends on ARCH_BCM_IPROC || COMPILE_TEST
	help
	  Say Y here if you want to add support for the IPROC touch
	  controller to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called bcm_iproc_tsc.

config TOUCHSCREEN_S3C2410
	tristate "Samsung S3C2410/generic touchscreen input driver"
	depends on ARCH_S3C24XX || SAMSUNG_DEV_TS
	depends on S3C_ADC
	help
	  Say Y here if you have the s3c2410 touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called s3c2410_ts.

config TOUCHSCREEN_S6SY761
	tristate "Samsung S6SY761 Touchscreen driver"
	depends on I2C
	help
	  Say Y if you have the Samsung S6SY761 driver

	  If unsure, say N

	  To compile this driver as module, choose M here: the
	  module will be called s6sy761.

config TOUCHSCREEN_GUNZE
	tristate "Gunze AHL-51S touchscreen"
	select SERIO
	help
	  Say Y here if you have the Gunze AHL-51 touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called gunze.

config TOUCHSCREEN_EKTF2127
	tristate "Elan eKTF2127 I2C touchscreen"
	depends on I2C
	help
	  Say Y here if you have an Elan eKTF2127 touchscreen
	  connected to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ektf2127.

config TOUCHSCREEN_ELAN
	tristate "Elan eKTH I2C touchscreen"
	depends on I2C
	help
	  Say Y here if you have an Elan eKTH I2C touchscreen
	  connected to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called elants_i2c.

config TOUCHSCREEN_ELO
	tristate "Elo serial touchscreens"
	select SERIO
	help
	  Say Y here if you have an Elo serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called elo.

config TOUCHSCREEN_WACOM_W8001
	tristate "Wacom W8001 penabled serial touchscreen"
	select SERIO
	help
	  Say Y here if you have an Wacom W8001 penabled serial touchscreen
	  connected to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called wacom_w8001.

config TOUCHSCREEN_WACOM_I2C
	tristate "Wacom Tablet support (I2C)"
	depends on I2C
	help
	  Say Y here if you want to use the I2C version of the Wacom
	  Pen Tablet.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the module
	  will be called wacom_i2c.

config TOUCHSCREEN_LPC32XX
	tristate "LPC32XX touchscreen controller"
	depends on ARCH_LPC32XX
	help
	  Say Y here if you have a LPC32XX device and want
	  to support the built-in touchscreen.

	  To compile this driver as a module, choose M here: the
	  module will be called lpc32xx_ts.

config TOUCHSCREEN_MAX11801
	tristate "MAX11801 based touchscreens"
	depends on I2C
	help
	  Say Y here if you have a MAX11801 based touchscreen
	  controller.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called max11801_ts.

config TOUCHSCREEN_MCS5000
	tristate "MELFAS MCS-5000 touchscreen"
	depends on I2C
	help
	  Say Y here if you have the MELFAS MCS-5000 touchscreen controller
	  chip in your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called mcs5000_ts.

config TOUCHSCREEN_MMS114
	tristate "MELFAS MMS114 touchscreen"
	depends on I2C
	help
	  Say Y here if you have the MELFAS MMS114 touchscreen controller
	  chip in your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called mms114.

config TOUCHSCREEN_MELFAS_MIP4
	tristate "MELFAS MIP4 Touchscreen"
	depends on I2C
	help
	  Say Y here if you have a MELFAS MIP4 Touchscreen device.

	  If unsure, say N.

	  To compile this driver as a module, choose M here:
	  the module will be called melfas_mip4.

config TOUCHSCREEN_MSG2638
	tristate "MStar msg2638 touchscreen support"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have an I2C touchscreen using MStar msg2638.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called msg2638.

config TOUCHSCREEN_MTOUCH
	tristate "MicroTouch serial touchscreens"
	select SERIO
	help
	  Say Y here if you have a MicroTouch (3M) serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called mtouch.

config TOUCHSCREEN_IMAGIS
	tristate "Imagis touchscreen support"
	depends on I2C
	help
	  Say Y here if you have an Imagis IST30xxC touchscreen.
	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called imagis.

config TOUCHSCREEN_IMX6UL_TSC
	tristate "Freescale i.MX6UL touchscreen controller"
	depends on ((OF && GPIOLIB) || COMPILE_TEST) && HAS_IOMEM
	help
	  Say Y here if you have a Freescale i.MX6UL, and want to
	  use the internal touchscreen controller.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called imx6ul_tsc.

config TOUCHSCREEN_INEXIO
	tristate "iNexio serial touchscreens"
	select SERIO
	help
	  Say Y here if you have an iNexio serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called inexio.

config TOUCHSCREEN_MK712
	tristate "ICS MicroClock MK712 touchscreen"
	help
	  Say Y here if you have the ICS MicroClock MK712 touchscreen
	  controller chip in your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called mk712.

config TOUCHSCREEN_HP600
	tristate "HP Jornada 6xx touchscreen"
	depends on SH_HP6XX && SH_ADC
	help
	  Say Y here if you have a HP Jornada 620/660/680/690 and want to
	  support the built-in touchscreen.

	  To compile this driver as a module, choose M here: the
	  module will be called hp680_ts_input.

config TOUCHSCREEN_HP7XX
	tristate "HP Jornada 7xx touchscreen"
	depends on SA1100_JORNADA720_SSP
	help
	  Say Y here if you have a HP Jornada 710/720/728 and want
	  to support the built-in touchscreen.

	  To compile this driver as a module, choose M here: the
	  module will be called jornada720_ts.

config TOUCHSCREEN_IPAQ_MICRO
	tristate "HP iPAQ Atmel Micro ASIC touchscreen"
	depends on MFD_IPAQ_MICRO
	help
	  Say Y here to enable support for the touchscreen attached to
	  the Atmel Micro peripheral controller on iPAQ h3100/h3600/h3700

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ipaq-micro-ts.

config TOUCHSCREEN_HTCPEN
	tristate "HTC Shift X9500 touchscreen"
	depends on ISA
	help
	  Say Y here if you have an HTC Shift UMPC also known as HTC X9500
	  Clio / Shangrila and want to support the built-in touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called htcpen.

config TOUCHSCREEN_PENMOUNT
	tristate "Penmount serial touchscreen"
	select SERIO
	help
	  Say Y here if you have a Penmount serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called penmount.

config TOUCHSCREEN_EDT_FT5X06
	tristate "EDT FocalTech FT5x06 I2C Touchscreen support"
	depends on I2C
	help
	  Say Y here if you have an EDT "Polytouch" touchscreen based
	  on the FocalTech FT5x06 family of controllers connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called edt-ft5x06.

config TOUCHSCREEN_RASPBERRYPI_FW
	tristate "Raspberry Pi's firmware base touch screen support"
	depends on RASPBERRYPI_FIRMWARE || (RASPBERRYPI_FIRMWARE=n && COMPILE_TEST)
	help
	  Say Y here if you have the official Raspberry Pi 7 inch screen on
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called raspberrypi-ts.

config TOUCHSCREEN_MIGOR
	tristate "Renesas MIGO-R touchscreen"
	depends on (SH_MIGOR || COMPILE_TEST) && I2C
	help
	  Say Y here to enable MIGO-R touchscreen support.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called migor_ts.

config TOUCHSCREEN_TOUCHRIGHT
	tristate "Touchright serial touchscreen"
	select SERIO
	help
	  Say Y here if you have a Touchright serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called touchright.

config TOUCHSCREEN_TOUCHWIN
	tristate "Touchwin serial touchscreen"
	select SERIO
	help
	  Say Y here if you have a Touchwin serial touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called touchwin.

config TOUCHSCREEN_TI_AM335X_TSC
	tristate "TI Touchscreen Interface"
	depends on MFD_TI_AM335X_TSCADC
	help
	  Say Y here if you have 4/5/8 wire touchscreen controller
	  to be connected to the ADC controller on your TI AM335x SoC.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ti_am335x_tsc.

config TOUCHSCREEN_UCB1400
	tristate "Philips UCB1400 touchscreen"
	depends on AC97_BUS
	depends on UCB1400_CORE
	help
	  This enables support for the Philips UCB1400 touchscreen interface.
	  The UCB1400 is an AC97 audio codec.  The touchscreen interface
	  will be initialized only after the ALSA subsystem has been
	  brought up and the UCB1400 detected.  You therefore have to
	  configure ALSA support as well (either built-in or modular,
	  independently of whether this driver is itself built-in or
	  modular) for this driver to work.

	  To compile this driver as a module, choose M here: the
	  module will be called ucb1400_ts.

config TOUCHSCREEN_PIXCIR
	tristate "PIXCIR I2C touchscreens"
	depends on I2C
	help
	  Say Y here if you have a pixcir i2c touchscreen
	  controller.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called pixcir_i2c_ts.

config TOUCHSCREEN_WDT87XX_I2C
	tristate "Weida HiTech I2C touchscreen"
	depends on I2C
	help
	  Say Y here if you have a Weida WDT87XX I2C touchscreen
	  connected to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called wdt87xx_i2c.

config TOUCHSCREEN_WM831X
	tristate "Support for WM831x touchscreen controllers"
	depends on MFD_WM831X
	help
	  This enables support for the touchscreen controller on the WM831x
	  series of PMICs.

	  To compile this driver as a module, choose M here: the
	  module will be called wm831x-ts.

config TOUCHSCREEN_WM97XX
	tristate "Support for WM97xx AC97 touchscreen controllers"
	depends on AC97_BUS || AC97_BUS_NEW
	help
	  Say Y here if you have a Wolfson Microelectronics WM97xx
	  touchscreen connected to your system. Note that this option
	  only enables core driver, you will also need to select
	  support for appropriate chip below.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called wm97xx-ts.

config TOUCHSCREEN_WM9705
	bool "WM9705 Touchscreen interface support"
	depends on TOUCHSCREEN_WM97XX
	default y
	help
	  Say Y here to enable support for the Wolfson Microelectronics
	  WM9705 touchscreen controller.

config TOUCHSCREEN_WM9712
	bool "WM9712 Touchscreen interface support"
	depends on TOUCHSCREEN_WM97XX
	default y
	help
	  Say Y here to enable support for the Wolfson Microelectronics
	  WM9712 touchscreen controller.

config TOUCHSCREEN_WM9713
	bool "WM9713 Touchscreen interface support"
	depends on TOUCHSCREEN_WM97XX
	default y
	help
	  Say Y here to enable support for the Wolfson Microelectronics
	  WM9713 touchscreen controller.

config TOUCHSCREEN_WM97XX_MAINSTONE
	tristate "WM97xx Mainstone/Palm accelerated touch"
	depends on TOUCHSCREEN_WM97XX && ARCH_PXA
	help
	  Say Y here for support for streaming mode with WM97xx touchscreens
	  on Mainstone, Palm Tungsten T5, TX and LifeDrive systems.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called mainstone-wm97xx.

config TOUCHSCREEN_WM97XX_ZYLONITE
	tristate "Zylonite accelerated touch"
	depends on TOUCHSCREEN_WM97XX && MACH_ZYLONITE
	select TOUCHSCREEN_WM9713
	help
	  Say Y here for support for streaming mode with the touchscreen
	  on Zylonite systems.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called zylonite-wm97xx.

config TOUCHSCREEN_USB_COMPOSITE
	tristate "USB Touchscreen Driver"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  USB Touchscreen driver for:
	  - eGalax Touchkit USB (also includes eTurboTouch CT-410/510/700)
	  - PanJit TouchSet USB
	  - 3M MicroTouch USB (EX II series)
	  - ITM
	  - some other eTurboTouch
	  - Gunze AHL61
	  - DMC TSC-10/25
	  - IRTOUCHSYSTEMS/UNITOP
	  - IdealTEK URTC1000
	  - GoTop Super_Q2/GogoPen/PenPower tablets
	  - JASTEC USB Touch Controller/DigiTech DTR-02U
	  - Zytronic controllers
	  - Elo TouchSystems 2700 IntelliTouch
	  - EasyTouch USB Touch Controller from Data Module
	  - e2i (Mimo monitors)

	  Have a look at <http://linux.chapter7.ch/touchkit/> for
	  a usage description and the required user-space stuff.

	  To compile this driver as a module, choose M here: the
	  module will be called usbtouchscreen.

config TOUCHSCREEN_MXS_LRADC
	tristate "Freescale i.MX23/i.MX28 LRADC touchscreen"
	depends on MFD_MXS_LRADC
	help
	  Say Y here if you have a touchscreen connected to the low-resolution
	  analog-to-digital converter (LRADC) on an i.MX23 or i.MX28 processor.

	  To compile this driver as a module, choose M here: the module will be
	  called mxs-lradc-ts.

config TOUCHSCREEN_MX25
	tristate "Freescale i.MX25 touchscreen input driver"
	depends on MFD_MX25_TSADC
	help
	  Enable support for touchscreen connected to your i.MX25.

	  To compile this driver as a module, choose M here: the
	  module will be called fsl-imx25-tcq.

config TOUCHSCREEN_MC13783
	tristate "Freescale MC13783 touchscreen input driver"
	depends on MFD_MC13XXX
	help
	  Say Y here if you have an Freescale MC13783 PMIC on your
	  board and want to use its touchscreen

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called mc13783_ts.

config TOUCHSCREEN_USB_EGALAX
	default y
	bool "eGalax, eTurboTouch CT-410/510/700 device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_PANJIT
	default y
	bool "PanJit device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_3M
	default y
	bool "3M/Microtouch EX II series device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_ITM
	default y
	bool "ITM device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_ETURBO
	default y
	bool "eTurboTouch (non-eGalax compatible) device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_GUNZE
	default y
	bool "Gunze AHL61 device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_DMC_TSC10
	default y
	bool "DMC TSC-10/25 device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_IRTOUCH
	default y
	bool "IRTOUCHSYSTEMS/UNITOP device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_IDEALTEK
	default y
	bool "IdealTEK URTC1000 device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_GENERAL_TOUCH
	default y
	bool "GeneralTouch Touchscreen device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_GOTOP
	default y
	bool "GoTop Super_Q2/GogoPen/PenPower tablet device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_JASTEC
	default y
	bool "JASTEC/DigiTech DTR-02U USB touch controller device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_ELO
	default y
	bool "Elo TouchSystems 2700 IntelliTouch controller device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_E2I
	default y
	bool "e2i Touchscreen controller (e.g. from Mimo 740)" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_ZYTRONIC
	default y
	bool "Zytronic controller" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_ETT_TC45USB
	default y
	bool "ET&T USB series TC4UM/TC5UH touchscreen controller support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_NEXIO
	default y
	bool "NEXIO/iNexio device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE

config TOUCHSCREEN_USB_EASYTOUCH
	default y
	bool "EasyTouch USB Touch controller device support" if EXPERT
	depends on TOUCHSCREEN_USB_COMPOSITE
	help
	  Say Y here if you have an EasyTouch USB Touch controller.
	  If unsure, say N.

config TOUCHSCREEN_TOUCHIT213
	tristate "Sahara TouchIT-213 touchscreen"
	select SERIO
	help
	  Say Y here if you have a Sahara TouchIT-213 Tablet PC.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called touchit213.

config TOUCHSCREEN_TS4800
	tristate "TS-4800 touchscreen"
	depends on HAS_IOMEM && OF
	depends on SOC_IMX51 || COMPILE_TEST
	select MFD_SYSCON
	help
	  Say Y here if you have a touchscreen on a TS-4800 board.

	  On TS-4800, the touchscreen is not handled directly by Linux but by
	  a companion FPGA.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called ts4800_ts.

config TOUCHSCREEN_TSC_SERIO
	tristate "TSC-10/25/40 serial touchscreen support"
	select SERIO
	help
	  Say Y here if you have a TSC-10, 25 or 40 serial touchscreen connected
	  to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called tsc40.

config TOUCHSCREEN_TSC200X_CORE
	tristate

config TOUCHSCREEN_TSC2004
	tristate "TSC2004 based touchscreens"
	depends on I2C
	select REGMAP_I2C
	select TOUCHSCREEN_TSC200X_CORE
	help
	  Say Y here if you have a TSC2004 based touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called tsc2004.

config TOUCHSCREEN_TSC2005
	tristate "TSC2005 based touchscreens"
	depends on SPI_MASTER
	select REGMAP_SPI
	select TOUCHSCREEN_TSC200X_CORE
	help
	  Say Y here if you have a TSC2005 based touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called tsc2005.

config TOUCHSCREEN_TSC2007
	tristate "TSC2007 based touchscreens"
	depends on I2C
	help
	  Say Y here if you have a TSC2007 based touchscreen.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called tsc2007.

config TOUCHSCREEN_TSC2007_IIO
	bool "IIO interface for external ADC input and temperature"
	depends on TOUCHSCREEN_TSC2007
	depends on IIO=y || IIO=TOUCHSCREEN_TSC2007
	help
	  Saying Y here adds an iio interface to the tsc2007 which
	  provides values for the AUX input (used for e.g. battery
	  or ambient light monitoring), temperature and raw input
	  values.

config TOUCHSCREEN_PCAP
	tristate "Motorola PCAP touchscreen"
	depends on EZX_PCAP
	help
	  Say Y here if you have a Motorola EZX telephone and
	  want to enable support for the built-in touchscreen.

	  To compile this driver as a module, choose M here: the
	  module will be called pcap_ts.

config TOUCHSCREEN_RM_TS
	tristate "Raydium I2C Touchscreen"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have Raydium series I2C touchscreen,
	  such as RM32380, connected to your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called raydium_i2c_ts.

config TOUCHSCREEN_SILEAD
	tristate "Silead I2C touchscreen"
	depends on I2C
	help
	  Say Y here if you have the Silead touchscreen connected to
	  your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called silead.

config TOUCHSCREEN_SIS_I2C
	tristate "SiS 9200 family I2C touchscreen"
	depends on I2C
	select CRC_ITU_T
	depends on GPIOLIB || COMPILE_TEST
	help
	  This enables support for SiS 9200 family over I2C based touchscreens.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called sis_i2c.

config TOUCHSCREEN_ST1232
	tristate "Sitronix ST1232 or ST1633 touchscreen controllers"
	depends on I2C
	help
	  Say Y here if you want to support the Sitronix ST1232
	  or ST1633 touchscreen controller.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called st1232_ts.

config TOUCHSCREEN_STMFTS
	tristate "STMicroelectronics STMFTS touchscreen"
	depends on I2C
	depends on LEDS_CLASS
	help
	  Say Y here if you want support for STMicroelectronics
	  STMFTS touchscreen.

	  To compile this driver as a module, choose M here: the
	  module will be called stmfts.

config TOUCHSCREEN_STMPE
	tristate "STMicroelectronics STMPE touchscreens"
	depends on MFD_STMPE
	depends on (OF || COMPILE_TEST)
	help
	  Say Y here if you want support for STMicroelectronics
	  STMPE touchscreen controllers.

	  To compile this driver as a module, choose M here: the
	  module will be called stmpe-ts.

config TOUCHSCREEN_SUN4I
	tristate "Allwinner sun4i resistive touchscreen controller support"
	depends on ARCH_SUNXI || COMPILE_TEST
	depends on HWMON
	depends on THERMAL || !THERMAL_OF
	help
	  This selects support for the resistive touchscreen controller
	  found on Allwinner sunxi SoCs.

	  To compile this driver as a module, choose M here: the
	  module will be called sun4i-ts.

config TOUCHSCREEN_SUR40
	tristate "Samsung SUR40 (Surface 2.0/PixelSense) touchscreen"
	depends on USB && MEDIA_USB_SUPPORT && HAS_DMA
	depends on VIDEO_DEV
	select VIDEOBUF2_DMA_SG
	help
	  Say Y here if you want support for the Samsung SUR40 touchscreen
	  (also known as Microsoft Surface 2.0 or Microsoft PixelSense).

	  To compile this driver as a module, choose M here: the
	  module will be called sur40.

config TOUCHSCREEN_SURFACE3_SPI
	tristate "Ntrig/Microsoft Surface 3 SPI touchscreen"
	depends on SPI
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have the Ntrig/Microsoft SPI touchscreen
	  controller chip as found on the Surface 3 in your system.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called surface3_spi.

config TOUCHSCREEN_SX8654
	tristate "Semtech SX8654 touchscreen"
	depends on I2C
	help
	  Say Y here if you have a Semtech SX8654 touchscreen controller.

	  If unsure, say N

	  To compile this driver as a module, choose M here: the
	  module will be called sx8654.

config TOUCHSCREEN_TPS6507X
	tristate "TPS6507x based touchscreens"
	depends on I2C
	help
	  Say Y here if you have a TPS6507x based touchscreen
	  controller.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called tps6507x_ts.

config TOUCHSCREEN_ZET6223
	tristate "Zeitec ZET6223 touchscreen driver"
	depends on I2C
	help
	  Say Y here if you have a touchscreen using Zeitec ZET6223

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called zet6223.

config TOUCHSCREEN_ZFORCE
	tristate "Neonode zForce infrared touchscreens"
	depends on I2C
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have a touchscreen using the zforce
	  infraread technology from Neonode.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called zforce_ts.

config TOUCHSCREEN_COLIBRI_VF50
	tristate "Toradex Colibri on board touchscreen driver"
	depends on IIO && VF610_ADC
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have a Colibri VF50 and plan to use
	  the on-board provided 4-wire touchscreen driver.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called colibri_vf50_ts.

config TOUCHSCREEN_ROHM_BU21023
	tristate "ROHM BU21023/24 Dual touch support resistive touchscreens"
	depends on I2C
	help
	  Say Y here if you have a touchscreen using ROHM BU21023/24.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called bu21023_ts.

config TOUCHSCREEN_IQS5XX
	tristate "Azoteq IQS550/572/525 trackpad/touchscreen controller"
	depends on I2C
	help
	  Say Y to enable support for the Azoteq IQS550/572/525
	  family of trackpad/touchscreen controllers.

	  To compile this driver as a module, choose M here: the
	  module will be called iqs5xx.

config TOUCHSCREEN_ZINITIX
	tristate "Zinitix touchscreen support"
	depends on I2C
	help
	  Say Y here if you have a touchscreen using Zinitix bt541,
	  or something similar enough.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the
	  module will be called zinitix.

endif
