Commit b0ec3a30bc01c15cc6277b223fae136f7b71e90c
Committed by
Takashi Iwai
1 parent
0cfcdedadd
Exists in
master
and in
39 other branches
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 |
sound/isa/sc6000.c
... | ... | @@ -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; |