Frankly speaking, we failed to move data between memory using sdma, our kernel branch is 'imx_4.1.15_2.0.0_ga', the steps of our dma test is below,
1) dma_request_channel() to get the available sdma channel
2) dma alloc the source buffer and dest buffer
3) dmaengine_slave_config() to config the dma direction to be DMA_MEM_TO_MEM
4) dma_map_sg() to map the source and desc buffer into scatterlist
5) device_prep_dma_sg() to process the scatterlist
6) dmaengine_submit() and wait_for_completion()
We found that the sdma will not work once we pend the request to such dma channel, it is blocked in waiting for completion, such a weird thing! By the way, imx's uart can employ the sdma in DMA_MEM_TO_DEV way that the sdma will be gererated.
Is there anybody who tested DMA_MEM_TO_MEM over imx6sx board of the kernel 'imx_4.1.15_2.0.0_ga'?