summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx
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 /sys/dev/aic7xxx
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.
Diffstat (limited to 'sys/dev/aic7xxx')
-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