Skip to content

Commit 7ab808e

Browse files
drivers: dma: dma_nxp_edma: support 64-bit TCD
On some EDMA versions, some TCD registers (e.g: SADDR, DADDR, SLAST, DLAST, etc...) are extended to 64 bits via adding a new HIGH register holding the value of bits [63:32]. Since, for now, the driver doesn't support 64-bit addresses, this scenario is supported by sign-extending the 32-bit value written to SLAST/DLAST. SADDR and DADDR are taken care of on HAL side. Signed-off-by: Laurentiu Mihalcea <[email protected]>
1 parent 44b05a2 commit 7ab808e

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

drivers/dma/dma_nxp_edma.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -514,6 +514,13 @@ static inline int set_slast_dlast(struct dma_config *dma_cfg,
514514
EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_SLAST_SDA, slast);
515515
EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_DLAST_SGA, dlast);
516516

517+
if (data->hal_cfg->flags & EDMA_HAS_64BIT_TCD_FLAG) {
518+
EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_SLAST_SDA_HIGH,
519+
slast >= 0x0 ? 0x0 : 0xffffffff);
520+
EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_DLAST_SGA_HIGH,
521+
dlast >= 0x0 ? 0x0 : 0xffffffff);
522+
}
523+
517524
return 0;
518525
}
519526

0 commit comments

Comments
 (0)