Re: [PATCH v2 03/19] dmaengine: dw-edma: Factor out linked-list transfer start

Frank Li <[email protected]>
Newsgroups org.kernel.vger.dmaengine,org.kernel.vger.linux-kernel
Message-ID <amJB2oLCzFNaifIt@SMW015318>
On Thu, Jul 23, 2026 at 05:41:34PM +0900, Koichiro Den wrote:
> Move linked-list programming into dw_edma_core_ll_start(). It can derive
> the first-batch state from desc->start_burst, so dw_edma_core_start() no
> longer needs a pass-through argument.
>
> No functional change intended.
>
> Signed-off-by: Koichiro Den <[email protected]>
> ---

Reviewed-by: Frank Li <[email protected]>

> Changes in v2:
>   - New patch.
>
>  drivers/dma/dw-edma/dw-edma-core.c | 29 +++++++++++++++++++----------
>  1 file changed, 19 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-edma-core.c
> index 1f893dc54c79..6a25a050b89c 100644
> --- a/drivers/dma/dw-edma/dw-edma-core.c
> +++ b/drivers/dma/dw-edma/dw-edma-core.c
> @@ -67,17 +67,11 @@ static void vchan_free_desc(struct virt_dma_desc *vdesc)
>  	kfree(vd2dw_edma_desc(vdesc));
>  }
>
> -static void dw_edma_core_start(struct dw_edma_desc *desc, bool first)
> +static void dw_edma_core_ll_start(struct dw_edma_desc *desc)
>  {
>  	struct dw_edma_chan *chan = desc->chan;
> -	size_t i = 0;
> -
> -	if (chan->non_ll) {
> -		chan->dw->core->non_ll_start(chan, &desc->burst[desc->start_burst]);
> -		desc->done_burst = desc->start_burst;
> -		desc->start_burst += 1;
> -		return;
> -	}
> +	size_t i;
> +	bool first = !desc->start_burst;
>
>  	for (i = 0; i + desc->start_burst < desc->nburst; i++) {
>  		u32 idx = i + desc->start_burst;
> @@ -101,6 +95,21 @@ static void dw_edma_core_start(struct dw_edma_desc *desc, bool first)
>  	dw_edma_core_ch_doorbell(chan);
>  }
>
> +static void dw_edma_core_start(struct dw_edma_desc *desc)
> +{
> +	struct dw_edma_chan *chan = desc->chan;
> +
> +	if (chan->non_ll) {
> +		chan->dw->core->non_ll_start(chan,
> +					     &desc->burst[desc->start_burst]);
> +		desc->done_burst = desc->start_burst;
> +		desc->start_burst += 1;
> +		return;
> +	}
> +
> +	dw_edma_core_ll_start(desc);
> +}
> +
>  static int dw_edma_start_transfer(struct dw_edma_chan *chan)
>  {
>  	struct dw_edma_desc *desc;
> @@ -114,7 +123,7 @@ static int dw_edma_start_transfer(struct dw_edma_chan *chan)
>  	if (!desc)
>  		return 0;
>
> -	dw_edma_core_start(desc, !desc->start_burst);
> +	dw_edma_core_start(desc);
>
>  	desc->cb = !desc->cb;
>
> --
> 2.51.0
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.