kern/53242: [patch] snd_ich fails to detect Intel 82801ER (ICH5) chip

Shin-ichi Yoshimoto yosimoto at waishi.jp
Wed Jun 11 21:10:20 PDT 2003


>Number:         53242
>Category:       kern
>Synopsis:       [patch] snd_ich fails to detect Intel 82801ER (ICH5) chip
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jun 11 21:10:16 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator:     Shin-ichi Yoshimoto
>Release:        FreeBSD 5.1-CURRENT i386
>Organization:
>Environment:
System: FreeBSD current.waishi.jp 5.1-CURRENT FreeBSD 5.1-CURRENT #9: Sun Jun 8 07:43:17 JST 2003 yosimoto at current.waishi.jp:/usr/obj/usr/src/sys/CURRENT i386


>Description:
The snd_ich sound driver fails to detect the Intel 82801ER (ICH5) sound on my motherboard (MSI 865PE Neo2). 

>How-To-Repeat:

>Fix:

--- ich.c.orig	Wed Apr 16 12:16:55 2003
+++ ich.c	Sun Jun  8 16:34:37 2003
@@ -43,6 +43,7 @@
 
 #define SIS7012ID       0x70121039      /* SiS 7012 needs special handling */
 #define ICH4ID		0x24c58086	/* ICH4 needs special handling too */
+#define ICH5ID		0x24d58086	/* ICH5 needs special handling too */
 
 /* buffer descriptor */
 struct ich_desc {
@@ -578,7 +579,7 @@
 
 	if ((stat & ICH_GLOB_STA_PCR) == 0) {
 		/* ICH4 may fail when busmastering is enabled. Continue */
-		if (pci_get_devid(sc->dev) != ICH4ID) {
+		if (pci_get_devid(sc->dev) != ICH4ID && pci_get_devid(sc->dev) != ICH5ID) {
 			return ENXIO;
 		}
 	}
@@ -630,6 +631,10 @@
 		device_set_desc(dev, "Intel 82801DB (ICH4)");
 		return 0;
 
+	case ICH5ID:
+		device_set_desc(dev, "Intel 82801ER (ICH5)");
+		return 0;
+
 	case SIS7012ID:
 		device_set_desc(dev, "SiS 7012");
 		return 0;
@@ -681,7 +686,7 @@
 	 * but doing so will mess things up here.  ich4 has enough new
 	 * features it warrants it's own driver. 
 	 */
-	if (pci_get_devid(dev) == ICH4ID) {
+	if (pci_get_devid(dev) == ICH4ID || pci_get_devid(dev) == ICH5ID) {
 		pci_write_config(dev, PCIR_ICH_LEGACY, ICH_LEGACY_ENABLE, 1);
 	}
 
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list