daemonic
Well-Known Member
Hallo,
habe FreeBSD 6.0-Release auf mein neues Laptop (Asus A6vm) installiert.
Leider funktioniert der Soundtreiber snd_ich nicht.
Mit etwas fummeln im snd_ich Treiber, klemmt sich der Treiber halbwegs an "pci0".
Beim Booten bekomme ich folgende Fehlermeldung
Mit pciconf(8) sieht man folgendes
Die Soundkarte wird trotzdem nicht erkannt ("cat /dev/sndstat" bringt nicht die bekannten Infos).
Hat jemand schon Intel HDA (wenn auch mit AC'97 Codec) unter FreeBSD zum laufen gebracht ?
Danke schon mal für Eure Unterstützung.
Grüße
quirk für ICH7 im snd_ich Treiber:
habe FreeBSD 6.0-Release auf mein neues Laptop (Asus A6vm) installiert.
Leider funktioniert der Soundtreiber snd_ich nicht.
Mit etwas fummeln im snd_ich Treiber, klemmt sich der Treiber halbwegs an "pci0".
Beim Booten bekomme ich folgende Fehlermeldung
Code:
pcm0: <Intel ICH7 (82801FB)> mem 0xfebf8000-0xfebfbfff irq 16 at device 27.0 on pci0
pcm0: unable to map IO port space
Mit pciconf(8) sieht man folgendes
Code:
pcm0@pci0:27:0: class=0x040300 card=0x11731043 chip=0x26688086 rev=0x04 hdr=0x00
vendor = 'Intel Corporation'
device = '82801FB/FR/FW/FRW Intel High DefiNition Audio Controller'
class = multimedia
Die Soundkarte wird trotzdem nicht erkannt ("cat /dev/sndstat" bringt nicht die bekannten Infos).
Hat jemand schon Intel HDA (wenn auch mit AC'97 Codec) unter FreeBSD zum laufen gebracht ?
Danke schon mal für Eure Unterstützung.
Grüße
quirk für ICH7 im snd_ich Treiber:
Code:
--- /usr/src/sys/dev/sound/pci/ich.c.ori Sat Jan 7 15:49:57 2006
+++ ./ich.c.sas Sat Jan 7 21:15:45 2006
@@ -46,6 +46,7 @@
#define ICH5ID 0x24d58086 /* ICH5 needs to be treated as ICH4 */
#define I6300ESBID 0x25a68086 /* 6300ESB needs to be treated as ICH4 */
#define ICH6ID 0x266e8086 /* ICH6 needs to be treated as ICH4 */
+#define ICH7ID 0x26688086 /* ICH7 , unofficial quirk by Sashi Asokarajan */
/* buffer descriptor */
struct ich_desc {
@@ -584,7 +585,8 @@
if ((pci_get_devid(sc->dev) != ICH4ID) &&
(pci_get_devid(sc->dev) != ICH5ID) &&
(pci_get_devid(sc->dev) != I6300ESBID) &&
- (pci_get_devid(sc->dev) != ICH6ID)) {
+ (pci_get_devid(sc->dev) != ICH6ID) &&
+ (pci_get_devid(sc->dev) != ICH7ID)) {
return ENXIO;
}
}
@@ -648,6 +650,10 @@
device_set_desc(dev, "Intel ICH6 (82801FB)");
return BUS_PROBE_LOW_PRIORITY;
+ case ICH7ID:
+ device_set_desc(dev, "Intel ICH7 (82801FB)");
+ return BUS_PROBE_LOW_PRIORITY;
+
case SIS7012ID:
device_set_desc(dev, "SiS 7012");
return BUS_PROBE_DEFAULT;
@@ -735,10 +741,12 @@
if (pci_get_devid(dev) == ICH5ID ||
pci_get_devid(dev) == I6300ESBID ||
- pci_get_devid(dev) == ICH6ID) {
+ pci_get_devid(dev) == ICH6ID ||
+ pci_get_devid(dev) == ICH7ID) {
sc->nambarid = PCIR_MMBAR;
sc->nabmbarid = PCIR_MBBAR;
sc->regtype = SYS_RES_MEMORY;
+ pci_write_config(dev, PCIR_ICH_LEGACY, ICH_LEGACY_ENABLE, 1);
} else {
sc->nambarid = PCIR_NAMBAR;
sc->nabmbarid = PCIR_NABMBAR;