LF-5479: dmaengine: imx-sdma: sdma memcpy test fail
authorJoy Zou <joy.zou@nxp.com>
Tue, 15 Feb 2022 09:45:28 +0000 (17:45 +0800)
committerJosep Orga <jorga@somdevices.com>
Tue, 27 Jun 2023 14:03:29 +0000 (16:03 +0200)
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>
drivers/dma/imx-sdma.c

index dba5f9d..0fadcd3 100644 (file)
@@ -1801,8 +1801,10 @@ static struct sdma_desc *sdma_transfer_init(struct sdma_channel *sdmac,
                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;