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.
This commit is contained in:
Justin T. Gibbs 1997-02-25 03:02:58 +00:00
parent b6561e8951
commit 9df674522b
2 changed files with 21 additions and 10 deletions

View File

@ -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:

View File

@ -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