aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Helt <krzysztof.h1@wp.pl>2009-05-03 04:39:19 -0400
committerTakashi Iwai <tiwai@suse.de>2009-05-04 03:08:22 -0400
commitb0ec3a30bc01c15cc6277b223fae136f7b71e90c (patch)
tree44da975eacca5752ca0455eabf1142cf8b17b223
parent0cfcdedaddf2468cb53e3cff9c3abfef14b4d784 (diff)
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>
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt4
-rw-r--r--sound/isa/sc6000.c9
2 files changed, 10 insertions, 3 deletions
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 012858d2b119..11a80a9c715b 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -1543,13 +1543,15 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1543 Module snd-sc6000 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 port - Port # (0x220 or 0x240) 1549 port - Port # (0x220 or 0x240)
1549 mss_port - MSS Port # (0x530 or 0xe80) 1550 mss_port - MSS Port # (0x530 or 0xe80)
1550 irq - IRQ # (5,7,9,10,11) 1551 irq - IRQ # (5,7,9,10,11)
1551 mpu_irq - MPU-401 IRQ # (5,7,9,10) ,0 - no MPU-401 irq 1552 mpu_irq - MPU-401 IRQ # (5,7,9,10) ,0 - no MPU-401 irq
1552 dma - DMA # (1,3,0) 1553 dma - DMA # (1,3,0)
1554 joystick - Enable gameport - 0 = disable (default), 1 = enable
1553 1555
1554 This module supports multiple cards. 1556 This module supports multiple cards.
1555 1557
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 */
57static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 0 */ 57static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 0 */
58static int dma[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; /* 0, 1, 3 */ 58static int dma[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; /* 0, 1, 3 */
59static bool joystick[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = false };
59 60
60module_param_array(index, int, NULL, 0444); 61module_param_array(index, int, NULL, 0444);
61MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard."); 62MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard.");
@@ -75,6 +76,8 @@ module_param_array(mpu_irq, int, NULL, 0444);
75MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver."); 76MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver.");
76module_param_array(dma, int, NULL, 0444); 77module_param_array(dma, int, NULL, 0444);
77MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver."); 78MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver.");
79module_param_array(joystick, bool, NULL, 0444);
80MODULE_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
364static void __devinit sc6000_hw_cfg_encode(char __iomem *vport, int *cfg, 367static 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;