From ootomo@ccsf.homeunix.org  Sat May 28 02:07:25 2005
Return-Path: <ootomo@ccsf.homeunix.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 4C95616A41C
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 28 May 2005 02:07:25 +0000 (GMT)
	(envelope-from ootomo@ccsf.homeunix.org)
Received: from ccsf.homeunix.org (ccsf.as.wakwak.ne.jp [61.205.237.177])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 8B03043D1F
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 28 May 2005 02:07:24 +0000 (GMT)
	(envelope-from ootomo@ccsf.homeunix.org)
Received: from ccsf.homeunix.org (localhost.cardcaptor [127.0.0.1])
	by ccsf.homeunix.org (8.13.3/8.13.3) with ESMTP id j4S28BgK023241
	for <FreeBSD-gnats-submit@freebsd.org>; Sat, 28 May 2005 11:08:11 +0900 (JST)
	(envelope-from ootomo@ccsf.homeunix.org)
Received: (from ootomo@localhost)
	by ccsf.homeunix.org (8.13.3/8.13.3/Submit) id j4S28A7k023240;
	Sat, 28 May 2005 11:08:10 +0900 (JST)
	(envelope-from ootomo)
Message-Id: <200505280208.j4S28A7k023240@ccsf.homeunix.org>
Date: Sat, 28 May 2005 11:08:10 +0900 (JST)
From: OOTOMO Hiroyuki <ootomo@za.wakwak.com>
Reply-To: OOTOMO Hiroyuki <ootomo@za.wakwak.com>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: [PATCH] snd_ich cannot recognize Intel 6300ESB Audio
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         81573
>Category:       kern
>Synopsis:       [PATCH] snd_ich cannot recognize Intel 6300ESB Audio
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat May 28 02:10:01 GMT 2005
>Closed-Date:    Sat May 28 09:42:55 GMT 2005
>Last-Modified:  Sat May 28 09:42:55 GMT 2005
>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@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@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:
State-Changed-From-To: open->closed 
State-Changed-By: tanimura 
State-Changed-When: Sat May 28 09:35:17 GMT 2005 
State-Changed-Why:  
Fixed in rev 1.52 (-current) and 1.42.2.6 (5-stable), thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=81573 
>Unformatted:
