Below described in RM, otherwise, channel error status(CHa_ES)
may be triggered:
The user must clear the CHa_CSR[DONE] bit before writing the
TCDa_CSR[MAJORELINK] or TCDa_CSR[ESG] bits.
Signed-off-by: Robin Gong <yibin.gong@nxp.com>
writel(le32_to_cpu(tcd->dlast_sga), addr + EDMA_TCD_DLAST_SGA);
+ /* Must clear CHa_CSR[DONE] bit before enable TCDa_CSR[ESG] */
+ if ((EDMA_TCD_CSR_E_SG | le16_to_cpu(tcd->csr)) &&
+ EDMA_CH_CSR_DONE | readl(addr + EDMA_CH_CSR))
+ writel(EDMA_CH_CSR_DONE, addr + EDMA_CH_CSR);
+
writew(le16_to_cpu(tcd->csr), addr + EDMA_TCD_CSR);
}