diff options
author | anholt <anholt@FreeBSD.org> | 2004-12-30 07:18:58 +0000 |
---|---|---|
committer | anholt <anholt@FreeBSD.org> | 2004-12-30 07:18:58 +0000 |
commit | 39536d3f8336652fde7b88662cb8df6f93d6660d (patch) | |
tree | 9e32437e2494cdeb0280f7f167a3d12c669f211a /sys/dev/agp | |
parent | 6724b46563fef45d02a9e243cc4a5cca18c47929 (diff) | |
download | FreeBSD-src-39536d3f8336652fde7b88662cb8df6f93d6660d.zip FreeBSD-src-39536d3f8336652fde7b88662cb8df6f93d6660d.tar.gz |
[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.
Diffstat (limited to 'sys/dev/agp')
-rw-r--r-- | sys/dev/agp/agp_ali.c | 5 | ||||
-rw-r--r-- | sys/dev/agp/agp_intel.c | 3 | ||||
-rw-r--r-- | sys/dev/agp/agp_sis.c | 3 | ||||
-rw-r--r-- | sys/dev/agp/agp_via.c | 59 |
4 files changed, 55 insertions, 15 deletions
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 |