dmaengine: dw-edma: Fix missing src/dst address of interleaved xfers
Interleaved DMA transfer support was added by85e7518f42
("dmaengine: dw-edma: Add device_prep_interleave_dma() support"), but depending on the selected channel, either source or destination address are left uninitialized which was obviously wrong. Initialize the destination address of the eDMA burst descriptors for DEV_TO_MEM interleaved operations and the source address for MEM_TO_DEV operations. Link: https://lore.kernel.org/r/20230113171409.30470-5-Sergey.Semin@baikalelectronics.ru Fixes:85e7518f42
("dmaengine: dw-edma: Add device_prep_interleave_dma() support") Tested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru> Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Acked-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
002bbaa2f6
commit
13b6299cf6
@ -455,6 +455,8 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer)
|
||||
* and destination addresses are increased
|
||||
* by the same portion (data length)
|
||||
*/
|
||||
} else if (xfer->type == EDMA_XFER_INTERLEAVED) {
|
||||
burst->dar = dst_addr;
|
||||
}
|
||||
} else {
|
||||
burst->dar = dst_addr;
|
||||
@ -470,6 +472,8 @@ dw_edma_device_transfer(struct dw_edma_transfer *xfer)
|
||||
* and destination addresses are increased
|
||||
* by the same portion (data length)
|
||||
*/
|
||||
} else if (xfer->type == EDMA_XFER_INTERLEAVED) {
|
||||
burst->sar = src_addr;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user