summaryrefslogtreecommitdiff
path: root/sys/dev/advansys/adv_pci.c
diff options
context:
space:
mode:
authorJustin T. Gibbs <gibbs@FreeBSD.org>2000-01-14 03:33:38 +0000
committerJustin T. Gibbs <gibbs@FreeBSD.org>2000-01-14 03:33:38 +0000
commit9c0b8410b8e0ba1b2bfb7902b1737b14d8a68fe4 (patch)
tree466b58478a195571fb1568926068da7f8fa3882b /sys/dev/advansys/adv_pci.c
parent01779872245462cd3d3ed68618775e77c321d06b (diff)
Notes
Diffstat (limited to 'sys/dev/advansys/adv_pci.c')
-rw-r--r--sys/dev/advansys/adv_pci.c43
1 files changed, 27 insertions, 16 deletions
diff --git a/sys/dev/advansys/adv_pci.c b/sys/dev/advansys/adv_pci.c
index 8f8fc58f374b..5e145281819b 100644
--- a/sys/dev/advansys/adv_pci.c
+++ b/sys/dev/advansys/adv_pci.c
@@ -3,12 +3,20 @@
* Advanced Systems Inc. SCSI controllers:
*
* Connectivity Products:
- * ABP920 - Bus-Master PCI (16 CDB)
- * ABP930 - Bus-Master PCI (16 CDB) *
- * ABP930U - Bus-Master PCI Ultra (16 CDB)
- * ABP930UA - Bus-Master PCI Ultra (16 CDB)
- * ABP960 - Bus-Master PCI MAC/PC (16 CDB) **
- * ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
+ * ABP902/3902 - Bus-Master PCI (16 CDB)
+ * ABP3905 - Bus-Master PCI (16 CDB)
+ * ABP915 - Bus-Master PCI (16 CDB)
+ * ABP920 - Bus-Master PCI (16 CDB)
+ * ABP3922 - Bus-Master PCI (16 CDB)
+ * ABP3925 - Bus-Master PCI (16 CDB)
+ * ABP930 - Bus-Master PCI (16 CDB) *
+ * ABP930U - Bus-Master PCI Ultra (16 CDB)
+ * ABP930UA - Bus-Master PCI Ultra (16 CDB)
+ * ABP940UA/3940UA - Bus-Master PCI Ultra (240 CDB)
+ * ABP960 - Bus-Master PCI MAC/PC (16 CDB) **
+ * ABP960U - Bus-Master PCI MAC/PC Ultra (16 CDB)
+ * ABP970U - Bus-Master PCI MAC/PC Ultra (240 CDB)
+ * ABP3960UA - Bus-Master PCI MAC/PC (240 CDB)
*
* Single Channel Products:
* ABP940 - Bus-Master PCI (240 CDB)
@@ -18,6 +26,7 @@
*
* Dual Channel Products:
* ABP950 - Dual Channel Bus-Master PCI (240 CDB Per Channel)
+ * ABP980UA/3980UA - Four Channel Bus-Master PCI Ultra (16 CDB Per Chan.)
*
* Footnotes:
* * This board has been sold by SIIG as the Fast SCSI Pro PCI.
@@ -31,7 +40,7 @@
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions, and the following disclaimer,
- * without modification, immediately at the beginning of the file.
+ * without modification.
* 2. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
@@ -67,7 +76,7 @@
#define PCI_DEVICE_ID_ADVANSYS_1200A 0x110010CD
#define PCI_DEVICE_ID_ADVANSYS_1200B 0x120010CD
-#define PCI_DEVICE_ID_ADVANSYS_ULTRA 0x130010CD
+#define PCI_DEVICE_ID_ADVANSYS_3000 0x130010CD
#define PCI_DEVICE_REV_ADVANSYS_3150 0x02
#define PCI_DEVICE_REV_ADVANSYS_3050 0x03
@@ -98,17 +107,21 @@ COMPAT_PCI_DRIVER (adv_pci, adv_pci_driver);
static const char*
advpciprobe(pcici_t tag, pcidi_t type)
{
- int rev = pci_conf_read(tag, PCI_CLASS_REG) & 0xff;
+ int rev;
+
+ rev = pci_conf_read(tag, PCI_CLASS_REG) & PCI_REVISION_MASK;
switch (type) {
case PCI_DEVICE_ID_ADVANSYS_1200A:
return ("AdvanSys ASC1200A SCSI controller");
case PCI_DEVICE_ID_ADVANSYS_1200B:
return ("AdvanSys ASC1200B SCSI controller");
- case PCI_DEVICE_ID_ADVANSYS_ULTRA:
+ case PCI_DEVICE_ID_ADVANSYS_3000:
if (rev == PCI_DEVICE_REV_ADVANSYS_3150)
- return ("AdvanSys ASC3150 Ultra SCSI controller");
- else
- return ("AdvanSys ASC3050 Ultra SCSI controller");
+ return ("AdvanSys ASC3150 SCSI controller");
+ else if (rev == PCI_DEVICE_REV_ADVANSYS_3050)
+ return ("AdvanSys ASC3030/50 SCSI controller");
+ else if (rev >= PCI_DEVICE_REV_ADVANSYS_3150)
+ return ("Unknown AdvanSys controller");
break;
default:
break;
@@ -231,9 +244,7 @@ advpciattach(pcici_t config_id, int unit)
if (adv->chip_version >= ADV_CHIP_VER_PCI_ULTRA_3150)
adv->type |= ADV_ULTRA;
- if (adv->chip_version == ADV_CHIP_VER_PCI_ULTRA_3150)
- extra_cfg = ADV_IFC_ACT_NEG | ADV_IFC_SLEW_RATE;
- else if (adv->chip_version == ADV_CHIP_VER_PCI_ULTRA_3050)
+ if (adv->chip_version == ADV_CHIP_VER_PCI_ULTRA_3050)
extra_cfg = ADV_IFC_ACT_NEG | ADV_IFC_WR_EN_FILTER;
else
extra_cfg = ADV_IFC_ACT_NEG | ADV_IFC_SLEW_RATE;