SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
When a TR is submitted for a given DMA/QDMA channel and its corresponding PaRAM set, the EDMA_TPCC is responsible for updating the PaRAM set in anticipation of the next trigger event. For events that are not final, this includes address and count updates; for final events, this includes the link update.
The specific PaRAM set entries that are updated depend on the channel’s synchronization type (A-synchronized or B-synchronized) and the current state of the PaRAM set. A B-update refers to the decrementing of EDMA_TPCC_ABCNT_n[31:16] BCNT in the case of A-synchronized transfers after the submission of successive TRs. A C-update refers to the decrementing of CCNT in the case of A-synchronized transfers after BCNT TRs for EDMA_TPCC_ABCNT_n[15:0] ACNT byte transfers have submitted. For AB-synchronized transfers, a C-update refers to the decrementing of EDMA_TPCC_CCNT_n[15:0] CCNT after submission of every transfer request.
Refer to Table 16-62 for details and conditions on the parameter updates. A link update occurs when the PaRAM set is exhausted, as described in Section 16.2.4.3.7 Linking Transfers.
After the TR is read from the PaRAM (and is in process of being submitted to EDMA_TPTC), the following fields are updated if needed:
The following fields are not updated (except for during linking, where all fields are overwritten by the link PaRAM set):
PaRAM updates only pertain to the information that is needed to properly submit the next transfer request to the EDMA_TPTC. Updates that occur while data is moved within a transfer request are tracked within the transfer controller, and is detailed in Section 16.2.4.12 EDMA Transfer Controller (EDMA_TPTC). For A-synchronized transfers, the EDMA_TPCC always submits a TRP for EDMA_TPCC_ABCNT_n[15:0] ACNT bytes (EDMA_TPCC_ABCNT_n[31:16] BCNT = 1 and EDMA_TPCC_CCNT_n[15:0] CCNT = 1). For AB-synchronized transfers, the EDMA_TPCC always submits a TRP for EDMA_TPCC_ABCNT_n[15:0] ACNT bytes of BCNT arrays (EDMA_TPCC_CCNT_n[15:0] CCNT = 1). The EDMA_TPTC is responsible for updating source and destination addresses within the array based on EDMA_TPCC_ABCNT_n[15:0] ACNT and EDMA_TPCC_OPT_n[10:8] FWID. For AB-synchronized transfers, the EDMA_TPTC is also responsible to update source and destination addresses between arrays based on EDMA_TPCC_BIDX_n[15:0] SBIDX and EDMA_TPCC_BIDX_n[31:16] DBIDX.
Table 16-62 shows the details of parameter updates that occur within EDMA_TPCC for A-synchronized and AB-synchronized transfers.
A-Synchronized Transfer | AB-Synchronized Transfer | |||||
---|---|---|---|---|---|---|
B-Update | C-Update | Link Update | B-Update | C-Update | Link Update | |
Condition: | BCNT > 1 | BCNT == 1 && CCNT > 1 | BCNT == 1 && CCNT == 1 | N/A | EDMA_TPCC_CCNT_n[15:0] CCNT > 1 | EDMA_TPCC_CCNT_n[15:0] CCNT == 1 |
SRC | += SBIDX | += SCIDX | = Link.EDMA_TPCC_SRC_n | in EDMA_TPTC | += SCIDX | = Link.EDMA_TPCC_SRC_n |
DST | += DBIDX | += DCIDX | = Link.EDMA_TPCC_DST_n | in EDMA_TPTC | += DCIDX | = Link.EDMA_TPCC_DST_n |
ACNT | None | None | = Link.EDMA_TPCC_ABCNT_n[15:0] ACNT | None | None | = Link.EDMA_TPCC_ABCNT_n[15:0] ACNT |
BCNT | –= 1 | = BCNTRLD | = Link.EDMA_TPCC_ABCNT_n[31:16] BCNT | in EDMA_TPTC | N/A | = Link.EDMA_TPCC_ABCNT_n[31:16] BCNT |
CCNT | None | –= 1 | = Link.EDMA_TPCC_CCNT_n[15:0] CCNT | in EDMA_TPTC | -=1 | = Link.EDMA_TPCC_CCNT_n[15:0] CCNT |
SBIDX | None | None | = Link.EDMA_TPCC_BIDX_n[15:0] SBIDX | in EDMA_TPTC | None | = Link.EDMA_TPCC_BIDX_n[15:0] SBIDX |
DBIDX | None | None | = Link.EDMA_TPCC_BIDX_n[31:16] DBIDX | None | None | = Link.EDMA_TPCC_BIDX_n[31:16] DBIDX |
SCIDX | None | None | = Link.EDMA_TPCC_BIDX_n[15:0] SBIDX | in EDMA_TPTC | None | = Link.EDMA_TPCC_BIDX_n[15:0] SBIDX |
DCIDX | None | None | = Link.EDMA_TPCC_BIDX_n[31:16] DBIDX | None | None | = Link.EDMA_TPCC_BIDX_n[31:16] DBIDX |
LINK | None | None | = Link.EDMA_TPCC_LNK_n[15:0]LINK | None | None | = Link.EDMA_TPCC_LNK_n[15:0]LINK |
BCNTRLD | None | None | = Link.EDMA_TPCC_LNK_n[31:16] BCNTRLD | None | None | = Link.EDMA_TPCC_LNK_n[31:16] BCNTRLD |
OPT(1) | None | None | = LINK.EDMA_TPCC_OPT_n | None | None | = LINK.EDMA_TPCC_OPT_n |
The EDMA_TPCC includes no special hardware to detect when an indexed address update calculation overflows/underflows. The address update will wrap across boundaries as programmed by the user. It should ensure that no transfer is allowed to cross internal port boundaries between peripherals. A single TR must target a single source/destination slave endpoint.