Yes, its a bug! My fault. I already sent Linus a patch. It is not
test9-pre1. I have attached it here for you and others on lkml. Please
let me know how it works for you. Patch applies to test7 through test8,
and test9-pre1.

Thanks for your time,
Paul Laufer

On Thu, Sep 14, 2000 at 12:10:36AM -0700 or thereabouts, Joachim Achtzehnter wrote:
> Here is some more info about this problem:
> 
> The trouble is caused by the driver's attempt to find multiple
> soundblaster cards. Specifying multiple=0 as a module option for sb fixes
> the problem. Note, however, this quote from the Documentation/Soundblaster
> file:
> 
> multiple=0    Set to disable detection of multiple Soundblaster cards.
>               Consider it a bug if this option is needed, and send in a
>               report.
> 
> So, this is a bug then!
> 
> The function init_sb in drivers/sound/sb_card.c contains a detection loop
> from card=0..SB_CARDS_MAX. This doesn't work, however, because the
> second time around it uses the same module parameters (DMA/IRQ/IO) and
> hence attempts to detect the exact same card instance. The result is not
> only that no second card is found, which is ok in my case, but the
> originally detected card is screwed up as well.
> 
> I'm not sufficiently familiar with the driver to know what it should
> do. Could it be that once it can't find a card via isapnp it should bail
> out from this loop?
> 
> Joachim
> 
> -- 
> work:     [EMAIL PROTECTED] (http://www.realtimeint.com)
> private:  [EMAIL PROTECTED]      (http://www.kraut.bc.ca)

--- linux-virgin/drivers/sound/sb_card.c        Sat Sep  9 15:06:13 2000
+++ linux/drivers/sound/sb_card.c       Sat Sep  9 15:07:16 2000
@@ -647,7 +647,7 @@
 
 static int __init init_sb(void)
 {
-       int card, max = multiple ? SB_CARDS_MAX : 1;
+       int card, max = (multiple && isapnp) ? SB_CARDS_MAX : 1;
 
        printk(KERN_INFO "Soundblaster audio driver Copyright (C) by Hannu Savolainen 
1993-1996\n");
        
@@ -660,6 +660,7 @@
                        if(!sb_cards_num) {
                                printk(KERN_NOTICE "sb: No ISAPnP cards found, trying 
standard ones...\n");
                                isapnp = 0;
+                               max = 1;
                        } else
                                break;
                }

Reply via email to