Re-enable reselections as the first thing after we see a bus free. We seem

to miss reselections from some devices and since the reselection response
timeout is only 200ns, enabling reselections too late may be the cause of our
problem.
This commit is contained in:
Justin T. Gibbs 1996-12-03 17:04:51 +00:00
parent 673f8923d0
commit 3d9ab968cd

View File

@ -39,7 +39,7 @@
*
*-M************************************************************************/
VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.50 1996/11/21 06:18:33 gibbs Exp $"
VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.51 1996/11/22 08:25:20 gibbs Exp $"
#if defined(__NetBSD__)
#include "../../../../dev/ic/aic7xxxreg.h"
@ -84,16 +84,14 @@ reset:
clr SCSISIGO /* De-assert BSY */
p_busfree:
mvi LASTPHASE, P_BUSFREE
start:
and FLAGS,0x07 /* clear target specific flags */
mvi SCSISEQ,ENRSELI /* Always allow reselection */
clr SCSIRATE /*
* We don't know the target we will
* connect to, so default to narrow
* transfers to avoid parity problems.
*/
mvi LASTPHASE, P_BUSFREE
and FLAGS,0x07 /* clear target specific flags */
poll_for_work:
/*
* Are we a twin channel device?
@ -550,13 +548,13 @@ p_mesgout_loop:
* If the next bus phase after ATN drops is a message out, it means
* that the target is requesting that the last message(s) be resent.
*/
p_mesgout_dropatn:
cmp DINDEX,1 jne p_mesgout_testretry /* last byte? */
mvi CLRSINT1,CLRATNO /* drop ATN */
p_mesgout_testretry:
test DINDEX,0xff jnz p_mesgout_outb
test DINDEX,0xff jnz p_mesgout_dropatn
or SCSISIGO,ATNO /* turn on ATN for the retry */
jmp p_mesgout_start
p_mesgout_dropatn:
cmp DINDEX,1 jne p_mesgout_outb /* last byte? */
mvi CLRSINT1,CLRATNO /* drop ATN */
p_mesgout_outb:
dec DINDEX
mvi CLRSINT0, CLRSPIORDY
@ -777,7 +775,7 @@ mesgin_identify:
*/
mvi ARG_1,SCB_LIST_NULL /* Default to no-tag */
snoop_tag_loop:
test SSTAT0,SPIORDY jz snoop_tag_loop
test SSTAT1,REQINIT jz snoop_tag_loop
test SSTAT1,PHASEMIS jnz use_findSCB
mvi A call inb_first
cmp A,MSG_SIMPLE_Q_TAG jne use_findSCB