summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx/aic7xxx.reg
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1998-11-23 01:33:47 +0000
committergibbs <gibbs@FreeBSD.org>1998-11-23 01:33:47 +0000
commitad7080d581f4d14be46b9ce97e1d89ab54565fd9 (patch)
tree7bab1dcb022f080626a0b5a06296e839a6d4c72a /sys/dev/aic7xxx/aic7xxx.reg
parent0b3bd2def8c0b1aad4cf5df500e9eb3c3947b7c8 (diff)
downloadFreeBSD-src-ad7080d581f4d14be46b9ce97e1d89ab54565fd9.zip
FreeBSD-src-ad7080d581f4d14be46b9ce97e1d89ab54565fd9.tar.gz
Change the delivery mechanism for incoming target commands. We now
use a 256 entry ring buffer of descriptersfor this purpose. This allows the use of a simple 8bit counter in the sequencer code for tracking start location. Entries in the ring buffer now contain a "cmd_valid" byte at their tail. As an entry is serviced, this byte is cleared by the kernel and set by the sequencer during its dma of a new entry. Since this byte is the last portion of the command touched during a dma, the kernel can use this byte to ensure the command it processes is completely valid. The new command format requires a fixed sized DMA from the controller to deliver which allowed for additional simplification of the sequencer code. The hack that required 1 SCB slot to be stolen for incoming command delivery notification is also gone.
Diffstat (limited to 'sys/dev/aic7xxx/aic7xxx.reg')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.reg26
1 files changed, 21 insertions, 5 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.reg b/sys/dev/aic7xxx/aic7xxx.reg
index fff2b6f..a6ab963 100644
--- a/sys/dev/aic7xxx/aic7xxx.reg
+++ b/sys/dev/aic7xxx/aic7xxx.reg
@@ -32,7 +32,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx.reg,v 1.4 1997/06/27 19:38:39 gibbs Exp $
+ * $Id: aic7xxx.reg,v 1.7 1998/09/15 07:24:16 gibbs Exp $
*/
/*
@@ -763,6 +763,16 @@ register DFSTATUS {
bit FIFOEMP 0x01
}
+register DFWADDR {
+ address 0x95
+ access_mode RW
+}
+
+register DFRADDR {
+ address 0x97
+ access_mode RW
+}
+
register DFDAT {
address 0x099
access_mode RW
@@ -1255,10 +1265,14 @@ scratch_ram {
size 1
}
/*
- * Offset into the command descriptor array for the next
- * available desciptor to use.
+ * Kernel and sequencer offsets into the queue of
+ * incoming target mode command descriptors. The
+ * queue is full when the ((KERNEL_TQINPOS - TQINPOS) == 1)
*/
- TMODE_CMDADDR_NEXT {
+ KERNEL_TQINPOS {
+ size 1
+ }
+ TQINPOS {
size 1
}
ARG_1 {
@@ -1360,5 +1374,7 @@ const CMD_GROUP5_BYTE_DELTA 11
/*
* Number of command descriptors in the command descriptor array.
- */
+ * No longer used, but left here as an example for how downloaded
+ * constantants can be defined.
const TMODE_NUMCMDS download
+ */
OpenPOWER on IntegriCloud