mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
dmaengine: xilinx_dma: Configure parking registers only if parking enabled
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>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user