I have used alsa for awhile. It used to mostly work, and now it mostly doesn't. I've moved through versions of the kernel and the drivers; currently on Linux 2.4.17/Alsa 0.9.0beta10. It looks as if the problem relates to pnp, but I haven't been able to fix it. I'd appreciate any advice.
I have isapnp cards for sound (Soundblaster AWE64) and modem (USR). I have a Gigabyte motherboard that supports these and and Athlon chip. Currently, when I start the system I have no sound, and am told the modem is busy if I try to use it. All the sound drivers show as loaded, and if I modprobe -r snd-card-sbawe the modem works. If I then modprobe snd-card-sbawe the sound works (provided I fiddle the volume), but the modem gets knocked off. When I do pnpdump -d it shows both cards want IRQ 5. It also shows # Activate register [0x30]: Inactive for all 3 devices on the sound card. If I understand this, it means pnp has not enabled the card (though perhaps it just means it's not selected to receive pnp commands right now?). I have tried turning "pnp operating system" on and off in the CMOS (currently off). I have tried the following entries for the driver (in modules.conf) options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid=29 snd_device_uid=0 options snd-card-sbawe snd_index=0 snd_id="AWE" snd_isapnp=1 #options snd-card-sbawe snd_index=0 snd_id="AWE" snd_port=0x220 snd_mpu_port=0x300 snd_awe_port=0x0620 snd_irq=7 snd_dma8=1 snd_dma16=5 snd_mic_agc=1 snd_isapnp=1 Neither of which has worked. There are three possible pnp behaviors I can imagine for the driver, and I'm not sure which it's capable of: 1. read the hardware configuration (what the active options does above?) 2. automatically figure out what the configuration needs to be, set it if necessary, and read it. 3. set the configuration from parameters (this is what I assume the commented out option does above). The kernel and driver are compiled with pnp enabled; the kernel has only basic sound enabled (as a module, though I also tried it built in). I've attached the relevant output from pnpdump --dumpregs and my configuration file. I've excerpted the former, since it gives me descriptions of 255 devices on the sound card! The system is Debian woody. I custom built the kernel and alsa modules.
# Configuration registers for card 2: (serial identifier 63 87 b8 9a a9 70 30 72 56) # Vendor Id USR3070, Serial Number 2277022377, checksum 0x63. # # Card Select Number register [0x06]: 2 # # Vendor defined card level registers 0x20..2f: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 # # Logical device 0 # Activate register [0x30]: * Activated * # IO range check register [0x31]: Inactive # Logical device Control reserved reg 0x32..37: 00 00 00 00 00 00 # Logical device Control Vendor defnd 0x38..40: 00 00 00 00 00 00 00 00 # 24 bit Memory descriptor 0 at 40..44: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 1 at 48..4c: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 2 at 50..54: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 3 at 58..5c: Base address 0x000000 size 0x000000, 8 bit # 32 bit Memory descriptor 0 at 76..7e: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 1 at 80..88: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 2 at 90..98: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 3 at a0..a8: Base address 0x00000000 size 0x00000000, 8 bit # IO descriptor 0 at 60..61: Base address 0x03e8 # IO descriptor 1 at 62..63: Base address 0x0000 # IO descriptor 2 at 64..65: Base address 0x0000 # IO descriptor 3 at 66..67: Base address 0x0000 # IO descriptor 4 at 68..69: Base address 0x0000 # IO descriptor 5 at 6a..6b: Base address 0x0000 # IO descriptor 6 at 6c..6d: Base address 0x0000 # IO descriptor 7 at 6e..6f: Base address 0x0000 # Interrupt descriptor 0 at 70..71: Interrupt level 5, active high, level triggered # Interrupt descriptor 1 at 72..73: Interrupt level 0, active low, edge triggered # DMA descriptor 0 at 74: DMA channel 4 # DMA descriptor 1 at 75: DMA channel 4 # Configuration registers for card 1: (serial identifier ec 17 fb c4 f7 e4 00 8c 0e) # Vendor Id CTL00e4, Serial Number 402375927, checksum 0xEC. # # Card Select Number register [0x06]: 1 # # Vendor defined card level registers 0x20..2f: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 # # Logical device 0 # Activate register [0x30]: Inactive # IO range check register [0x31]: Inactive # Logical device Control reserved reg 0x32..37: 00 00 00 00 00 00 # Logical device Control Vendor defnd 0x38..40: 00 00 00 00 00 00 00 00 # 24 bit Memory descriptor 0 at 40..44: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 1 at 48..4c: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 2 at 50..54: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 3 at 58..5c: Base address 0x000000 size 0x000000, 8 bit # 32 bit Memory descriptor 0 at 76..7e: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 1 at 80..88: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 2 at 90..98: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 3 at a0..a8: Base address 0x00000000 size 0x00000000, 8 bit # IO descriptor 0 at 60..61: Base address 0x0220 # IO descriptor 1 at 62..63: Base address 0x0330 # IO descriptor 2 at 64..65: Base address 0x0388 # IO descriptor 3 at 66..67: Base address 0x0000 # IO descriptor 4 at 68..69: Base address 0x0000 # IO descriptor 5 at 6a..6b: Base address 0x0000 # IO descriptor 6 at 6c..6d: Base address 0x0000 # IO descriptor 7 at 6e..6f: Base address 0x0000 # Interrupt descriptor 0 at 70..71: Interrupt level 5, active high, edge triggered # Interrupt descriptor 1 at 72..73: Interrupt level 0, active low, edge triggered # DMA descriptor 0 at 74: DMA channel 1 # DMA descriptor 1 at 75: DMA channel 5 # # Logical device 1 # Activate register [0x30]: Inactive # IO range check register [0x31]: Inactive # Logical device Control reserved reg 0x32..37: 00 00 00 00 00 00 # Logical device Control Vendor defnd 0x38..40: 00 00 00 00 00 00 00 00 # 24 bit Memory descriptor 0 at 40..44: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 1 at 48..4c: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 2 at 50..54: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 3 at 58..5c: Base address 0x000000 size 0x000000, 8 bit # 32 bit Memory descriptor 0 at 76..7e: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 1 at 80..88: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 2 at 90..98: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 3 at a0..a8: Base address 0x00000000 size 0x00000000, 8 bit # IO descriptor 0 at 60..61: Base address 0x0000 # IO descriptor 1 at 62..63: Base address 0x0000 # IO descriptor 2 at 64..65: Base address 0x0000 # IO descriptor 3 at 66..67: Base address 0x0000 # IO descriptor 4 at 68..69: Base address 0x0000 # IO descriptor 5 at 6a..6b: Base address 0x0000 # IO descriptor 6 at 6c..6d: Base address 0x0000 # IO descriptor 7 at 6e..6f: Base address 0x0000 # Interrupt descriptor 0 at 70..71: Interrupt level 0, active high, edge triggered # Interrupt descriptor 1 at 72..73: Interrupt level 0, active low, edge triggered # DMA descriptor 0 at 74: DMA channel 4 # DMA descriptor 1 at 75: DMA channel 4 # # Logical device 2 # Activate register [0x30]: Inactive # IO range check register [0x31]: Inactive # Logical device Control reserved reg 0x32..37: 00 00 00 00 00 00 # Logical device Control Vendor defnd 0x38..40: 00 00 00 00 00 00 00 00 # 24 bit Memory descriptor 0 at 40..44: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 1 at 48..4c: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 2 at 50..54: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 3 at 58..5c: Base address 0x000000 size 0x000000, 8 bit # 32 bit Memory descriptor 0 at 76..7e: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 1 at 80..88: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 2 at 90..98: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 3 at a0..a8: Base address 0x00000000 size 0x00000000, 8 bit # IO descriptor 0 at 60..61: Base address 0x0620 # IO descriptor 1 at 62..63: Base address 0x0a20 # IO descriptor 2 at 64..65: Base address 0x0e20 # IO descriptor 3 at 66..67: Base address 0x0000 # IO descriptor 4 at 68..69: Base address 0x0000 # IO descriptor 5 at 6a..6b: Base address 0x0000 # IO descriptor 6 at 6c..6d: Base address 0x0000 # IO descriptor 7 at 6e..6f: Base address 0x0000 # Interrupt descriptor 0 at 70..71: Interrupt level 0, active high, edge triggered # Interrupt descriptor 1 at 72..73: Interrupt level 0, active low, edge triggered # DMA descriptor 0 at 74: DMA channel 4 # DMA descriptor 1 at 75: DMA channel 4 # # Logical device 3 # Activate register [0x30]: Inactive # IO range check register [0x31]: Inactive # Logical device Control reserved reg 0x32..37: 00 00 00 00 00 00 # Logical device Control Vendor defnd 0x38..40: 00 00 00 00 00 00 00 00 # 24 bit Memory descriptor 0 at 40..44: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 1 at 48..4c: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 2 at 50..54: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 3 at 58..5c: Base address 0x000000 size 0x000000, 8 bit # 32 bit Memory descriptor 0 at 76..7e: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 1 at 80..88: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 2 at 90..98: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 3 at a0..a8: Base address 0x00000000 size 0x00000000, 8 bit # IO descriptor 0 at 60..61: Base address 0x0000 # IO descriptor 1 at 62..63: Base address 0x0000 # IO descriptor 2 at 64..65: Base address 0x0000 # IO descriptor 3 at 66..67: Base address 0x0000 # IO descriptor 4 at 68..69: Base address 0x0000 # IO descriptor 5 at 6a..6b: Base address 0x0000 # IO descriptor 6 at 6c..6d: Base address 0x0000 # IO descriptor 7 at 6e..6f: Base address 0x0000 # Interrupt descriptor 0 at 70..71: Interrupt level 0, active high, edge triggered # Interrupt descriptor 1 at 72..73: Interrupt level 0, active low, edge triggered # DMA descriptor 0 at 74: DMA channel 4 # DMA descriptor 1 at 75: DMA channel 4 # # Logical device 4 # Activate register [0x30]: Inactive # IO range check register [0x31]: Inactive # Logical device Control reserved reg 0x32..37: 00 00 00 00 00 00 # Logical device Control Vendor defnd 0x38..40: 00 00 00 00 00 00 00 00 # 24 bit Memory descriptor 0 at 40..44: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 1 at 48..4c: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 2 at 50..54: Base address 0x000000 size 0x000000, 8 bit # 24 bit Memory descriptor 3 at 58..5c: Base address 0x000000 size 0x000000, 8 bit # 32 bit Memory descriptor 0 at 76..7e: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 1 at 80..88: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 2 at 90..98: Base address 0x00000000 size 0x00000000, 8 bit # 32 bit Memory descriptor 3 at a0..a8: Base address 0x00000000 size 0x00000000, 8 bit # IO descriptor 0 at 60..61: Base address 0x0000 # IO descriptor 1 at 62..63: Base address 0x0000 # IO descriptor 2 at 64..65: Base address 0x0000 # IO descriptor 3 at 66..67: Base address 0x0000 # IO descriptor 4 at 68..69: Base address 0x0000 # IO descriptor 5 at 6a..6b: Base address 0x0000 # IO descriptor 6 at 6c..6d: Base address 0x0000 # IO descriptor 7 at 6e..6f: Base address 0x0000 # Interrupt descriptor 0 at 70..71: Interrupt level 0, active high, edge triggered # Interrupt descriptor 1 at 72..73: Interrupt level 0, active low, edge triggered # DMA descriptor 0 at 74: DMA channel 4 # DMA descriptor 1 at 75: DMA channel 4 #
## First, the device major numbers #alsa native alias char-major-116 snd # OSS/Free alias char-major-14 soundcore options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0660 snd_device_gid=29 snd_device_uid=0 options snd-card-sbawe snd_index=0 snd_id="AWE" snd_isapnp=1 #options snd-card-sbawe snd_index=0 snd_id="AWE" snd_port=0x220 snd_mpu_port=0x300 snd_awe_port=0x0620 snd_irq=7 snd_dma8=1 snd_dma16=5 snd_mic_agc=1 snd_isapnp=1 ## multiplexer needs top level soundcard alias snd-card-0 snd-card-sbawe # OSS/Free alias sound-slot-0 snd-card-0 ## Done with ALSA, but OSS needs more alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss