aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorJustin T. Gibbs <gibbs@FreeBSD.org>1996-12-03 17:04:51 +0000
committerJustin T. Gibbs <gibbs@FreeBSD.org>1996-12-03 17:04:51 +0000
commit3d9ab968cd84adc00f5c1ef786f37cbb51e72f21 (patch)
tree7a0a399271b4eb2ae56fa58b79b64e2ae6ee6b80 /sys/dev
parent673f8923d0af5ad69542bf60d026c49c4c99d57f (diff)
downloadsrc-3d9ab968cd84adc00f5c1ef786f37cbb51e72f21.tar.gz
src-3d9ab968cd84adc00f5c1ef786f37cbb51e72f21.zip
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.
Notes
Notes: svn path=/head/; revision=20117
Diffstat (limited to 'sys/dev')
-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 56a4adbd93e7..1c2772e3f185 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