summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoranholt <anholt@FreeBSD.org>2004-12-30 07:18:58 +0000
committeranholt <anholt@FreeBSD.org>2004-12-30 07:18:58 +0000
commit39536d3f8336652fde7b88662cb8df6f93d6660d (patch)
tree9e32437e2494cdeb0280f7f167a3d12c669f211a
parent6724b46563fef45d02a9e243cc4a5cca18c47929 (diff)
downloadFreeBSD-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.c5
-rw-r--r--sys/dev/agp/agp_intel.c3
-rw-r--r--sys/dev/agp/agp_sis.c3
-rw-r--r--sys/dev/agp/agp_via.c59
-rw-r--r--sys/pci/agp_ali.c5
-rw-r--r--sys/pci/agp_intel.c3
-rw-r--r--sys/pci/agp_sis.c3
-rw-r--r--sys/pci/agp_via.c59
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
OpenPOWER on IntegriCloud