CX82100 Home Network Processor Data Sheet
The usage of each register for controlling the operation of the Embedded Tail Linked List
Descriptor mode is described below.
•
DMAC_{x}_Ptr1: Loaded with an initial pointer to a dword-aligned source buffer.
A copy of the pointer is automatically saved in DMAC_{x}_Ptr2 whenever
DMAC_{x}_Ptr1 is loaded with a new pointer. As each DMA request is processed,
DMAC_{x}_Ptr1 is incremented by one qword.
•
DMAC_{x}_Cnt1: Loaded with the number of qwords to be delivered to the
channel. This value includes the Ctl_Hdr, but not the link fields at the tail. A copy of
the counter value is automatically saved in DMAC_{x}_Cnt2 whenever
DMAC_{x}_Cnt1 is loaded with a new value. As each DMA request is processed,
DMAC_{x}_Cnt1 is decremented by one qword.
•
•
DMAC_{x}_Ptr2: Saves the beginning address of the current buffer in the list. This
pointer is required for EMAC re-transmission support.
DMAC_{x}_Cnt2: Saves the number of qwords to be delivered in the buffer pointed
by DMAC_{x}_Ptr2. This counter is required for EMAC re-transmission support.
When DMAC_{x}_Cnt1 = = 1, the DMAC will actually do two qword ASB transfers,
forwarding a qword to the APB, and keeping a qword to reload its current pointer
(DMAC_{x}_Ptr1 < = 1st dword of buffer’s appended qword) and counter
(DMAC_{x}_Cnt1 < = 2nd appended dword) for processing the next buffer. Thus the link
to the next source buffer is found at the tail of the current source buffer.
When using the embedded tail linked list descriptor for the EMAC transmission channels
(channels 1 and 3), the channels require "re-transmission" support. The re-transmission
support is outlined below for channel {x}.
1. When DMAC_{x}_Ptr1 is loaded, automatically save a copy to DMAC_{x}_Ptr2.
2. When DMAC_{x}_Cnt1 is loaded, automatically save a copy to DMAC_{x}_Cnt2.
3. At anytime the channel may decide to abort the packet and restart by signaling:
X{x}R < = DMA_RELD.
This causes the DMAC to re-initialize DMAC_{x}_Ptr1 and DMAC_{x}_Cnt1 to
DMAC_{x}_Ptr2 and DMAC_{x}_Cnt2, respectively. It is acceptable for a re-
transmission to begin after the channel has linked to other successive buffers. The
channel always re-starts at the beginning of the chain.
The EMAC transmission channels also require support for "going back to a saved
pointer" and saving a qword containing status of the transmitted packet. A qword can be
saved at the saved pointer (usually the start-of-pkt ptr, saved for restart) by signaling:
X{x}R < = DMA_XSAV.
This event does not affect the state of the current qword pointer. This data transfer
request is asking the DMAC to perform a data transfer in an opposite direction for a
normal transmitter source channel. However, this is very easy for the DMAC to handle.
To leave room for status to flow back to the data structure, the transmitter source channel
must use DMA_SAVE to save a pointer to the status section. It probably does not need to
open a hole with DMA_XNUL since it can overwrite data at the head or tail of the data
structure.
101306C
Conexant Proprietary and Confidential Information
4-11