lkml.org 
[lkml]   [2023]   [Oct]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v2 2/2] dmaengine: xilinx: xdma: Support cyclic transfers
Hi Vinod,

Thanks for the feedback.

vkoul@kernel.org wrote on Thu, 28 Sep 2023 16:24:31 +0530:

> On 22-09-23, 18:20, Miquel Raynal wrote:
>
> > @@ -583,7 +690,36 @@ static int xdma_alloc_chan_resources(struct dma_chan *chan)
> > static enum dma_status xdma_tx_status(struct dma_chan *chan, dma_cookie_t cookie,
> > struct dma_tx_state *state)
> > {
> > - return dma_cookie_status(chan, cookie, state);
> > + struct xdma_chan *xdma_chan = to_xdma_chan(chan);
> > + struct xdma_desc *desc = NULL;
> > + struct virt_dma_desc *vd;
> > + enum dma_status ret;
> > + unsigned long flags;
> > + unsigned int period_idx;
> > + u32 residue = 0;
> > +
> > + ret = dma_cookie_status(chan, cookie, state);
> > + if (ret == DMA_COMPLETE)
> > + return ret;
> > +
> > + spin_lock_irqsave(&xdma_chan->vchan.lock, flags);
> > +
> > + vd = vchan_find_desc(&xdma_chan->vchan, cookie);
> > + if (vd)
> > + desc = to_xdma_desc(vd);
>
> vd is not used in below check, so should be done after below checks, why
> do this for cyclic case?

I'm not sure I get this comment. vd is my way to get the descriptor,
and I need the descriptor to know whether we are in a cyclic transfer
or not. If the transfer is not cyclic, I just return the value from
dma_cookie_status() like before, otherwise I update the residue based
on the content of desc.

Maybe I don't understand what you mean, would you mind explaining it
again?

> Otherwise series lgtm, just fix the error reported by test bot

I will.

>
> > + if (!desc || !desc->cyclic) {
> > + spin_unlock_irqrestore(&xdma_chan->vchan.lock, flags);
> > + return ret;
> > + }


Thanks,
Miquèl

\
 
 \ /
  Last update: 2023-10-03 11:03    [W:0.089 / U:0.240 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site