summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1996-12-03 17:04:51 +0000
committergibbs <gibbs@FreeBSD.org>1996-12-03 17:04:51 +0000
commit5d165f4a80daa955b17c1b1163ea3269810bc98d (patch)
tree7a0a399271b4eb2ae56fa58b79b64e2ae6ee6b80
parent608c221651aad09247a127375aaafa10e99703e0 (diff)
downloadFreeBSD-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.seq18
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
OpenPOWER on IntegriCloud