Dell SBLive! (almost) fixed
Joseph Dunn
joseph at magnesium.net
Wed Jun 9 22:33:37 GMT 2004
Hello hackers@,
I just helped a friend install FreeBSD 5.2.1 on his Dell desktop
machine, and we've been struggling to get his sound card working. His
system has an SBLive! card, we were unable to use it with the stock
snd_emu10k1 driver. However...
pciconf -lv output:
none3 at pci2:2:0: class=0x040100 card=0x10031102 chip=0x00061102 rev=0x00
hdr=0x00
vendor = 'Creative Labs'
device = 'emu10k1x Soundblaster Live! 5.1'
class = multimedia
subclass = audio
relevant lines from /usr/src/sys/dev/sound/pci/emu10k1.c:
#define EMU10K1_PCI_ID 0x00021102
#define EMU10K2_PCI_ID 0x00041102
As you can see, Dell has apparently changed the card's PCI ID, and thus
the driver is not detecting it. I modified emu10k1.c to include the PCI
ID (see attached diff). Now, the new snd_emu10k1 driver detects the
card:
pcm0: <Creative EMU10K1 (Dell)> port 0xdf20-0xdf3f irq 17 at device 2.0 on pci2
pcm0: <SigmaTel STAC9708/11 AC97 Codec>
This *appears* to be working, but when I tried to play an mp3 with
mpg123, I got this error, and no sound:
pcm0:play:0: play interrupt timeout, channel dead
Could anyone with experience in this area venture a guess as to the
problem?
Thanks,
Joseph
-------------- next part --------------
--- emu10k1.c 2004-06-09 11:26:37.000000000 -0500
+++ emu10k1.c.dell 2004-06-09 11:29:26.000000000 -0500
@@ -37,6 +37,7 @@
/* -------------------------------------------------------------------- */
#define EMU10K1_PCI_ID 0x00021102
+#define EMU10K1_DELL_PCI_ID 0x00061102
#define EMU10K2_PCI_ID 0x00041102
#define EMU_DEFAULT_BUFSZ 4096
#define EMU_CHANS 4
@@ -1441,6 +1442,10 @@
case EMU10K1_PCI_ID:
s = "Creative EMU10K1";
break;
+
+ case EMU10K1_DELL_PCI_ID:
+ s = "Creative EMU10K1 (Dell)";
+ break;
/*
case EMU10K2_PCI_ID:
s = "Creative EMU10K2";
@@ -1595,6 +1600,10 @@
s = "Creative EMU10K1 Joystick";
device_quiet(dev);
break;
+ case 0x70041102:
+ s = "Creative EMU10K1 Joystick (Dell)";
+ device_quiet(dev);
+ break;
case 0x70031102:
s = "Creative EMU10K2 Joystick";
device_quiet(dev);
More information about the freebsd-hackers
mailing list