From 39536d3f8336652fde7b88662cb8df6f93d6660d Mon Sep 17 00:00:00 2001 From: anholt Date: Thu, 30 Dec 2004 07:18:58 +0000 Subject: [1] Remove the generic bridge support from those drivers that had it. The generic bridge support was biting us more than it helped, whenever a new chipset came out from a vendor and misprogramming it caused strange hangs or corruption. [2] Add a large number of PCI IDs based on what the linux drivers support. Note that the new PCI IDs haven't been tested, they're just *likely* to work. In particular the VIA AGP 8x chipsets are concerning, due to lack of testing, possible issues (kern/69953), and not having a nice "does this bridge say it would do 8x" function. However, this shouldn't make the situation worse, since these chips would have probed in the past anyway. --- sys/dev/agp/agp_ali.c | 5 ++--- sys/dev/agp/agp_intel.c | 3 --- sys/dev/agp/agp_sis.c | 3 --- sys/dev/agp/agp_via.c | 59 ++++++++++++++++++++++++++++++++++++++++++++----- 4 files changed, 55 insertions(+), 15 deletions(-) (limited to 'sys/dev/agp') diff --git a/sys/dev/agp/agp_ali.c b/sys/dev/agp/agp_ali.c index b36db9d..fcf145d 100644 --- a/sys/dev/agp/agp_ali.c +++ b/sys/dev/agp/agp_ali.c @@ -67,11 +67,10 @@ agp_ali_match(device_t dev) switch (pci_get_devid(dev)) { case 0x154110b9: return ("Ali M1541 host to AGP bridge"); + case 0x162110b9: + return ("Ali M1621 host to AGP bridge"); }; - if (pci_get_vendor(dev) == 0x10b9) - return ("Ali Generic host to PCI bridge"); - return NULL; } diff --git a/sys/dev/agp/agp_intel.c b/sys/dev/agp/agp_intel.c index 11f0208..916c1a7 100644 --- a/sys/dev/agp/agp_intel.c +++ b/sys/dev/agp/agp_intel.c @@ -119,9 +119,6 @@ agp_intel_match(device_t dev) return ("Intel 82845G host to AGP bridge"); }; - if (pci_get_vendor(dev) == 0x8086) - return ("Intel Generic host to PCI bridge"); - return NULL; } diff --git a/sys/dev/agp/agp_sis.c b/sys/dev/agp/agp_sis.c index ee2eecf..035d21e 100644 --- a/sys/dev/agp/agp_sis.c +++ b/sys/dev/agp/agp_sis.c @@ -109,9 +109,6 @@ agp_sis_match(device_t dev) return NULL; }; - if (pci_get_vendor(dev) == 0x1039) - return ("SIS Generic host to PCI bridge"); - return NULL; } diff --git a/sys/dev/agp/agp_via.c b/sys/dev/agp/agp_via.c index 87d8563..a2cb739 100644 --- a/sys/dev/agp/agp_via.c +++ b/sys/dev/agp/agp_via.c @@ -75,27 +75,62 @@ agp_via_match(device_t dev) return NULL; switch (pci_get_devid(dev)) { + case 0x01981106: + return ("VIA 8763 (P4X600) host to PCI bridge"); + case 0x02591106: + return ("VIA PM800/PN800/PM880/PN880 host to PCI bridge"); + case 0x02691106: + return ("VIA KT880 host to PCI bridge"); + case 0x02961106: + return ("VIA 3296 (P4M800) host to PCI bridge"); case 0x03051106: - return ("VIA 82C8363 (Apollo KT133A) host to PCI bridge"); + return ("VIA 82C8363 (Apollo KT133x/KM133) host to PCI bridge"); + case 0x03911106: + return ("VIA 8371 (Apollo KX133) host to PCI bridge"); case 0x05011106: return ("VIA 8501 (Apollo MVP4) host to PCI bridge"); case 0x05971106: return ("VIA 82C597 (Apollo VP3) host to PCI bridge"); case 0x05981106: return ("VIA 82C598 (Apollo MVP3) host to PCI bridge"); + case 0x06011106: + return ("VIA 8601 (Apollo ProMedia/PLE133Ta) host to PCI bridge"); case 0x06051106: return ("VIA 82C694X (Apollo Pro 133A) host to PCI bridge"); case 0x06911106: return ("VIA 82C691 (Apollo Pro) host to PCI bridge"); - case 0x31881106: /* AMD64 GART */ - return NULL; + case 0x30911106: + return ("VIA 8633 (Pro 266) host to PCI bridge"); + case 0x30991106: + return ("VIA 8367 (KT266/KY266x/KT333) host to PCI bridge"); + case 0x31011106: + return ("VIA 8653 (Pro266T) host to PCI bridge"); + case 0x31121106: + return ("VIA 8361 (KLE133) host to PCI bridge"); + case 0x31161106: + return ("VIA XM266 (PM266/KM266) host to PCI bridge"); + case 0x31231106: + return ("VIA 862x (CLE266) host to PCI bridge"); + case 0x31281106: + return ("VIA 8753 (P4X266) host to PCI bridge"); + case 0x31481106: + return ("VIA 8703 (P4M266x/P4N266) host to PCI bridge"); + case 0x31561106: + return ("VIA XN266 (Apollo Pro266) host to PCI bridge"); + case 0x31681106: + return ("VIA 8754 (PT800) host to PCI bridge"); case 0x31891106: return ("VIA 8377 (Apollo KT400/KT400A/KT600) host to PCI bridge"); + case 0x32051106: + return ("VIA 8235/8237 (Apollo KM400/KM400A) host to PCI bridge"); + case 0x32081106: + return ("VIA 8783 (PT890) host to PCI bridge"); + case 0x32581106: + return ("VIA PT880 host to PCI bridge"); + case 0xb1981106: + return ("VIA VT83xx/VT87xx/KTxxx/Px8xx host to PCI bridge"); }; - if (pci_get_vendor(dev) == 0x1106) - return ("VIA Generic host to PCI bridge"); - return NULL; } @@ -124,8 +159,20 @@ agp_via_attach(device_t dev) int error; u_int32_t agpsel; + /* XXX: This should be keying off of whether the bridge is AGP3 capable, + * rather than a bunch of device ids for chipsets that happen to do 8x. + */ switch (pci_get_devid(dev)) { + case 0x01981106: + case 0x02591106: + case 0x02691106: + case 0x02961106: + case 0x31231106: + case 0x31681106: case 0x31891106: + case 0x32051106: + case 0x32581106: + case 0xb1981106: /* The newer VIA chipsets will select the AGP version based on * what AGP versions the card supports. We still have to * program it using the v2 registers if it has chosen to use -- cgit v1.1