diff options
Diffstat (limited to 'sound/isa/sc6000.c')
-rw-r--r-- | sound/isa/sc6000.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/sound/isa/sc6000.c b/sound/isa/sc6000.c index c803b2e30df9..9a8bbf6dd62a 100644 --- a/sound/isa/sc6000.c +++ b/sound/isa/sc6000.c | |||
@@ -56,6 +56,7 @@ static long mpu_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; | |||
56 | /* 0x300, 0x310, 0x320, 0x330 */ | 56 | /* 0x300, 0x310, 0x320, 0x330 */ |
57 | static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 0 */ | 57 | static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 0 */ |
58 | static int dma[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; /* 0, 1, 3 */ | 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 | module_param_array(index, int, NULL, 0444); | 61 | module_param_array(index, int, NULL, 0444); |
61 | MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard."); | 62 | MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard."); |
@@ -75,6 +76,8 @@ module_param_array(mpu_irq, int, NULL, 0444); | |||
75 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver."); | 76 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver."); |
76 | module_param_array(dma, int, NULL, 0444); | 77 | module_param_array(dma, int, NULL, 0444); |
77 | MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver."); | 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 | * Commands of SC6000's DSP (SBPRO+special). | 83 | * Commands of SC6000's DSP (SBPRO+special). |
@@ -363,7 +366,7 @@ static int __devinit sc6000_init_mss(char __iomem *vport, int config, | |||
363 | 366 | ||
364 | static void __devinit sc6000_hw_cfg_encode(char __iomem *vport, int *cfg, | 367 | static void __devinit sc6000_hw_cfg_encode(char __iomem *vport, int *cfg, |
365 | long xport, long xmpu, | 368 | long xport, long xmpu, |
366 | long xmss_port) | 369 | long xmss_port, int joystick) |
367 | { | 370 | { |
368 | cfg[0] = 0; | 371 | cfg[0] = 0; |
369 | cfg[1] = 0; | 372 | cfg[1] = 0; |
@@ -376,6 +379,8 @@ static void __devinit sc6000_hw_cfg_encode(char __iomem *vport, int *cfg, | |||
376 | if (xmss_port == 0xe80) | 379 | if (xmss_port == 0xe80) |
377 | cfg[0] |= 0x10; | 380 | cfg[0] |= 0x10; |
378 | cfg[0] |= 0x40; /* always set */ | 381 | cfg[0] |= 0x40; /* always set */ |
382 | if (!joystick) | ||
383 | cfg[0] |= 0x02; | ||
379 | cfg[1] |= 0x80; /* enable WSS system */ | 384 | cfg[1] |= 0x80; /* enable WSS system */ |
380 | cfg[1] &= ~0x40; /* disable IDE */ | 385 | cfg[1] &= ~0x40; /* disable IDE */ |
381 | snd_printd("hw cfg %x, %x\n", cfg[0], cfg[1]); | 386 | snd_printd("hw cfg %x, %x\n", cfg[0], cfg[1]); |
@@ -427,7 +432,7 @@ static int __devinit sc6000_init_board(char __iomem *vport, | |||
427 | if (!old) { | 432 | if (!old) { |
428 | int cfg[2]; | 433 | int cfg[2]; |
429 | sc6000_hw_cfg_encode(vport, &cfg[0], port[dev], mpu_port[dev], | 434 | sc6000_hw_cfg_encode(vport, &cfg[0], port[dev], mpu_port[dev], |
430 | mss_port[dev]); | 435 | mss_port[dev], joystick[dev]); |
431 | if (sc6000_hw_cfg_write(vport, cfg) < 0) { | 436 | if (sc6000_hw_cfg_write(vport, cfg) < 0) { |
432 | snd_printk(KERN_ERR "sc6000_hw_cfg_write: failed!\n"); | 437 | snd_printk(KERN_ERR "sc6000_hw_cfg_write: failed!\n"); |
433 | return -EIO; | 438 | return -EIO; |