162306a36Sopenharmony_ci=======================================
262306a36Sopenharmony_ciAnalog Joystick Support on ALSA Drivers
362306a36Sopenharmony_ci=======================================
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciOct. 14, 2003
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciTakashi Iwai <tiwai@suse.de>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciGeneral
1062306a36Sopenharmony_ci-------
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciFirst of all, you need to enable GAMEPORT support on Linux kernel for
1362306a36Sopenharmony_ciusing a joystick with the ALSA driver.  For the details of gameport
1462306a36Sopenharmony_cisupport, refer to Documentation/input/joydev/joystick.rst.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciThe joystick support of ALSA drivers is different between ISA and PCI
1762306a36Sopenharmony_cicards.  In the case of ISA (PnP) cards, it's usually handled by the
1862306a36Sopenharmony_ciindependent module (ns558).  Meanwhile, the ALSA PCI drivers have the
1962306a36Sopenharmony_cibuilt-in gameport support.  Hence, when the ALSA PCI driver is built
2062306a36Sopenharmony_ciin the kernel, CONFIG_GAMEPORT must be 'y', too.  Otherwise, the
2162306a36Sopenharmony_cigameport support on that card will be (silently) disabled.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ciSome adapter modules probe the physical connection of the device at
2462306a36Sopenharmony_cithe load time.  It'd be safer to plug in the joystick device before
2562306a36Sopenharmony_ciloading the module.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciPCI Cards
2962306a36Sopenharmony_ci---------
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciFor PCI cards, the joystick is enabled when the appropriate module
3262306a36Sopenharmony_cioption is specified.  Some drivers don't need options, and the
3362306a36Sopenharmony_cijoystick support is always enabled.  In the former ALSA version, there
3462306a36Sopenharmony_ciwas a dynamic control API for the joystick activation.  It was
3562306a36Sopenharmony_cichanged, however, to the static module options because of the system
3662306a36Sopenharmony_cistability and the resource management.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciThe following PCI drivers support the joystick natively.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci==============	=============	============================================
4162306a36Sopenharmony_ciDriver		Module Option	Available Values
4262306a36Sopenharmony_ci==============	=============	============================================
4362306a36Sopenharmony_cials4000		joystick_port	0 = disable (default), 1 = auto-detect,
4462306a36Sopenharmony_ci	                        manual: any address (e.g. 0x200)
4562306a36Sopenharmony_ciau88x0		N/A		N/A
4662306a36Sopenharmony_ciazf3328		joystick	0 = disable, 1 = enable, -1 = auto (default)
4762306a36Sopenharmony_ciens1370		joystick	0 = disable (default), 1 = enable
4862306a36Sopenharmony_ciens1371		joystick_port	0 = disable (default), 1 = auto-detect,
4962306a36Sopenharmony_ci	                        manual: 0x200, 0x208, 0x210, 0x218
5062306a36Sopenharmony_cicmipci		joystick_port	0 = disable (default), 1 = auto-detect,
5162306a36Sopenharmony_ci	                        manual: any address (e.g. 0x200)
5262306a36Sopenharmony_cics4281		N/A		N/A
5362306a36Sopenharmony_cics46xx		N/A		N/A
5462306a36Sopenharmony_cies1938		N/A		N/A
5562306a36Sopenharmony_cies1968		joystick	0 = disable (default), 1 = enable
5662306a36Sopenharmony_cisonicvibes	N/A		N/A
5762306a36Sopenharmony_citrident		N/A		N/A
5862306a36Sopenharmony_civia82xx [#f1]_	joystick	0 = disable (default), 1 = enable
5962306a36Sopenharmony_ciymfpci		joystick_port	0 = disable (default), 1 = auto-detect,
6062306a36Sopenharmony_ci	                        manual: 0x201, 0x202, 0x204, 0x205 [#f2]_
6162306a36Sopenharmony_ci==============	=============	============================================
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci.. [#f1] VIA686A/B only
6462306a36Sopenharmony_ci.. [#f2] With YMF744/754 chips, the port address can be chosen arbitrarily
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciThe following drivers don't support gameport natively, but there are
6762306a36Sopenharmony_ciadditional modules.  Load the corresponding module to add the gameport
6862306a36Sopenharmony_cisupport.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci=======	=================
7162306a36Sopenharmony_ciDriver	Additional Module
7262306a36Sopenharmony_ci=======	=================
7362306a36Sopenharmony_ciemu10k1	emu10k1-gp
7462306a36Sopenharmony_cifm801	fm801-gp
7562306a36Sopenharmony_ci=======	=================
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciNote: the "pcigame" and "cs461x" modules are for the OSS drivers only.
7862306a36Sopenharmony_ciThese ALSA drivers (cs46xx, trident and au88x0) have the
7962306a36Sopenharmony_cibuilt-in gameport support.
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ciAs mentioned above, ALSA PCI drivers have the built-in gameport
8262306a36Sopenharmony_cisupport, so you don't have to load ns558 module.  Just load "joydev"
8362306a36Sopenharmony_ciand the appropriate adapter module (e.g. "analog").
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ciISA Cards
8762306a36Sopenharmony_ci---------
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciALSA ISA drivers don't have the built-in gameport support.
9062306a36Sopenharmony_ciInstead, you need to load "ns558" module in addition to "joydev" and
9162306a36Sopenharmony_cithe adapter module (e.g. "analog").
92