summaryrefslogtreecommitdiff
path: root/sys/dev/pci/isp_pci.c
diff options
context:
space:
mode:
authormjacob <mjacob@cvs.openbsd.org>2002-08-17 17:35:49 +0000
committermjacob <mjacob@cvs.openbsd.org>2002-08-17 17:35:49 +0000
commit2b5e1795c26eca579d8bc4d27363d6e6d9979193 (patch)
treeeaa0b007e67abba70f5f9a0f9f147e84ed43cde1 /sys/dev/pci/isp_pci.c
parentea995d5cf38e08e77f4437a52ce115624bdd05ca (diff)
Set all 23XX cards as 'touched' (we have trouble, unpredictably, about
running ABOUT FIRMWARE with some that were started by BIOS downloads). Fix the incorrect parsing of the Risc2Host isr. For RIO_16, fast posting command completion, and fast post CTIO completion, the upper half of Risc2Host is a copy of mailbox #1- *not* mailbox #0.
Diffstat (limited to 'sys/dev/pci/isp_pci.c')
-rw-r--r--sys/dev/pci/isp_pci.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/sys/dev/pci/isp_pci.c b/sys/dev/pci/isp_pci.c
index 7c5827e1498..a848fddfc9f 100644
--- a/sys/dev/pci/isp_pci.c
+++ b/sys/dev/pci/isp_pci.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: isp_pci.c,v 1.28 2002/05/17 01:22:38 mjacob Exp $ */
+/* $OpenBSD: isp_pci.c,v 1.29 2002/08/17 17:35:48 mjacob Exp $ */
/*
* PCI specific probe and attach routines for Qlogic ISP SCSI adapters.
*
@@ -613,6 +613,9 @@ isp_pci_attach(struct device *parent, struct device *self, void *aux)
if (IS_2300(isp)) { /* per QLogic errata */
data &= ~PCI_COMMAND_PARITY_ENABLE;
}
+ if (IS_23XX(isp)) {
+ isp->isp_touched = 1;
+ }
data |= PCI_COMMAND_MASTER_ENABLE | PCI_COMMAND_INVALIDATE_ENABLE;
/*
@@ -782,11 +785,23 @@ isp_pci_rd_isr_2300(struct ispsoftc *isp, u_int16_t *isrp,
case ISPR2HST_MBX_OK:
case ISPR2HST_MBX_FAIL:
case ISPR2HST_ASYNC_EVENT:
+ *isrp = r2hisr & 0xffff;
+ *mbox0p = (r2hisr >> 16);
+ *semap = 1;
+ return (1);
case ISPR2HST_RIO_16:
+ *isrp = r2hisr & 0xffff;
+ *mbox0p = ASYNC_RIO1;
+ *semap = 1;
+ return (1);
case ISPR2HST_FPOST:
+ *isrp = r2hisr & 0xffff;
+ *mbox0p = ASYNC_CMD_CMPLT;
+ *semap = 1;
+ return (1);
case ISPR2HST_FPOST_CTIO:
*isrp = r2hisr & 0xffff;
- *mbox0p = (r2hisr >> 16);
+ *mbox0p = ASYNC_CTIO_DONE;
*semap = 1;
return (1);
case ISPR2HST_RSPQ_UPDATE: