beautypg.com

Sundance Spas ST201 User Manual

Page 79

background image

79

Sundance Technology

ST201

PRELIMINARY draft 2

TXDMALISTPTR

Class....................I/O Registers, DMA

Base Address ......IoBaseAddress register value

Address Offset .....0x04

Access Mode .......Read/Write

Width ...................32 bits

TxDMAListPtr holds the physical address of the current TxDMA Frame Descriptor in the TxDMAList. A
value of zero in TxDMAListPtr is interpreted by the ST201 to mean that no more frames remain to be trans-
ferred by TxDMA. TxDMAListPtr can only point to addresses on 8-byte boundaries, so TFD’s must be
aligned on 8-byte boundaries. TxDMAListPtr is cleared by reset. TxDMAListPtr may be written directly by
the host system to point the ST201 at the head of a newly created TxDMAList. Writes to TxDMAListPtr are
ignored while the current value in TxDMAListPtr is non-zero. To avoid access conflicts between the ST201
and the host system, the host system must issue a TxDMAHalt before writing to TxDMAListPtr (unless the
host system has specific knowledge that TxDMAListPtr contains zero). TxDMAListPtr is also updated by
the ST201 as it processes TFD’s in the TxDMAList. As the ST201 finishes processing a TFD, it fetches the
value from TxDMANextPtr. If it is zero, the TxDMA engine becomes idle. Also, if TxDMA polling is enabled
(TxDMAPollPeriod is non-zero), the old value in TxDMAListPtr is preserved. If the value fetched from TxD-
MANextPtr is non-zero, then the value is stored temporarily in the ST201, and the ST201 inspects the TFD
at that location. The temporary value is loaded into TxDMAListPtr, advancing the ST201 to the new TFD.
There are two ways the TxDMA engine can leave the idle state. First, the driver can write a nonzero value
directly to TxDMAListPtr. Second, if polling is enabled, then the TxDMA engine will leave the idle state
when a non-zero value is finally fetched from TxDMANextPtr. Reading TxDMAListPtr while the TxDMA
engine is polling has the following side effects:
1.

Any pending decision to advance to the next TFD is cancelled.

2.

The TxDMA engine fetches the TxDMANextPtr in the current (completed) TFD immediately, rather
than waiting for the full TxDMAPollPeriod interval. (It is assumed that the host system will only read
TxDMAListPtr when it is in the process of inserting a TFD at the list head, so it will have written a new
value into TxDMANextPtr to hook up the inserted TFD).

BIT

BIT NAME

BIT DESCRIPTION

31..0

TxDMAListPtr

Physical address, on a 8-byte boundary, of the current TFD in the TxD-
MAList.