summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorse <se@FreeBSD.org>1997-05-30 21:01:47 +0000
committerse <se@FreeBSD.org>1997-05-30 21:01:47 +0000
commit854d44183ba63cf3f3f2ae108f99057ab395512f (patch)
tree80ea08adf529bfeff398ff8dffec52f4cef677db /sys
parente0cae756d1fa7b09708631701798d935f7da0100 (diff)
downloadFreeBSD-src-854d44183ba63cf3f3f2ae108f99057ab395512f.zip
FreeBSD-src-854d44183ba63cf3f3f2ae108f99057ab395512f.tar.gz
Add code to correctly probe all buses on the Intel XXPRESS motherboard.
Add a few Intel PCI chip-set names (VX) and fix Orion entries.
Diffstat (limited to 'sys')
-rw-r--r--sys/pci/pcisupport.c58
1 files changed, 48 insertions, 10 deletions
diff --git a/sys/pci/pcisupport.c b/sys/pci/pcisupport.c
index 97dfb1e..885a3a7 100644
--- a/sys/pci/pcisupport.c
+++ b/sys/pci/pcisupport.c
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** $Id: pcisupport.c,v 1.45 1997/03/28 18:40:24 phk Exp $
+** $Id: pcisupport.c,v 1.46 1997/05/26 15:08:35 se Exp $
**
** Device driver for DEC/INTEL PCI chipsets.
**
@@ -109,6 +109,29 @@ generic_pci_bridge (pcici_t tag)
return 0;
}
+/*
+ * XXX Both fixbushigh_orion() and fixbushigh_i1225() are bogus in that way,
+ * that they store the highest bus number to scan in this device's config
+ * data, though it is about PCI buses attached to the CPU independently!
+ */
+
+static void
+fixbushigh_orion(pcici_t tag)
+{
+ tag->secondarybus = pci_cfgread(tag, 0x4a, 1);
+ tag->subordinatebus = pci_cfgread(tag, 0x4b, 1);
+}
+
+static void
+fixbushigh_i1225(pcici_t tag)
+{
+ int sublementarybus;
+
+ sublementarybus = pci_cfgread(tag, 0x41, 1);
+ if (sublementarybus != 0xff)
+ tag->secondarybus = tag->subordinatebus = sublementarybus +1;
+}
+
static char*
chipset_probe (pcici_t tag, pcidi_t type)
{
@@ -116,13 +139,16 @@ chipset_probe (pcici_t tag, pcidi_t type)
char *descr;
switch (type) {
+ case 0x00088086:
+ /* Silently ignore this one! What is it, anyway ??? */
+ return ("");
case 0x04868086:
return ("Intel 82425EX PCI system controller");
case 0x04848086:
rev = (unsigned) pci_conf_read (tag, PCI_CLASS_REG) & 0xff;
if (rev == 3)
- return ("Intel 82378ZB PCI-ISA bridge");
- return ("Intel 82378IB PCI-ISA bridge");
+ return ("Intel 82378ZB PCI to ISA bridge");
+ return ("Intel 82378IB PCI to ISA bridge");
case 0x04838086:
return ("Intel 82424ZX (Saturn) cache DRAM controller");
case 0x04828086:
@@ -134,10 +160,13 @@ chipset_probe (pcici_t tag, pcidi_t type)
if (rev == 16 || rev == 17)
return ("Intel 82434NX (Neptune) PCI cache memory controller");
return ("Intel 82434LX (Mercury) PCI cache memory controller");
+ case 0x12258086:
+ fixbushigh_i1225(tag);
+ return ("Intel 824?? host to PCI bridge");
case 0x122d8086:
return ("Intel 82437FX PCI cache memory controller");
case 0x122e8086:
- return ("Intel 82371FB PCI-ISA bridge");
+ return ("Intel 82371FB PCI to ISA bridge");
case 0x12308086:
return ("Intel 82371FB IDE interface");
case 0x12508086:
@@ -149,23 +178,32 @@ chipset_probe (pcici_t tag, pcidi_t type)
case 0x06011039:
return ("SiS 85c601");
case 0x70008086:
- return ("Intel 82371SB PCI-ISA bridge");
+ return ("Intel 82371SB PCI to ISA bridge");
case 0x70108086:
return ("Intel 82371SB IDE interface");
- case 0x70308086:
+ case 0x71108086:
+ return ("Intel 82371AB PCI to ISA bridge");
+ case 0x71118086:
+ return ("Intel 82371AB IDE interface");
+ case 0x71128086:
+ return ("Intel 82371AB USB host controller");
+ case 0x71138086:
+ return ("Intel 82371AB power management");
+ case 0x70308086:
return ("Intel 82437VX PCI cache memory controller");
case 0x12378086:
return ("Intel 82440FX (Natoma) PCI and memory controller");
case 0x84c48086:
- tag->secondarybus =
- tag->subordinatebus = pci_cfgread(tag, 0x4a, 1);
- return ("Intel 82450KX (Orion) PCI memory controller");
+ fixbushigh_orion(tag);
+ return ("Intel 82454KX/GX (Orion) host to PCI bridge");
case 0x84c58086:
- return ("Intel 82454GX (Orion) host to PCI bridge");
+ return ("Intel 82453KX/GX (Orion) PCI memory controller");
case 0x00221014:
return ("IBM 82351 PCI-PCI bridge");
case 0x00011011:
return ("DEC 21050 PCI-PCI bridge");
+ case 0x124b8086:
+ return ("Intel 82380FB mobile PCI to PCI bridge");
};
if (descr = generic_pci_bridge(tag))
OpenPOWER on IntegriCloud