summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1995-07-31 08:21:59 +0000
committergibbs <gibbs@FreeBSD.org>1995-07-31 08:21:59 +0000
commit8c18a11f08a7dd6d1c7c168f948e2ad4f2b6f085 (patch)
treee9c3b767fbe321f6979dde7441c38f898b42d7c7 /sys
parent1fd348a456d0d3e1a8304bd1aaaf358849de586d (diff)
downloadFreeBSD-src-8c18a11f08a7dd6d1c7c168f948e2ad4f2b6f085.zip
FreeBSD-src-8c18a11f08a7dd6d1c7c168f948e2ad4f2b6f085.tar.gz
Pause the sequencer when message only requests complete. This allows the
kernel driver to know the exact state of the sequencer after a BUS DEVICE RESET or ABORT completes so it can properly clean up the request.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index 3338c1c..053ba48 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -41,7 +41,7 @@
#
##-M#########################################################################
-VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.16 1995/05/17 07:05:49 davidg Exp $"
+VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.17 1995/07/04 20:58:57 gibbs Exp $"
SCBMASK = 0x1f
@@ -160,6 +160,7 @@ AWAITING_MSG = 0xa1 # Kernel requested to specify
# (command was null), so tell
# it that it can fill the
# message buffer.
+IMMEDDONE = 0xb1
# The host adapter card (at least the BIOS) uses 20-2f for SCSI
@@ -700,10 +701,15 @@ status_ok:
clear_a:
xor ACTIVE_A,A
+ test SCBARRAY+11,0xff jnz complete # Immediate message complete
+# Pause the sequencer until the driver gets around to handling the command
+# complete. This is so that any action that might require carefull timing
+# with the completion of this command can occur.
+ mvi INTSTAT,IMMEDDONE
+ jmp start
complete:
mov QOUTFIFO,SCBPTR
mvi INTSTAT,CMDCMPLT
- test SCBARRAY+11,0xff jz start # Immediate message complete
jmp p_mesgin_done
# If we have a residual count, interrupt and tell the host. Other
OpenPOWER on IntegriCloud