Commit b0ec3a30bc01c15cc6277b223fae136f7b71e90c

Authored by Krzysztof Helt
Committed by Takashi Iwai
1 parent 0cfcdedadd

ALSA: sc6000: enable joystick port

Add module parameter to enable or disable
joystick port (gameport) on the SC6600 and
later cards.

Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

Showing 2 changed files with 10 additions and 3 deletions Side-by-side Diff

Documentation/sound/alsa/ALSA-Configuration.txt
... ... @@ -1543,13 +1543,15 @@
1543 1543 Module snd-sc6000
1544 1544 -----------------
1545 1545  
1546   - Module for Gallant SC-6000 soundcard.
  1546 + Module for Gallant SC-6000 soundcard and later models: SC-6600
  1547 + and SC-7000.
1547 1548  
1548 1549 port - Port # (0x220 or 0x240)
1549 1550 mss_port - MSS Port # (0x530 or 0xe80)
1550 1551 irq - IRQ # (5,7,9,10,11)
1551 1552 mpu_irq - MPU-401 IRQ # (5,7,9,10) ,0 - no MPU-401 irq
1552 1553 dma - DMA # (1,3,0)
  1554 + joystick - Enable gameport - 0 = disable (default), 1 = enable
1553 1555  
1554 1556 This module supports multiple cards.
1555 1557  
... ... @@ -56,6 +56,7 @@
56 56 /* 0x300, 0x310, 0x320, 0x330 */
57 57 static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 0 */
58 58 static int dma[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; /* 0, 1, 3 */
  59 +static bool joystick[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = false };
59 60  
60 61 module_param_array(index, int, NULL, 0444);
61 62 MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard.");
... ... @@ -75,6 +76,8 @@
75 76 MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver.");
76 77 module_param_array(dma, int, NULL, 0444);
77 78 MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver.");
  79 +module_param_array(joystick, bool, NULL, 0444);
  80 +MODULE_PARM_DESC(joystick, "Enable gameport.");
78 81  
79 82 /*
80 83 * Commands of SC6000's DSP (SBPRO+special).
... ... @@ -363,7 +366,7 @@
363 366  
364 367 static void __devinit sc6000_hw_cfg_encode(char __iomem *vport, int *cfg,
365 368 long xport, long xmpu,
366   - long xmss_port)
  369 + long xmss_port, int joystick)
367 370 {
368 371 cfg[0] = 0;
369 372 cfg[1] = 0;
... ... @@ -376,6 +379,8 @@
376 379 if (xmss_port == 0xe80)
377 380 cfg[0] |= 0x10;
378 381 cfg[0] |= 0x40; /* always set */
  382 + if (!joystick)
  383 + cfg[0] |= 0x02;
379 384 cfg[1] |= 0x80; /* enable WSS system */
380 385 cfg[1] &= ~0x40; /* disable IDE */
381 386 snd_printd("hw cfg %x, %x\n", cfg[0], cfg[1]);
... ... @@ -427,7 +432,7 @@
427 432 if (!old) {
428 433 int cfg[2];
429 434 sc6000_hw_cfg_encode(vport, &cfg[0], port[dev], mpu_port[dev],
430   - mss_port[dev]);
  435 + mss_port[dev], joystick[dev]);
431 436 if (sc6000_hw_cfg_write(vport, cfg) < 0) {
432 437 snd_printk(KERN_ERR "sc6000_hw_cfg_write: failed!\n");
433 438 return -EIO;