> -----Original Message----- > From: Marek Vasut <marex@xxxxxxx> > Sent: Thursday, October 31, 2024 10:41 PM > To: dmaengine@xxxxxxxxxxxxxxx > Cc: Marek Vasut <marex@xxxxxxx>; Uwe Kleine-König <u.kleine- > koenig@xxxxxxxxxxxx>; Simek, Michal <michal.simek@xxxxxxx>; Peter Korsgaard > <peter@xxxxxxxxxxxxx>; Pandey, Radhey Shyam > <radhey.shyam.pandey@xxxxxxx>; Vinod Koul <vkoul@xxxxxxxxxx>; linux-arm- > kernel@xxxxxxxxxxxxxxxxxxx > Subject: [PATCH] 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@xxxxxxx> Reviewed-by: Radhey Shyam Pandey <radhey.shyam.pandey@xxxxxxx> Thanks! > --- > Cc: "Uwe Kleine-König" <u.kleine-koenig@xxxxxxxxxxxx> > Cc: Michal Simek <michal.simek@xxxxxxx> > Cc: Peter Korsgaard <peter@xxxxxxxxxxxxx> > Cc: Radhey Shyam Pandey <radhey.shyam.pandey@xxxxxxx> > Cc: Vinod Koul <vkoul@xxxxxxxxxx> > Cc: dmaengine@xxxxxxxxxxxxxxx > Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > --- > drivers/dma/xilinx/xilinx_dma.c | 20 +++++++++++--------- > 1 file changed, 11 insertions(+), 9 deletions(-) > > diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dma.c index > 48647c8a64a5b..87db381ff1286 100644 > --- a/drivers/dma/xilinx/xilinx_dma.c > +++ b/drivers/dma/xilinx/xilinx_dma.c > @@ -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); > -- > 2.45.2