kern/81573: [PATCH] snd_ich cannot recognize Intel 6300ESB Audio
OOTOMO Hiroyuki
ootomo at za.wakwak.com
Fri May 27 19:10:03 PDT 2005
>Number: 81573
>Category: kern
>Synopsis: [PATCH] snd_ich cannot recognize Intel 6300ESB Audio
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat May 28 02:10:01 GMT 2005
>Closed-Date:
>Last-Modified:
>Originator: OOTOMO Hiroyuki
>Release: FreeBSD 5.4-STABLE amd64
>Organization:
>Environment:
System: FreeBSD sakura.cardcaptor 5.4-STABLE FreeBSD 5.4-STABLE #8: Sat May 28 08:23:24 JST 2005 root at sakura.cardcaptor:/usr/obj/usr/src/sys/SMP amd64
MotherBoard: Iwill DN800-L (Intel E7525 + ICH 6300ESB)
CPU: Xeon(nocona) 2.8GHz x 2
>Description:
pciconf says:
none5 at pci0:31:5: class=0x040100 card=0x004615d4 chip=0x25a68086 rev=0x02 hdr=0x00
vendor = 'Intel Corporation'
device = '6300ESB AC'97 Audio Controller'
class = multimedia
subclass = audio
but, pcm driver cannot recognize this Audio Controller.
# kldload snd_driver.ko
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
>How-To-Repeat:
>Fix:
I heard that 6300ESB is integration of PCI-X bridge into ICH5...
--- ich.c.diff begins here ---
--- sys/dev/sound/pci/ich.c.orig Wed Mar 30 10:09:21 2005
+++ sys/dev/sound/pci/ich.c Sat May 28 06:47:15 2005
@@ -44,6 +44,7 @@
#define SIS7012ID 0x70121039 /* SiS 7012 needs special handling */
#define ICH4ID 0x24c58086 /* ICH4 needs special handling too */
#define ICH5ID 0x24d58086 /* ICH5 needs to be treated as ICH4 */
+#define I6300ESBID 0x25a68086 /* 6300ESB is compatible to ICH5R? */
#define ICH6ID 0x266e8086 /* ICH6 needs to be treated as ICH4 */
/* buffer descriptor */
@@ -582,6 +583,7 @@
/* ICH4/ICH5 may fail when busmastering is enabled. Continue */
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)) {
return ENXIO;
}
@@ -638,6 +640,10 @@
device_set_desc(dev, "Intel ICH5 (82801EB)");
return -1000; /* allow a better driver to override us */
+ case I6300ESBID:
+ device_set_desc(dev, "Intel 6300ESB (6300ESB)");
+ return -1000; /* allow a better driver to override us */
+
case ICH6ID:
device_set_desc(dev, "Intel ICH6 (82801FB)");
return -1000; /* allow a better driver to override us */
@@ -727,7 +733,7 @@
*/
pci_enable_busmaster(dev);
- if (pci_get_devid(dev) == ICH5ID || pci_get_devid(dev) == ICH6ID) {
+ if (pci_get_devid(dev) == ICH5ID || pci_get_devid(dev) == I6300ESBID || pci_get_devid(dev) == ICH6ID) {
sc->nambarid = PCIR_MMBAR;
sc->nabmbarid = PCIR_MBBAR;
sc->regtype = SYS_RES_MEMORY;
--- ich.c.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list