diff options
author | gibbs <gibbs@FreeBSD.org> | 1998-11-23 01:33:47 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1998-11-23 01:33:47 +0000 |
commit | ad7080d581f4d14be46b9ce97e1d89ab54565fd9 (patch) | |
tree | 7bab1dcb022f080626a0b5a06296e839a6d4c72a /sys/dev/aic7xxx/aic7xxx.reg | |
parent | 0b3bd2def8c0b1aad4cf5df500e9eb3c3947b7c8 (diff) | |
download | FreeBSD-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.reg | 26 |
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 + */ |