summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1997-02-25 03:02:58 +0000
committergibbs <gibbs@FreeBSD.org>1997-02-25 03:02:58 +0000
commit3d9663354cfad669330f3d80a056a67ac82bb161 (patch)
treea0bc8c9b4ae2c6e23a991fa198d1afdfcb3127d8 /sys/dev
parent142f2a38ffce549ca270996498e70976d1425741 (diff)
downloadFreeBSD-src-3d9663354cfad669330f3d80a056a67ac82bb161.zip
FreeBSD-src-3d9663354cfad669330f3d80a056a67ac82bb161.tar.gz
Leave reselections on all the time.
If we are aborting an SCB from findSCB, don't add it back to the free list - the kernel driver will do this for us.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq24
-rw-r--r--sys/dev/aic7xxx/aic7xxx_reg.h7
2 files changed, 21 insertions, 10 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index 0baa037..d27dea0 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -39,7 +39,7 @@
*
*-M************************************************************************/
-VERSION AIC7XXX_SEQ_VER "$Id$"
+VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.61 1997/02/22 09:28:51 peter Exp $"
#if defined(__NetBSD__)
#include "../../../../dev/ic/aic7xxxreg.h"
@@ -81,7 +81,11 @@ A = ACCUM
*/
reset:
clr SCSISIGO /* De-assert BSY */
-
+ mvi CLRSINT0, 0xFF /* Clear all interrupts */
+ mvi CLRSINT1, 0xFF /* Clear all interrupts */
+ mvi SCSISEQ,0x12 /* Always allow reselection
+ * ENRSELI|ENAUTOATNP
+ */
p_busfree:
clr DFCNTRL
clr SCSIRATE /*
@@ -90,7 +94,6 @@ p_busfree:
* transfers to avoid parity problems.
*/
and SXFRCTL0, 0xdf /* ~FAST20*/
- mvi SCSISEQ,ENRSELI /* Always allow reselection */
mvi LASTPHASE, P_BUSFREE
and FLAGS,0x07 /* clear target specific flags */
poll_for_work:
@@ -216,7 +219,9 @@ start_scb2:
* selection bus phases.
*/
start_selection:
- mvi SCSISEQ,0x58 /* ENSELO|ENAUTOATNO|ENRSELI */
+ mvi SCSISEQ,0x5a /* ENSELO|ENAUTOATNO|ENRSELI
+ * |ENAUTOATNP
+ */
/*
* As soon as we get a successful selection, the target should go
@@ -278,18 +283,18 @@ select:
mov WAITING_SCBH,SCB_NEXT
select2:
/* Turn off the selection hardware */
- mvi SCSISEQ,ENAUTOATNP /*
+ mvi CLRSINT1,CLRBUSFREE
+ mvi SCSISEQ, 0x12 /* ENRSELI|ENAUTOATNP
* ATN on parity errors
* for "in" phases
*/
- mvi CLRSINT0,0x60 /* CLRSELDI|CLRSELDO */
- mvi CLRSINT1,CLRBUSFREE
or SIMODE1, ENBUSFREE /*
* We aren't expecting a
* bus free, so interrupt
* the kernel driver if it
* happens.
*/
+ mvi CLRSINT0,0x60 /* CLRSELDI|CLRSELDO */
/*
* Initialize Ultra mode setting and clear the SCSI channel.
*/
@@ -659,6 +664,8 @@ complete:
/* Post the SCB and issue an interrupt */
mov QOUTFIFO,SCB_TAG
mvi INTSTAT,CMDCMPLT
+ test SCB_CONTROL, ABORT_SCB jz dma_next_scb
+ mvi INTSTAT ABORT_CMDCMPLT
dma_next_scb:
cmp SCB_LINKED_NEXT, SCB_LIST_NULL je add_to_free_list
@@ -817,7 +824,7 @@ not_found:
send_abort_msg:
test FLAGS, TAGGED_SCB jnz abort_tag_msg
mvi MSG_ABORT call mk_mesg
- jmp mesgin_done
+ jmp ITloop
abort_tag_msg:
mvi MSG_ABORT_TAG call mk_mesg /* ABORT TAG message */
jmp mesgin_done
@@ -994,7 +1001,6 @@ find_dma_scb:
mvi DMAPARAMS, 0xd /* HDMAEN|DIRECTION|FIFORESET */
mov ARG_1 call dma_scb
test SCB_CONTROL, ABORT_SCB jz return
- call add_scb_to_free_list
find_error:
mvi SINDEX, SCB_LIST_NULL ret
findBySCBID:
diff --git a/sys/dev/aic7xxx/aic7xxx_reg.h b/sys/dev/aic7xxx/aic7xxx_reg.h
index 523923f..ced6bea 100644
--- a/sys/dev/aic7xxx/aic7xxx_reg.h
+++ b/sys/dev/aic7xxx/aic7xxx_reg.h
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id$
+ * $Id: aic7xxx_reg.h,v 1.25 1997/02/22 09:28:53 peter Exp $
*/
/*
@@ -382,6 +382,7 @@
#define STBOFF 0x38
#define STBON 0x07
#define DFTHRSH_100 0xc0
+#define DFTHRSH_75 0x80
/*
* Host Control (p. 3-47) R/W
@@ -413,6 +414,10 @@
#define REJECT_MSG 0x61 /* Reject message received */
#define BAD_STATUS 0x71 /* Bad status from target */
#define RESIDUAL 0x81 /* Residual byte count != 0 */
+#define ABORT_CMDCMPLT 0x91 /*
+ * Command tagged for abort
+ * completed successfully.
+ */
#define AWAITING_MSG 0xa1 /*
* Kernel requested to specify
* a message to this target
OpenPOWER on IntegriCloud