diff options
author | gibbs <gibbs@FreeBSD.org> | 1997-02-25 03:02:58 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1997-02-25 03:02:58 +0000 |
commit | 3d9663354cfad669330f3d80a056a67ac82bb161 (patch) | |
tree | a0bc8c9b4ae2c6e23a991fa198d1afdfcb3127d8 /sys/dev | |
parent | 142f2a38ffce549ca270996498e70976d1425741 (diff) | |
download | FreeBSD-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.seq | 24 | ||||
-rw-r--r-- | sys/dev/aic7xxx/aic7xxx_reg.h | 7 |
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 |