#
# Gameport configuration
#
config GAMEPORT
	tristate "Gameport support"
	---help---
	  Gameport support is for the standard 15-pin PC gameport. If you
	  have a joystick, gamepad, gameport card, a soundcard with a gameport
	  or anything else that uses the gameport, say Y or M here and also to
	  at least one of the hardware specific drivers.

	  For Ensoniq AudioPCI (ES1370), AudioPCI 97 (ES1371), ESS Solo1,
	  S3 SonicVibes, Trident 4DWave, SiS7018, and ALi 5451 gameport
	  support is provided by the sound drivers, so you won't need any
	  from the below listed modules. You still need to say Y here.

	  If unsure, say Y.

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

if GAMEPORT

config GAMEPORT_NS558
	tristate "Classic ISA and PnP gameport support"
	help
	  Say Y here if you have an ISA or PnP gameport.

	  If unsure, say Y.

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

config GAMEPORT_L4
	tristate "PDPI Lightning 4 gamecard support"
	help
	  Say Y here if you have a PDPI Lightning 4 gamecard.

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

config GAMEPORT_EMU10K1
	tristate "SB Live and Audigy gameport support"
	depends on PCI
	help
	  Say Y here if you have a SoundBlaster Live! or SoundBlaster
	  Audigy card and want to use its gameport.

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

config GAMEPORT_VORTEX
	tristate "Aureal Vortex, Vortex 2 gameport support"
	depends on PCI
	help
	  Say Y here if you have an Aureal Vortex 1 or 2  card and want
	  to use its gameport.

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

config GAMEPORT_FM801
	tristate "ForteMedia FM801 gameport support"
	depends on PCI

config GAMEPORT_CS461X
	tristate "Crystal SoundFusion gameport support"
	depends on PCI

endif

# Yes, SOUND_GAMEPORT looks a bit odd. Yes, it ends up being turned on
# in every .config. Please don't touch it. It is here to handle an
# unusual dependency between GAMEPORT and sound drivers.
#
# Some sound drivers call gameport functions. If GAMEPORT is
# not selected, empty stubs are provided for the functions and all is
# well.
# If GAMEPORT is built in, everything is fine.
# If GAMEPORT is a module, however, it would need to be loaded for the
# sound driver to be able to link properly. Therefore, the sound
# driver must be a module as well in that case. Since there's no way
# to express that directly in Kconfig, we use SOUND_GAMEPORT to
# express it. SOUND_GAMEPORT boils down to "if GAMEPORT is 'm',
# anything that depends on SOUND_GAMEPORT must be 'm' as well. if
# GAMEPORT is 'y' or 'n', it can be anything".
config SOUND_GAMEPORT
	tristate
	default m if GAMEPORT=m
	default y
