The sdma memcpy test fail due to the channel priority not configured.
The sdma_config_write-> sdma_config_channel-> sdma_set_channel_priority
didn't be called in memcpy, So there are only memcpy test fail.
The test fail log :
root@imx8mnevk:~# echo 2000 > /sys/module/dmatest/parameters/timeout
root@imx8mnevk:~# echo 1 > /sys/module/dmatest/parameters/iterations
root@imx8mnevk:~# echo dma0chan1 > /sys/module/dmatest/parameters/channel [ 248.264090] dmatest: Added 1 threads using dma0chan1
root@imx8mnevk:~# echo 1 > /sys/module/dmatest/parameters/run
[ 253.961791] dmatest: Started 1 threads using dma0chan1
root@imx8mnevk:~# [ 255.967043] dmatest: dma0chan1-copy0: result #1: 'test timed out' with src_off=0xc4 dst_off=0x3c len=0x3ec0 (0)
[ 255.977236] dmatest: dma0chan1-copy0: summary 1 tests, 1 failures 0.49 iops 7 KB/s (0)
This patch adds sdma_set_channel_priority for memcpy in transfer_init.
Fixes:
111097595c1c ("MLK-25465-1 dmaengine: imx-sdma: move runtime behind to transfer phase")
Signed-off-by: Joy Zou <joy.zou@nxp.com>
Reviewed by: Dong Aisheng <aisheng.dong@nxp.com>
Acked-by: Jason Liu <jason.hui.liu@nxp.com>
goto err_desc_out;
/* No slave_config called in MEMCPY case, so do here */
- if (direction == DMA_MEM_TO_MEM)
+ if (direction == DMA_MEM_TO_MEM) {
sdma_config_ownership(sdmac, false, true, false);
+ sdma_set_channel_priority(sdmac, sdmac->prio);
+ }
if (sdma_load_context(sdmac))
goto err_desc_out;