lkml.org 
[lkml]   [2019]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] dmaengine: xilinx_dma: Reset DMA channel in dma_terminate_all
    On 25-11-19, 12:12, Radhey Shyam Pandey wrote:
    > Reset DMA channel after stop to ensure that pending transfers and FIFOs
    > in the datapath are flushed or completed. It fixes intermittent data
    > verification failure reported by xilinx dma test client.
    >
    > Signed-off-by: Radhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
    > ---
    > drivers/dma/xilinx/xilinx_dma.c | 17 +++++++++--------
    > 1 file changed, 9 insertions(+), 8 deletions(-)
    >
    > diff --git a/drivers/dma/xilinx/xilinx_dma.c b/drivers/dma/xilinx/xilinx_dma.c
    > index a9c5d5c..6f1539c 100644
    > --- a/drivers/dma/xilinx/xilinx_dma.c
    > +++ b/drivers/dma/xilinx/xilinx_dma.c
    > @@ -2404,16 +2404,17 @@ static int xilinx_dma_terminate_all(struct dma_chan *dchan)
    > u32 reg;
    > int err;
    >
    > - if (chan->cyclic)
    > - xilinx_dma_chan_reset(chan);

    So reset is required for non cyclic cases as well now?

    > -
    > - err = chan->stop_transfer(chan);
    > - if (err) {
    > - dev_err(chan->dev, "Cannot stop channel %p: %x\n",
    > - chan, dma_ctrl_read(chan, XILINX_DMA_REG_DMASR));
    > - chan->err = true;
    > + if (!chan->cyclic) {
    > + err = chan->stop_transfer(chan);

    no stop for cyclic now..?

    > + if (err) {
    > + dev_err(chan->dev, "Cannot stop channel %p: %x\n",
    > + chan, dma_ctrl_read(chan,
    > + XILINX_DMA_REG_DMASR));
    > + chan->err = true;
    > + }
    > }
    >
    > + xilinx_dma_chan_reset(chan);
    > /* Remove and free all of the descriptors in the lists */
    > xilinx_dma_free_descriptors(chan);
    > chan->idle = true;
    > --
    > 2.7.4

    --
    ~Vinod

    \
     
     \ /
      Last update: 2019-12-10 07:02    [W:2.416 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site