69rlq62d-f714peg4 * Memec (Headquar
ter
s) - Unique
Tec
h,
Insight,
Impact
MAR
VELL CONFIDENTIAL,
UNDER ND
A# 12101050
69rlq62d-f714peg4 * Memec (Headquar
ter
s) - Unique
Tec
h,
Insight,
Impact
MAR
VELL CONFIDENTIAL,
UNDER ND
A# 12101050
69r
lq62d-f714peg4 * Memec (Headquar
ters) - Unique
T
ech, Insight, Impact * UNDER ND
A# 12101050
MAR
VELL CONFIDENTIAL - UNA
UTHORIZED DISTRIB
UTION OR USE STRICTL
Y PR
OHIBITED
PXA300 Processor and PXA310 Processor
Vol. I: System and Timer Configuration Developers Manual
Doc. No. MV-TBD-00 Rev. A
CONFIDENTIAL
Copyright © 12/13/06 Marvell
Page 298
Document Classification: Proprietary Information
December 13, 2006
Not approved by Document Control. For review only.
•
Word [3] contains a value for the DCMDx register.
The DMAC can be operated in two distinct modes based on the DCSRx[NODESCFETCH] bit:
•
DCSRx[NODESCFETCH] = 0 - Descriptor-fetch transfer
•
DCSRx[NODESCFETCH] = 1 - No-descriptor-fetch transfer
11.3.2.1
Descriptor-Fetch Transfer Operation
Descriptor-fetch transfers (DCSRx[NODESCFETCH] = 0) operate in the following manner.
Software must first clear the DCSRx[RUN] bit and then clear the DCSRx[NODESCFETCH] bit. Software must
write a valid descriptor address to the DDADRx register and then set DCSRx[RUN]. Doing so in this order
enables the DMAC to fetch the four-word descriptor (if the memory is already set up with the descriptor chain)
from the memory that the DDADRx register indicates. The channel either waits for a request or starts the data
transfer, as determined by the DCMDx[FLOW] source and target bits. After the channel transfers a number of
bytes equal to the smaller of DCMDx[SIZE] and DCMDx[LEN], it either waits for the next request or continues
with the data transfer until the DCMDx[LEN] reaches zero. The channel stops or continues with a new descriptor
fetch from the memory, as determined by the DDADRx[STOP] bit.
summarizes this operation.
If an error occurs during the fetch operation, the channel enters the stopped state and remains there unless the
software clears the error condition, re-initializes the channel, and sets the DCSRx[RUN] bit.
When a channel switches between a descriptor-fetch transfer and a no-descriptor-fetch transfer, it must be
stopped before the mode switch.
For a descriptor-fetch transfer, the software must load the DDADRx register and set the DCSRx[RUN] bit. The
channel-descriptor fetch does not occur unless the DCSRx[RUN] bit is set.
Although software loads the DDADRx register, the DSADRx, DTADRx, and DCMDx registers must be loaded
indirectly from the DMA descriptors. The DMA descriptors pointed to by the DDADRx register are loaded into
the registers of the associated DMA channel when a write to the DCSRx[RUN] bit switches the channel from
stopped to running.
Bit [0] (STOP) of word [0] of a DMA descriptor (the low bit of the DDADRx field) is used to mark the special
descriptor, which resides at the end of a descriptor list. The value of the stop bit does not affect the loading of the
fields of a descriptor into Channel registers in any way; however, if a descriptor with the stop bit set is loaded
into a Channel register, then the channel stops after completely transferring the data pertaining to that channel.