DMA transfers host data into InputFIFO from a chained list of command pairs. Write the physical byte address of the first list to DMACmdPtr, with Mode.DMA_En enabled. LowWaterMark must be at least three.
A command occupies eight bytes and must be double-word aligned. The even word is DMAAddress; the odd word is DMALength. A list must fit within one aligned 16 KB block.
| DMALength bits | Definition |
|---|---|
| 31 | One selects a link to another command list; zero selects a data transfer. |
| 30:24 | Ignored. |
| 23:2 | Transfer length in words; ignored for a link. |
| 1:0 | Data byte-swap selector; ignored for a link. |
DMAAddress is a word-aligned physical byte address for transfer data, or a pointer to the next command list. A link with a null address terminates DMA. The source states a maximum transfer length of 16 MB.
DMABusy asserts immediately when DMACmdPtr is written with a non-null pointer. It remains asserted until completion or stopping. Clearing Mode.DMA_En stops DMA. On completion, DMACmdPtr points to the last command. Completion can be tested through DMACmdPtr.DMABusy, MemEndian.DMABusy or DMAIntr.
DMA_Address and DMA_Length expose the current data address and remaining transfer count. These registers are read only. During a context switch, draining InputFIFO may be necessary after disabling DMA; use the specified save sequence.
Command-pair bit diagram · Mode · LowWaterMark · Swap selectors
Source: Technical Spec, p.50