summaryrefslogtreecommitdiff
path: root/sys/dev/microcode
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/microcode')
-rw-r--r--sys/dev/microcode/aic7xxx/aic7xxx.seq42
-rw-r--r--sys/dev/microcode/aic7xxx/aic7xxx_seq.h58
2 files changed, 56 insertions, 44 deletions
diff --git a/sys/dev/microcode/aic7xxx/aic7xxx.seq b/sys/dev/microcode/aic7xxx/aic7xxx.seq
index 5ea5983d338..c89421666c8 100644
--- a/sys/dev/microcode/aic7xxx/aic7xxx.seq
+++ b/sys/dev/microcode/aic7xxx/aic7xxx.seq
@@ -1,4 +1,4 @@
-/* $NetBSD: aic7xxx.seq,v 1.8 1998/04/16 07:07:37 leo Exp $ */
+/* $NetBSD: aic7xxx.seq,v 1.9 1998/07/03 23:45:10 mjacob Exp $ */
/*+M***********************************************************************
*Adaptec 274x/284x/294x device driver for Linux and FreeBSD.
@@ -43,7 +43,7 @@
*
*-M************************************************************************/
-VERSION AIC7XXX_SEQ_VER "$NetBSD: aic7xxx.seq,v 1.8 1998/04/16 07:07:37 leo Exp $"
+VERSION AIC7XXX_SEQ_VER "$NetBSD: aic7xxx.seq,v 1.9 1998/07/03 23:45:10 mjacob Exp $"
#if defined(__NetBSD__)
#include "../../ic/aic7xxxreg.h"
@@ -905,9 +905,9 @@ mesgin_phasemis:
*/
dma:
mov DFCNTRL,SINDEX
-dma1:
- test SSTAT0,DMADONE jnz dma3
- test SSTAT1,PHASEMIS jz dma1 /* ie. underrun */
+dma_loop:
+ test SSTAT0,DMADONE jnz dma_checkfifo
+ test SSTAT1,PHASEMIS jz dma_loop /* ie. underrun */
/*
* We will be "done" DMAing when the transfer count goes to zero, or
@@ -917,20 +917,30 @@ dma1:
* magically on STCNT=0 or a phase change, so just wait for FIFO empty
* status.
*/
-dma3:
- test SINDEX,DIRECTION jnz dma5
-dma4:
- test DFSTATUS,FIFOEMP jz dma4
-
+dma_checkfifo:
+ test DFCNTRL,DIRECTION jnz dma_fifoempty
+dma_fifoflush:
+ test DFSTATUS,FIFOEMP jz dma_fifoflush
+
+dma_fifoempty:
+ /* Don't clobber an inprogress host data transfer */
+ test DFSTATUS, MREQPEND jnz dma_fifoempty
/*
- * Now shut the DMA enables off and make sure that the DMA enables are
+ * Now shut the DMA enables off and make sure that the DMA enables are
* actually off first lest we get an ILLSADDR.
*/
-dma5:
- /* disable DMA, but maintain WIDEODD */
- and DFCNTRL,WIDEODD
-dma6:
- test DFCNTRL,0x38 jnz dma6 /* SCSIENACK|SDMAENACK|HDMAENACK */
+dma_dmadone:
+ and DFCNTRL, 0xc7 /* ~(SCSIEN|SDMAEN|HDMAEN); */
+dma_halt:
+ /*
+ * Some revisions of the aic7880 have a problem where, if the
+ * data fifo is full, but the PCI input latch is not empty,
+ * HDMAEN cannot be cleared. The fix used here is to attempt
+ * to drain the data fifo until there is space for the input
+ * latch to drain and HDMAEN de-asserts.
+ */
+ mov NONE, DFDAT
+ test DFCNTRL, HDMAEN jnz dma_halt
return:
ret
diff --git a/sys/dev/microcode/aic7xxx/aic7xxx_seq.h b/sys/dev/microcode/aic7xxx/aic7xxx_seq.h
index d7332930280..efb0c1b8f4f 100644
--- a/sys/dev/microcode/aic7xxx/aic7xxx_seq.h
+++ b/sys/dev/microcode/aic7xxx/aic7xxx_seq.h
@@ -1,4 +1,4 @@
-#define AIC7XXX_SEQ_VER "$NetBSD: aic7xxx_seq.h,v 1.2 1996/10/08 03:04:07 gibbs Exp $"
+#define AIC7XXX_SEQ_VER "$NetBSD: aic7xxx_seq.h,v 1.3 1998/07/03 23:45:10 mjacob Exp $"
0xff, 0x6a, 0x93, 0x02,
0xff, 0x6a, 0x03, 0x02,
0x0f, 0x4a, 0x4a, 0x02,
@@ -33,7 +33,7 @@
0x08, 0xa1, 0x64, 0x02,
0x00, 0x65, 0x65, 0x00,
0xff, 0x65, 0x1f, 0x02,
- 0x00, 0xa1, 0x35, 0x17,
+ 0x00, 0xa1, 0x37, 0x17,
0x58, 0x6a, 0x00, 0x00,
0x40, 0xa0, 0x64, 0x02,
0x07, 0xa1, 0x35, 0x02,
@@ -50,13 +50,13 @@
0x40, 0x0b, 0x36, 0x1a,
0x20, 0x0b, 0x30, 0x1e,
0xff, 0x6a, 0x34, 0x02,
- 0x00, 0x19, 0x35, 0x17,
+ 0x00, 0x19, 0x37, 0x17,
0x80, 0x4a, 0x4a, 0x00,
0x00, 0x65, 0x38, 0x10,
0xff, 0xba, 0x4e, 0x02,
0x20, 0x4a, 0x4a, 0x00,
0x02, 0x01, 0x01, 0x00,
- 0x00, 0x65, 0x7c, 0x17,
+ 0x00, 0x65, 0x7e, 0x17,
0xff, 0x6c, 0x04, 0x02,
0xff, 0x05, 0x6e, 0x02,
0xff, 0x6e, 0x64, 0x02,
@@ -91,9 +91,9 @@
0xff, 0xab, 0x0a, 0x02,
0x00, 0x65, 0x60, 0x10,
0x79, 0x6a, 0x41, 0x00,
- 0x00, 0x65, 0x39, 0x17,
+ 0x00, 0x65, 0x3b, 0x17,
0x10, 0x4a, 0x57, 0x1a,
- 0x00, 0x65, 0x60, 0x17,
+ 0x00, 0x65, 0x62, 0x17,
0x10, 0x4a, 0x4a, 0x00,
0xff, 0x42, 0x65, 0x1a,
0x80, 0x02, 0x02, 0x00,
@@ -140,7 +140,7 @@
0x7f, 0x02, 0x02, 0x02,
0xe1, 0x6a, 0x91, 0x00,
0x00, 0x65, 0x48, 0x10,
- 0x00, 0x65, 0x39, 0x17,
+ 0x00, 0x65, 0x3b, 0x17,
0xff, 0xb4, 0x88, 0x02,
0xff, 0xb5, 0x89, 0x02,
0xff, 0xb6, 0x8a, 0x02,
@@ -240,7 +240,7 @@
0xff, 0x4f, 0x90, 0x02,
0x10, 0x6a, 0x60, 0x00,
0x00, 0x65, 0xbd, 0x10,
- 0x00, 0x65, 0x6f, 0x17,
+ 0x00, 0x65, 0x71, 0x17,
0x00, 0x65, 0xbd, 0x10,
0xef, 0x4a, 0x4a, 0x02,
0x00, 0x65, 0xbd, 0x10,
@@ -263,7 +263,7 @@
0x00, 0x65, 0x12, 0x13,
0x04, 0x4a, 0x0c, 0x1f,
0x00, 0x65, 0x2a, 0x17,
- 0x00, 0x6a, 0x3c, 0x17,
+ 0x00, 0x6a, 0x3e, 0x17,
0xfb, 0xa0, 0xa0, 0x02,
0x40, 0x4a, 0x4a, 0x00,
0x00, 0x65, 0x48, 0x10,
@@ -303,35 +303,37 @@
0xff, 0x65, 0x93, 0x02,
0x01, 0x0b, 0x30, 0x1b,
0x10, 0x0c, 0x2e, 0x1f,
- 0x04, 0x65, 0x32, 0x1b,
+ 0x04, 0x93, 0x32, 0x1b,
0x01, 0x94, 0x31, 0x1f,
- 0x40, 0x93, 0x93, 0x02,
- 0x38, 0x93, 0x33, 0x1b,
+ 0x10, 0x94, 0x32, 0x1b,
+ 0xc7, 0x93, 0x93, 0x02,
+ 0xff, 0x99, 0x6a, 0x02,
+ 0x08, 0x93, 0x34, 0x1b,
0xff, 0x6a, 0x6a, 0x03,
0xf0, 0x65, 0x65, 0x02,
0x0f, 0x05, 0x64, 0x02,
0x00, 0x65, 0x65, 0x00,
0xff, 0x65, 0x05, 0x03,
- 0x80, 0x4a, 0x34, 0x1f,
- 0x40, 0x4a, 0x34, 0x1b,
+ 0x80, 0x4a, 0x36, 0x1f,
+ 0x40, 0x4a, 0x36, 0x1b,
0x21, 0x6a, 0x91, 0x01,
0xff, 0x4b, 0x64, 0x02,
0xff, 0x65, 0x90, 0x02,
0x50, 0x6a, 0x60, 0x00,
- 0x00, 0xa1, 0x54, 0x19,
- 0x04, 0xa0, 0x54, 0x1f,
- 0x20, 0xa0, 0x44, 0x1b,
- 0xff, 0x3e, 0x46, 0x1d,
- 0x00, 0x65, 0x54, 0x11,
+ 0x00, 0xa1, 0x56, 0x19,
+ 0x04, 0xa0, 0x56, 0x1f,
+ 0x20, 0xa0, 0x46, 0x1b,
+ 0xff, 0x3e, 0x48, 0x1d,
+ 0x00, 0x65, 0x56, 0x11,
0xff, 0x3e, 0x64, 0x02,
- 0x00, 0xb9, 0x54, 0x19,
- 0x04, 0x4a, 0x53, 0x1f,
- 0xff, 0xba, 0x4c, 0x1d,
+ 0x00, 0xb9, 0x56, 0x19,
+ 0x04, 0x4a, 0x55, 0x1f,
+ 0xff, 0xba, 0x4e, 0x1d,
0xff, 0xbb, 0x50, 0x02,
0xff, 0xba, 0x90, 0x02,
0xff, 0x50, 0xbb, 0x02,
0xff, 0x65, 0x90, 0x02,
- 0xff, 0xbb, 0x52, 0x1d,
+ 0xff, 0xbb, 0x54, 0x1d,
0xff, 0xba, 0x50, 0x02,
0xff, 0xbb, 0x90, 0x02,
0xff, 0x50, 0xba, 0x02,
@@ -342,11 +344,11 @@
0x10, 0x6a, 0x60, 0x00,
0x01, 0x65, 0x65, 0x06,
0xff, 0x47, 0x64, 0x02,
- 0x00, 0x65, 0x3c, 0x19,
+ 0x00, 0x65, 0x3e, 0x19,
0x31, 0x6a, 0x91, 0x00,
- 0x10, 0x3f, 0x34, 0x1d,
+ 0x10, 0x3f, 0x36, 0x1d,
0x10, 0x03, 0x03, 0x00,
- 0xff, 0x3e, 0x5e, 0x19,
+ 0xff, 0x3e, 0x60, 0x19,
0x06, 0x6a, 0x1c, 0x17,
0x00, 0x65, 0x48, 0x10,
0x0d, 0x6a, 0x1c, 0x17,
@@ -366,7 +368,7 @@
0xff, 0xa5, 0x44, 0x02,
0xff, 0xa6, 0x45, 0x02,
0xff, 0xa7, 0x46, 0x03,
- 0x10, 0x4a, 0x34, 0x1f,
+ 0x10, 0x4a, 0x36, 0x1f,
0xff, 0x42, 0xa3, 0x02,
0xff, 0x43, 0xa4, 0x02,
0xff, 0x44, 0xa5, 0x02,
@@ -380,6 +382,6 @@
0xff, 0xaa, 0xb1, 0x02,
0xff, 0xab, 0xb2, 0x03,
0x4c, 0x05, 0x64, 0x0a,
- 0x08, 0x1f, 0x7f, 0x1f,
+ 0x08, 0x1f, 0x81, 0x1f,
0x08, 0x64, 0x64, 0x00,
0x20, 0x64, 0x65, 0x07,