Update of /cvsroot/alsa/alsa-kernel/isa/gus
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15244/gus

Modified Files:
        gusclassic.c gusextreme.c gusmax.c interwave.c 
Log Message:
<[EMAIL PROTECTED]>
This is a *really* silly one.  The various probing routines in these
drivers can return -ENODEV, -ENOMEM etc.. so when we do something like

cards += probe_routine()

In some situations we can end up with -13 sound cards, and other
such nonsense. Result : lots of fun oopses.


Index: gusclassic.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/isa/gus/gusclassic.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- gusclassic.c        14 Oct 2003 13:08:16 -0000      1.12
+++ gusclassic.c        15 Mar 2004 19:33:52 -0000      1.13
@@ -238,7 +238,7 @@
 static int __init alsa_card_gusclassic_init(void)
 {
        static unsigned long possible_ports[] = {0x220, 0x230, 0x240, 0x250, 0x260, 
-1};
-       int dev, cards;
+       int dev, cards, i;
 
        for (dev = cards = 0; dev < SNDRV_CARDS && enable[dev]; dev++) {
                if (port[dev] == SNDRV_AUTO_PORT)
@@ -246,7 +246,10 @@
                if (snd_gusclassic_probe(dev) >= 0)
                        cards++;
        }
-       cards += snd_legacy_auto_probe(possible_ports, 
snd_gusclassic_legacy_auto_probe);
+       i = snd_legacy_auto_probe(possible_ports, snd_gusclassic_legacy_auto_probe);
+       if (i > 0)
+               cards += i;
+
        if (!cards) {
 #ifdef MODULE
                printk(KERN_ERR "GUS Classic soundcard not found or device busy\n");

Index: gusextreme.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/isa/gus/gusextreme.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- gusextreme.c        15 Mar 2004 19:29:13 -0000      1.13
+++ gusextreme.c        15 Mar 2004 19:33:52 -0000      1.14
@@ -349,7 +349,7 @@
 static int __init alsa_card_gusextreme_init(void)
 {
        static unsigned long possible_ports[] = {0x220, 0x240, 0x260, -1};
-       int dev, cards;
+       int dev, cards, i;
 
        for (dev = cards = 0; dev < SNDRV_CARDS && enable[dev] > 0; dev++) {
                if (port[dev] == SNDRV_AUTO_PORT)
@@ -357,7 +357,10 @@
                if (snd_gusextreme_probe(dev) >= 0)
                        cards++;
        }
-       cards += snd_legacy_auto_probe(possible_ports, 
snd_gusextreme_legacy_auto_probe);
+       i = snd_legacy_auto_probe(possible_ports, snd_gusextreme_legacy_auto_probe);
+       if (i > 0)
+               cards += i;
+
        if (!cards) {
 #ifdef MODULE
                printk(KERN_ERR "GUS Extreme soundcard not found or device busy\n");

Index: gusmax.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/isa/gus/gusmax.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- gusmax.c    14 Oct 2003 13:08:18 -0000      1.13
+++ gusmax.c    15 Mar 2004 19:33:52 -0000      1.14
@@ -378,7 +378,7 @@
 static int __init alsa_card_gusmax_init(void)
 {
        static unsigned long possible_ports[] = {0x220, 0x230, 0x240, 0x250, 0x260, 
-1};
-       int dev, cards;
+       int dev, cards, i;
 
        for (dev = cards = 0; dev < SNDRV_CARDS && enable[dev] > 0; dev++) {
                if (port[dev] == SNDRV_AUTO_PORT)
@@ -386,7 +386,10 @@
                if (snd_gusmax_probe(dev) >= 0)
                        cards++;
        }
-       cards += snd_legacy_auto_probe(possible_ports, snd_gusmax_legacy_auto_probe);
+       i = snd_legacy_auto_probe(possible_ports, snd_gusmax_legacy_auto_probe);
+       if (i > 0)
+               cards += i;
+
        if (!cards) {
 #ifdef MODULE
                printk(KERN_ERR "GUS MAX soundcard not found or device busy\n");

Index: interwave.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/isa/gus/interwave.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- interwave.c 31 Jan 2004 08:52:27 -0000      1.31
+++ interwave.c 15 Mar 2004 19:33:52 -0000      1.32
@@ -929,7 +929,7 @@
 
 static int __init alsa_card_interwave_init(void)
 {
-       int cards = 0;
+       int cards = 0, i;
        static long possible_ports[] = {0x210, 0x220, 0x230, 0x240, 0x250, 0x260, -1};
        int dev;
 
@@ -949,10 +949,14 @@
 #endif
        }
        /* legacy auto configured cards */
-       cards += snd_legacy_auto_probe(possible_ports, 
snd_interwave_probe_legacy_port);
+       i = snd_legacy_auto_probe(possible_ports, snd_interwave_probe_legacy_port);
+       if (i > 0)
+               cards += i;
 #ifdef CONFIG_PNP
-        /* ISA PnP cards */
-        cards += pnp_register_card_driver(&interwave_pnpc_driver);
+       /* ISA PnP cards */
+       i = pnp_register_card_driver(&interwave_pnpc_driver);
+       if (i > 0)
+               cards += i;
 #endif
 
        if (!cards) {



-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to