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