linux-sunxi.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Amelie Delaunay <amelie.delaunay@foss.st.com>
To: Frank.Li@oss.nxp.com, "Jacky Huang" <ychuang3@nuvoton.com>,
	"Shan-Chun Hung" <schung@nuvoton.com>,
	"Vinod Koul" <vkoul@kernel.org>, "Frank Li" <Frank.Li@kernel.org>,
	"Paul Cercueil" <paul@crapouillou.net>,
	"Eugeniy Paltsev" <Eugeniy.Paltsev@synopsys.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Binbin Zhou" <zhoubinbin@loongson.cn>,
	"Patrice Chotard" <patrice.chotard@foss.st.com>,
	"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
	"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
	"Steven Rostedt" <rostedt@goodmis.org>,
	"Masami Hiramatsu" <mhiramat@kernel.org>,
	"Mathieu Desnoyers" <mathieu.desnoyers@efficios.com>,
	"Thierry Reding" <thierry.reding@kernel.org>,
	"Jonathan Hunter" <jonathanh@nvidia.com>,
	"Ludovic Desroches" <ludovic.desroches@microchip.com>,
	"Viresh Kumar" <vireshk@kernel.org>,
	"Keguang Zhang" <keguang.zhang@gmail.com>,
	"Andreas Färber" <afaerber@suse.de>,
	"Manivannan Sadhasivam" <mani@kernel.org>,
	"Daniel Mack" <daniel@zonque.org>,
	"Haojian Zhuang" <haojian.zhuang@gmail.com>,
	"Robert Jarzmik" <robert.jarzmik@free.fr>,
	"Chen-Yu Tsai" <wens@kernel.org>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Samuel Holland" <samuel@sholland.org>,
	"Kelvin Cao" <kelvin.cao@microchip.com>,
	"Logan Gunthorpe" <logang@deltatee.com>,
	"Laxman Dewangan" <ldewangan@nvidia.com>,
	"Vignesh Raghavendra" <vigneshr@ti.com>
Cc: <linux-arm-kernel@lists.infradead.org>,
	<dmaengine@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<linux-mips@vger.kernel.org>,
	<linux-stm32@st-md-mailman.stormreply.com>,
	<linux-trace-kernel@vger.kernel.org>,
	<linux-tegra@vger.kernel.org>,
	<linux-actions@lists.infradead.org>,
	<linux-sunxi@lists.linux.dev>, <imx@lists.linux.dev>,
	Frank Li <Frank.Li@nxp.com>
Subject: Re: [PATCH v3 3/4] dmaengine: add (dmaengine|vchan)_chan_dev() helper
Date: Mon, 7 Sep 2026 10:55:04 +0200	[thread overview]
Message-ID: <c79f42cf-43c4-4b5a-a6da-217052d40284@foss.st.com> (raw)
In-Reply-To: <20260904-dma-chan_dev-rename-v3-3-685601b0b788@nxp.com>

Hi Frank,

On 9/4/26 23:49, Frank.Li@oss.nxp.com wrote:
[...]

I don't think removing chan2dev() function from the STM32 DMA drivers is 
an improvement, since the parameter is a `stm32` chan, not a `dma_chan`. 
chan2dev() was meant to expose the channel device behind the `stm32` 
wrapper and keep logging concise.

> diff --git a/drivers/dma/stm32/stm32-dma.c b/drivers/dma/stm32/stm32-dma.c
> index 3e8151e2ad75a..4688cebaf7f7a 100644
> --- a/drivers/dma/stm32/stm32-dma.c
> +++ b/drivers/dma/stm32/stm32-dma.c
> @@ -248,11 +248,6 @@ static struct stm32_dma_desc *to_stm32_dma_desc(struct virt_dma_desc *vdesc)
>   	return container_of(vdesc, struct stm32_dma_desc, vdesc);
>   }
>   
> -static struct device *chan2dev(struct stm32_dma_chan *chan)
> -{
> -	return &chan->vchan.chan.dev->device;
> -}
> -

I would rather keep it as:

static struct device *chan2dev(struct stm32_dma_chan *chan)
{
	return vchan_chan_dev(&chan->vchan);
}

and then drop all further updates.

>   static u32 stm32_dma_read(struct stm32_dma_device *dmadev, u32 reg)
>   {
>   	return readl_relaxed(dmadev->base + reg);
> @@ -274,7 +269,7 @@ static int stm32_dma_get_width(struct stm32_dma_chan *chan,
>   	case DMA_SLAVE_BUSWIDTH_4_BYTES:
>   		return STM32_DMA_WORD;
>   	default:
> -		dev_err(chan2dev(chan), "Dma bus width not supported\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Dma bus width not supported\n");
>   		return -EINVAL;
>   	}
>   }
> @@ -374,7 +369,7 @@ static int stm32_dma_get_burst(struct stm32_dma_chan *chan, u32 maxburst)
>   	case 16:
>   		return STM32_DMA_BURST_INCR16;
>   	default:
> -		dev_err(chan2dev(chan), "Dma burst size not supported\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Dma burst size not supported\n");
>   		return -EINVAL;
>   	}
>   }
> @@ -487,7 +482,7 @@ static void stm32_dma_stop(struct stm32_dma_chan *chan)
>   	/* Clear interrupt status if it is there */
>   	status = stm32_dma_irq_status(chan);
>   	if (status) {
> -		dev_dbg(chan2dev(chan), "%s(): clearing interrupt: 0x%08x\n",
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "%s(): clearing interrupt: 0x%08x\n",
>   			__func__, status);
>   		stm32_dma_irq_clear(chan, status);
>   	}
> @@ -536,12 +531,12 @@ static void stm32_dma_dump_reg(struct stm32_dma_chan *chan)
>   	u32 sm1ar = stm32_dma_read(dmadev, STM32_DMA_SM1AR(chan->id));
>   	u32 sfcr = stm32_dma_read(dmadev, STM32_DMA_SFCR(chan->id));
>   
> -	dev_dbg(chan2dev(chan), "SCR:   0x%08x\n", scr);
> -	dev_dbg(chan2dev(chan), "NDTR:  0x%08x\n", ndtr);
> -	dev_dbg(chan2dev(chan), "SPAR:  0x%08x\n", spar);
> -	dev_dbg(chan2dev(chan), "SM0AR: 0x%08x\n", sm0ar);
> -	dev_dbg(chan2dev(chan), "SM1AR: 0x%08x\n", sm1ar);
> -	dev_dbg(chan2dev(chan), "SFCR:  0x%08x\n", sfcr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "SCR:   0x%08x\n", scr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "NDTR:  0x%08x\n", ndtr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "SPAR:  0x%08x\n", spar);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "SM0AR: 0x%08x\n", sm0ar);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "SM1AR: 0x%08x\n", sm1ar);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "SFCR:  0x%08x\n", sfcr);
>   }
>   
>   static void stm32_dma_sg_inc(struct stm32_dma_chan *chan)
> @@ -613,7 +608,7 @@ static void stm32_dma_start_transfer(struct stm32_dma_chan *chan)
>   	reg->dma_scr |= STM32_DMA_SCR_EN;
>   	stm32_dma_write(dmadev, STM32_DMA_SCR(chan->id), reg->dma_scr);
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: started\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: started\n", &chan->vchan);
>   }
>   
>   static void stm32_dma_configure_next_sg(struct stm32_dma_chan *chan)
> @@ -630,12 +625,12 @@ static void stm32_dma_configure_next_sg(struct stm32_dma_chan *chan)
>   	if (dma_scr & STM32_DMA_SCR_CT) {
>   		dma_sm0ar = sg_req->chan_reg.dma_sm0ar;
>   		stm32_dma_write(dmadev, STM32_DMA_SM0AR(id), dma_sm0ar);
> -		dev_dbg(chan2dev(chan), "CT=1 <=> SM0AR: 0x%08x\n",
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "CT=1 <=> SM0AR: 0x%08x\n",
>   			stm32_dma_read(dmadev, STM32_DMA_SM0AR(id)));
>   	} else {
>   		dma_sm1ar = sg_req->chan_reg.dma_sm1ar;
>   		stm32_dma_write(dmadev, STM32_DMA_SM1AR(id), dma_sm1ar);
> -		dev_dbg(chan2dev(chan), "CT=0 <=> SM1AR: 0x%08x\n",
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "CT=0 <=> SM1AR: 0x%08x\n",
>   			stm32_dma_read(dmadev, STM32_DMA_SM1AR(id)));
>   	}
>   }
> @@ -676,7 +671,7 @@ static void stm32_dma_handle_chan_paused(struct stm32_dma_chan *chan)
>   
>   	chan->status = DMA_PAUSED;
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: paused\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: paused\n", &chan->vchan);
>   }
>   
>   static void stm32_dma_post_resume_reconfigure(struct stm32_dma_chan *chan)
> @@ -728,7 +723,7 @@ static void stm32_dma_post_resume_reconfigure(struct stm32_dma_chan *chan)
>   	dma_scr |= STM32_DMA_SCR_EN;
>   	stm32_dma_write(dmadev, STM32_DMA_SCR(chan->id), dma_scr);
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: reconfigured after pause/resume\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: reconfigured after pause/resume\n", &chan->vchan);
>   }
>   
>   static void stm32_dma_handle_chan_done(struct stm32_dma_chan *chan, u32 scr)
> @@ -775,16 +770,16 @@ static irqreturn_t stm32_dma_chan_irq(int irq, void *devid)
>   		if (sfcr & STM32_DMA_SFCR_FEIE) {
>   			if (!(scr & STM32_DMA_SCR_EN) &&
>   			    !(status & STM32_DMA_TCI))
> -				dev_err(chan2dev(chan), "FIFO Error\n");
> +				dev_err(vchan_chan_dev(&chan->vchan), "FIFO Error\n");
>   			else
> -				dev_dbg(chan2dev(chan), "FIFO over/underrun\n");
> +				dev_dbg(vchan_chan_dev(&chan->vchan), "FIFO over/underrun\n");
>   		}
>   	}
>   	if (status & STM32_DMA_DMEI) {
>   		stm32_dma_irq_clear(chan, STM32_DMA_DMEI);
>   		status &= ~STM32_DMA_DMEI;
>   		if (sfcr & STM32_DMA_SCR_DMEIE)
> -			dev_dbg(chan2dev(chan), "Direct mode overrun\n");
> +			dev_dbg(vchan_chan_dev(&chan->vchan), "Direct mode overrun\n");
>   	}
>   
>   	if (status & STM32_DMA_TCI) {
> @@ -803,9 +798,9 @@ static irqreturn_t stm32_dma_chan_irq(int irq, void *devid)
>   
>   	if (status) {
>   		stm32_dma_irq_clear(chan, status);
> -		dev_err(chan2dev(chan), "DMA error: status=0x%08x\n", status);
> +		dev_err(vchan_chan_dev(&chan->vchan), "DMA error: status=0x%08x\n", status);
>   		if (!(scr & STM32_DMA_SCR_EN))
> -			dev_err(chan2dev(chan), "chan disabled by HW\n");
> +			dev_err(vchan_chan_dev(&chan->vchan), "chan disabled by HW\n");
>   	}
>   
>   	spin_unlock(&chan->vchan.lock);
> @@ -820,7 +815,7 @@ static void stm32_dma_issue_pending(struct dma_chan *c)
>   
>   	spin_lock_irqsave(&chan->vchan.lock, flags);
>   	if (vchan_issue_pending(&chan->vchan) && !chan->desc && !chan->busy) {
> -		dev_dbg(chan2dev(chan), "vchan %p: issued\n", &chan->vchan);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: issued\n", &chan->vchan);
>   		stm32_dma_start_transfer(chan);
>   
>   	}
> @@ -922,7 +917,7 @@ static int stm32_dma_resume(struct dma_chan *c)
>   
>   	spin_unlock_irqrestore(&chan->vchan.lock, flags);
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: resumed\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: resumed\n", &chan->vchan);
>   
>   	return 0;
>   }
> @@ -1059,7 +1054,7 @@ static int stm32_dma_set_xfer_param(struct stm32_dma_chan *chan,
>   		break;
>   
>   	default:
> -		dev_err(chan2dev(chan), "Dma direction is not supported\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Dma direction is not supported\n");
>   		return -EINVAL;
>   	}
>   
> @@ -1092,12 +1087,12 @@ static struct dma_async_tx_descriptor *stm32_dma_prep_slave_sg(
>   	int i, ret;
>   
>   	if (!chan->config_init) {
> -		dev_err(chan2dev(chan), "dma channel is not configured\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "dma channel is not configured\n");
>   		return NULL;
>   	}
>   
>   	if (sg_len < 1) {
> -		dev_err(chan2dev(chan), "Invalid segment length %d\n", sg_len);
> +		dev_err(vchan_chan_dev(&chan->vchan), "Invalid segment length %d\n", sg_len);
>   		return NULL;
>   	}
>   
> @@ -1129,7 +1124,7 @@ static struct dma_async_tx_descriptor *stm32_dma_prep_slave_sg(
>   
>   		nb_data_items = desc->sg_req[i].len / buswidth;
>   		if (nb_data_items > STM32_DMA_ALIGNED_MAX_DATA_ITEMS) {
> -			dev_err(chan2dev(chan), "nb items not supported\n");
> +			dev_err(vchan_chan_dev(&chan->vchan), "nb items not supported\n");
>   			goto err;
>   		}
>   
> @@ -1164,17 +1159,17 @@ static struct dma_async_tx_descriptor *stm32_dma_prep_dma_cyclic(
>   	int i, ret;
>   
>   	if (!buf_len || !period_len) {
> -		dev_err(chan2dev(chan), "Invalid buffer/period len\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Invalid buffer/period len\n");
>   		return NULL;
>   	}
>   
>   	if (!chan->config_init) {
> -		dev_err(chan2dev(chan), "dma channel is not configured\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "dma channel is not configured\n");
>   		return NULL;
>   	}
>   
>   	if (buf_len % period_len) {
> -		dev_err(chan2dev(chan), "buf_len not multiple of period_len\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "buf_len not multiple of period_len\n");
>   		return NULL;
>   	}
>   
> @@ -1185,7 +1180,7 @@ static struct dma_async_tx_descriptor *stm32_dma_prep_dma_cyclic(
>   	 * terminating the DMA.
>   	 */
>   	if (chan->busy) {
> -		dev_err(chan2dev(chan), "Request not allowed when dma busy\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Request not allowed when dma busy\n");
>   		return NULL;
>   	}
>   
> @@ -1196,7 +1191,7 @@ static struct dma_async_tx_descriptor *stm32_dma_prep_dma_cyclic(
>   
>   	nb_data_items = period_len / buswidth;
>   	if (nb_data_items > STM32_DMA_ALIGNED_MAX_DATA_ITEMS) {
> -		dev_err(chan2dev(chan), "number of items not supported\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "number of items not supported\n");
>   		return NULL;
>   	}
>   
> @@ -1478,7 +1473,7 @@ static void stm32_dma_free_chan_resources(struct dma_chan *c)
>   	struct stm32_dma_device *dmadev = stm32_dma_get_dev(chan);
>   	unsigned long flags;
>   
> -	dev_dbg(chan2dev(chan), "Freeing channel %d\n", chan->id);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "Freeing channel %d\n", chan->id);
>   
>   	if (chan->busy) {
>   		spin_lock_irqsave(&chan->vchan.lock, flags);
> diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c
> index 6ee7a1435efb6..4fe226541efa4 100644
> --- a/drivers/dma/stm32/stm32-dma3.c
> +++ b/drivers/dma/stm32/stm32-dma3.c
> @@ -328,11 +328,6 @@ static inline struct stm32_dma3_swdesc *to_stm32_dma3_swdesc(struct virt_dma_des
>   	return container_of(vdesc, struct stm32_dma3_swdesc, vdesc);
>   }
>   
> -static struct device *chan2dev(struct stm32_dma3_chan *chan)
> -{
> -	return &chan->vchan.chan.dev->device;
> -}
> -

ditto here:
static struct device *chan2dev(struct stm32_dma3_chan *chan)
{
	return vchan_chan_dev(&chan->vchan);
}

and below, keep chan2dev() instead

>   static struct device *ddata2dev(struct stm32_dma3_ddata *ddata)
>   {
>   	return ddata->dma_dev.dev;
> @@ -341,7 +336,7 @@ static struct device *ddata2dev(struct stm32_dma3_ddata *ddata)
>   static void stm32_dma3_chan_dump_reg(struct stm32_dma3_chan *chan)
>   {
>   	struct stm32_dma3_ddata *ddata = to_stm32_dma3_ddata(chan);
> -	struct device *dev = chan2dev(chan);
> +	struct device *dev = vchan_chan_dev(&chan->vchan);
>   	u32 id = chan->id, offset;
>   
>   	offset = STM32_DMA3_SECCFGR;
> @@ -381,21 +376,21 @@ static void stm32_dma3_chan_dump_hwdesc(struct stm32_dma3_chan *chan,
>   	for (i = 0; i < swdesc->lli_size; i++) {
>   		hwdesc = swdesc->lli[i].hwdesc;
>   		if (i)
> -			dev_dbg(chan2dev(chan), "V\n");
> -		dev_dbg(chan2dev(chan), "[%d]@%pad\n", i, &swdesc->lli[i].hwdesc_addr);
> -		dev_dbg(chan2dev(chan), "| C%dTR1: %08x\n", chan->id, hwdesc->ctr1);
> -		dev_dbg(chan2dev(chan), "| C%dTR2: %08x\n", chan->id, hwdesc->ctr2);
> -		dev_dbg(chan2dev(chan), "| C%dBR1: %08x\n", chan->id, hwdesc->cbr1);
> -		dev_dbg(chan2dev(chan), "| C%dSAR: %08x\n", chan->id, hwdesc->csar);
> -		dev_dbg(chan2dev(chan), "| C%dDAR: %08x\n", chan->id, hwdesc->cdar);
> -		dev_dbg(chan2dev(chan), "| C%dLLR: %08x\n", chan->id, hwdesc->cllr);
> +			dev_dbg(vchan_chan_dev(&chan->vchan), "V\n");
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "[%d]@%pad\n", i, &swdesc->lli[i].hwdesc_addr);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "| C%dTR1: %08x\n", chan->id, hwdesc->ctr1);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "| C%dTR2: %08x\n", chan->id, hwdesc->ctr2);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "| C%dBR1: %08x\n", chan->id, hwdesc->cbr1);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "| C%dSAR: %08x\n", chan->id, hwdesc->csar);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "| C%dDAR: %08x\n", chan->id, hwdesc->cdar);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "| C%dLLR: %08x\n", chan->id, hwdesc->cllr);
>   	}
>   
>   	if (swdesc->cyclic) {
> -		dev_dbg(chan2dev(chan), "|\n");
> -		dev_dbg(chan2dev(chan), "-->[0]@%pad\n", &swdesc->lli[0].hwdesc_addr);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "|\n");
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "-->[0]@%pad\n", &swdesc->lli[0].hwdesc_addr);
>   	} else {
> -		dev_dbg(chan2dev(chan), "X\n");
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "X\n");
>   	}
>   }
>   
> @@ -411,7 +406,7 @@ static struct stm32_dma3_swdesc *stm32_dma3_chan_desc_alloc(struct stm32_dma3_ch
>   	 * addressed, so abort the allocation.
>   	 */
>   	if ((count * 32) > CLLR_LA) {
> -		dev_err(chan2dev(chan), "Transfer is too big (> %luB)\n", STM32_DMA3_MAX_SEG_SIZE);
> +		dev_err(vchan_chan_dev(&chan->vchan), "Transfer is too big (> %luB)\n", STM32_DMA3_MAX_SEG_SIZE);
>   		return NULL;
>   	}
>   
> @@ -438,7 +433,7 @@ static struct stm32_dma3_swdesc *stm32_dma3_chan_desc_alloc(struct stm32_dma3_ch
>   	return swdesc;
>   
>   err_pool_free:
> -	dev_err(chan2dev(chan), "Failed to alloc descriptors\n");
> +	dev_err(vchan_chan_dev(&chan->vchan), "Failed to alloc descriptors\n");
>   	while (--i >= 0)
>   		dma_pool_free(chan->lli_pool, swdesc->lli[i].hwdesc, swdesc->lli[i].hwdesc_addr);
>   	kfree(swdesc);
> @@ -468,7 +463,7 @@ static void stm32_dma3_chan_vdesc_free(struct virt_dma_desc *vdesc)
>   static void stm32_dma3_check_user_setting(struct stm32_dma3_chan *chan)
>   {
>   	struct stm32_dma3_ddata *ddata = to_stm32_dma3_ddata(chan);
> -	struct device *dev = chan2dev(chan);
> +	struct device *dev = vchan_chan_dev(&chan->vchan);
>   	u32 ctr1 = readl_relaxed(ddata->base + STM32_DMA3_CTR1(chan->id));
>   	u32 cbr1 = readl_relaxed(ddata->base + STM32_DMA3_CBR1(chan->id));
>   	u32 csar = readl_relaxed(ddata->base + STM32_DMA3_CSAR(chan->id));
> @@ -579,7 +574,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   	u32 sap = FIELD_GET(STM32_DMA3_DT_SAP, tr_conf), sap_max_dw;
>   	u32 dap = FIELD_GET(STM32_DMA3_DT_DAP, tr_conf), dap_max_dw;
>   
> -	dev_dbg(chan2dev(chan), "%s from %pad to %pad\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "%s from %pad to %pad\n",
>   		dmaengine_get_direction_text(dir), &src_addr, &dst_addr);
>   
>   	sdw = chan->dma_config.src_addr_width ? : get_chan_max_dw(sap, chan->max_burst);
> @@ -589,12 +584,12 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   
>   	/* Following conditions would raise User Setting Error interrupt */
>   	if (!(dma_device.src_addr_widths & BIT(sdw)) || !(dma_device.dst_addr_widths & BIT(ddw))) {
> -		dev_err(chan2dev(chan), "Bus width (src=%u, dst=%u) not supported\n", sdw, ddw);
> +		dev_err(vchan_chan_dev(&chan->vchan), "Bus width (src=%u, dst=%u) not supported\n", sdw, ddw);
>   		return -EINVAL;
>   	}
>   
>   	if (ddata->ports_max_dw[1] == DW_INVALID && (sap || dap)) {
> -		dev_err(chan2dev(chan), "Only one master port, port 1 is not supported\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Only one master port, port 1 is not supported\n");
>   		return -EINVAL;
>   	}
>   
> @@ -602,7 +597,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   	dap_max_dw = ddata->ports_max_dw[dap];
>   	if ((port_is_ahb(sap_max_dw) && sdw == DMA_SLAVE_BUSWIDTH_8_BYTES) ||
>   	    (port_is_ahb(dap_max_dw) && ddw == DMA_SLAVE_BUSWIDTH_8_BYTES)) {
> -		dev_err(chan2dev(chan),
> +		dev_err(vchan_chan_dev(&chan->vchan),
>   			"8 bytes buswidth (src=%u, dst=%u) not supported on port (sap=%u, dap=%u\n",
>   			sdw, ddw, sap, dap);
>   		return -EINVAL;
> @@ -659,7 +654,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   			_ctr1 |= FIELD_PREP(CTR1_PAM, CTR1_PAM_PACK_UNPACK);
>   			/* Should never reach this case as ddw is clamped down */
>   			if (len & (ddw - 1)) {
> -				dev_err(chan2dev(chan),
> +				dev_err(vchan_chan_dev(&chan->vchan),
>   					"Packing mode is enabled and len is not multiple of ddw");
>   				return -EINVAL;
>   			}
> @@ -695,7 +690,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   			_ctr1 |= FIELD_PREP(CTR1_PAM, CTR1_PAM_PACK_UNPACK);
>   			/* Should never reach this case as ddw is clamped down */
>   			if (len & (ddw - 1)) {
> -				dev_err(chan2dev(chan),
> +				dev_err(vchan_chan_dev(&chan->vchan),
>   					"Packing mode is enabled and len is not multiple of ddw\n");
>   				return -EINVAL;
>   			}
> @@ -740,7 +735,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   			_ctr1 |= FIELD_PREP(CTR1_PAM, CTR1_PAM_PACK_UNPACK);
>   			/* Should never reach this case as ddw is clamped down */
>   			if (len & (ddw - 1)) {
> -				dev_err(chan2dev(chan),
> +				dev_err(vchan_chan_dev(&chan->vchan),
>   					"Packing mode is enabled and len is not multiple of ddw");
>   				return -EINVAL;
>   			}
> @@ -752,7 +747,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   		break;
>   
>   	default:
> -		dev_err(chan2dev(chan), "Direction %s not supported\n",
> +		dev_err(vchan_chan_dev(&chan->vchan), "Direction %s not supported\n",
>   			dmaengine_get_direction_text(dir));
>   		return -EINVAL;
>   	}
> @@ -761,7 +756,7 @@ static int stm32_dma3_chan_prep_hw(struct stm32_dma3_chan *chan, enum dma_transf
>   	*ctr1 = _ctr1;
>   	*ctr2 = _ctr2;
>   
> -	dev_dbg(chan2dev(chan), "%s: sdw=%u bytes sbl=%u beats ddw=%u bytes dbl=%u beats\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "%s: sdw=%u bytes sbl=%u beats ddw=%u bytes dbl=%u beats\n",
>   		__func__, sdw, sbl_max, ddw, dbl_max);
>   
>   	return 0;
> @@ -807,7 +802,7 @@ static void stm32_dma3_chan_start(struct stm32_dma3_chan *chan)
>   
>   	chan->dma_status = DMA_IN_PROGRESS;
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: started\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: started\n", &chan->vchan);
>   }
>   
>   static int stm32_dma3_chan_suspend(struct stm32_dma3_chan *chan, bool susp)
> @@ -871,7 +866,7 @@ static void stm32_dma3_chan_set_residue(struct stm32_dma3_chan *chan,
>   					struct dma_tx_state *txstate)
>   {
>   	struct stm32_dma3_ddata *ddata = to_stm32_dma3_ddata(chan);
> -	struct device *dev = chan2dev(chan);
> +	struct device *dev = vchan_chan_dev(&chan->vchan);
>   	struct stm32_dma3_hwdesc *hwdesc;
>   	u32 residue, curr_lli, csr, cdar, cbr1, cllr, bndt, fifol;
>   	bool pack_unpack;
> @@ -921,7 +916,7 @@ static void stm32_dma3_chan_set_residue(struct stm32_dma3_chan *chan,
>   	/* Get current hwdesc and cumulate residue of pending hwdesc BNDT */
>   	ret = stm32_dma3_chan_get_curr_hwdesc(swdesc, cllr, &residue);
>   	if (ret < 0) {
> -		dev_err(chan2dev(chan), "Can't get residue: current hwdesc not found\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Can't get residue: current hwdesc not found\n");
>   		return;
>   	}
>   	curr_lli = ret;
> @@ -957,7 +952,7 @@ static void stm32_dma3_chan_set_residue(struct stm32_dma3_chan *chan,
>   
>   skip_fifol_update:
>   	if (fifol) {
> -		dev_dbg(chan2dev(chan), "%u byte(s) in the FIFO\n", fifol);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "%u byte(s) in the FIFO\n", fifol);
>   		dma_set_in_flight_bytes(txstate, fifol);
>   		/*
>   		 * Residue is already accurate for DMA_MEM_TO_DEV as BNDT reflects data read from
> @@ -987,7 +982,7 @@ static int stm32_dma3_chan_stop(struct stm32_dma3_chan *chan)
>   		/* Suspend the channel */
>   		ret = stm32_dma3_chan_suspend(chan, true);
>   		if (ret)
> -			dev_warn(chan2dev(chan), "%s: timeout, data might be lost\n", __func__);
> +			dev_warn(vchan_chan_dev(&chan->vchan), "%s: timeout, data might be lost\n", __func__);
>   	}
>   
>   	/*
> @@ -1034,7 +1029,7 @@ static irqreturn_t stm32_dma3_chan_irq(int irq, void *devid)
>   	}
>   
>   	if (csr & CSR_USEF && ccr & CCR_USEIE) {
> -		dev_err(chan2dev(chan), "User setting error\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "User setting error\n");
>   		chan->dma_status = DMA_ERROR;
>   		/* CCR.EN automatically cleared by HW */
>   		stm32_dma3_check_user_setting(chan);
> @@ -1042,14 +1037,14 @@ static irqreturn_t stm32_dma3_chan_irq(int irq, void *devid)
>   	}
>   
>   	if (csr & CSR_ULEF && ccr & CCR_ULEIE) {
> -		dev_err(chan2dev(chan), "Update link transfer error\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Update link transfer error\n");
>   		chan->dma_status = DMA_ERROR;
>   		/* CCR.EN automatically cleared by HW */
>   		stm32_dma3_chan_reset(chan);
>   	}
>   
>   	if (csr & CSR_DTEF && ccr & CCR_DTEIE) {
> -		dev_err(chan2dev(chan), "Data transfer error\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Data transfer error\n");
>   		chan->dma_status = DMA_ERROR;
>   		/* CCR.EN automatically cleared by HW */
>   		stm32_dma3_chan_reset(chan);
> @@ -1087,13 +1082,13 @@ static int stm32_dma3_get_chan_sem(struct stm32_dma3_chan *chan)
>   		goto bad_cid;
>   
>   	chan->semaphore_taken = true;
> -	dev_dbg(chan2dev(chan), "under CID1 control (semcr=0x%08x)\n", csemcr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "under CID1 control (semcr=0x%08x)\n", csemcr);
>   
>   	return 0;
>   
>   bad_cid:
>   	chan->semaphore_taken = false;
> -	dev_err(chan2dev(chan), "not under CID1 control (in-use by CID%d)\n", ccid);
> +	dev_err(vchan_chan_dev(&chan->vchan), "not under CID1 control (in-use by CID%d)\n", ccid);
>   
>   	return -EACCES;
>   }
> @@ -1105,7 +1100,7 @@ static void stm32_dma3_put_chan_sem(struct stm32_dma3_chan *chan)
>   	if (chan->semaphore_taken) {
>   		writel_relaxed(0, ddata->base + STM32_DMA3_CSEMCR(chan->id));
>   		chan->semaphore_taken = false;
> -		dev_dbg(chan2dev(chan), "no more under CID1 control\n");
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "no more under CID1 control\n");
>   	}
>   }
>   
> @@ -1130,7 +1125,7 @@ static int stm32_dma3_alloc_chan_resources(struct dma_chan *c)
>   					  sizeof(struct stm32_dma3_hwdesc),
>   					  __alignof__(struct stm32_dma3_hwdesc), SZ_64K);
>   	if (!chan->lli_pool) {
> -		dev_err(chan2dev(chan), "Failed to create LLI pool\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Failed to create LLI pool\n");
>   		ret = -ENOMEM;
>   		goto err_put_sync;
>   	}
> @@ -1366,7 +1361,7 @@ static struct dma_async_tx_descriptor *stm32_dma3_prep_slave_sg(struct dma_chan
>   	}
>   
>   	if (count != sg_len && chan->tcem != CTR2_TCEM_CHANNEL)
> -		dev_warn(chan2dev(chan), "Linked-list refactored, %d items instead of %d\n",
> +		dev_warn(vchan_chan_dev(&chan->vchan), "Linked-list refactored, %d items instead of %d\n",
>   			 count, sg_len);
>   
>   	/* Enable Error interrupts */
> @@ -1401,12 +1396,12 @@ static struct dma_async_tx_descriptor *stm32_dma3_prep_dma_cyclic(struct dma_cha
>   		return NULL;
>   
>   	if (!buf_len || !period_len || period_len > STM32_DMA3_MAX_BLOCK_SIZE) {
> -		dev_err(chan2dev(chan), "Invalid buffer/period length\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Invalid buffer/period length\n");
>   		return NULL;
>   	}
>   
>   	if (buf_len % period_len) {
> -		dev_err(chan2dev(chan), "Buffer length not multiple of period length\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Buffer length not multiple of period length\n");
>   		return NULL;
>   	}
>   
> @@ -1428,7 +1423,7 @@ static struct dma_async_tx_descriptor *stm32_dma3_prep_dma_cyclic(struct dma_cha
>   		ret = stm32_dma3_chan_prep_hw(chan, DMA_DEV_TO_MEM, &swdesc->ccr, &ctr1, &ctr2,
>   					      src, dst, period_len);
>   	} else {
> -		dev_err(chan2dev(chan), "Invalid direction\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Invalid direction\n");
>   		ret = -EINVAL;
>   	}
>   
> @@ -1502,7 +1497,7 @@ static int stm32_dma3_pause(struct dma_chan *c)
>   
>   	chan->dma_status = DMA_PAUSED;
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: paused\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: paused\n", &chan->vchan);
>   
>   	return 0;
>   }
> @@ -1515,7 +1510,7 @@ static int stm32_dma3_resume(struct dma_chan *c)
>   
>   	chan->dma_status = DMA_IN_PROGRESS;
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: resumed\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: resumed\n", &chan->vchan);
>   
>   	return 0;
>   }
> @@ -1540,7 +1535,7 @@ static int stm32_dma3_terminate_all(struct dma_chan *c)
>   	spin_unlock_irqrestore(&chan->vchan.lock, flags);
>   	vchan_dma_desc_free_list(&chan->vchan, &head);
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: terminated\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: terminated\n", &chan->vchan);
>   
>   	return 0;
>   }
> @@ -1593,7 +1588,7 @@ static void stm32_dma3_issue_pending(struct dma_chan *c)
>   	spin_lock_irqsave(&chan->vchan.lock, flags);
>   
>   	if (vchan_issue_pending(&chan->vchan) && !chan->swdesc) {
> -		dev_dbg(chan2dev(chan), "vchan %p: issued\n", &chan->vchan);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: issued\n", &chan->vchan);
>   		stm32_dma3_chan_start(chan);
>   	}
>   
> diff --git a/drivers/dma/stm32/stm32-mdma.c b/drivers/dma/stm32/stm32-mdma.c
> index c274638e919c2..e125921bf9533 100644
> --- a/drivers/dma/stm32/stm32-mdma.c
> +++ b/drivers/dma/stm32/stm32-mdma.c
> @@ -276,11 +276,6 @@ static struct stm32_mdma_desc *to_stm32_mdma_desc(struct virt_dma_desc *vdesc)
>   	return container_of(vdesc, struct stm32_mdma_desc, vdesc);
>   }
>   
> -static struct device *chan2dev(struct stm32_mdma_chan *chan)
> -{
> -	return &chan->vchan.chan.dev->device;
> -}
> -


ditto here:
static struct device *chan2dev(struct stm32_mdma_chan *chan)
{
	return vchan_chan_dev(&chan->vchan);
}

and below, keep chan2dev() instead.

>   static struct device *mdma2dev(struct stm32_mdma_device *mdma_dev)
>   {
>   	return mdma_dev->ddev.dev;
> @@ -334,7 +329,7 @@ static struct stm32_mdma_desc *stm32_mdma_alloc_desc(
>   	return desc;
>   
>   err:
> -	dev_err(chan2dev(chan), "Failed to allocate descriptor\n");
> +	dev_err(vchan_chan_dev(&chan->vchan), "Failed to allocate descriptor\n");
>   	while (--i >= 0)
>   		dma_pool_free(chan->desc_pool, desc->node[i].hwdesc,
>   			      desc->node[i].hwdesc_phys);
> @@ -364,7 +359,7 @@ static int stm32_mdma_get_width(struct stm32_mdma_chan *chan,
>   	case DMA_SLAVE_BUSWIDTH_8_BYTES:
>   		return ffs(width) - 1;
>   	default:
> -		dev_err(chan2dev(chan), "Dma bus width %i not supported\n",
> +		dev_err(vchan_chan_dev(&chan->vchan), "Dma bus width %i not supported\n",
>   			width);
>   		return -EINVAL;
>   	}
> @@ -422,7 +417,7 @@ static int stm32_mdma_disable_chan(struct stm32_mdma_chan *chan)
>   				dmadev->base + STM32_MDMA_CISR(id), cisr,
>   				(cisr & STM32_MDMA_CISR_CTCIF), 10, 1000);
>   		if (ret) {
> -			dev_err(chan2dev(chan), "%s: timeout!\n", __func__);
> +			dev_err(vchan_chan_dev(&chan->vchan), "%s: timeout!\n", __func__);
>   			return -EBUSY;
>   		}
>   	}
> @@ -444,7 +439,7 @@ static void stm32_mdma_stop(struct stm32_mdma_chan *chan)
>   	/* Clear interrupt status if it is there */
>   	status = stm32_mdma_read(dmadev, STM32_MDMA_CISR(chan->id));
>   	if (status) {
> -		dev_dbg(chan2dev(chan), "%s(): clearing interrupt: 0x%08x\n",
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "%s(): clearing interrupt: 0x%08x\n",
>   			__func__, status);
>   		stm32_mdma_set_bits(dmadev, STM32_MDMA_CIFCR(chan->id), status);
>   	}
> @@ -513,7 +508,7 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
>   	/* Check burst size constraints */
>   	if (src_maxburst * src_addr_width > STM32_MDMA_MAX_BURST ||
>   	    dst_maxburst * dst_addr_width > STM32_MDMA_MAX_BURST) {
> -		dev_err(chan2dev(chan),
> +		dev_err(vchan_chan_dev(&chan->vchan),
>   			"burst size * bus width higher than %d bytes\n",
>   			STM32_MDMA_MAX_BURST);
>   		return -EINVAL;
> @@ -521,7 +516,7 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
>   
>   	if ((!is_power_of_2(src_maxburst) && src_maxburst > 0) ||
>   	    (!is_power_of_2(dst_maxburst) && dst_maxburst > 0)) {
> -		dev_err(chan2dev(chan), "burst size must be a power of 2\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "burst size must be a power of 2\n");
>   		return -EINVAL;
>   	}
>   
> @@ -658,7 +653,7 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
>   		break;
>   
>   	default:
> -		dev_err(chan2dev(chan), "Dma direction is not supported\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Dma direction is not supported\n");
>   		return -EINVAL;
>   	}
>   
> @@ -672,16 +667,16 @@ static int stm32_mdma_set_xfer_param(struct stm32_mdma_chan *chan,
>   static void stm32_mdma_dump_hwdesc(struct stm32_mdma_chan *chan,
>   				   struct stm32_mdma_desc_node *node)
>   {
> -	dev_dbg(chan2dev(chan), "hwdesc:  %pad\n", &node->hwdesc_phys);
> -	dev_dbg(chan2dev(chan), "CTCR:    0x%08x\n", node->hwdesc->ctcr);
> -	dev_dbg(chan2dev(chan), "CBNDTR:  0x%08x\n", node->hwdesc->cbndtr);
> -	dev_dbg(chan2dev(chan), "CSAR:    0x%08x\n", node->hwdesc->csar);
> -	dev_dbg(chan2dev(chan), "CDAR:    0x%08x\n", node->hwdesc->cdar);
> -	dev_dbg(chan2dev(chan), "CBRUR:   0x%08x\n", node->hwdesc->cbrur);
> -	dev_dbg(chan2dev(chan), "CLAR:    0x%08x\n", node->hwdesc->clar);
> -	dev_dbg(chan2dev(chan), "CTBR:    0x%08x\n", node->hwdesc->ctbr);
> -	dev_dbg(chan2dev(chan), "CMAR:    0x%08x\n", node->hwdesc->cmar);
> -	dev_dbg(chan2dev(chan), "CMDR:    0x%08x\n\n", node->hwdesc->cmdr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "hwdesc:  %pad\n", &node->hwdesc_phys);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CTCR:    0x%08x\n", node->hwdesc->ctcr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CBNDTR:  0x%08x\n", node->hwdesc->cbndtr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CSAR:    0x%08x\n", node->hwdesc->csar);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CDAR:    0x%08x\n", node->hwdesc->cdar);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CBRUR:   0x%08x\n", node->hwdesc->cbrur);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CLAR:    0x%08x\n", node->hwdesc->clar);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CTBR:    0x%08x\n", node->hwdesc->ctbr);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CMAR:    0x%08x\n", node->hwdesc->cmar);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CMDR:    0x%08x\n\n", node->hwdesc->cmdr);
>   }
>   
>   static void stm32_mdma_setup_hwdesc(struct stm32_mdma_chan *chan,
> @@ -739,7 +734,7 @@ static int stm32_mdma_setup_xfer(struct stm32_mdma_chan *chan,
>   
>   	for_each_sg(sgl, sg, sg_len, i) {
>   		if (sg_dma_len(sg) > STM32_MDMA_MAX_BLOCK_LEN) {
> -			dev_err(chan2dev(chan), "Invalid block len\n");
> +			dev_err(vchan_chan_dev(&chan->vchan), "Invalid block len\n");
>   			return -EINVAL;
>   		}
>   
> @@ -797,7 +792,7 @@ stm32_mdma_prep_slave_sg(struct dma_chan *c, struct scatterlist *sgl,
>   	 * for allowing another request.
>   	 */
>   	if (chan->desc && chan->desc->cyclic) {
> -		dev_err(chan2dev(chan),
> +		dev_err(vchan_chan_dev(&chan->vchan),
>   			"Request not allowed when dma in cyclic mode\n");
>   		return NULL;
>   	}
> @@ -858,18 +853,18 @@ stm32_mdma_prep_dma_cyclic(struct dma_chan *c, dma_addr_t buf_addr,
>   	 * for allowing another request.
>   	 */
>   	if (chan->desc && chan->desc->cyclic) {
> -		dev_err(chan2dev(chan),
> +		dev_err(vchan_chan_dev(&chan->vchan),
>   			"Request not allowed when dma in cyclic mode\n");
>   		return NULL;
>   	}
>   
>   	if (!buf_len || !period_len || period_len > STM32_MDMA_MAX_BLOCK_LEN) {
> -		dev_err(chan2dev(chan), "Invalid buffer/period len\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "Invalid buffer/period len\n");
>   		return NULL;
>   	}
>   
>   	if (buf_len % period_len) {
> -		dev_err(chan2dev(chan), "buf_len not multiple of period_len\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "buf_len not multiple of period_len\n");
>   		return NULL;
>   	}
>   
> @@ -954,7 +949,7 @@ stm32_mdma_prep_dma_memcpy(struct dma_chan *c, dma_addr_t dest, dma_addr_t src,
>   	 * to allow another request
>   	 */
>   	if (chan->desc && chan->desc->cyclic) {
> -		dev_err(chan2dev(chan),
> +		dev_err(vchan_chan_dev(&chan->vchan),
>   			"Request not allowed when dma in cyclic mode\n");
>   		return NULL;
>   	}
> @@ -1116,25 +1111,25 @@ static void stm32_mdma_dump_reg(struct stm32_mdma_chan *chan)
>   {
>   	struct stm32_mdma_device *dmadev = stm32_mdma_get_dev(chan);
>   
> -	dev_dbg(chan2dev(chan), "CCR:     0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CCR:     0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CCR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CTCR:    0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CTCR:    0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CTCR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CBNDTR:  0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CBNDTR:  0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CBNDTR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CSAR:    0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CSAR:    0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CSAR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CDAR:    0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CDAR:    0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CDAR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CBRUR:   0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CBRUR:   0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CBRUR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CLAR:    0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CLAR:    0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CLAR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CTBR:    0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CTBR:    0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CTBR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CMAR:    0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CMAR:    0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CMAR(chan->id)));
> -	dev_dbg(chan2dev(chan), "CMDR:    0x%08x\n",
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "CMDR:    0x%08x\n",
>   		stm32_mdma_read(dmadev, STM32_MDMA_CMDR(chan->id)));
>   }
>   
> @@ -1187,7 +1182,7 @@ static void stm32_mdma_start_transfer(struct stm32_mdma_chan *chan)
>   
>   	chan->busy = true;
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: started\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: started\n", &chan->vchan);
>   }
>   
>   static void stm32_mdma_issue_pending(struct dma_chan *c)
> @@ -1200,7 +1195,7 @@ static void stm32_mdma_issue_pending(struct dma_chan *c)
>   	if (!vchan_issue_pending(&chan->vchan))
>   		goto end;
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: issued\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: issued\n", &chan->vchan);
>   
>   	if (!chan->desc && !chan->busy)
>   		stm32_mdma_start_transfer(chan);
> @@ -1220,7 +1215,7 @@ static int stm32_mdma_pause(struct dma_chan *c)
>   	spin_unlock_irqrestore(&chan->vchan.lock, flags);
>   
>   	if (!ret)
> -		dev_dbg(chan2dev(chan), "vchan %p: pause\n", &chan->vchan);
> +		dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: pause\n", &chan->vchan);
>   
>   	return ret;
>   }
> @@ -1261,7 +1256,7 @@ static int stm32_mdma_resume(struct dma_chan *c)
>   
>   	spin_unlock_irqrestore(&chan->vchan.lock, flags);
>   
> -	dev_dbg(chan2dev(chan), "vchan %p: resume\n", &chan->vchan);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "vchan %p: resume\n", &chan->vchan);
>   
>   	return 0;
>   }
> @@ -1422,10 +1417,10 @@ static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)
>   	if (!(status & ien)) {
>   		spin_unlock(&chan->vchan.lock);
>   		if (chan->busy)
> -			dev_warn(chan2dev(chan),
> +			dev_warn(vchan_chan_dev(&chan->vchan),
>   				 "spurious it (status=0x%04x, ien=0x%04x)\n", status, ien);
>   		else
> -			dev_dbg(chan2dev(chan),
> +			dev_dbg(vchan_chan_dev(&chan->vchan),
>   				"spurious it (status=0x%04x, ien=0x%04x)\n", status, ien);
>   		return IRQ_NONE;
>   	}
> @@ -1433,7 +1428,7 @@ static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)
>   	reg = STM32_MDMA_CIFCR(id);
>   
>   	if (status & STM32_MDMA_CISR_TEIF) {
> -		dev_err(chan2dev(chan), "Transfer Err: stat=0x%08x\n",
> +		dev_err(vchan_chan_dev(&chan->vchan), "Transfer Err: stat=0x%08x\n",
>   			readl_relaxed(dmadev->base + STM32_MDMA_CESR(id)));
>   		stm32_mdma_set_bits(dmadev, reg, STM32_MDMA_CIFCR_CTEIF);
>   		status &= ~STM32_MDMA_CISR_TEIF;
> @@ -1468,9 +1463,9 @@ static irqreturn_t stm32_mdma_irq_handler(int irq, void *devid)
>   
>   	if (status) {
>   		stm32_mdma_set_bits(dmadev, reg, status);
> -		dev_err(chan2dev(chan), "DMA error: status=0x%08x\n", status);
> +		dev_err(vchan_chan_dev(&chan->vchan), "DMA error: status=0x%08x\n", status);
>   		if (!(ccr & STM32_MDMA_CCR_EN))
> -			dev_err(chan2dev(chan), "chan disabled by HW\n");
> +			dev_err(vchan_chan_dev(&chan->vchan), "chan disabled by HW\n");
>   	}
>   
>   	spin_unlock(&chan->vchan.lock);
> @@ -1490,7 +1485,7 @@ static int stm32_mdma_alloc_chan_resources(struct dma_chan *c)
>   					  __alignof__(struct stm32_mdma_hwdesc),
>   					   0);
>   	if (!chan->desc_pool) {
> -		dev_err(chan2dev(chan), "failed to allocate descriptor pool\n");
> +		dev_err(vchan_chan_dev(&chan->vchan), "failed to allocate descriptor pool\n");
>   		return -ENOMEM;
>   	}
>   
> @@ -1511,7 +1506,7 @@ static void stm32_mdma_free_chan_resources(struct dma_chan *c)
>   	struct stm32_mdma_device *dmadev = stm32_mdma_get_dev(chan);
>   	unsigned long flags;
>   
> -	dev_dbg(chan2dev(chan), "Freeing channel %d\n", chan->id);
> +	dev_dbg(vchan_chan_dev(&chan->vchan), "Freeing channel %d\n", chan->id);
>   
>   	if (chan->busy) {
>   		spin_lock_irqsave(&chan->vchan.lock, flags);

Regards,
Amelie

  parent reply	other threads:[~2026-09-07  8:55 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-04 21:49 [PATCH v3 0/4] dmaengine: rename dma_chan::dev to dma_chan::chan_dev for clarity Frank.Li
2026-09-04 21:49 ` [PATCH v3 1/4] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
2026-09-04 22:04   ` sashiko-bot
2026-09-07  9:00   ` Amelie Delaunay
2026-09-04 21:49 ` [PATCH v3 2/4] dmaengine: use dma_chan_name() helper to get per-channel " Frank.Li
2026-09-04 21:58   ` sashiko-bot
2026-09-05  7:55   ` Andy Shevchenko
2026-09-07  9:01   ` Amelie Delaunay
2026-09-04 21:49 ` [PATCH v3 3/4] dmaengine: add (dmaengine|vchan)_chan_dev() helper Frank.Li
2026-09-04 22:02   ` sashiko-bot
2026-09-07  8:55   ` Amelie Delaunay [this message]
2026-09-09 12:39     ` Vinod Koul
2026-09-04 21:49 ` [PATCH v3 4/4] dmaengine: add union chan_dev for dma_chan::dev for clarity Frank.Li
2026-09-04 22:01   ` sashiko-bot
2026-09-05  7:59   ` Andy Shevchenko
2026-09-05  8:00 ` [PATCH v3 0/4] dmaengine: rename dma_chan::dev to dma_chan::chan_dev " Andy Shevchenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c79f42cf-43c4-4b5a-a6da-217052d40284@foss.st.com \
    --to=amelie.delaunay@foss.st.com \
    --cc=Eugeniy.Paltsev@synopsys.com \
    --cc=Frank.Li@kernel.org \
    --cc=Frank.Li@nxp.com \
    --cc=Frank.Li@oss.nxp.com \
    --cc=afaerber@suse.de \
    --cc=alexandre.torgue@foss.st.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=daniel@zonque.org \
    --cc=dmaengine@vger.kernel.org \
    --cc=haojian.zhuang@gmail.com \
    --cc=imx@lists.linux.dev \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonathanh@nvidia.com \
    --cc=keguang.zhang@gmail.com \
    --cc=kelvin.cao@microchip.com \
    --cc=ldewangan@nvidia.com \
    --cc=linux-actions@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=logang@deltatee.com \
    --cc=ludovic.desroches@microchip.com \
    --cc=mani@kernel.org \
    --cc=mathieu.desnoyers@efficios.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=mhiramat@kernel.org \
    --cc=patrice.chotard@foss.st.com \
    --cc=paul@crapouillou.net \
    --cc=robert.jarzmik@free.fr \
    --cc=rostedt@goodmis.org \
    --cc=samuel@sholland.org \
    --cc=schung@nuvoton.com \
    --cc=thierry.reding@kernel.org \
    --cc=vigneshr@ti.com \
    --cc=vireshk@kernel.org \
    --cc=vkoul@kernel.org \
    --cc=wens@kernel.org \
    --cc=ychuang3@nuvoton.com \
    --cc=zhoubinbin@loongson.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).