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;
}