# SPDX-License-Identifier: GPL-2.0-only
#
# Input misc drivers configuration
#
menuconfig INPUT_MISC
	bool "Miscellaneous devices"
	help
	  Say Y here, and a list of miscellaneous input drivers will be displayed.
	  Everything that didn't fit into the other categories is here. This option
	  doesn't affect the kernel.

	  If unsure, say Y.

if INPUT_MISC

config INPUT_88PM860X_ONKEY
	tristate "88PM860x ONKEY support"
	depends on MFD_88PM860X
	help
	  Support the ONKEY of Marvell 88PM860x PMICs as an input device
	  reporting power button status.

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

config INPUT_88PM80X_ONKEY
	tristate "88PM80x ONKEY support"
	depends on MFD_88PM800
	help
	  Support the ONKEY of Marvell 88PM80x PMICs as an input device
	  reporting power button status.

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

config INPUT_88PM886_ONKEY
	tristate "Marvell 88PM886 onkey support"
	depends on MFD_88PM886_PMIC
	help
	  Support the onkey of Marvell 88PM886 PMIC as an input device
	  reporting power button status.

config INPUT_AB8500_PONKEY
	tristate "AB8500 Pon (PowerOn) Key"
	depends on AB8500_CORE
	help
	  Say Y here to use the PowerOn Key for ST-Ericsson's AB8500
	  Mix-Sig PMIC.

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

config INPUT_AD714X
	tristate "Analog Devices AD714x Capacitance Touch Sensor"
	help
	  Say Y here if you want to support an AD7142/3/7/8/7A touch sensor.

	  You should select a bus connection too.

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

config INPUT_AD714X_I2C
	tristate "support I2C bus connection"
	depends on INPUT_AD714X && I2C
	default y
	help
	  Say Y here if you have AD7142/AD7147 hooked to an I2C bus.

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

config INPUT_AD714X_SPI
	tristate "support SPI bus connection"
	depends on INPUT_AD714X && SPI
	default y
	help
	  Say Y here if you have AD7142/AD7147 hooked to a SPI bus.

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

config INPUT_ARIEL_PWRBUTTON
	tristate "Dell Wyse 3020 Power Button Driver"
	depends on SPI
	depends on MACH_MMP3_DT || COMPILE_TEST
	help
	  Say Y to enable support for reporting power button status on
	  on Dell Wyse 3020 ("Ariel") thin client.

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

config INPUT_ARIZONA_HAPTICS
	tristate "Arizona haptics support"
	depends on MFD_ARIZONA && SND_SOC
	select INPUT_FF_MEMLESS
	help
	  Say Y to enable support for the haptics module in Arizona CODECs.

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

config INPUT_ATC260X_ONKEY
	tristate "Actions Semi ATC260x PMIC ONKEY"
	depends on MFD_ATC260X
	help
	  Support the ONKEY of ATC260x PMICs as an input device reporting
	  power button status. ONKEY can be used to wakeup from low power
	  modes and force a reset on long press.

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

config INPUT_ATMEL_CAPTOUCH
	tristate "Atmel Capacitive Touch Button Driver"
	depends on OF
	depends on I2C
	help
	  Say Y here if an Atmel Capacitive Touch Button device which
	  implements "captouch" protocol is connected to I2C bus. Typically
	  this device consists of Atmel Touch sensor controlled by AtMegaXX
	  MCU running firmware based on Qtouch library.
	  One should find "atmel,captouch" node in the board specific DTS.

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

config INPUT_BBNSM_PWRKEY
	tristate "NXP BBNSM Power Key Driver"
	depends on ARCH_MXC || COMPILE_TEST
	depends on OF
	help
	  This is the bbnsm powerkey driver for the NXP i.MX application
	  processors.

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

config INPUT_BMA150
	tristate "BMA150/SMB380 acceleration sensor support"
	depends on I2C
	help
	  Say Y here if you have Bosch Sensortec's BMA150 or SMB380
	  acceleration sensor hooked to an I2C bus.

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

config INPUT_CS40L50_VIBRA
	tristate "CS40L50 Haptic Driver support"
	depends on MFD_CS40L50_CORE
	help
	  Say Y here to enable support for Cirrus Logic's CS40L50
	  haptic driver.

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

config INPUT_E3X0_BUTTON
	tristate "NI Ettus Research USRP E3xx Button support."
	default n
	help
	  Say Y here to enable support for the NI Ettus Research
	  USRP E3xx Button.

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

config INPUT_PCSPKR
	tristate "PC Speaker support"
	depends on PCSPKR_PLATFORM
	help
	  Say Y here if you want the standard PC Speaker to be used for
	  bells and whistles.

	  If unsure, say Y.

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

config INPUT_PM8941_PWRKEY
	tristate "Qualcomm PM8941 power key support"
	depends on MFD_SPMI_PMIC
	help
	  Say Y here if you want support for the power key usually found
	  on boards using a Qualcomm PM8941 compatible PMIC.

	  If unsure, say Y.

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

config INPUT_PM8XXX_VIBRATOR
	tristate "Qualcomm PM8XXX vibrator support"
	depends on MFD_PM8XXX || MFD_SPMI_PMIC
	select INPUT_FF_MEMLESS
	help
	  This option enables device driver support for the vibrator
	  on Qualcomm PM8xxx chip. This driver supports ff-memless interface
	  from input framework.

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

config INPUT_PMIC8XXX_PWRKEY
	tristate "PMIC8XXX power key support"
	depends on MFD_PM8XXX
	help
	  Say Y here if you want support for the PMIC8XXX power key.

	  If unsure, say N.

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

config INPUT_SPARCSPKR
	tristate "SPARC Speaker support"
	depends on PCI && SPARC64
	help
	  Say Y here if you want the standard Speaker on Sparc PCI systems
	  to be used for bells and whistles.

	  If unsure, say Y.

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

config INPUT_M68K_BEEP
	tristate "M68k Beeper support"
	depends on M68K

config INPUT_MAX77650_ONKEY
	tristate "Maxim MAX77650 ONKEY support"
	depends on MFD_MAX77650
	help
	  Support the ONKEY of the MAX77650 PMIC as an input device.

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

config INPUT_MAX77693_HAPTIC
	tristate "MAXIM MAX77693/MAX77705/MAX77843 haptic controller support"
	depends on (MFD_MAX77693 || MFD_MAX77705 || MFD_MAX77843) && PWM
	select INPUT_FF_MEMLESS
	help
	  This option enables support for the haptic controller on
	  MAXIM MAX77693, MAX77705 and MAX77843 chips.

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

config INPUT_MAX8925_ONKEY
	tristate "MAX8925 ONKEY support"
	depends on MFD_MAX8925
	help
	  Support the ONKEY of MAX8925 PMICs as an input device
	  reporting power button status.

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

config INPUT_MAX8997_HAPTIC
	tristate "MAXIM MAX8997 haptic controller support"
	depends on PWM && MFD_MAX8997
	select INPUT_FF_MEMLESS
	help
	  This option enables device driver support for the haptic controller
	  on MAXIM MAX8997 chip. This driver supports ff-memless interface
	  from input framework.

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

config INPUT_MC13783_PWRBUTTON
	tristate "MC13783 ON buttons"
	depends on MFD_MC13XXX
	help
	  Support the ON buttons of MC13783 PMIC as an input device
	  reporting power button status.

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

config INPUT_MMA8450
	tristate "MMA8450 - Freescale's 3-Axis, 8/12-bit Digital Accelerometer"
	depends on I2C
	help
	  Say Y here if you want to support Freescale's MMA8450 Accelerometer
	  through I2C interface.

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

config INPUT_APANEL
	tristate "Fujitsu Lifebook Application Panel buttons"
	depends on X86 && I2C && LEDS_CLASS
	select CHECK_SIGNATURE
	help
	 Say Y here for support of the Application Panel buttons, used on
	 Fujitsu Lifebook. These are attached to the mainboard through
	 an SMBus interface managed by the I2C Intel ICH (i801) driver,
	 which you should also build for this kernel.

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

config INPUT_GPIO_BEEPER
	tristate "Generic GPIO Beeper support"
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here if you have a beeper connected to a GPIO pin.

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

config INPUT_GPIO_DECODER
	tristate "Polled GPIO Decoder Input driver"
	depends on GPIOLIB || COMPILE_TEST
	help
	 Say Y here if you want driver to read status of multiple GPIO
	 lines and report the encoded value as an absolute integer to
	 input subsystem.

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

config INPUT_GPIO_VIBRA
	tristate "GPIO vibrator support"
	depends on GPIOLIB || COMPILE_TEST
	select INPUT_FF_MEMLESS
	help
	  Say Y here to get support for GPIO based vibrator devices.

	  If unsure, say N.

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

config INPUT_COBALT_BTNS
	tristate "Cobalt button interface"
	depends on MIPS_COBALT
	help
	  Say Y here if you want to support MIPS Cobalt button interface.

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

config INPUT_CPCAP_PWRBUTTON
	tristate "CPCAP OnKey"
	depends on MFD_CPCAP
	help
	  Say Y here if you want to enable power key reporting via the
	  Motorola CPCAP chip.

	  To compile this driver as a module, choose M here. The module will
	  be called cpcap-pwrbutton.

config INPUT_WISTRON_BTNS
	tristate "x86 Wistron laptop button interface"
	depends on X86_32 && !UML
	select INPUT_SPARSEKMAP
	select NEW_LEDS
	select LEDS_CLASS
	select CHECK_SIGNATURE
	help
	  Say Y here for support of Wistron laptop button interfaces, used on
	  laptops of various brands, including Acer and Fujitsu-Siemens. If
	  available, mail and wifi LEDs will be controllable via /sys/class/leds.

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

config INPUT_ATLAS_BTNS
	tristate "x86 Atlas button interface"
	depends on X86 && ACPI
	help
	  Say Y here for support of Atlas wallmount touchscreen buttons.
	  The events will show up as scancodes F1 through F9 via evdev.

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

config INPUT_ATI_REMOTE2
	tristate "ATI / Philips USB RF remote control"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use an ATI or Philips USB RF remote control.
	  These are RF remotes with USB receivers.
	  ATI Remote Wonder II comes with some ATI's All-In-Wonder video cards
	  and is also available as a separate product.
	  This driver provides mouse pointer, left and right mouse buttons,
	  and maps all the other remote buttons to keypress events.

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

config INPUT_KEYSPAN_REMOTE
	tristate "Keyspan DMR USB remote control"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use a Keyspan DMR USB remote control.
	  Currently only the UIA-11 type of receiver has been tested.  The tag
	  on the receiver that connects to the USB port should have a P/N that
	  will tell you what type of DMR you have.  The UIA-10 type is not
	  supported at this time.  This driver maps all buttons to keypress
	  events.

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

config INPUT_KXTJ9
	tristate "Kionix KXTJ9 tri-axis digital accelerometer"
	depends on I2C
	help
	  Say Y here to enable support for the Kionix KXTJ9 digital tri-axis
	  accelerometer.

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

config INPUT_POWERMATE
	tristate "Griffin PowerMate and Contour Jog support"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use Griffin PowerMate or Contour Jog devices.
	  These are aluminum dials which can measure clockwise and anticlockwise
	  rotation.  The dial also acts as a pushbutton.  The base contains an LED
	  which can be instructed to pulse or to switch to a particular intensity.

	  You can download userspace tools from
	  <http://sowerbutts.com/powermate/>.

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

config INPUT_YEALINK
	tristate "Yealink usb-p1k voip phone"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to enable keyboard and LCD functions of the
	  Yealink usb-p1k usb phones. The audio part is enabled by the generic
	  usb sound driver, so you might want to enable that as well.

	  For information about how to use these additional functions, see
	  <file:Documentation/input/devices/yealink.rst>.

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

config INPUT_CM109
	tristate "C-Media CM109 USB I/O Controller"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to enable keyboard and buzzer functions of the
	  C-Media CM109 usb phones. The audio part is enabled by the generic
	  usb sound driver, so you might want to enable that as well.

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

config INPUT_REGULATOR_HAPTIC
	tristate "Regulator haptics support"
	depends on REGULATOR
	select INPUT_FF_MEMLESS
	help
	  This option enables device driver support for the haptic controlled
	  by a regulator. This driver supports ff-memless interface
	  from input framework.

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

config INPUT_RETU_PWRBUTTON
	tristate "Retu Power button Driver"
	depends on MFD_RETU
	help
	  Say Y here if you want to enable power key reporting via the
	  Retu chips found in Nokia Internet Tablets (770, N800, N810).

	  To compile this driver as a module, choose M here. The module will
	  be called retu-pwrbutton.

config INPUT_TPS65218_PWRBUTTON
	tristate "TPS65218 Power button driver"
	depends on (MFD_TPS65217 || MFD_TPS65218)
	help
	  Say Y here if you want to enable power button reporting for
	  TPS65217 and TPS65218 Power Management IC devices.

	  To compile this driver as a module, choose M here. The module will
	  be called tps65218-pwrbutton.

config INPUT_TPS65219_PWRBUTTON
	tristate "TPS65219 Power button driver"
	depends on MFD_TPS65219
	help
	  Say Y here if you want to enable power button reporting for
	  TPS65219 Power Management IC devices.

	  To compile this driver as a module, choose M here. The module will
	  be called tps65219-pwrbutton.

config INPUT_AXP20X_PEK
	tristate "X-Powers AXP20X power button driver"
	depends on MFD_AXP20X
	help
	  Say Y here if you want to enable power key reporting via the
	  AXP20X PMIC.

	  To compile this driver as a module, choose M here. The module will
	  be called axp20x-pek.


config INPUT_TWL4030_PWRBUTTON
	tristate "TWL4030 Power button Driver"
	depends on TWL4030_CORE
	help
	  Say Y here if you want to enable power key reporting via the
	  TWL4030 family of chips.

	  To compile this driver as a module, choose M here. The module will
	  be called twl4030_pwrbutton.

config INPUT_TWL4030_VIBRA
	tristate "Support for TWL4030 Vibrator"
	depends on TWL4030_CORE
	select MFD_TWL4030_AUDIO
	select INPUT_FF_MEMLESS
	help
	  This option enables support for TWL4030 Vibrator Driver.

	  To compile this driver as a module, choose M here. The module will
	  be called twl4030_vibra.

config INPUT_TWL6040_VIBRA
	tristate "Support for TWL6040 Vibrator"
	depends on TWL6040_CORE
	select INPUT_FF_MEMLESS
	help
	  This option enables support for TWL6040 Vibrator Driver.

	  To compile this driver as a module, choose M here. The module will
	  be called twl6040_vibra.

config INPUT_UINPUT
	tristate "User level driver support"
	help
	  Say Y here if you want to support user level drivers for input
	  subsystem accessible under char device 10:223 - /dev/input/uinput.

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

config INPUT_SGI_BTNS
	tristate "SGI Indy/O2 volume button interface"
	depends on SGI_IP22 || SGI_IP32
	help
	  Say Y here if you want to support SGI Indy/O2 volume button interface.

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

config HP_SDC_RTC
	tristate "HP SDC Real Time Clock"
	depends on (GSC || HP300) && SERIO
	select HP_SDC
	help
	  Say Y here if you want to support the built-in real time clock
	  of the HP SDC controller.

config INPUT_PALMAS_PWRBUTTON
	tristate "Palmas Power button Driver"
	depends on MFD_PALMAS
	help
	  Say Y here if you want to enable power key reporting via the
	  Palmas family of PMICs.

	  To compile this driver as a module, choose M here. The module will
	  be called palmas_pwrbutton.

config INPUT_PCF8574
	tristate "PCF8574 Keypad input device"
	depends on I2C
	help
	  Say Y here if you want to support a keypad connected via I2C
	  with a PCF8574.

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

config INPUT_PWM_BEEPER
	tristate "PWM beeper support"
	depends on PWM
	help
	  Say Y here to get support for PWM based beeper devices.

	  If unsure, say N.

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

config INPUT_PWM_VIBRA
	tristate "PWM vibrator support"
	depends on PWM
	select INPUT_FF_MEMLESS
	help
	  Say Y here to get support for PWM based vibrator devices.

	  If unsure, say N.

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

config INPUT_RK805_PWRKEY
	tristate "Rockchip RK805 PMIC power key support"
	depends on MFD_RK8XX
	help
	  Select this option to enable power key driver for RK805.

	  If unsure, say N.

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

config INPUT_GPIO_ROTARY_ENCODER
	tristate "Rotary encoders connected to GPIO pins"
	depends on GPIOLIB || COMPILE_TEST
	help
	  Say Y here to add support for rotary encoders connected to GPIO lines.
	  Check file:Documentation/input/devices/rotary-encoder.rst for more
	  information.

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

config INPUT_RB532_BUTTON
	tristate "Mikrotik Routerboard 532 button interface"
	depends on MIKROTIK_RB532
	depends on GPIOLIB
	help
	  Say Y here if you want support for the S1 button built into
	  Mikrotik's Routerboard 532.

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

config INPUT_DA7280_HAPTICS
	tristate "Dialog Semiconductor DA7280 haptics support"
	depends on INPUT && I2C
	select REGMAP_I2C
	help
	  Say Y to enable support for the Dialog DA7280 haptics driver.
	  The haptics can be controlled by PWM or GPIO
	  with I2C communication.

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

config INPUT_DA9052_ONKEY
	tristate "Dialog DA9052/DA9053 Onkey"
	depends on PMIC_DA9052
	help
	  Support the ONKEY of Dialog DA9052 PMICs as an input device
	  reporting power button status.

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

config INPUT_DA9055_ONKEY
	tristate "Dialog Semiconductor DA9055 ONKEY"
	depends on MFD_DA9055
	help
	  Support the ONKEY of DA9055 PMICs as an input device
	  reporting power button status.

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

config INPUT_DA9063_ONKEY
	tristate "Dialog DA9063/62/61 OnKey"
	depends on MFD_DA9063 || MFD_DA9062
	help
	  Support the ONKEY of Dialog DA9063, DA9062 and DA9061 Power
	  Management ICs as an input device capable of reporting the
	  power button status.

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

config INPUT_WM831X_ON
	tristate "WM831X ON pin"
	depends on MFD_WM831X
	help
	  Support the ON pin of WM831X PMICs as an input device
	  reporting power button status.

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

config INPUT_PCAP
	tristate "Motorola EZX PCAP misc input events"
	depends on EZX_PCAP
	help
	  Say Y here if you want to use Power key and Headphone button
	  on Motorola EZX phones.

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

config INPUT_ADXL34X
	tristate "Analog Devices ADXL34x Three-Axis Digital Accelerometer"
	default n
	help
	  Say Y here if you have a Accelerometer interface using the
	  ADXL345/6 controller, and your board-specific initialization
	  code includes that in its table of devices.

	  This driver can use either I2C or SPI communication to the
	  ADXL345/6 controller.  Select the appropriate method for
	  your system.

	  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 adxl34x.

config INPUT_ADXL34X_I2C
	tristate "support I2C bus connection"
	depends on INPUT_ADXL34X && I2C
	default y
	help
	  Say Y here if you have ADXL345/6 hooked to an I2C bus.

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

config INPUT_ADXL34X_SPI
	tristate "support SPI bus connection"
	depends on INPUT_ADXL34X && SPI
	default y
	help
	  Say Y here if you have ADXL345/6 hooked to a SPI bus.

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

config INPUT_IBM_PANEL
	tristate "IBM Operation Panel driver"
	depends on I2C && I2C_SLAVE
	help
	  Say Y here if you have an IBM Operation Panel connected to your system
	  over I2C. The panel is typically connected only to a system's service
	  processor (BMC).

	  If unsure, say N.

	  The Operation Panel is a controller with some buttons and an LCD
	  display that allows someone with physical access to the system to
	  perform various administrative tasks. This driver only supports the part
	  of the controller that sends commands to the system.

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

config INPUT_IMS_PCU
	tristate "IMS Passenger Control Unit driver"
	depends on USB
	depends on LEDS_CLASS
	help
	  Say Y here if you have system with IMS Rave Passenger Control Unit.

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

config INPUT_IQS269A
	tristate "Azoteq IQS269A capacitive touch controller"
	depends on I2C
	select REGMAP_I2C
	help
	  Say Y to enable support for the Azoteq IQS269A capacitive
	  touch controller.

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

config INPUT_IQS626A
	tristate "Azoteq IQS626A capacitive touch controller"
	depends on I2C
	select REGMAP_I2C
	help
	  Say Y to enable support for the Azoteq IQS626A capacitive
	  touch controller.

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

config INPUT_IQS7222
	tristate "Azoteq IQS7222A/B/C/D capacitive touch controller"
	depends on I2C
	help
	  Say Y to enable support for the Azoteq IQS7222A/B/C/D family
	  of capacitive touch controllers.

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

config INPUT_CMA3000
	tristate "VTI CMA3000 Tri-axis accelerometer"
	help
	  Say Y here if you want to use VTI CMA3000_D0x Accelerometer
	  driver

	  This driver currently only supports I2C interface to the
	  controller. Also select the I2C method.

	  If unsure, say N

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

config INPUT_CMA3000_I2C
	tristate "Support I2C bus connection"
	depends on INPUT_CMA3000 && I2C
	help
	  Say Y here if you want to use VTI CMA3000_D0x Accelerometer
	  through I2C interface.

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

config INPUT_XEN_KBDDEV_FRONTEND
	tristate "Xen virtual keyboard and mouse support"
	depends on XEN
	default y
	select XEN_XENBUS_FRONTEND
	help
	  This driver implements the front-end of the Xen virtual
	  keyboard and mouse device driver.  It communicates with a back-end
	  in another domain.

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

config INPUT_IDEAPAD_SLIDEBAR
	tristate "IdeaPad Laptop Slidebar"
	depends on INPUT
	depends on SERIO_I8042
	help
	  Say Y here if you have an IdeaPad laptop with a slidebar.

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

config INPUT_SOC_BUTTON_ARRAY
	tristate "Windows-compatible SoC Button Array"
	depends on KEYBOARD_GPIO && ACPI
	help
	  Say Y here if you have a SoC-based tablet that originally runs
	  Windows 8 or a Microsoft Surface Book 2, Pro 5, Laptop 1 or later.

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

config INPUT_DRV260X_HAPTICS
	tristate "TI DRV260X haptics support"
	depends on INPUT && I2C
	depends on GPIOLIB || COMPILE_TEST
	select INPUT_FF_MEMLESS
	select REGMAP_I2C
	help
	  Say Y to enable support for the TI DRV260X haptics driver.

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

config INPUT_DRV2665_HAPTICS
	tristate "TI DRV2665 haptics support"
	depends on INPUT && I2C
	select INPUT_FF_MEMLESS
	select REGMAP_I2C
	help
	  Say Y to enable support for the TI DRV2665 haptics driver.

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

config INPUT_DRV2667_HAPTICS
	tristate "TI DRV2667 haptics support"
	depends on INPUT && I2C
	select INPUT_FF_MEMLESS
	select REGMAP_I2C
	help
	  Say Y to enable support for the TI DRV2667 haptics driver.

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

config INPUT_HISI_POWERKEY
	tristate "Hisilicon PMIC ONKEY support"
	depends on ARCH_HISI || COMPILE_TEST
	help
	  Say Y to enable support for PMIC ONKEY.

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

config INPUT_QNAP_MCU
	tristate "Input Support for QNAP MCU controllers"
	depends on MFD_QNAP_MCU
	help
	  This option enables support for input elements available on
	  embedded controllers used in QNAP NAS devices.

	  This includes a polled power-button as well as a beeper.

	  To compile this driver as a module, choose M here: the
	  module will be called qnap-mcu-input.

config INPUT_RAVE_SP_PWRBUTTON
	tristate "RAVE SP Power button Driver"
	depends on RAVE_SP_CORE
	help
	  Say Y here if you want to enable power key reporting from RAVE SP

	  To compile this driver as a module, choose M here: the
	  module will be called rave-sp-pwrbutton.

config INPUT_SC27XX_VIBRA
	tristate "Spreadtrum sc27xx vibrator support"
	depends on MFD_SC27XX_PMIC || COMPILE_TEST
	select INPUT_FF_MEMLESS
	help
	  This option enables support for Spreadtrum sc27xx vibrator driver.

	  To compile this driver as a module, choose M here. The module will
	  be called sc27xx_vibra.

config INPUT_RT5120_PWRKEY
	tristate "RT5120 PMIC power key support"
	depends on MFD_RT5120 || COMPILE_TEST
	help
	  This enables support for RT5120 PMIC power key driver.

	  To compile this driver as a module, choose M here. the module will
	  be called rt5120-pwrkey.

config INPUT_STPMIC1_ONKEY
	tristate "STPMIC1 PMIC Onkey support"
	depends on MFD_STPMIC1
	help
	  Say Y to enable support of onkey embedded into STPMIC1 PMIC. onkey
	  can be used to wakeup from low power modes and force a shut-down on
	  long press.

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

endif
