# SPDX-License-Identifier: GPL-2.0-only
#
# Joystick driver configuration
#
menuconfig INPUT_JOYSTICK
	bool "Joysticks/Gamepads"
	depends on !UML
	help
	  If you have a joystick, 6dof controller, gamepad, steering wheel,
	  weapon control system or something like that you can say Y here
	  and the list of supported devices will be displayed. This option
	  doesn't affect the kernel.

	  Please read the file <file:Documentation/input/joydev/joystick.rst> which
	  contains more information.

if INPUT_JOYSTICK

config JOYSTICK_ANALOG
	tristate "Classic PC analog joysticks and gamepads"
	select GAMEPORT
	help
	  Say Y here if you have a joystick that connects to the PC
	  gameport. In addition to the usual PC analog joystick, this driver
	  supports many extensions, including joysticks with throttle control,
	  with rudders, additional hats and buttons compatible with CH
	  Flightstick Pro, ThrustMaster FCS, 6 and 8 button gamepads, or
	  Saitek Cyborg joysticks.

	  Please read the file <file:Documentation/input/joydev/joystick.rst> which
	  contains more information.

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

config JOYSTICK_A3D
	tristate "Assassin 3D and MadCatz Panther devices"
	select GAMEPORT
	help
	  Say Y here if you have an FPGaming or MadCatz controller using the
	  A3D protocol over the PC gameport.

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

config JOYSTICK_ADC
	tristate "Simple joystick connected over ADC"
	depends on IIO
	select IIO_BUFFER
	select IIO_BUFFER_CB
	help
	  Say Y here if you have a simple joystick connected over ADC.

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

config JOYSTICK_ADI
	tristate "Logitech ADI digital joysticks and gamepads"
	select GAMEPORT
	depends on ADI!=m # avoid module name conflict
	help
	  Say Y here if you have a Logitech controller using the ADI
	  protocol over the PC gameport.

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

config JOYSTICK_COBRA
	tristate "Creative Labs Blaster Cobra gamepad"
	select GAMEPORT
	help
	  Say Y here if you have a Creative Labs Blaster Cobra gamepad.

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

config JOYSTICK_GF2K
	tristate "Genius Flight2000 Digital joysticks and gamepads"
	select GAMEPORT
	help
	  Say Y here if you have a Genius Flight2000 or MaxFighter digitally
	  communicating joystick or gamepad.

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

config JOYSTICK_GRIP
	tristate "Gravis GrIP joysticks and gamepads"
	select GAMEPORT
	help
	  Say Y here if you have a Gravis controller using the GrIP protocol
	  over the PC gameport.

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

config JOYSTICK_GRIP_MP
	tristate "Gravis GrIP MultiPort"
	select GAMEPORT
	help
	  Say Y here if you have the original Gravis GrIP MultiPort, a hub
	  that connects to the gameport and you connect gamepads to it.

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

config JOYSTICK_GUILLEMOT
	tristate "Guillemot joysticks and gamepads"
	select GAMEPORT
	help
	  Say Y here if you have a Guillemot joystick using a digital
	  protocol over the PC gameport.

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

config JOYSTICK_INTERACT
	tristate "InterAct digital joysticks and gamepads"
	select GAMEPORT
	help
	  Say Y here if you have an InterAct gameport or joystick
	  communicating digitally over the gameport.

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

config JOYSTICK_SIDEWINDER
	tristate "Microsoft SideWinder digital joysticks and gamepads"
	select GAMEPORT
	help
	  Say Y here if you have a Microsoft controller using the Digital
	  Overdrive protocol over PC gameport.

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

config JOYSTICK_TMDC
	tristate "ThrustMaster DirectConnect joysticks and gamepads"
	select GAMEPORT
	help
	  Say Y here if you have a ThrustMaster controller using the
	  DirectConnect (BSP) protocol over the PC gameport.

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

source "drivers/input/joystick/iforce/Kconfig"

config JOYSTICK_WARRIOR
	tristate "Logitech WingMan Warrior joystick"
	select SERIO
	help
	  Say Y here if you have a Logitech WingMan Warrior joystick connected
	  to your computer's serial port.

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

config JOYSTICK_MAGELLAN
	tristate "LogiCad3d Magellan/SpaceMouse 6dof controllers"
	select SERIO
	help
	  Say Y here if you have a Magellan or Space Mouse 6DOF controller
	  connected to your computer's serial port.

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

config JOYSTICK_SPACEORB
	tristate "SpaceTec SpaceOrb/Avenger 6dof controllers"
	select SERIO
	help
	  Say Y here if you have a SpaceOrb 360 or SpaceBall Avenger 6DOF
	  controller connected to your computer's serial port.

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

config JOYSTICK_SPACEBALL
	tristate "SpaceTec SpaceBall 6dof controllers"
	select SERIO
	help
	  Say Y here if you have a SpaceTec SpaceBall 2003/3003/4000 FLX
	  controller connected to your computer's serial port. For the
	  SpaceBall 4000 USB model, use the USB HID driver.

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

config JOYSTICK_STINGER
	tristate "Gravis Stinger gamepad"
	select SERIO
	help
	  Say Y here if you have a Gravis Stinger connected to one of your
	  serial ports.

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

config JOYSTICK_TWIDJOY
	tristate "Twiddler as a joystick"
	select SERIO
	help
	  Say Y here if you have a Handykey Twiddler connected to your
	  computer's serial port and want to use it as a joystick.

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

config JOYSTICK_ZHENHUA
	tristate "5-byte Zhenhua RC transmitter"
	select SERIO
	select BITREVERSE
	help
	  Say Y here if you have a Zhen Hua PPM-4CH transmitter which is
	  supplied with a ready to fly micro electric indoor helicopters
	  such as EasyCopter, Lama, MiniCopter, DragonFly or Jabo and want
	  to use it via serial cable as a joystick.

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

config JOYSTICK_DB9
	tristate "Multisystem, Sega Genesis, Saturn joysticks and gamepads"
	depends on PARPORT
	help
	  Say Y here if you have a Sega Master System gamepad, Sega Genesis
	  gamepad, Sega Saturn gamepad, or a Multisystem -- Atari, Amiga,
	  Commodore, Amstrad CPC joystick connected to your parallel port.
	  For more information on how to use the driver please read
	  <file:Documentation/input/devices/joystick-parport.rst>.

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

config JOYSTICK_GAMECON
	tristate "Multisystem, NES, SNES, N64, PSX joysticks and gamepads"
	depends on PARPORT
	select INPUT_FF_MEMLESS
	help
	  Say Y here if you have a Nintendo Entertainment System gamepad,
	  Super Nintendo Entertainment System gamepad, Nintendo 64 gamepad,
	  Sony PlayStation gamepad or a Multisystem -- Atari, Amiga,
	  Commodore, Amstrad CPC joystick connected to your parallel port.
	  For more information on how to use the driver please read
	  <file:Documentation/input/devices/joystick-parport.rst>.

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

config JOYSTICK_TURBOGRAFX
	tristate "Multisystem joysticks via TurboGraFX device"
	depends on PARPORT
	help
	  Say Y here if you have the TurboGraFX interface by Steffen Schwenke,
	  and want to use it with Multisystem -- Atari, Amiga, Commodore,
	  Amstrad CPC joystick. For more information on how to use the driver
	  please read <file:Documentation/input/devices/joystick-parport.rst>.

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

config JOYSTICK_AMIGA
	tristate "Amiga joysticks"
	depends on AMIGA
	help
	  Say Y here if you have an Amiga with a digital joystick connected
	  to it.

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

config JOYSTICK_AS5011
	tristate "Austria Microsystem AS5011 joystick"
	depends on I2C
	help
	  Say Y here if you have an AS5011 digital joystick connected to your
	  system.

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

config JOYSTICK_JOYDUMP
	tristate "Gameport data dumper"
	select GAMEPORT
	help
	  Say Y here if you want to dump data from your joystick into the system
	  log for debugging purposes. Say N if you are making a production
	  configuration or aren't sure.

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

config JOYSTICK_XPAD
	tristate "Xbox gamepad support"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use Xbox pads with your computer.
	  Make sure to say Y to "Joystick support" (CONFIG_INPUT_JOYDEV)
	  and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well.

	  For information about how to connect the Xbox pad to USB, see
	  <file:Documentation/input/devices/xpad.rst>.

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

config JOYSTICK_XPAD_FF
	bool "Xbox gamepad rumble support"
	depends on JOYSTICK_XPAD && INPUT
	select INPUT_FF_MEMLESS
	help
	  Say Y here if you want to take advantage of Xbox 360 rumble features.

config JOYSTICK_XPAD_LEDS
	bool "LED Support for the Xbox 360 controller Guide button"
	depends on JOYSTICK_XPAD && (LEDS_CLASS=y || LEDS_CLASS=JOYSTICK_XPAD)
	help
	  This option enables support for the LED which surrounds the Big X on
	  Xbox 360 controllers.

config JOYSTICK_WALKERA0701
	tristate "Walkera WK-0701 RC transmitter"
	depends on HIGH_RES_TIMERS && PARPORT
	help
	  Say Y or M here if you have a Walkera WK-0701 transmitter which is
	  supplied with a ready to fly Walkera helicopters such as HM36,
	  HM37, HM60 and want to use it via parport as a joystick. More
	  information is available: <file:Documentation/input/devices/walkera0701.rst>

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

config JOYSTICK_MAPLE
	tristate "Dreamcast control pad"
	depends on MAPLE
	help
	  Say Y here if you have a SEGA Dreamcast and want to use your
	  controller as a joystick.

	  Most Dreamcast users will say Y.

	  To compile this as a module choose M here: the module will be called
	  maplecontrol.

config JOYSTICK_PSXPAD_SPI
	tristate "PlayStation 1/2 joypads via SPI interface"
	depends on SPI
	help
	  Say Y here if you wish to connect PlayStation 1/2 joypads
	  via SPI interface.

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

config JOYSTICK_PSXPAD_SPI_FF
	bool "PlayStation 1/2 joypads force feedback (rumble) support"
	depends on JOYSTICK_PSXPAD_SPI
	select INPUT_FF_MEMLESS
	help
	  Say Y here if you want to take advantage of PlayStation 1/2
	  joypads rumble features.

	  To drive rumble motor a dedicated power supply is required.

config JOYSTICK_PXRC
	tristate "PhoenixRC Flight Controller Adapter"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use the PhoenixRC Flight Controller Adapter.

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

config JOYSTICK_QWIIC
	tristate "SparkFun Qwiic Joystick"
	depends on I2C
	help
	  Say Y here if you want to use the SparkFun Qwiic Joystick.

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

config JOYSTICK_FSIA6B
	tristate "FlySky FS-iA6B RC Receiver"
	select SERIO
	help
	  Say Y here if you use a FlySky FS-i6 RC remote control along with the
	  FS-iA6B RC receiver as a joystick input device.

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

config JOYSTICK_N64
	bool "N64 controller"
	depends on MACH_NINTENDO64
	help
	  Say Y here if you want enable support for the four
	  built-in controller ports on the Nintendo 64 console.

config JOYSTICK_SENSEHAT
	tristate "Raspberry Pi Sense HAT joystick"
	depends on INPUT && I2C
	depends on HAS_IOMEM
	select MFD_SIMPLE_MFD_I2C
	help
	  Say Y here if you want to enable the driver for the
	  the Raspberry Pi Sense HAT.

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

endif
