[alsa-devel] [bug] sbawe: the PnP won't stop

David Flater vger at flaterco.com
Sun Mar 24 03:25:18 CET 2013

I've got an ISA PnP SB AWE type card in a system with a non-working DMA 5.
Without intervention, the Sound Blaster always gets the broken DMA.  I have
no BIOS options to control the allocation of DMAs, and the PnP configuration
done within ALSA ignores /etc/isapnp.conf [*].  DMA 6 works fine if I can get
sbawe to stop re-initializing the PnP and just use it.

# Use setup from isapnp with dma16 moved to 6.
modprobe snd-sbawe isapnp=0 port=0x220 mpu_port=0x330 fm_port=0x388 awe_port=0x620 irq=5 dma8=1 dma16=6
modprobe snd-emu8000-synth

Problem is, regardless whether isapnp is 0 or 1, sbawe always PnPs the card
and puts it back on broken DMA 5.  If I have already got the card correctly
configured with /sbin/isapnp beforehand, sbawe leaves the original resources
tied up as a ghost card and allocates again (/proc/dma):

 1: SoundBlaster - 8bit
 2: floppy
 3: SoundBlaster - 8bit
 4: cascade
 5: SoundBlaster - 16bit
 6: SoundBlaster - 16bit

To get it working I ripped the following lines of code out of kernel 3.8.4,
blocking PnP completely.  As for a proper nondestructive fix, I'm not sure
whether the intent was (A) you were only supposed to get one of the two
registrations, or (B) the PnP registration was not supposed to reinit
everything if it was already set up.

--- sound/isa/sb/sb16.c~	2013-03-14 14:27:14.000000000 -0400
+++ sound/isa/sb/sb16.c	2013-03-23 20:18:50.137987332 -0400
@@ -674,13 +674,6 @@
 #ifdef CONFIG_PNP
 	if (!err)
 		isa_registered = 1;
-	err = pnp_register_card_driver(&sb16_pnpc_driver);
-	if (!err)
-		pnp_registered = 1;
-	if (isa_registered)
-		err = 0;
 	return err;

[*] So is there a different config file for PnP within ALSA?

-- DWF

More information about the Alsa-devel mailing list