]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dmaengine: xilinx_dma: Configure parking registers only if parking enabled
authorMarek Vasut <marex@denx.de>
Thu, 31 Oct 2024 17:11:04 +0000 (18:11 +0100)
committerVinod Koul <vkoul@kernel.org>
Mon, 2 Dec 2024 17:00:41 +0000 (22:30 +0530)
The VDMA can work in two modes, parking or circular. Do not program the
parking mode registers in case circular mode is used, it is useless.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
Link: https://lore.kernel.org/r/20241031171132.56861-1-marex@denx.de
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/xilinx/xilinx_dma.c

index 1bdd57de87a6e859e9466443ab15c65415446af6..108a7287f4cd0d50b51384d5d3cd592445ef7c22 100644 (file)
@@ -1404,16 +1404,18 @@ static void xilinx_vdma_start_transfer(struct xilinx_dma_chan *chan)
 
        dma_ctrl_write(chan, XILINX_DMA_REG_DMACR, reg);
 
-       j = chan->desc_submitcount;
-       reg = dma_read(chan, XILINX_DMA_REG_PARK_PTR);
-       if (chan->direction == DMA_MEM_TO_DEV) {
-               reg &= ~XILINX_DMA_PARK_PTR_RD_REF_MASK;
-               reg |= j << XILINX_DMA_PARK_PTR_RD_REF_SHIFT;
-       } else {
-               reg &= ~XILINX_DMA_PARK_PTR_WR_REF_MASK;
-               reg |= j << XILINX_DMA_PARK_PTR_WR_REF_SHIFT;
+       if (config->park) {
+               j = chan->desc_submitcount;
+               reg = dma_read(chan, XILINX_DMA_REG_PARK_PTR);
+               if (chan->direction == DMA_MEM_TO_DEV) {
+                       reg &= ~XILINX_DMA_PARK_PTR_RD_REF_MASK;
+                       reg |= j << XILINX_DMA_PARK_PTR_RD_REF_SHIFT;
+               } else {
+                       reg &= ~XILINX_DMA_PARK_PTR_WR_REF_MASK;
+                       reg |= j << XILINX_DMA_PARK_PTR_WR_REF_SHIFT;
+               }
+               dma_write(chan, XILINX_DMA_REG_PARK_PTR, reg);
        }
-       dma_write(chan, XILINX_DMA_REG_PARK_PTR, reg);
 
        /* Start the hardware */
        xilinx_dma_start(chan);