diff options
author | gibbs <gibbs@FreeBSD.org> | 1996-12-03 17:04:51 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1996-12-03 17:04:51 +0000 |
commit | 5d165f4a80daa955b17c1b1163ea3269810bc98d (patch) | |
tree | 7a0a399271b4eb2ae56fa58b79b64e2ae6ee6b80 | |
parent | 608c221651aad09247a127375aaafa10e99703e0 (diff) | |
download | FreeBSD-src-5d165f4a80daa955b17c1b1163ea3269810bc98d.zip FreeBSD-src-5d165f4a80daa955b17c1b1163ea3269810bc98d.tar.gz |
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.
-rw-r--r-- | sys/dev/aic7xxx/aic7xxx.seq | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq index 56a4adb..1c2772e 100644 --- a/sys/dev/aic7xxx/aic7xxx.seq +++ b/sys/dev/aic7xxx/aic7xxx.seq @@ -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 |