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 | |
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.
-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 | ||||
-rw-r--r-- | sys/pci/agp_ali.c | 5 | ||||
-rw-r--r-- | sys/pci/agp_intel.c | 3 | ||||
-rw-r--r-- | sys/pci/agp_sis.c | 3 | ||||
-rw-r--r-- | sys/pci/agp_via.c | 59 |
8 files changed, 110 insertions, 30 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 diff --git a/sys/pci/agp_ali.c b/sys/pci/agp_ali.c index b36db9d..fcf145d 100644 --- a/sys/pci/agp_ali.c +++ b/sys/pci/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/pci/agp_intel.c b/sys/pci/agp_intel.c index 11f0208..916c1a7 100644 --- a/sys/pci/agp_intel.c +++ b/sys/pci/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/pci/agp_sis.c b/sys/pci/agp_sis.c index ee2eecf..035d21e 100644 --- a/sys/pci/agp_sis.c +++ b/sys/pci/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/pci/agp_via.c b/sys/pci/agp_via.c index 87d8563..a2cb739 100644 --- a/sys/pci/agp_via.c +++ b/sys/pci/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 |