summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1996-06-08 06:54:06 +0000
committergibbs <gibbs@FreeBSD.org>1996-06-08 06:54:06 +0000
commitd8a5f8423330788644aaff7c961193795f569694 (patch)
tree51299fac0d585e006444ca49e8e239f028083822 /sys/dev
parentdca5ec165f1eaf7fc7cb1b5e3c0674ee4ccbadbf (diff)
downloadFreeBSD-src-d8a5f8423330788644aaff7c961193795f569694.zip
FreeBSD-src-d8a5f8423330788644aaff7c961193795f569694.tar.gz
Hopefully fix the parity problem and the hang on message reject for good.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq17
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index ccd88b4..4613d9f 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.39 1996/05/30 14:31:08 gibbs Exp $"
+VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.40 1996/05/31 06:30:15 gibbs Exp $"
#if defined(__NetBSD__)
#include "../../../../dev/ic/aic7xxxreg.h"
@@ -83,6 +83,11 @@ reset:
start:
and FLAGS,0x0f /* 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.
+ */
poll_for_work:
/*
* Are we a twin channel device?
@@ -274,9 +279,9 @@ ultra_b:
set_sxfrctl0:
mov SXFRCTL0,SINDEX
- mov SCSISEQ,ALLZEROS /*
- * Don't allow (re)selections
- * until after the next busfree.
+ mvi SCSISEQ,ENAUTOATNP /*
+ * ATN on parity errors
+ * for "in" phases
*/
mvi CLRSINT1,CLRBUSFREE
mvi CLRSINT0,0x60 /* CLRSELDI|CLRSELDO */
@@ -499,10 +504,11 @@ p_mesgout_start:
* a MESSAGE REJECT.
*/
p_mesgout_loop:
+ test SSTAT1,PHASEMIS jnz p_mesgout_phasemis
test SSTAT0,SPIORDY jz p_mesgout_loop
+ test SSTAT1,PHASEMIS jnz p_mesgout_phasemis
cmp DINDEX,1 jne p_mesgout_outb /* last byte? */
mvi CLRSINT1,CLRATNO /* drop ATN */
- test SSTAT1,PHASEMIS jnz p_mesgout_phasemis
p_mesgout_outb:
dec DINDEX
or CLRSINT0, CLRSPIORDY
@@ -866,6 +872,7 @@ inb_next:
or CLRSINT0, CLRSPIORDY
mov NONE,SCSIDATL /*dummy read from latch to ACK*/
inb_next_wait:
+ test SSTAT1,PHASEMIS jnz mesgin_phasemis
test SSTAT0,SPIORDY jz inb_next_wait /* wait for next byte */
inb_first:
mov DINDEX,SINDEX
OpenPOWER on IntegriCloud