#
# Input core configuration
#
menuconfig INPUT_KEYBOARD
	bool "Keyboards" if EXPERT || !X86
	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_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 ATARI_KBD_CORE
	bool

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" if EXPERT || !X86
	default y
	select SERIO
	select SERIO_LIBPS2
	select SERIO_I8042 if X86
	select SERIO_GSCPS2 if GSC
	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_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 && EXPERIMENTAL
	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_BFIN
	tristate "Blackfin BF54x keypad support"
	depends on (BF54x && !BF544)
	help
	  Say Y here if you want to use the BF54x keypad.

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

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 useable 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
	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 GENERIC_GPIO
	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 GENERIC_GPIO
	select INPUT_POLLDEV
	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
	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 GENERIC_GPIO
	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
	select INPUT_POLLDEV
	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_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_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"
	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_IMX
	tristate "IMX keypad support"
	depends on ARCH_MXC
	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_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 PLAT_NOMADIK
	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_TEGRA
	tristate "NVIDIA Tegra internal matrix keyboard controller support"
	depends on ARCH_TEGRA
	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"
	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
	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
	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 HAVE_CLK
	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_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_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 SUPERH || ARCH_SHMOBILE
	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
	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_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_OMAP
	tristate "TI OMAP keypad support"
	depends on (ARCH_OMAP1 || ARCH_OMAP2)
	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 ARCH_OMAP4
	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
	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-keboard.

config KEYBOARD_TC3589X
	tristate "TC3589X Keypad support"
	depends on MFD_TC3589X
	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_TNETV107X
	tristate "TI TNETV107X keypad support"
	depends on ARCH_DAVINCI_TNETV107X
	help
	  Say Y here if you want to use the TNETV107X keypad.

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

config KEYBOARD_TWL4030
	tristate "TI TWL4030/TWL5030/TPS659x0 keypad support"
	depends on TWL4030_CORE
	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_W90P910
	tristate "W90P910 Matrix Keypad support"
	depends on ARCH_W90X900
	help
	  Say Y here to enable the matrix keypad on evaluation board
	  based on W90P910.

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

endif
