dmaengine: xilinx_dma: Fix 64-bit simple CDMA transfer
authorRadhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Sat, 29 Sep 2018 17:18:00 +0000 (11:18 -0600)
committerVinod Koul <vkoul@kernel.org>
Sun, 11 Nov 2018 10:33:53 +0000 (16:03 +0530)
In AXI CDMA simple mode also pass MSB bits of source and destination
address to xilinx_write function. This fixes simple CDMA operation
mode using 64-bit addressing.

Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Appana Durga Kedareswara Rao <appana.durga.rao@xilinx.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/xilinx/xilinx_dma.c

index 153ca58..0288096 100644 (file)
@@ -1247,8 +1247,10 @@ static void xilinx_cdma_start_transfer(struct xilinx_dma_chan *chan)
 
                hw = &segment->hw;
 
-               xilinx_write(chan, XILINX_CDMA_REG_SRCADDR, hw->src_addr);
-               xilinx_write(chan, XILINX_CDMA_REG_DSTADDR, hw->dest_addr);
+               xilinx_write(chan, XILINX_CDMA_REG_SRCADDR,
+                            xilinx_prep_dma_addr_t(hw->src_addr));
+               xilinx_write(chan, XILINX_CDMA_REG_DSTADDR,
+                            xilinx_prep_dma_addr_t(hw->dest_addr));
 
                /* Start the transfer */
                dma_ctrl_write(chan, XILINX_DMA_REG_BTT,