diff options
author | se <se@FreeBSD.org> | 1997-05-30 21:01:47 +0000 |
---|---|---|
committer | se <se@FreeBSD.org> | 1997-05-30 21:01:47 +0000 |
commit | 854d44183ba63cf3f3f2ae108f99057ab395512f (patch) | |
tree | 80ea08adf529bfeff398ff8dffec52f4cef677db /sys/pci/pcisupport.c | |
parent | e0cae756d1fa7b09708631701798d935f7da0100 (diff) | |
download | FreeBSD-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/pci/pcisupport.c')
-rw-r--r-- | sys/pci/pcisupport.c | 58 |
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)) |