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>
