Wrong dlastsga or slast setting if doff or soff larger than one
This commit is contained in:
parent
8976ded08a
commit
ba411fb53d
@ -362,7 +362,8 @@ static inline void imxrt_tcd_configure(struct imxrt_edmatcd_s *tcd,
|
|||||||
tcd->attr = EDMA_TCD_ATTR_SSIZE(config->ssize) | /* Transfer Attributes */
|
tcd->attr = EDMA_TCD_ATTR_SSIZE(config->ssize) | /* Transfer Attributes */
|
||||||
EDMA_TCD_ATTR_DSIZE(config->dsize);
|
EDMA_TCD_ATTR_DSIZE(config->dsize);
|
||||||
tcd->nbytes = config->nbytes;
|
tcd->nbytes = config->nbytes;
|
||||||
tcd->slast = config->flags & EDMA_CONFIG_LOOPSRC ? -config->iter : 0;
|
tcd->slast = config->flags & EDMA_CONFIG_LOOPSRC ?
|
||||||
|
-(config->iter * config->nbytes) : 0;
|
||||||
tcd->daddr = config->daddr;
|
tcd->daddr = config->daddr;
|
||||||
tcd->doff = config->doff;
|
tcd->doff = config->doff;
|
||||||
tcd->citer = config->iter & EDMA_TCD_CITER_CITER_MASK;
|
tcd->citer = config->iter & EDMA_TCD_CITER_CITER_MASK;
|
||||||
@ -371,7 +372,8 @@ static inline void imxrt_tcd_configure(struct imxrt_edmatcd_s *tcd,
|
|||||||
0 : EDMA_TCD_CSR_DREQ;
|
0 : EDMA_TCD_CSR_DREQ;
|
||||||
tcd->csr |= config->flags & EDMA_CONFIG_INTHALF ?
|
tcd->csr |= config->flags & EDMA_CONFIG_INTHALF ?
|
||||||
EDMA_TCD_CSR_INTHALF : 0;
|
EDMA_TCD_CSR_INTHALF : 0;
|
||||||
tcd->dlastsga = config->flags & EDMA_CONFIG_LOOPDEST ? -config->iter : 0;
|
tcd->dlastsga = config->flags & EDMA_CONFIG_LOOPDEST ?
|
||||||
|
-(config->iter * config->nbytes) : 0;
|
||||||
|
|
||||||
/* And special case flags */
|
/* And special case flags */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user