# SPDX-License-Identifier: GPL-2.0-only
#
# Input core configuration
#
config SERIO
	tristate "Serial I/O support"
	default y
	help
	  Say Yes here if you have any input device that uses serial I/O to
	  communicate with the system. This includes the
	  		* standard AT keyboard and PS/2 mouse *
	  as well as serial mice, Sun keyboards, some joysticks and 6dof
	  devices and more.

	  If unsure, say Y.

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

config ARCH_MIGHT_HAVE_PC_SERIO
	bool
	help
	  Select this config option from the architecture Kconfig if
	  the architecture might use a PC serio device (i8042) to
	  communicate with keyboard, mouse, etc.

if SERIO

config SERIO_I8042
	tristate "i8042 PC Keyboard controller"
	default y
	depends on ARCH_MIGHT_HAVE_PC_SERIO
	help
	  i8042 is the chip over which the standard AT keyboard and PS/2
	  mouse are connected to the computer. If you use these devices,
	  you'll need to say Y here.

	  If unsure, say Y.

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

config SERIO_SERPORT
	tristate "Serial port line discipline"
	default y
	depends on TTY
	help
	  Say Y here if you plan to use an input device (mouse, joystick,
	  tablet, 6dof) that communicates over the RS232 serial (COM) port.

	  More information is available: <file:Documentation/input/input.rst>

	  If unsure, say Y.

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

config SERIO_CT82C710
	tristate "ct82c710 Aux port controller"
	depends on X86
	help
	  Say Y here if you have a Texas Instruments TravelMate notebook
	  equipped with the ct82c710 chip and want to use a mouse connected
	  to the "QuickPort".

	  If unsure, say N.

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

config SERIO_Q40KBD
	tristate "Q40 keyboard controller"
	depends on Q40

config SERIO_PARKBD
	tristate "Parallel port keyboard adapter"
	depends on PARPORT
	help
	  Say Y here if you built a simple parallel port adapter to attach
	  an additional AT keyboard, XT keyboard or PS/2 mouse.

	  More information is available: <file:Documentation/input/input.rst>

	  If unsure, say N.

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

config SERIO_RPCKBD
	tristate "Acorn RiscPC keyboard controller"
	depends on ARCH_ACORN
	default y
	help
	  Say Y here if you have the Acorn RiscPC and want to use an AT
	  keyboard connected to its keyboard controller.

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

config SERIO_AMBAKMI
	tristate "AMBA KMI keyboard controller"
	depends on ARM_AMBA

config SERIO_SA1111
	tristate "Intel SA1111 keyboard controller"
	depends on SA1111

config SERIO_GSCPS2
	tristate "HP GSC PS/2 keyboard and PS/2 mouse controller"
	depends on GSC
	default y
	help
	  This driver provides support for the PS/2 ports on PA-RISC machines
	  over which HP PS/2 keyboards and PS/2 mice may be connected.
	  If you use these devices, you'll need to say Y here.

	  It's safe to enable this driver, so if unsure, say Y.

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

config HP_SDC
	tristate "HP System Device Controller i8042 Support"
	depends on (GSC || HP300) && SERIO
	default y
	help
	  This option enables support for the "System Device
	  Controller", an i8042 carrying microcode to manage a
	  few miscellaneous devices on some Hewlett Packard systems.
	  The SDC itself contains a 10ms resolution timer/clock capable
	  of delivering interrupts on a periodic and one-shot basis.
	  The SDC may also be connected to a battery-backed real-time
	  clock, a basic audio waveform generator, and an HP-HIL Master
	  Link Controller serving up to seven input devices.

	  By itself this option is rather useless, but enabling it will
	  enable selection of drivers for the abovementioned devices.
	  It is, however, incompatible with the old, reliable HIL keyboard
	  driver, and the new HIL driver is experimental, so if you plan
	  to use a HIL keyboard as your primary keyboard, you may wish
	  to keep using that driver until the new HIL drivers have had
	  more testing.

config HIL_MLC
	tristate "HIL MLC Support (needed for HIL input devices)"
	depends on HP_SDC

config SERIO_PCIPS2
	tristate "PCI PS/2 keyboard and PS/2 mouse controller"
	depends on PCI
	depends on HAS_IOPORT
	help
	  Say Y here if you have a Mobility Docking station with PS/2
	  keyboard and mice ports.

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

config SERIO_MACEPS2
	tristate "SGI O2 MACE PS/2 controller"
	depends on SGI_IP32
	help
	  Say Y here if you have SGI O2 workstation and want to use its
	  PS/2 ports.

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

config SERIO_SGI_IOC3
	tristate "SGI IOC3 PS/2 controller"
	depends on SGI_MFD_IOC3
	help
	  Say Y here if you have an SGI Onyx2, SGI Octane or IOC3 PCI card
	  and you want to attach and use a keyboard, mouse, or both.

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

config SERIO_LIBPS2
	tristate "PS/2 driver library"
	depends on SERIO_I8042 || SERIO_I8042=n
	help
	  Say Y here if you are using a driver for device connected
	  to a PS/2 port, such as PS/2 mouse or standard AT keyboard.

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

config SERIO_RAW
	tristate "Raw access to serio ports"
	help
	  Say Y here if you want to have raw access to serio ports, such as
	  AUX ports on i8042 keyboard controller. Each serio port that is
	  bound to this driver will be accessible via a char device with
	  major 10 and dynamically allocated minor. The driver will try
	  allocating minor 1 (that historically corresponds to /dev/psaux)
	  first. To bind this driver to a serio port use sysfs interface:

	      echo -n "serio_raw" > /sys/bus/serio/devices/serioX/drvctl

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

config SERIO_XILINX_XPS_PS2
	tristate "Xilinx XPS PS/2 Controller Support"
	depends on PPC || MICROBLAZE
	help
	  This driver supports XPS PS/2 IP from the Xilinx EDK on
	  PowerPC platform.

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

config SERIO_ALTERA_PS2
	tristate "Altera UP PS/2 controller"
	depends on HAS_IOMEM
	help
	  Say Y here if you have Altera University Program PS/2 ports.

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

config SERIO_AMS_DELTA
	tristate "Amstrad Delta (E3) mailboard support"
	depends on MACH_AMS_DELTA
	default y
	help
	  Say Y here if you have an E3 and want to use its mailboard,
	  or any standard AT keyboard connected to the mailboard port.

	  When used for the E3 mailboard, a non-standard key table
	  must be loaded from userspace, possibly using udev extras
	  provided keymap helper utility.

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

config SERIO_PS2MULT
	tristate "TQC PS/2 multiplexer"
	help
	  Say Y here if you have the PS/2 line multiplexer like the one
	  present on TQC boards.

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

config SERIO_ARC_PS2
	tristate "ARC PS/2 support"
	depends on HAS_IOMEM
	help
	  Say Y here if you have an ARC FPGA platform with a PS/2
	  controller in it.

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

config SERIO_APBPS2
	tristate "GRLIB APBPS2 PS/2 keyboard/mouse controller"
	depends on OF && HAS_IOMEM
	help
	  Say Y here if you want support for GRLIB APBPS2 peripherals used
	  to connect to PS/2 keyboard and/or mouse.

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

config SERIO_OLPC_APSP
	tristate "OLPC AP-SP input support"
	depends on ARCH_MMP || COMPILE_TEST
	help
	  Say Y here if you want support for the keyboard and touchpad included
	  in the OLPC XO-1.75 and XO-4 laptops.

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

config HYPERV_KEYBOARD
	tristate "Microsoft Synthetic Keyboard driver"
	depends on HYPERV
	default HYPERV
	help
	  Select this option to enable the Hyper-V Keyboard driver.

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

config SERIO_SUN4I_PS2
	tristate "Allwinner A10 PS/2 controller support"
	depends on ARCH_SUNXI || COMPILE_TEST
	help
	  This selects support for the PS/2 Host Controller on
	  Allwinner A10.

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

config SERIO_GPIO_PS2
	tristate "GPIO PS/2 bit banging driver"
	depends on GPIOLIB
	help
	  Say Y here if you want PS/2 bit banging support via GPIO.

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

	  If you are unsure, say N.

config USERIO
	tristate "User space serio port driver support"
	help
	  Say Y here if you want to support user level drivers for serio
	  subsystem accessible under char device 10:240 - /dev/userio. Using
	  this facility userspace programs can implement serio ports that
	  will be used by the standard in-kernel serio consumer drivers,
	  such as psmouse and atkbd.

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

	  If you are unsure, say N.

endif