# SPDX-License-Identifier: GPL-2.0-only
#
# Input core configuration
#
menuconfig INPUT_KEYBOARD
	bool "Keyboards"
	default y
	help
	  Say Y here, and a list of supported keyboards will be displayed.
	  This option doesn't affect the kernel.

	  If unsure, say Y.

if INPUT_KEYBOARD

config KEYBOARD_ADC
	tristate "ADC Ladder Buttons"
	depends on IIO
	help
	  This driver implements support for buttons connected
	  to an ADC using a resistor ladder.

	  Say Y here if your device has such buttons connected to an ADC.  Your
	  board-specific setup logic must also provide a configuration data
	  for mapping voltages to buttons.

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

config KEYBOARD_ADP5520
	tristate "Keypad Support for ADP5520 PMIC"
	depends on PMIC_ADP5520
	help
	  This option enables support for the keypad scan matrix
	  on Analog Devices ADP5520 PMICs.

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

config KEYBOARD_ADP5588
	tristate "ADP5588/87 I2C QWERTY Keypad and IO Expander"
	depends on I2C
	help
	  Say Y here if you want to use a ADP5588/87 attached to your
	  system I2C bus.

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

config KEYBOARD_ADP5589
	tristate "ADP5585/ADP5589 I2C QWERTY Keypad and IO Expander"
	depends on I2C
	help
	  Say Y here if you want to use a ADP5585/ADP5589 attached to your
	  system I2C bus.

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

config KEYBOARD_AMIGA
	tristate "Amiga keyboard"
	depends on AMIGA
	help
	  Say Y here if you are running Linux on any AMIGA and have a keyboard
	  attached.

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

config KEYBOARD_APPLESPI
	tristate "Apple SPI keyboard and trackpad"
	depends on ACPI && EFI
	depends on SPI
	depends on X86 || COMPILE_TEST
	depends on LEDS_CLASS
	select CRC16
	help
	  Say Y here if you are running Linux on any Apple MacBook8,1 or later,
	  or any MacBookPro13,* or MacBookPro14,*.

	  You will also need to enable appropriate SPI master controllers:
	  spi_pxa2xx_platform and spi_pxa2xx_pci for MacBook8,1, and
	  spi_pxa2xx_platform and intel_lpss_pci for the rest.

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

config KEYBOARD_ATARI
	tristate "Atari keyboard"
	depends on ATARI
	select ATARI_KBD_CORE
	help
	  Say Y here if you are running Linux on any Atari and have a keyboard
	  attached.

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

config KEYBOARD_ATKBD
	tristate "AT keyboard"
	default y
	select SERIO
	select SERIO_LIBPS2
	select SERIO_I8042 if ARCH_MIGHT_HAVE_PC_SERIO
	select SERIO_GSCPS2 if GSC
	select INPUT_VIVALDIFMAP
	help
	  Say Y here if you want to use a standard AT or PS/2 keyboard. Usually
	  you'll need this, unless you have a different type keyboard (USB, ADB
	  or other). This also works for AT and PS/2 keyboards connected over a
	  PS/2 to serial converter.

	  If unsure, say Y.

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

config KEYBOARD_ATKBD_HP_KEYCODES
	bool "Use HP keyboard scancodes"
	depends on PARISC && KEYBOARD_ATKBD
	default y
	help
	  Say Y here if you have a PA-RISC machine and want to use an AT or
	  PS/2 keyboard, and your keyboard uses keycodes that are specific to
	  PA-RISC keyboards.

	  Say N if you use a standard keyboard.

config KEYBOARD_ATKBD_RDI_KEYCODES
	bool "Use PrecisionBook keyboard scancodes"
	depends on KEYBOARD_ATKBD_HP_KEYCODES
	default n
	help
	  If you have an RDI PrecisionBook, say Y here if you want to use its
	  built-in keyboard (as opposed to an external keyboard).

	  The PrecisionBook has five keys that conflict with those used by most
	  AT and PS/2 keyboards. These are as follows:

	    PrecisionBook    Standard AT or PS/2

	    F1               F12
	    Left Ctrl        Left Alt
	    Caps Lock        Left Ctrl
	    Right Ctrl       Caps Lock
	    Left             102nd key (the key to the right of Left Shift)

	  If you say N here, and use the PrecisionBook keyboard, then each key
	  in the left-hand column will be interpreted as the corresponding key
	  in the right-hand column.

	  If you say Y here, and use an external keyboard, then each key in the
	  right-hand column will be interpreted as the key shown in the
	  left-hand column.

config KEYBOARD_QT1050
	tristate "Microchip AT42QT1050 Touch Sensor Chip"
	depends on I2C
	select REGMAP_I2C
	help
	  Say Y here if you want to use Microchip AT42QT1050 QTouch
	  Sensor chip as input device.

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

config KEYBOARD_QT1070
	tristate "Atmel AT42QT1070 Touch Sensor Chip"
	depends on I2C
	help
	  Say Y here if you want to use Atmel AT42QT1070 QTouch
	  Sensor chip as input device.

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

config KEYBOARD_QT2160
	tristate "Atmel AT42QT2160 Touch Sensor Chip"
	depends on I2C
	help
	  If you say yes here you get support for Atmel AT42QT2160 Touch
	  Sensor chip as a keyboard input.

	  This driver can also be built as a module. If so, the module
	  will be called qt2160.

config KEYBOARD_CLPS711X
	tristate "CLPS711X Keypad support"
	depends on OF_GPIO && (ARCH_CLPS711X || COMPILE_TEST)
	select INPUT_MATRIXKMAP
	help
	  Say Y here to enable the matrix keypad on the Cirrus Logic
	  CLPS711X CPUs.

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

config KEYBOARD_DLINK_DIR685
	tristate "D-Link DIR-685 touchkeys support"
	depends on I2C
	default ARCH_GEMINI
	help
	  If you say yes here you get support for the D-Link DIR-685
	  touchkeys.

	  To compile this driver as a module, choose M here: the
	  module will be called dlink-dir685-touchkeys.

config KEYBOARD_LKKBD
	tristate "DECstation/VAXstation LK201/LK401 keyboard"
	select SERIO
	help
	  Say Y here if you want to use a LK201 or LK401 style serial
	  keyboard. This keyboard is also usable on PCs if you attach
	  it with the inputattach program. The connector pinout is
	  described within lkkbd.c.

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

config KEYBOARD_EP93XX
	tristate "EP93xx Matrix Keypad support"
	depends on ARCH_EP93XX || COMPILE_TEST
	select INPUT_MATRIXKMAP
	help
	  Say Y here to enable the matrix keypad on the Cirrus EP93XX.

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

config KEYBOARD_GPIO
	tristate "GPIO Buttons"
	depends on GPIOLIB || COMPILE_TEST
	help
	  This driver implements support for buttons connected
	  to GPIO pins of various CPUs (and some other chips).

	  Say Y here if your device has buttons connected
	  directly to such GPIO pins.  Your board-specific
	  setup logic must also provide a platform device,
	  with configuration data saying which GPIOs are used.

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

config KEYBOARD_GPIO_POLLED
	tristate "Polled GPIO buttons"
	depends on GPIOLIB
	help
	  This driver implements support for buttons connected
	  to GPIO pins that are not capable of generating interrupts.

	  Say Y here if your device has buttons connected
	  directly to such GPIO pins.  Your board-specific
	  setup logic must also provide a platform device,
	  with configuration data saying which GPIOs are used.

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

config KEYBOARD_TCA6416
	tristate "TCA6416/TCA6408A Keypad Support"
	depends on I2C
	help
	  This driver implements basic keypad functionality
	  for keys connected through TCA6416/TCA6408A IO expanders.

	  Say Y here if your device has keys connected to
	  TCA6416/TCA6408A IO expander. Your board-specific setup logic
	  must also provide pin-mask details(of which TCA6416 pins
	  are used for keypad).

	  If enabled the entire TCA6416 device will be managed through
	  this driver.

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

config KEYBOARD_TCA8418
	tristate "TCA8418 Keypad Support"
	depends on I2C
	select INPUT_MATRIXKMAP
	help
	  This driver implements basic keypad functionality
	  for keys connected through TCA8418 keypad decoder.

	  Say Y here if your device has keys connected to
	  TCA8418 keypad decoder.

	  If enabled the complete TCA8418 device will be managed through
	  this driver.

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

config KEYBOARD_MATRIX
	tristate "GPIO driven matrix keypad support"
	depends on GPIOLIB || COMPILE_TEST
	select INPUT_MATRIXKMAP
	help
	  Enable support for GPIO driven matrix keypad.

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

config KEYBOARD_HIL_OLD
	tristate "HP HIL keyboard support (simple driver)"
	depends on GSC || HP300
	default y
	help
	  The "Human Interface Loop" is a older, 8-channel USB-like
	  controller used in several Hewlett Packard models. This driver
	  was adapted from the one written for m68k/hp300, and implements
	  support for a keyboard attached to the HIL port, but not for
	  any other types of HIL input devices like mice or tablets.
	  However, it has been thoroughly tested and is stable.

	  If you want full HIL support including support for multiple
	  keyboards, mice, and tablets, you have to enable the
	  "HP System Device Controller i8042 Support" in the input/serio
	  submenu.

config KEYBOARD_HIL
	tristate "HP HIL keyboard/pointer support"
	depends on GSC || HP300
	default y
	select HP_SDC
	select HIL_MLC
	select SERIO
	help
	  The "Human Interface Loop" is a older, 8-channel USB-like
	  controller used in several Hewlett Packard models.
	  This driver implements support for HIL-keyboards and pointing
	  devices (mice, tablets, touchscreens) attached
	  to your machine, so normally you should say Y here.

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

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

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

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

config KEYBOARD_LM8323
	tristate "LM8323 keypad chip"
	depends on I2C
	depends on LEDS_CLASS
	help
	  If you say yes here you get support for the National Semiconductor
	  LM8323 keypad controller.

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

config KEYBOARD_LM8333
	tristate "LM8333 keypad chip"
	depends on I2C
	select INPUT_MATRIXKMAP
	help
	  If you say yes here you get support for the National Semiconductor
	  LM8333 keypad controller.

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

config KEYBOARD_LOCOMO
	tristate "LoCoMo Keyboard Support"
	depends on SHARP_LOCOMO
	help
	  Say Y here if you are running Linux on a Sharp Zaurus Collie or Poodle based PDA

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

config KEYBOARD_LPC32XX
	tristate "LPC32XX matrix key scanner support"
	depends on ARCH_LPC32XX && OF
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use NXP LPC32XX SoC key scanner interface,
	  connected to a key matrix.

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

config KEYBOARD_MAPLE
	tristate "Maple bus keyboard"
	depends on SH_DREAMCAST && MAPLE
	help
	  Say Y here if you have a Dreamcast console running Linux and have
	  a keyboard attached to its Maple bus.

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

config KEYBOARD_MAX7359
	tristate "Maxim MAX7359 Key Switch Controller"
	select INPUT_MATRIXKMAP
	depends on I2C
	help
	  If you say yes here you get support for the Maxim MAX7359 Key
	  Switch Controller chip. This providers microprocessors with
	  management of up to 64 key switches

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

config KEYBOARD_MCS
	tristate "MELFAS MCS Touchkey"
	depends on I2C
	help
	  Say Y here if you have the MELFAS MCS5000/5080 touchkey controller
	  chip in your system.

	  If unsure, say N.

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

config KEYBOARD_MPR121
	tristate "Freescale MPR121 Touchkey"
	depends on I2C
	help
	  Say Y here if you have Freescale MPR121 touchkey controller
	  chip in your system.

	  If unsure, say N.

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

config KEYBOARD_SNVS_PWRKEY
	tristate "IMX SNVS Power Key Driver"
	depends on ARCH_MXC || (COMPILE_TEST && HAS_IOMEM)
	depends on OF
	help
	  This is the snvs powerkey driver for the Freescale i.MX application
	  processors.

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

config KEYBOARD_IMX
	tristate "IMX keypad support"
	depends on ARCH_MXC || COMPILE_TEST
	select INPUT_MATRIXKMAP
	help
	  Enable support for IMX keypad port.

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

config KEYBOARD_IMX_SC_KEY
	tristate "IMX SCU Key Driver"
	depends on IMX_SCU
	help
	  This is the system controller key driver for NXP i.MX SoCs with
	  system controller inside.

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

config KEYBOARD_NEWTON
	tristate "Newton keyboard"
	select SERIO
	help
	  Say Y here if you have a Newton keyboard on a serial port.

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

config KEYBOARD_NOMADIK
	tristate "ST-Ericsson Nomadik SKE keyboard"
	depends on (ARCH_NOMADIK || ARCH_U8500)
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use a keypad provided on the SKE controller
	  used on the Ux500 and Nomadik platforms

	  To compile this driver as a module, choose M here: the
	  module will be called nmk-ske-keypad.

config KEYBOARD_NSPIRE
	tristate "TI-NSPIRE built-in keyboard"
	depends on ARCH_NSPIRE && OF
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the built-in keypad on TI-NSPIRE.

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

config KEYBOARD_TEGRA
	tristate "NVIDIA Tegra internal matrix keyboard controller support"
	depends on ARCH_TEGRA && OF
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use a matrix keyboard connected directly
	  to the internal keyboard controller on Tegra SoCs.

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

config KEYBOARD_OPENCORES
	tristate "OpenCores Keyboard Controller"
	depends on HAS_IOMEM
	help
	  Say Y here if you want to use the OpenCores Keyboard Controller
	  http://www.opencores.org/project,keyboardcontroller

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

config KEYBOARD_PXA27x
	tristate "PXA27x/PXA3xx keypad support"
	depends on PXA27x || PXA3xx || ARCH_MMP
	select INPUT_MATRIXKMAP
	help
	  Enable support for PXA27x/PXA3xx keypad controller.

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

config KEYBOARD_PXA930_ROTARY
	tristate "PXA930/PXA935 Enhanced Rotary Controller Support"
	depends on CPU_PXA930 || CPU_PXA935
	help
	  Enable support for PXA930/PXA935 Enhanced Rotary Controller.

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

config KEYBOARD_PMIC8XXX
	tristate "Qualcomm PMIC8XXX keypad support"
	depends on MFD_PM8XXX
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to enable the driver for the PMIC8XXX
	  keypad provided as a reference design from Qualcomm. This is intended
	  to support upto 18x8 matrix based keypad design.

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

config KEYBOARD_SAMSUNG
	tristate "Samsung keypad support"
	depends on HAS_IOMEM && HAVE_CLK
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the keypad on your Samsung mobile
	  device.

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

config KEYBOARD_GOLDFISH_EVENTS
	depends on GOLDFISH || COMPILE_TEST
	tristate "Generic Input Event device for Goldfish"
	help
	  Say Y here to get an input event device for the Goldfish virtual
	  device emulator.

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

config KEYBOARD_STOWAWAY
	tristate "Stowaway keyboard"
	select SERIO
	help
	  Say Y here if you have a Stowaway keyboard on a serial port.
	  Stowaway compatible keyboards like Dicota Input-PDA keyboard
	  are also supported by this driver.

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

config KEYBOARD_ST_KEYSCAN
	tristate "STMicroelectronics keyscan support"
	depends on ARCH_STI || COMPILE_TEST
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use a keypad attached to the keyscan block
	  on some STMicroelectronics SoC devices.

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

config KEYBOARD_SUNKBD
	tristate "Sun Type 4 and Type 5 keyboard"
	select SERIO
	help
	  Say Y here if you want to use a Sun Type 4 or Type 5 keyboard,
	  connected either to the Sun keyboard connector or to an serial
	  (RS-232) port via a simple adapter.

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

config KEYBOARD_SH_KEYSC
	tristate "SuperH KEYSC keypad support"
	depends on ARCH_SHMOBILE || COMPILE_TEST
	help
	  Say Y here if you want to use a keypad attached to the KEYSC block
	  on SuperH processors such as sh7722 and sh7343.

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

config KEYBOARD_STMPE
	tristate "STMPE keypad support"
	depends on MFD_STMPE
	depends on OF
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the keypad controller on STMPE I/O
	  expanders.

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

config KEYBOARD_SUN4I_LRADC
	tristate "Allwinner sun4i low res adc attached tablet keys support"
	depends on ARCH_SUNXI
	help
	  This selects support for the Allwinner low res adc attached tablet
	  keys found on Allwinner sunxi SoCs.

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

config KEYBOARD_DAVINCI
	tristate "TI DaVinci Key Scan"
	depends on ARCH_DAVINCI_DM365
	help
	  Say Y to enable keypad module support for the TI DaVinci
	  platforms (DM365).

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

config KEYBOARD_IPAQ_MICRO
	tristate "Buttons on Micro SoC (iPaq h3100,h3600,h3700)"
	depends on MFD_IPAQ_MICRO
	help
	  Say Y to enable support for the buttons attached to
	  Micro peripheral controller on iPAQ h3100/h3600/h3700

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

config KEYBOARD_IQS62X
	tristate "Azoteq IQS620A/621/622/624/625 keys and switches"
	depends on MFD_IQS62X
	help
	  Say Y here to enable key and switch support for the Azoteq IQS620A,
	  IQS621, IQS622, IQS624 and IQS625 multi-function sensors.

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

config KEYBOARD_OMAP
	tristate "TI OMAP keypad support"
	depends on ARCH_OMAP1
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the OMAP keypad.

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

config KEYBOARD_OMAP4
	tristate "TI OMAP4+ keypad support"
	depends on (OF && HAS_IOMEM) || ARCH_OMAP2PLUS
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the OMAP4+ keypad.

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

config KEYBOARD_SPEAR
	tristate "ST SPEAR keyboard support"
	depends on PLAT_SPEAR
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the SPEAR keyboard.

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

config KEYBOARD_TC3589X
	tristate "TC3589X Keypad support"
	depends on MFD_TC3589X
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the keypad controller on
	  TC35892/3 I/O expander.

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

config KEYBOARD_TM2_TOUCHKEY
	tristate "TM2 touchkey support"
	depends on I2C
	depends on LEDS_CLASS
	help
	  Say Y here to enable device driver for tm2-touchkey with
	  LED control for the Exynos5433 TM2 board.

	  To compile this driver as a module, choose M here.
	  module will be called tm2-touchkey.

config KEYBOARD_TWL4030
	tristate "TI TWL4030/TWL5030/TPS659x0 keypad support"
	depends on TWL4030_CORE
	select INPUT_MATRIXKMAP
	help
	  Say Y here if your board use the keypad controller on
	  TWL4030 family chips.  It's safe to say enable this
	  even on boards that don't use the keypad controller.

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

config KEYBOARD_XTKBD
	tristate "XT keyboard"
	select SERIO
	help
	  Say Y here if you want to use the old IBM PC/XT keyboard (or
	  compatible) on your system. This is only possible with a
	  parallel port keyboard adapter, you cannot connect it to the
	  keyboard port on a PC that runs Linux.

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

config KEYBOARD_CROS_EC
	tristate "ChromeOS EC keyboard"
	select INPUT_MATRIXKMAP
	select INPUT_VIVALDIFMAP
	depends on CROS_EC
	help
	  Say Y here to enable the matrix keyboard used by ChromeOS devices
	  and implemented on the ChromeOS EC. You must enable one bus option
	  (CROS_EC_I2C or CROS_EC_SPI) to use this.

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

config KEYBOARD_CAP11XX
	tristate "Microchip CAP11XX based touch sensors"
	depends on OF && I2C
	select REGMAP_I2C
	help
	  Say Y here to enable the CAP11XX touch sensor driver.

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

config KEYBOARD_BCM
	tristate "Broadcom keypad driver"
	depends on OF && HAVE_CLK && HAS_IOMEM
	select INPUT_MATRIXKMAP
	default ARCH_BCM_CYGNUS
	help
	  Say Y here if you want to use Broadcom keypad.

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

config KEYBOARD_MT6779
	tristate "MediaTek Keypad Support"
	depends on ARCH_MEDIATEK || COMPILE_TEST
	select REGMAP_MMIO
	select INPUT_MATRIXKMAP
	help
	  Say Y here if you want to use the keypad on MediaTek SoCs.
	  If unsure, say N.

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

config KEYBOARD_MTK_PMIC
	tristate "MediaTek PMIC keys support"
	depends on MFD_MT6397 || COMPILE_TEST
	help
	  Say Y here if you want to use the pmic keys (powerkey/homekey).

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

config KEYBOARD_CYPRESS_SF
	tristate "Cypress StreetFighter touchkey support"
	depends on I2C
	help
	  Say Y here if you want to enable support for Cypress StreetFighter
	  touchkeys.

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

endif
