Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Feb 2000 02:15:00 +0900 (JST)
From:      sakichan@lares.dti.ne.jp
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/16517: [PATCH] add support for detecting i810 chipsets in probing PCI.
Message-ID:  <200002061715.CAA28324@shrike.dti.ad.jp>

next in thread | raw e-mail | index | archive | help

>Number:         16517
>Category:       kern
>Synopsis:       add Device ID of i810 chipsets
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Feb  6 09:20:02 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     SAKIYAMA Nobuo
>Release:        FreeBSD 4.0-current i386
>Organization:
none
>Environment:

	All i386 systems on i810 chipsets platform.

>Description:

	current kernel does not know Device IDs of Intel i810
        (and i810-DC100, i810E) chipsets, GMCH and ICH,
	except for the IDE function in ICH.
	So, they are detected and printed as "generic" or 
	unknown devices.

>How-To-Repeat:

	Every boot on i810 chipset systems.

>Fix:

	Patches below fix some of the problem. Non-PCI chips,
	such as FWH, are not yet detected.

	
--- src/sys/i386/isa/pcibus.c-orig	Sat Jan  8 17:31:24 2000
+++ src/sys/i386/isa/pcibus.c	Sun Feb  6 12:43:23 2000
@@ -279,6 +279,15 @@
 		/* XXX This is a guess */
 		*busnum = pci_cfgread(cfg, 0x41, 1);
 		break;
+	case 0x71208086:
+		s = "Intel 82810 (i810 GMCH) Host To Hub bridge";
+		break;
+	case 0x71228086:
+		s = "Intel 82810-DC100 (i810-DC100 GMCH) Host To Hub bridge";
+		break;
+	case 0x71248086:
+		s = "Intel 82810E (i810E GMCH) Host To Hub bridge";
+		break;
 	case 0x71808086:
 		s = "Intel 82443LX (440 LX) host to PCI bridge";
 		break;
--- src/sys/pci/pcisupport.c-orig	Thu Jan 27 21:02:06 2000
+++ src/sys/pci/pcisupport.c	Sun Feb  6 11:54:36 2000
@@ -685,7 +685,11 @@
 		return ("Intel 82454NX PCI Expander Bridge");
 	case 0x124b8086:
 		return ("Intel 82380FB mobile PCI to PCI bridge");
-	
+	case 0x24188086:
+		return ("Intel 82801AA (ICH) Hub to PCI bridge");
+	case 0x24288086:
+		return ("Intel 82801AB (ICH0) Hub to PCI bridge");
+
 	/* VLSI -- vendor 0x1004 */
 	case 0x01021004:
 		return ("VLSI 82C534 Eagle II PCI Bus bridge");
@@ -840,7 +844,11 @@
 		return ("Intel 82371SB PCI to ISA bridge");
 	case 0x71108086:
 		return ("Intel 82371AB PCI to ISA bridge");
-	
+	case 0x24108086:
+		return ("Intel 82801AA (ICH) PCI to LPC bridge");
+	case 0x24208086:
+		return ("Intel 82801AB (ICH0) PCI to LPC bridge");
+
 	/* VLSI -- vendor 0x1004 */
 	case 0x00061004:
 		return ("VLSI 82C593 PCI to ISA bridge");
@@ -1139,6 +1147,16 @@
 		return ("Intel 82440FX (Natoma) PCI and memory controller");
 	case 0x84c58086:
 		return ("Intel 82453KX/GX (Orion) PCI memory controller");
+	case 0x71208086:
+		return ("Intel 82810 (i810 GMCH) Host To Hub bridge");
+	case 0x71228086:
+	return ("Intel 82810-DC100 (i810-DC100 GMCH) Host To Hub bridge");
+	case 0x71248086:
+	return ("Intel 82810E (i810E GMCH) Host To Hub bridge");
+	case 0x24158086:
+		return ("Intel 82801AA (ICH) AC'97 Audio Controller");
+	case 0x24258086:
+		return ("Intel 82801AB (ICH0) AC'97 Audio Controller");
 
 	/* Sony -- vendor 0x104d */
 	case 0x8009104d:
@@ -1712,8 +1730,16 @@
 		break;
 	case 0x8086:
 		vendor = "Intel";
-		if ((id >> 16) == 0x7800)
-			chip = "i740 AGP";
+		switch (id >> 16) {
+		case 0x7121:
+			chip = "82810 (i810 GMCH)"; break;
+		case 0x7123:
+			chip = "82810-DC100 (i810-DC100 GMCH)"; break;
+		case 0x7125:
+			chip = "82810E (i810E GMCH)"; break;
+		case 0x7800:
+			chip = "i740 AGP"; break;
+		}
 		break;
 	case 0x10ea:
 		vendor = "Intergraphics";
--- src/sys/pci/uhci_pci.c-orig	Sat Feb  5 01:41:06 2000
+++ src/sys/pci/uhci_pci.c	Sun Feb  6 11:54:44 2000
@@ -83,6 +83,10 @@
 #define PCI_UHCI_DEVICEID_PIIX4         0x71128086
 #define PCI_UHCI_DEVICEID_PIIX4E        0x71128086    /* no separate stepping */
 static const char *uhci_device_piix4	= "Intel 82371AB/EB (PIIX4) USB controller";
+#define PCI_UHCI_DEVICEID_ICH		0x24128086
+static const char *uhci_device_ich	= "Intel 82801AA (ICH) USB controller";
+#define PCI_UHCI_DEVICEID_ICH0		0x24228086
+static const char *uhci_device_ich0 	= "Intel 82801AB (ICH0) USB controller";
 #define PCI_UHCI_DEVICEID_VT83C572	0x30381106
 static const char *uhci_device_vt83c572	= "VIA 83C572 USB controller";
 
@@ -124,6 +128,10 @@
 		return (uhci_device_piix3);
 	} else if (device_id == PCI_UHCI_DEVICEID_PIIX4) {
 		return (uhci_device_piix4);
+	} else if (device_id == PCI_UHCI_DEVICEID_ICH) {
+		return (uhci_device_ich);
+	} else if (device_id == PCI_UHCI_DEVICEID_ICH0) {
+		return (uhci_device_ich0);
 	} else if (device_id == PCI_UHCI_DEVICEID_VT83C572) {
 		return (uhci_device_vt83c572);
 	} else {
@@ -199,6 +207,14 @@
 		break;
 	case PCI_UHCI_DEVICEID_PIIX4:
 		device_set_desc(sc->sc_bus.bdev, uhci_device_piix4);
+		sprintf(sc->sc_vendor, "Intel");
+		break;
+	case PCI_UHCI_DEVICEID_ICH:
+		device_set_desc(sc->sc_bus.bdev, uhci_device_ich);
+		sprintf(sc->sc_vendor, "Intel");
+		break;
+	case PCI_UHCI_DEVICEID_ICH0:
+		device_set_desc(sc->sc_bus.bdev, uhci_device_ich0);
 		sprintf(sc->sc_vendor, "Intel");
 		break;
 	case PCI_UHCI_DEVICEID_VT83C572:

>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200002061715.CAA28324>