Linux MIPS Architecture development
 help / color / mirror / Atom feed
* [PATCH v2 0/3] dmaengine: rename dma_chan::dev to dma_chan::chan_dev for clarity
@ 2026-09-03 20:53 Frank.Li
  2026-09-03 20:53 ` [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Frank.Li @ 2026-09-03 20:53 UTC (permalink / raw)
  To: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou, Patrice Chotard,
	Amélie Delaunay, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra
  Cc: linux-arm-kernel, dmaengine, linux-kernel, linux-mips,
	linux-stm32, linux-trace-kernel, linux-tegra, linux-actions,
	linux-sunxi, imx, Frank Li

The current dma_chan structure contains both "device" and "dev". So

    chan->device->dev refers to the DMA engine device.
    chan->dev->device refers to the per-channel device instance.

Their similar naming makes the distinction unclear and increases reader
confusion.

Add union dma_chan::chan_dev to make its purpose explicit and clearly
identify it as the per-channel device. After all user switch to chan_dev,
union and dma_chan::dev will be removed.

Update the kernel-doc accordingly. Besides its sysfs usage, the per-channel
device is also used by some DMA engine drivers for IOMMU mapping and
therefore deserves a more accurate description.

1st patch use existing helper dma_chan_name() to reduce rename difference.
2nd rename drivers/dma

Need following patch to clean other dma engineer driver, which is not
in drivers/dma

After complete all rename work, dma_chan::dev can be removed.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Changes in v2:
- rebase to dmaengine/next
- add vchan_chan_name() help function for vchan case.
- Link to v1: https://patch.msgid.link/20260812-dma-chan_dev-rename-v1-0-a67131f7d5c2@nxp.com

---
Frank Li (3):
      dmaengine: vchan: add vchan_chan_name() to get channel device name
      dmaengine: use dma_chan_name() helper to get per-channel device name
      dmaengine: add union chan_dev for dma_chan::dev for clarity

 drivers/dma/arm-dma350.c                       |  2 +-
 drivers/dma/at_hdmac.c                         |  2 +-
 drivers/dma/at_xdmac.c                         |  2 +-
 drivers/dma/dma-jz4780.c                       | 10 ++---
 drivers/dma/dmaengine.c                        | 34 ++++++++---------
 drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c |  2 +-
 drivers/dma/dw-axi-dmac/dw-axi-dmac.h          |  4 +-
 drivers/dma/dw/core.c                          |  2 +-
 drivers/dma/ep93xx_dma.c                       |  2 +-
 drivers/dma/idma64.c                           |  4 +-
 drivers/dma/loongson/loongson1-apb-dma.c       |  2 +-
 drivers/dma/loongson/loongson2-apb-cmc-dma.c   |  4 +-
 drivers/dma/loongson/loongson2-apb-dma.c       |  4 +-
 drivers/dma/mmp_pdma.c                         |  2 +-
 drivers/dma/nbpfaxi.c                          |  2 +-
 drivers/dma/owl-dma.c                          |  2 +-
 drivers/dma/pch_dma.c                          |  2 +-
 drivers/dma/pxa_dma.c                          | 52 +++++++++++++-------------
 drivers/dma/st_fdma.c                          |  2 +-
 drivers/dma/stm32/stm32-dma.c                  |  4 +-
 drivers/dma/stm32/stm32-dma3.c                 |  8 ++--
 drivers/dma/stm32/stm32-mdma.c                 |  4 +-
 drivers/dma/sun6i-dma.c                        |  2 +-
 drivers/dma/switchtec_dma.c                    | 14 +++----
 drivers/dma/tegra186-gpc-dma.c                 |  4 +-
 drivers/dma/tegra20-apb-dma.c                  |  2 +-
 drivers/dma/ti/k3-udma.c                       |  6 +--
 drivers/dma/timb_dma.c                         |  2 +-
 drivers/dma/virt-dma.h                         | 11 ++++++
 include/linux/dmaengine.h                      | 18 ++++++---
 include/trace/events/tegra_apb_dma.h           |  6 +--
 31 files changed, 118 insertions(+), 99 deletions(-)
---
base-commit: 5c7962210474adbd9874227bc5096dbc11501d34
change-id: 20260812-dma-chan_dev-rename-66263ac5eac9

Best regards,
--  
Frank Li <Frank.Li@nxp.com>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-03 20:53 [PATCH v2 0/3] dmaengine: rename dma_chan::dev to dma_chan::chan_dev for clarity Frank.Li
@ 2026-09-03 20:53 ` Frank.Li
  2026-09-03 22:30   ` Logan Gunthorpe
                     ` (2 more replies)
  2026-09-03 20:53 ` [PATCH v2 2/3] dmaengine: use dma_chan_name() helper to get per-channel " Frank.Li
  2026-09-03 20:53 ` [PATCH v2 3/3] dmaengine: add union chan_dev for dma_chan::dev for clarity Frank.Li
  2 siblings, 3 replies; 12+ messages in thread
From: Frank.Li @ 2026-09-03 20:53 UTC (permalink / raw)
  To: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou, Patrice Chotard,
	Amélie Delaunay, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra
  Cc: linux-arm-kernel, dmaengine, linux-kernel, linux-mips,
	linux-stm32, linux-trace-kernel, linux-tegra, linux-actions,
	linux-sunxi, imx, Frank Li

From: Frank Li <Frank.Li@nxp.com>

Introduce vchan_chan_name() to obtain the DMA channel device name.

Use a dedicated helper instead of directly accessing dma_chan::dev
so callers remain unaffected by an upcoming rename of the struct member.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/arm-dma350.c                     |  2 +-
 drivers/dma/loongson/loongson2-apb-cmc-dma.c |  2 +-
 drivers/dma/stm32/stm32-dma.c                |  2 +-
 drivers/dma/stm32/stm32-dma3.c               |  4 ++--
 drivers/dma/virt-dma.h                       | 11 +++++++++++
 5 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/dma/arm-dma350.c b/drivers/dma/arm-dma350.c
index 09403aca8bb06..52f5242ea3327 100644
--- a/drivers/dma/arm-dma350.c
+++ b/drivers/dma/arm-dma350.c
@@ -512,7 +512,7 @@ static int d350_alloc_chan_resources(struct dma_chan *chan)
 {
 	struct d350_chan *dch = to_d350_chan(chan);
 	int ret = request_irq(dch->irq, d350_irq, IRQF_SHARED,
-			      dev_name(&dch->vc.chan.dev->device), dch);
+			      vchan_chan_name(&dch->vc), dch);
 	if (!ret)
 		writel_relaxed(CH_INTREN_DONE | CH_INTREN_ERR, dch->base + CH_INTREN);
 
diff --git a/drivers/dma/loongson/loongson2-apb-cmc-dma.c b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
index 1c9a542edc859..2f1c8c4fd0654 100644
--- a/drivers/dma/loongson/loongson2-apb-cmc-dma.c
+++ b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
@@ -678,7 +678,7 @@ static int loongson2_cmc_dma_probe(struct platform_device *pdev)
 			return lchan->irq;
 
 		ret = devm_request_irq(dev, lchan->irq, loongson2_cmc_dma_chan_irq, IRQF_SHARED,
-				       dev_name(chan2dev(lchan)), lchan);
+				       vchan_chan_name(&lchan->vchan), lchan);
 		if (ret)
 			return ret;
 	}
diff --git a/drivers/dma/stm32/stm32-dma.c b/drivers/dma/stm32/stm32-dma.c
index d3ad78562a140..3e8151e2ad75a 100644
--- a/drivers/dma/stm32/stm32-dma.c
+++ b/drivers/dma/stm32/stm32-dma.c
@@ -1668,7 +1668,7 @@ static int stm32_dma_probe(struct platform_device *pdev)
 
 		ret = devm_request_irq(&pdev->dev, chan->irq,
 				       stm32_dma_chan_irq, 0,
-				       dev_name(chan2dev(chan)), chan);
+				       vchan_chan_name(&chan->vchan), chan);
 		if (ret) {
 			dev_err(&pdev->dev,
 				"request_irq failed with err %d channel %d\n",
diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c
index 4724e7fa0008e..1ee1bd22703fb 100644
--- a/drivers/dma/stm32/stm32-dma3.c
+++ b/drivers/dma/stm32/stm32-dma3.c
@@ -1892,10 +1892,10 @@ static int stm32_dma3_probe(struct platform_device *pdev)
 		chan->irq = ret;
 
 		ret = devm_request_irq(&pdev->dev, chan->irq, stm32_dma3_chan_irq, 0,
-				       dev_name(chan2dev(chan)), chan);
+				       vchan_chan_name(&chan->vchan), chan);
 		if (ret) {
 			dev_err_probe(&pdev->dev, ret, "Failed to request channel %s IRQ\n",
-				      dev_name(chan2dev(chan)));
+				      vchan_chan_name(&chan->vchan));
 			goto err_clk_disable;
 		}
 	}
diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h
index 59d9eabc8b674..dd023a3831209 100644
--- a/drivers/dma/virt-dma.h
+++ b/drivers/dma/virt-dma.h
@@ -209,6 +209,17 @@ static inline void vchan_free_chan_resources(struct virt_dma_chan *vc)
 	vchan_dma_desc_free_list(vc, &head);
 }
 
+/**
+ * vchan_chan_name - Return vchan DMA channel device name
+ * @vc: virtual channel
+ *
+ * Return: The name of the DMA channel device
+ */
+static inline const char *vchan_chan_name(struct virt_dma_chan *vc)
+{
+	return dma_chan_name(&vc->chan);
+}
+
 /**
  * vchan_synchronize() - synchronize callback execution to the current context
  * @vc: virtual channel to synchronize

-- 
2.43.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 2/3] dmaengine: use dma_chan_name() helper to get per-channel device name
  2026-09-03 20:53 [PATCH v2 0/3] dmaengine: rename dma_chan::dev to dma_chan::chan_dev for clarity Frank.Li
  2026-09-03 20:53 ` [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
@ 2026-09-03 20:53 ` Frank.Li
  2026-09-03 20:53 ` [PATCH v2 3/3] dmaengine: add union chan_dev for dma_chan::dev for clarity Frank.Li
  2 siblings, 0 replies; 12+ messages in thread
From: Frank.Li @ 2026-09-03 20:53 UTC (permalink / raw)
  To: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou, Patrice Chotard,
	Amélie Delaunay, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra
  Cc: linux-arm-kernel, dmaengine, linux-kernel, linux-mips,
	linux-stm32, linux-trace-kernel, linux-tegra, linux-actions,
	linux-sunxi, imx, Frank Li

From: Frank Li <Frank.Li@nxp.com>

Use the existing dma_chan_name() helper to obtain the per-channel device
name instead of open-coding: dev_name(chan->dev->device) /
dev_name(chan2dev())

Simplify the code and improve consistency.

No functional change intended.

Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/dma-jz4780.c                       | 2 +-
 drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 2 +-
 drivers/dma/idma64.c                           | 2 +-
 drivers/dma/loongson/loongson2-apb-dma.c       | 2 +-
 drivers/dma/mmp_pdma.c                         | 2 +-
 drivers/dma/st_fdma.c                          | 2 +-
 drivers/dma/stm32/stm32-dma3.c                 | 2 +-
 drivers/dma/stm32/stm32-mdma.c                 | 2 +-
 include/trace/events/tegra_apb_dma.h           | 6 +++---
 9 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
index 6070dfdb7114c..194649811d02b 100644
--- a/drivers/dma/dma-jz4780.c
+++ b/drivers/dma/dma-jz4780.c
@@ -760,7 +760,7 @@ static int jz4780_dma_alloc_chan_resources(struct dma_chan *chan)
 {
 	struct jz4780_dma_chan *jzchan = to_jz4780_dma_chan(chan);
 
-	jzchan->desc_pool = dma_pool_create(dev_name(&chan->dev->device),
+	jzchan->desc_pool = dma_pool_create(dma_chan_name(chan),
 					    chan->device->dev,
 					    JZ_DMA_DESC_BLOCK_SIZE,
 					    PAGE_SIZE, 0);
diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
index 9c21a5479437d..7b50ba507cb02 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
@@ -531,7 +531,7 @@ static int dma_chan_alloc_chan_resources(struct dma_chan *dchan)
 	}
 
 	/* LLI address must be aligned to a 64-byte boundary */
-	chan->desc_pool = dma_pool_create(dev_name(chan2dev(chan)),
+	chan->desc_pool = dma_pool_create(dma_chan_name(dchan),
 					  chan->chip->dev,
 					  sizeof(struct axi_dma_lli),
 					  64, 0);
diff --git a/drivers/dma/idma64.c b/drivers/dma/idma64.c
index 5fcd1befc92da..6399fd5408be2 100644
--- a/drivers/dma/idma64.c
+++ b/drivers/dma/idma64.c
@@ -507,7 +507,7 @@ static int idma64_alloc_chan_resources(struct dma_chan *chan)
 	struct idma64_chan *idma64c = to_idma64_chan(chan);
 
 	/* Create a pool of consistent memory blocks for hardware descriptors */
-	idma64c->pool = dma_pool_create(dev_name(chan2dev(chan)),
+	idma64c->pool = dma_pool_create(dma_chan_name(chan),
 					chan->device->dev,
 					sizeof(struct idma64_lli), 8, 0);
 	if (!idma64c->pool) {
diff --git a/drivers/dma/loongson/loongson2-apb-dma.c b/drivers/dma/loongson/loongson2-apb-dma.c
index aceb069e71fca..7c3d7c3273955 100644
--- a/drivers/dma/loongson/loongson2-apb-dma.c
+++ b/drivers/dma/loongson/loongson2-apb-dma.c
@@ -282,7 +282,7 @@ static int ls2x_dma_alloc_chan_resources(struct dma_chan *chan)
 	struct ls2x_dma_chan *lchan = to_ldma_chan(chan);
 
 	/* Create a pool of consistent memory blocks for hardware descriptors */
-	lchan->pool = dma_pool_create(dev_name(chan2dev(chan)),
+	lchan->pool = dma_pool_create(dma_chan_name(chan),
 				      chan->device->dev, PAGE_SIZE,
 				      __alignof__(struct ls2x_dma_hw_desc), 0);
 	if (!lchan->pool) {
diff --git a/drivers/dma/mmp_pdma.c b/drivers/dma/mmp_pdma.c
index 386e85cd4882a..6b29e15b0616c 100644
--- a/drivers/dma/mmp_pdma.c
+++ b/drivers/dma/mmp_pdma.c
@@ -565,7 +565,7 @@ static int mmp_pdma_alloc_chan_resources(struct dma_chan *dchan)
 	if (chan->desc_pool)
 		return 1;
 
-	chan->desc_pool = dma_pool_create(dev_name(&dchan->dev->device),
+	chan->desc_pool = dma_pool_create(dma_chan_name(dchan),
 					  chan->dev,
 					  sizeof(struct mmp_pdma_desc_sw),
 					  __alignof__(struct mmp_pdma_desc_sw),
diff --git a/drivers/dma/st_fdma.c b/drivers/dma/st_fdma.c
index d9547017f3bd6..35dbff5f9f1ab 100644
--- a/drivers/dma/st_fdma.c
+++ b/drivers/dma/st_fdma.c
@@ -268,7 +268,7 @@ static int st_fdma_alloc_chan_res(struct dma_chan *chan)
 	struct st_fdma_chan *fchan = to_st_fdma_chan(chan);
 
 	/* Create the dma pool for descriptor allocation */
-	fchan->node_pool = dma_pool_create(dev_name(&chan->dev->device),
+	fchan->node_pool = dma_pool_create(dma_chan_name(chan),
 					    fchan->fdev->dev,
 					    sizeof(struct st_fdma_hw_node),
 					    __alignof__(struct st_fdma_hw_node),
diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c
index 1ee1bd22703fb..6ee7a1435efb6 100644
--- a/drivers/dma/stm32/stm32-dma3.c
+++ b/drivers/dma/stm32/stm32-dma3.c
@@ -1126,7 +1126,7 @@ static int stm32_dma3_alloc_chan_resources(struct dma_chan *c)
 		goto err_put_sync;
 	}
 
-	chan->lli_pool = dmam_pool_create(dev_name(&c->dev->device), c->device->dev,
+	chan->lli_pool = dmam_pool_create(dma_chan_name(c), c->device->dev,
 					  sizeof(struct stm32_dma3_hwdesc),
 					  __alignof__(struct stm32_dma3_hwdesc), SZ_64K);
 	if (!chan->lli_pool) {
diff --git a/drivers/dma/stm32/stm32-mdma.c b/drivers/dma/stm32/stm32-mdma.c
index e3bbdc9ee36ed..c274638e919c2 100644
--- a/drivers/dma/stm32/stm32-mdma.c
+++ b/drivers/dma/stm32/stm32-mdma.c
@@ -1484,7 +1484,7 @@ static int stm32_mdma_alloc_chan_resources(struct dma_chan *c)
 	struct stm32_mdma_device *dmadev = stm32_mdma_get_dev(chan);
 	int ret;
 
-	chan->desc_pool = dmam_pool_create(dev_name(&c->dev->device),
+	chan->desc_pool = dmam_pool_create(dma_chan_name(c),
 					   c->device->dev,
 					   sizeof(struct stm32_mdma_hwdesc),
 					  __alignof__(struct stm32_mdma_hwdesc),
diff --git a/include/trace/events/tegra_apb_dma.h b/include/trace/events/tegra_apb_dma.h
index 6d9f5075baa3e..c38117c127ef3 100644
--- a/include/trace/events/tegra_apb_dma.h
+++ b/include/trace/events/tegra_apb_dma.h
@@ -11,7 +11,7 @@ TRACE_EVENT(tegra_dma_tx_status,
 	TP_PROTO(struct dma_chan *dc, dma_cookie_t cookie, struct dma_tx_state *state),
 	TP_ARGS(dc, cookie, state),
 	TP_STRUCT__entry(
-		__string(chan,	dev_name(&dc->dev->device))
+		__string(chan,	dma_chan_name(dc))
 		__field(dma_cookie_t, cookie)
 		__field(__u32,	residue)
 	),
@@ -28,7 +28,7 @@ TRACE_EVENT(tegra_dma_complete_cb,
 	TP_PROTO(struct dma_chan *dc, int count, void *ptr),
 	TP_ARGS(dc, count, ptr),
 	TP_STRUCT__entry(
-		__string(chan,	dev_name(&dc->dev->device))
+		__string(chan,	dma_chan_name(dc))
 		__field(int,	count)
 		__field(void *,	ptr)
 		),
@@ -45,7 +45,7 @@ TRACE_EVENT(tegra_dma_isr,
 	TP_PROTO(struct dma_chan *dc, int irq),
 	TP_ARGS(dc, irq),
 	TP_STRUCT__entry(
-		__string(chan,	dev_name(&dc->dev->device))
+		__string(chan,	dma_chan_name(dc))
 		__field(int,	irq)
 	),
 	TP_fast_assign(

-- 
2.43.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 3/3] dmaengine: add union chan_dev for dma_chan::dev for clarity
  2026-09-03 20:53 [PATCH v2 0/3] dmaengine: rename dma_chan::dev to dma_chan::chan_dev for clarity Frank.Li
  2026-09-03 20:53 ` [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
  2026-09-03 20:53 ` [PATCH v2 2/3] dmaengine: use dma_chan_name() helper to get per-channel " Frank.Li
@ 2026-09-03 20:53 ` Frank.Li
  2026-09-04  9:19   ` Andy Shevchenko
  2 siblings, 1 reply; 12+ messages in thread
From: Frank.Li @ 2026-09-03 20:53 UTC (permalink / raw)
  To: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou, Patrice Chotard,
	Amélie Delaunay, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra
  Cc: linux-arm-kernel, dmaengine, linux-kernel, linux-mips,
	linux-stm32, linux-trace-kernel, linux-tegra, linux-actions,
	linux-sunxi, imx, Frank Li

From: Frank Li <Frank.Li@nxp.com>

The current dma_chan structure contains both "device" and "dev". So

chan->device->dev refers to the DMA engine device.
chan->dev->device refers to the per-channel device instance.

Their similar naming makes the distinction unclear and increases reader
confusion.

Add union dma_chan::chan_dev to make its purpose explicit and clearly
identify it as the per-channel device. After all user switch to chan_dev,
union and dma_chan::dev will be removed.

Update the kernel-doc accordingly. Besides its sysfs usage, the per-channel
device is also used by some DMA engine drivers for IOMMU mapping and
therefore deserves a more accurate description.

No functional change intended.

Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
there are other user use it outside drivers/dma/ directory.
---
 drivers/dma/at_hdmac.c                       |  2 +-
 drivers/dma/at_xdmac.c                       |  2 +-
 drivers/dma/dma-jz4780.c                     |  8 ++---
 drivers/dma/dmaengine.c                      | 34 +++++++++---------
 drivers/dma/dw-axi-dmac/dw-axi-dmac.h        |  4 +--
 drivers/dma/dw/core.c                        |  2 +-
 drivers/dma/ep93xx_dma.c                     |  2 +-
 drivers/dma/idma64.c                         |  2 +-
 drivers/dma/loongson/loongson1-apb-dma.c     |  2 +-
 drivers/dma/loongson/loongson2-apb-cmc-dma.c |  2 +-
 drivers/dma/loongson/loongson2-apb-dma.c     |  2 +-
 drivers/dma/nbpfaxi.c                        |  2 +-
 drivers/dma/owl-dma.c                        |  2 +-
 drivers/dma/pch_dma.c                        |  2 +-
 drivers/dma/pxa_dma.c                        | 52 ++++++++++++++--------------
 drivers/dma/stm32/stm32-dma.c                |  2 +-
 drivers/dma/stm32/stm32-dma3.c               |  2 +-
 drivers/dma/stm32/stm32-mdma.c               |  2 +-
 drivers/dma/sun6i-dma.c                      |  2 +-
 drivers/dma/switchtec_dma.c                  | 14 ++++----
 drivers/dma/tegra186-gpc-dma.c               |  4 +--
 drivers/dma/tegra20-apb-dma.c                |  2 +-
 drivers/dma/ti/k3-udma.c                     |  6 ++--
 drivers/dma/timb_dma.c                       |  2 +-
 include/linux/dmaengine.h                    | 18 +++++++---
 25 files changed, 91 insertions(+), 83 deletions(-)

diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c
index f4d0c72787d13..5df429002950b 100644
--- a/drivers/dma/at_hdmac.c
+++ b/drivers/dma/at_hdmac.c
@@ -383,7 +383,7 @@ static inline struct at_dma *to_at_dma(struct dma_device *ddev)
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 #if defined(VERBOSE_DEBUG)
diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c
index 901971e8bae69..30ec996845ce7 100644
--- a/drivers/dma/at_xdmac.c
+++ b/drivers/dma/at_xdmac.c
@@ -326,7 +326,7 @@ static inline struct at_xdmac_chan *to_at_xdmac_chan(struct dma_chan *dchan)
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 static inline struct at_xdmac *to_at_xdmac(struct dma_device *ddev)
diff --git a/drivers/dma/dma-jz4780.c b/drivers/dma/dma-jz4780.c
index 194649811d02b..c48a46b2bbbf2 100644
--- a/drivers/dma/dma-jz4780.c
+++ b/drivers/dma/dma-jz4780.c
@@ -687,12 +687,12 @@ static bool jz4780_dma_chan_irq(struct jz4780_dma_dev *jzdma,
 	jz4780_dma_chn_writel(jzdma, jzchan->id, JZ_DMA_REG_DCS, 0);
 
 	if (dcs & JZ_DMA_DCS_AR) {
-		dev_warn(&jzchan->vchan.chan.dev->device,
+		dev_warn(&jzchan->vchan.chan.chan_dev->device,
 			 "address error (DCS=0x%x)\n", dcs);
 	}
 
 	if (dcs & JZ_DMA_DCS_HLT) {
-		dev_warn(&jzchan->vchan.chan.dev->device,
+		dev_warn(&jzchan->vchan.chan.chan_dev->device,
 			 "channel halt (DCS=0x%x)\n", dcs);
 	}
 
@@ -721,7 +721,7 @@ static bool jz4780_dma_chan_irq(struct jz4780_dma_dev *jzdma,
 			}
 		}
 	} else {
-		dev_err(&jzchan->vchan.chan.dev->device,
+		dev_err(&jzchan->vchan.chan.chan_dev->device,
 			"channel IRQ with no active transfer\n");
 	}
 
@@ -765,7 +765,7 @@ static int jz4780_dma_alloc_chan_resources(struct dma_chan *chan)
 					    JZ_DMA_DESC_BLOCK_SIZE,
 					    PAGE_SIZE, 0);
 	if (!jzchan->desc_pool) {
-		dev_err(&chan->dev->device,
+		dev_err(&chan->chan_dev->device,
 			"failed to allocate descriptor pool\n");
 		return -ENOMEM;
 	}
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 6ffd8bd82154a..c00641366c4dc 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -868,10 +868,10 @@ struct dma_chan *dma_request_chan(struct device *dev, const char *name)
 		return chan;
 	chan->slave = dev;
 
-	if (sysfs_create_link(&chan->dev->device.kobj, &dev->kobj,
+	if (sysfs_create_link(&chan->chan_dev->device.kobj, &dev->kobj,
 			      DMA_SLAVE_NAME))
 		dev_warn(dev, "Cannot create DMA %s symlink\n", DMA_SLAVE_NAME);
-	if (sysfs_create_link(&dev->kobj, &chan->dev->device.kobj, chan->name))
+	if (sysfs_create_link(&dev->kobj, &chan->chan_dev->device.kobj, chan->name))
 		dev_warn(dev, "Cannot create DMA %s symlink\n", chan->name);
 
 	return chan;
@@ -917,7 +917,7 @@ void dma_release_channel(struct dma_chan *chan)
 	dma_chan_put(chan);
 
 	if (chan->slave) {
-		sysfs_remove_link(&chan->dev->device.kobj, DMA_SLAVE_NAME);
+		sysfs_remove_link(&chan->chan_dev->device.kobj, DMA_SLAVE_NAME);
 		sysfs_remove_link(&chan->slave->kobj, chan->name);
 		kfree(chan->name);
 		chan->name = NULL;
@@ -1083,8 +1083,8 @@ static int __dma_async_device_channel_register(struct dma_device *device,
 	chan->local = alloc_percpu(typeof(*chan->local));
 	if (!chan->local)
 		return -ENOMEM;
-	chan->dev = kzalloc_obj(*chan->dev);
-	if (!chan->dev) {
+	chan->chan_dev = kzalloc_obj(*chan->chan_dev);
+	if (!chan->chan_dev) {
 		rc = -ENOMEM;
 		goto err_free_local;
 	}
@@ -1101,17 +1101,17 @@ static int __dma_async_device_channel_register(struct dma_device *device,
 		goto err_free_dev;
 	}
 
-	chan->dev->device.class = &dma_devclass;
-	chan->dev->device.parent = device->dev;
-	chan->dev->chan = chan;
-	chan->dev->dev_id = device->dev_id;
+	chan->chan_dev->device.class = &dma_devclass;
+	chan->chan_dev->device.parent = device->dev;
+	chan->chan_dev->chan = chan;
+	chan->chan_dev->dev_id = device->dev_id;
 	spin_lock_init(&chan->lock);
 
 	if (!name)
-		dev_set_name(&chan->dev->device, "dma%dchan%d", device->dev_id, chan->chan_id);
+		dev_set_name(&chan->chan_dev->device, "dma%dchan%d", device->dev_id, chan->chan_id);
 	else
-		dev_set_name(&chan->dev->device, "%s", name);
-	rc = device_register(&chan->dev->device);
+		dev_set_name(&chan->chan_dev->device, "%s", name);
+	rc = device_register(&chan->chan_dev->device);
 	if (rc)
 		goto err_out_ida;
 	chan->client_count = 0;
@@ -1122,7 +1122,7 @@ static int __dma_async_device_channel_register(struct dma_device *device,
  err_out_ida:
 	ida_free(&device->chan_ida, chan->chan_id);
  err_free_dev:
-	kfree(chan->dev);
+	kfree(chan->chan_dev);
  err_free_local:
 	free_percpu(chan->local);
 	chan->local = NULL;
@@ -1155,10 +1155,10 @@ static void __dma_async_device_channel_unregister(struct dma_device *device,
 		  __func__, chan->client_count);
 	mutex_lock(&dma_list_mutex);
 	device->chancnt--;
-	chan->dev->chan = NULL;
+	chan->chan_dev->chan = NULL;
 	mutex_unlock(&dma_list_mutex);
 	ida_free(&device->chan_ida, chan->chan_id);
-	device_unregister(&chan->dev->device);
+	device_unregister(&chan->chan_dev->device);
 	free_percpu(chan->local);
 }
 
@@ -1290,9 +1290,9 @@ int dma_async_device_register(struct dma_device *device)
 		if (chan->local == NULL)
 			continue;
 		mutex_lock(&dma_list_mutex);
-		chan->dev->chan = NULL;
+		chan->chan_dev->chan = NULL;
 		mutex_unlock(&dma_list_mutex);
-		device_unregister(&chan->dev->device);
+		device_unregister(&chan->chan_dev->device);
 		free_percpu(chan->local);
 	}
 	return rc;
diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
index 039316c42f059..05524ec96bcab 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
@@ -120,12 +120,12 @@ struct axi_dma_chan_config {
 
 static inline struct device *dchan2dev(struct dma_chan *dchan)
 {
-	return &dchan->dev->device;
+	return &dchan->chan_dev->device;
 }
 
 static inline struct device *chan2dev(struct axi_dma_chan *chan)
 {
-	return &chan->vc.chan.dev->device;
+	return &chan->vc.chan.chan_dev->device;
 }
 
 static inline struct axi_dma_desc *vd_to_axi_desc(struct virt_dma_desc *vd)
diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c
index dd75f97a33b3d..d5618c128121f 100644
--- a/drivers/dma/dw/core.c
+++ b/drivers/dma/dw/core.c
@@ -43,7 +43,7 @@
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 static struct dw_desc *dwc_first_active(struct dw_dma_chan *dwc)
diff --git a/drivers/dma/ep93xx_dma.c b/drivers/dma/ep93xx_dma.c
index 311e55a97ba9f..977ab12c793e9 100644
--- a/drivers/dma/ep93xx_dma.c
+++ b/drivers/dma/ep93xx_dma.c
@@ -252,7 +252,7 @@ struct ep93xx_edma_data {
 
 static inline struct device *chan2dev(struct ep93xx_dma_chan *edmac)
 {
-	return &edmac->chan.dev->device;
+	return &edmac->chan.chan_dev->device;
 }
 
 static struct ep93xx_dma_chan *to_ep93xx_dma_chan(struct dma_chan *chan)
diff --git a/drivers/dma/idma64.c b/drivers/dma/idma64.c
index 6399fd5408be2..6fdc0d50964ad 100644
--- a/drivers/dma/idma64.c
+++ b/drivers/dma/idma64.c
@@ -27,7 +27,7 @@
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 /* ---------------------------------------------------------------------- */
diff --git a/drivers/dma/loongson/loongson1-apb-dma.c b/drivers/dma/loongson/loongson1-apb-dma.c
index 89786cbd20ab5..03c8081e4b9a9 100644
--- a/drivers/dma/loongson/loongson1-apb-dma.c
+++ b/drivers/dma/loongson/loongson1-apb-dma.c
@@ -91,7 +91,7 @@ static irqreturn_t ls1x_dma_irq_handler(int irq, void *data);
 
 static inline struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 static inline int ls1x_dma_query(struct ls1x_dma_chan *chan,
diff --git a/drivers/dma/loongson/loongson2-apb-cmc-dma.c b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
index 2f1c8c4fd0654..69914778ead9e 100644
--- a/drivers/dma/loongson/loongson2-apb-cmc-dma.c
+++ b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
@@ -136,7 +136,7 @@ static struct loongson2_cmc_dma_desc *to_lmdma_desc(struct virt_dma_desc *vdesc)
 
 static struct device *chan2dev(struct loongson2_cmc_dma_chan *lchan)
 {
-	return &lchan->vchan.chan.dev->device;
+	return &lchan->vchan.chan.chan_dev->device;
 }
 
 static u32 loongson2_cmc_dma_read(struct loongson2_cmc_dma_dev *lddev, u32 reg, u32 id)
diff --git a/drivers/dma/loongson/loongson2-apb-dma.c b/drivers/dma/loongson/loongson2-apb-dma.c
index 7c3d7c3273955..94f4364fbfb56 100644
--- a/drivers/dma/loongson/loongson2-apb-dma.c
+++ b/drivers/dma/loongson/loongson2-apb-dma.c
@@ -163,7 +163,7 @@ static inline struct ls2x_dma_priv *to_ldma_priv(struct dma_device *ddev)
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 static void ls2x_dma_desc_free(struct virt_dma_desc *vdesc)
diff --git a/drivers/dma/nbpfaxi.c b/drivers/dma/nbpfaxi.c
index 05d7321629cc8..4dd87cafc5e0a 100644
--- a/drivers/dma/nbpfaxi.c
+++ b/drivers/dma/nbpfaxi.c
@@ -1202,7 +1202,7 @@ static irqreturn_t nbpf_chan_irq(int irq, void *dev)
 
 	nbpf_status_ack(chan);
 
-	dev_dbg(&chan->dma_chan.dev->device, "%s()\n", __func__);
+	dev_dbg(&chan->dma_chan.chan_dev->device, "%s()\n", __func__);
 
 	spin_lock(&chan->lock);
 	desc = chan->running;
diff --git a/drivers/dma/owl-dma.c b/drivers/dma/owl-dma.c
index 7c80572fc71d1..ab7531a3a89c9 100644
--- a/drivers/dma/owl-dma.c
+++ b/drivers/dma/owl-dma.c
@@ -294,7 +294,7 @@ static inline struct owl_dma *to_owl_dma(struct dma_device *dd)
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 static inline struct owl_dma_vchan *to_owl_vchan(struct dma_chan *chan)
diff --git a/drivers/dma/pch_dma.c b/drivers/dma/pch_dma.c
index bf805f1024f64..69d60b587c2bb 100644
--- a/drivers/dma/pch_dma.c
+++ b/drivers/dma/pch_dma.c
@@ -152,7 +152,7 @@ static inline struct pch_dma *to_pd(struct dma_device *ddev)
 
 static inline struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 static inline
diff --git a/drivers/dma/pxa_dma.c b/drivers/dma/pxa_dma.c
index fa2ee0b3e09f8..5398b47fec370 100644
--- a/drivers/dma/pxa_dma.c
+++ b/drivers/dma/pxa_dma.c
@@ -149,7 +149,7 @@ struct pxad_device {
 	({								\
 		u32 _v;							\
 		_v = readl_relaxed((phy)->base + _reg((phy)->idx));	\
-		dev_vdbg(&phy->vchan->vc.chan.dev->device,		\
+		dev_vdbg(&phy->vchan->vc.chan.chan_dev->device,		\
 			 "%s(): readl(%s): 0x%08x\n", __func__, #_reg,	\
 			  _v);						\
 		_v;							\
@@ -157,14 +157,14 @@ struct pxad_device {
 #define phy_writel(phy, val, _reg)					\
 	do {								\
 		writel((val), (phy)->base + _reg((phy)->idx));		\
-		dev_vdbg(&phy->vchan->vc.chan.dev->device,		\
+		dev_vdbg(&phy->vchan->vc.chan.chan_dev->device,		\
 			 "%s(): writel(0x%08x, %s)\n",			\
 			 __func__, (u32)(val), #_reg);			\
 	} while (0)
 #define phy_writel_relaxed(phy, val, _reg)				\
 	do {								\
 		writel_relaxed((val), (phy)->base + _reg((phy)->idx));	\
-		dev_vdbg(&phy->vchan->vc.chan.dev->device,		\
+		dev_vdbg(&phy->vchan->vc.chan.chan_dev->device,		\
 			 "%s(): writel_relaxed(0x%08x, %s)\n",		\
 			 __func__, (u32)(val), #_reg);			\
 	} while (0)
@@ -396,7 +396,7 @@ static struct pxad_phy *lookup_phy(struct pxad_chan *pchan)
 
 out_unlock:
 	spin_unlock_irqrestore(&pdev->phy_lock, flags);
-	dev_dbg(&pchan->vc.chan.dev->device,
+	dev_dbg(&pchan->vc.chan.chan_dev->device,
 		"%s(): phy=%p(%d)\n", __func__, found,
 		found ? found->idx : -1);
 
@@ -409,7 +409,7 @@ static void pxad_free_phy(struct pxad_chan *chan)
 	unsigned long flags;
 	u32 reg;
 
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): freeing\n", __func__);
 	if (!chan->phy)
 		return;
@@ -454,7 +454,7 @@ static void phy_enable(struct pxad_phy *phy, bool misaligned)
 	if (!phy->vchan)
 		return;
 
-	dev_dbg(&phy->vchan->vc.chan.dev->device,
+	dev_dbg(&phy->vchan->vc.chan.chan_dev->device,
 		"%s(); phy=%p(%d) misaligned=%d\n", __func__,
 		phy, phy->idx, misaligned);
 
@@ -483,7 +483,7 @@ static void phy_disable(struct pxad_phy *phy)
 		return;
 
 	dcsr = phy_readl_relaxed(phy, DCSR);
-	dev_dbg(&phy->vchan->vc.chan.dev->device,
+	dev_dbg(&phy->vchan->vc.chan.chan_dev->device,
 		"%s(): phy=%p(%d)\n", __func__, phy, phy->idx);
 	phy_writel(phy, dcsr & ~PXA_DCSR_RUN & ~PXA_DCSR_STOPIRQEN, DCSR);
 }
@@ -491,12 +491,12 @@ static void phy_disable(struct pxad_phy *phy)
 static void pxad_launch_chan(struct pxad_chan *chan,
 				 struct pxad_desc_sw *desc)
 {
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): desc=%p\n", __func__, desc);
 	if (!chan->phy) {
 		chan->phy = lookup_phy(chan);
 		if (!chan->phy) {
-			dev_dbg(&chan->vc.chan.dev->device,
+			dev_dbg(&chan->vc.chan.chan_dev->device,
 				"%s(): no free dma channel\n", __func__);
 			return;
 		}
@@ -592,7 +592,7 @@ static unsigned int clear_chan_irq(struct pxad_phy *phy)
 	dcsr = phy_readl_relaxed(phy, DCSR);
 	phy_writel(phy, dcsr, DCSR);
 	if ((dcsr & PXA_DCSR_BUSERR) && (phy->vchan))
-		dev_warn(&phy->vchan->vc.chan.dev->device,
+		dev_warn(&phy->vchan->vc.chan.chan_dev->device,
 			 "%s(chan=%p): PXA_DCSR_BUSERR\n",
 			 __func__, &phy->vchan);
 
@@ -617,7 +617,7 @@ static irqreturn_t pxad_chan_handler(int irq, void *dev_id)
 	spin_lock(&chan->vc.lock);
 	list_for_each_entry_safe(vd, tmp, &chan->vc.desc_issued, node) {
 		vd_completed = is_desc_completed(vd);
-		dev_dbg(&chan->vc.chan.dev->device,
+		dev_dbg(&chan->vc.chan.chan_dev->device,
 			"%s(): checking txd %p[%x]: completed=%d dcsr=0x%x\n",
 			__func__, vd, vd->tx.cookie, vd_completed,
 			dcsr);
@@ -640,7 +640,7 @@ static irqreturn_t pxad_chan_handler(int irq, void *dev_id)
 	}
 
 	if (!chan->bus_error && dcsr & PXA_DCSR_STOPSTATE) {
-		dev_dbg(&chan->vc.chan.dev->device,
+		dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): channel stopped, submitted_empty=%d issued_empty=%d",
 			__func__,
 			list_empty(&chan->vc.desc_submitted),
@@ -694,7 +694,7 @@ static int pxad_alloc_chan_resources(struct dma_chan *dchan)
 					  __alignof__(struct pxad_desc_hw),
 					  0);
 	if (!chan->desc_pool) {
-		dev_err(&chan->vc.chan.dev->device,
+		dev_err(&chan->vc.chan.chan_dev->device,
 			"%s(): unable to allocate descriptor pool\n",
 			__func__);
 		return -ENOMEM;
@@ -749,7 +749,7 @@ pxad_alloc_desc(struct pxad_chan *chan, unsigned int nb_hw_desc)
 	for (i = 0; i < nb_hw_desc; i++) {
 		desc = dma_pool_alloc(sw_desc->desc_pool, GFP_NOWAIT, &dma);
 		if (!desc) {
-			dev_err(&chan->vc.chan.dev->device,
+			dev_err(&chan->vc.chan.chan_dev->device,
 				"%s(): Couldn't allocate the %dth hw_desc from dma_pool %p\n",
 				__func__, i, sw_desc->desc_pool);
 			goto err;
@@ -786,7 +786,7 @@ static dma_cookie_t pxad_tx_submit(struct dma_async_tx_descriptor *tx)
 
 	if (list_empty(&vc->desc_submitted) && pxad_try_hotchain(vc, vd)) {
 		list_move_tail(&vd->node, &vc->desc_issued);
-		dev_dbg(&chan->vc.chan.dev->device,
+		dev_dbg(&chan->vc.chan.chan_dev->device,
 			"%s(): txd %p[%x]: submitted (hot linked)\n",
 			__func__, vd, cookie);
 		goto out;
@@ -809,7 +809,7 @@ static dma_cookie_t pxad_tx_submit(struct dma_async_tx_descriptor *tx)
 		else
 			vd_chained = NULL;
 	}
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): txd %p[%x]: submitted (%s linked)\n",
 		__func__, vd, cookie, vd_chained ? "cold" : "not");
 	list_move_tail(&vd->node, &vc->desc_submitted);
@@ -832,7 +832,7 @@ static void pxad_issue_pending(struct dma_chan *dchan)
 
 	vd_first = list_first_entry(&chan->vc.desc_submitted,
 				    struct virt_dma_desc, node);
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): txd %p[%x]", __func__, vd_first, vd_first->tx.cookie);
 
 	vchan_issue_pending(&chan->vc);
@@ -852,7 +852,7 @@ pxad_tx_prep(struct virt_dma_chan *vc, struct virt_dma_desc *vd,
 	INIT_LIST_HEAD(&vd->node);
 	tx = vchan_tx_prep(vc, vd, tx_flags);
 	tx->tx_submit = pxad_tx_submit;
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): vc=%p txd=%p[%x] flags=0x%lx\n", __func__,
 		vc, vd, vd->tx.cookie,
 		tx_flags);
@@ -891,7 +891,7 @@ static void pxad_get_config(struct pxad_chan *chan,
 		*dcmd |= PXA_DCMD_BURST32 | PXA_DCMD_INCTRGADDR |
 			PXA_DCMD_INCSRCADDR;
 
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): dev_addr=0x%x maxburst=%d width=%d  dir=%d\n",
 		__func__, dev_addr, maxburst, width, dir);
 
@@ -925,7 +925,7 @@ pxad_prep_memcpy(struct dma_chan *dchan,
 	if (!dchan || !len)
 		return NULL;
 
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): dma_dst=0x%lx dma_src=0x%lx len=%zu flags=%lx\n",
 		__func__, (unsigned long)dma_dst, (unsigned long)dma_src,
 		len, flags);
@@ -974,7 +974,7 @@ pxad_prep_slave_sg(struct dma_chan *dchan, struct scatterlist *sgl,
 		return NULL;
 
 	pxad_get_config(chan, dir, &dcmd, &dsadr, &dtadr);
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): dir=%d flags=%lx\n", __func__, dir, flags);
 
 	nb_desc = sg_nents_for_dma(sgl, sg_len, PDMA_MAX_DESC_BYTES);
@@ -1021,7 +1021,7 @@ pxad_prep_dma_cyclic(struct dma_chan *dchan,
 	if (!dchan || !len || !period_len)
 		return NULL;
 	if ((dir != DMA_DEV_TO_MEM) && (dir != DMA_MEM_TO_DEV)) {
-		dev_err(&chan->vc.chan.dev->device,
+		dev_err(&chan->vc.chan.chan_dev->device,
 			"Unsupported direction for cyclic DMA\n");
 		return NULL;
 	}
@@ -1032,7 +1032,7 @@ pxad_prep_dma_cyclic(struct dma_chan *dchan,
 
 	pxad_get_config(chan, dir, &dcmd, &dsadr, &dtadr);
 	dcmd |= PXA_DCMD_ENDIRQEN | (PXA_DCMD_LENGTH & period_len);
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): buf_addr=0x%lx len=%zu period=%zu dir=%d flags=%lx\n",
 		__func__, (unsigned long)buf_addr, len, period_len, dir, flags);
 
@@ -1080,14 +1080,14 @@ static int pxad_terminate_all(struct dma_chan *dchan)
 	struct pxad_phy *phy;
 	LIST_HEAD(head);
 
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): vchan %p: terminate all\n", __func__, &chan->vc);
 
 	spin_lock_irqsave(&chan->vc.lock, flags);
 	vchan_get_all_descriptors(&chan->vc, &head);
 
 	list_for_each_entry(vd, &head, node) {
-		dev_dbg(&chan->vc.chan.dev->device,
+		dev_dbg(&chan->vc.chan.chan_dev->device,
 			"%s(): cancelling txd %p[%x] (completed=%d)", __func__,
 			vd, vd->tx.cookie, is_desc_completed(vd));
 	}
@@ -1177,7 +1177,7 @@ static unsigned int pxad_residue(struct pxad_chan *chan,
 
 out:
 	spin_unlock_irqrestore(&chan->vc.lock, flags);
-	dev_dbg(&chan->vc.chan.dev->device,
+	dev_dbg(&chan->vc.chan.chan_dev->device,
 		"%s(): txd %p[%x] sw_desc=%p: %d\n",
 		__func__, vd, cookie, sw_desc, residue);
 	return residue;
diff --git a/drivers/dma/stm32/stm32-dma.c b/drivers/dma/stm32/stm32-dma.c
index 3e8151e2ad75a..5908782e66705 100644
--- a/drivers/dma/stm32/stm32-dma.c
+++ b/drivers/dma/stm32/stm32-dma.c
@@ -250,7 +250,7 @@ static struct stm32_dma_desc *to_stm32_dma_desc(struct virt_dma_desc *vdesc)
 
 static struct device *chan2dev(struct stm32_dma_chan *chan)
 {
-	return &chan->vchan.chan.dev->device;
+	return &chan->vchan.chan.chan_dev->device;
 }
 
 static u32 stm32_dma_read(struct stm32_dma_device *dmadev, u32 reg)
diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c
index 6ee7a1435efb6..78358d3734493 100644
--- a/drivers/dma/stm32/stm32-dma3.c
+++ b/drivers/dma/stm32/stm32-dma3.c
@@ -330,7 +330,7 @@ static inline struct stm32_dma3_swdesc *to_stm32_dma3_swdesc(struct virt_dma_des
 
 static struct device *chan2dev(struct stm32_dma3_chan *chan)
 {
-	return &chan->vchan.chan.dev->device;
+	return &chan->vchan.chan.chan_dev->device;
 }
 
 static struct device *ddata2dev(struct stm32_dma3_ddata *ddata)
diff --git a/drivers/dma/stm32/stm32-mdma.c b/drivers/dma/stm32/stm32-mdma.c
index c274638e919c2..a7ab77e4ebbcb 100644
--- a/drivers/dma/stm32/stm32-mdma.c
+++ b/drivers/dma/stm32/stm32-mdma.c
@@ -278,7 +278,7 @@ static struct stm32_mdma_desc *to_stm32_mdma_desc(struct virt_dma_desc *vdesc)
 
 static struct device *chan2dev(struct stm32_mdma_chan *chan)
 {
-	return &chan->vchan.chan.dev->device;
+	return &chan->vchan.chan.chan_dev->device;
 }
 
 static struct device *mdma2dev(struct stm32_mdma_device *mdma_dev)
diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c
index c248c2dec956a..3d5ca27b6e9d2 100644
--- a/drivers/dma/sun6i-dma.c
+++ b/drivers/dma/sun6i-dma.c
@@ -215,7 +215,7 @@ struct sun6i_dma_dev {
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 
 static inline struct sun6i_dma_dev *to_sun6i_dma_dev(struct dma_device *d)
diff --git a/drivers/dma/switchtec_dma.c b/drivers/dma/switchtec_dma.c
index c133535d37656..ebb734f807a3b 100644
--- a/drivers/dma/switchtec_dma.c
+++ b/drivers/dma/switchtec_dma.c
@@ -406,7 +406,7 @@ static int disable_channel(struct switchtec_dma_chan *swdma_chan)
 static void
 switchtec_dma_cleanup_completed(struct switchtec_dma_chan *swdma_chan)
 {
-	struct device *chan_dev = &swdma_chan->dma_chan.dev->device;
+	struct device *chan_dev = &swdma_chan->dma_chan.chan_dev->device;
 	struct switchtec_dma_desc *desc;
 	struct switchtec_dma_hw_ce *ce;
 	struct dmaengine_result res;
@@ -851,7 +851,7 @@ static irqreturn_t switchtec_dma_chan_status_isr(int irq, void *dma)
 	list_for_each_entry(chan, &dma_dev->channels, device_node) {
 		swdma_chan = container_of(chan, struct switchtec_dma_chan,
 					  dma_chan);
-		chan_dev = &swdma_chan->dma_chan.dev->device;
+		chan_dev = &swdma_chan->dma_chan.chan_dev->device;
 		chan_hw = swdma_chan->mmio_chan_hw;
 
 		rcu_read_lock();
@@ -1009,19 +1009,19 @@ static int switchtec_dma_alloc_chan_resources(struct dma_chan *chan)
 	perf_cfg = readl(&swdma_chan->mmio_chan_fw->perf_cfg);
 	rcu_read_unlock();
 
-	dev_dbg(&chan->dev->device, "Burst Size:  0x%x\n",
+	dev_dbg(&chan->chan_dev->device, "Burst Size:  0x%x\n",
 		FIELD_GET(PERF_BURST_SIZE_MASK, perf_cfg));
 
-	dev_dbg(&chan->dev->device, "Burst Scale: 0x%x\n",
+	dev_dbg(&chan->chan_dev->device, "Burst Scale: 0x%x\n",
 		FIELD_GET(PERF_BURST_SCALE_MASK, perf_cfg));
 
-	dev_dbg(&chan->dev->device, "Interval:    0x%x\n",
+	dev_dbg(&chan->chan_dev->device, "Interval:    0x%x\n",
 		FIELD_GET(PERF_INTERVAL_MASK, perf_cfg));
 
-	dev_dbg(&chan->dev->device, "Arb Weight:  0x%x\n",
+	dev_dbg(&chan->chan_dev->device, "Arb Weight:  0x%x\n",
 		FIELD_GET(PERF_ARB_WEIGHT_MASK, perf_cfg));
 
-	dev_dbg(&chan->dev->device, "MRRS:        0x%x\n",
+	dev_dbg(&chan->chan_dev->device, "MRRS:        0x%x\n",
 		FIELD_GET(PERF_MRRS_MASK, perf_cfg));
 
 	return SWITCHTEC_DMA_SQ_SIZE;
diff --git a/drivers/dma/tegra186-gpc-dma.c b/drivers/dma/tegra186-gpc-dma.c
index 64cedef1050ae..e36111e8a76dc 100644
--- a/drivers/dma/tegra186-gpc-dma.c
+++ b/drivers/dma/tegra186-gpc-dma.c
@@ -1537,7 +1537,7 @@ static int tegra_dma_probe(struct platform_device *pdev)
 	 * the channels available and registered for the DMA device are used.
 	 */
 	list_for_each_entry(chan, &tdma->dma_dev.channels, device_node) {
-		chdev = &chan->dev->device;
+		chdev = &chan->chan_dev->device;
 		tdc = to_tegra_dma_chan(chan);
 
 		if (use_iommu_map) {
@@ -1554,7 +1554,7 @@ static int tegra_dma_probe(struct platform_device *pdev)
 				return dev_err_probe(chdev, -EINVAL,
 					   "Failed to get stream ID for channel %d\n", tdc->id);
 
-			chan->dev->chan_dma_dev = true;
+			chan->chan_dev->chan_dma_dev = true;
 		}
 
 		/* program stream-id for this channel */
diff --git a/drivers/dma/tegra20-apb-dma.c b/drivers/dma/tegra20-apb-dma.c
index 640b8a218c9ad..33811e7ee6552 100644
--- a/drivers/dma/tegra20-apb-dma.c
+++ b/drivers/dma/tegra20-apb-dma.c
@@ -256,7 +256,7 @@ txd_to_tegra_dma_desc(struct dma_async_tx_descriptor *td)
 
 static inline struct device *tdc2dev(struct tegra_dma_channel *tdc)
 {
-	return &tdc->dma_chan.dev->device;
+	return &tdc->dma_chan.chan_dev->device;
 }
 
 static dma_cookie_t tegra_dma_tx_submit(struct dma_async_tx_descriptor *tx);
diff --git a/drivers/dma/ti/k3-udma.c b/drivers/dma/ti/k3-udma.c
index fb21e0df5ab7b..4fa6e81ff5a86 100644
--- a/drivers/dma/ti/k3-udma.c
+++ b/drivers/dma/ti/k3-udma.c
@@ -422,16 +422,16 @@ static int navss_psil_unpair(struct udma_dev *ud, u32 src_thread,
 
 static void k3_configure_chan_coherency(struct dma_chan *chan, u32 asel)
 {
-	struct device *chan_dev = &chan->dev->device;
+	struct device *chan_dev = &chan->chan_dev->device;
 
 	if (asel == 0) {
 		/* No special handling for the channel */
-		chan->dev->chan_dma_dev = false;
+		chan->chan_dev->chan_dma_dev = false;
 
 		dev_clear_dma_coherent(chan_dev);
 		chan_dev->dma_parms = NULL;
 	} else if (asel == 14 || asel == 15) {
-		chan->dev->chan_dma_dev = true;
+		chan->chan_dev->chan_dma_dev = true;
 
 		dev_set_dma_coherent(chan_dev);
 		dma_coerce_mask_and_coherent(chan_dev, DMA_BIT_MASK(48));
diff --git a/drivers/dma/timb_dma.c b/drivers/dma/timb_dma.c
index 4fc5119854ec1..f414e41d90013 100644
--- a/drivers/dma/timb_dma.c
+++ b/drivers/dma/timb_dma.c
@@ -93,7 +93,7 @@ struct timb_dma {
 
 static struct device *chan2dev(struct dma_chan *chan)
 {
-	return &chan->dev->device;
+	return &chan->chan_dev->device;
 }
 static struct device *chan2dmadev(struct dma_chan *chan)
 {
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
index fe33a20abc614..0fcec3f21390b 100644
--- a/include/linux/dmaengine.h
+++ b/include/linux/dmaengine.h
@@ -325,7 +325,8 @@ struct dma_router {
  * @lock: protect between config and prepare transfer when driver have not
  *	  implemented callback device_prep_config_sg().
  * @chan_id: channel ID for sysfs
- * @dev: class device for sysfs
+ * @chan_dev: class channel device for sysfs, some device use it for per-channel
+ *            iommu mapping.
  * @name: backlink name for sysfs
  * @dbg_client_name: slave name for debugfs in format:
  *	dev_name(requester's dev):channel name, for example: "2b00000.mcasp:tx"
@@ -351,7 +352,14 @@ struct dma_chan {
 
 	/* sysfs */
 	int chan_id;
-	struct dma_chan_dev *dev;
+	union {
+		struct dma_chan_dev *chan_dev;
+		/*
+		 * please use chan_dev, dev will be removed after all user
+		   switch to chan_dev
+		*/
+		struct dma_chan_dev *dev;
+	};
 	const char *name;
 #ifdef CONFIG_DEBUG_FS
 	char *dbg_client_name;
@@ -532,7 +540,7 @@ struct dma_slave_caps {
 
 static inline const char *dma_chan_name(struct dma_chan *chan)
 {
-	return dev_name(&chan->dev->device);
+	return dev_name(&chan->chan_dev->device);
 }
 
 /**
@@ -1805,8 +1813,8 @@ dmaengine_get_direction_text(enum dma_transfer_direction dir)
 
 static inline struct device *dmaengine_get_dma_device(struct dma_chan *chan)
 {
-	if (chan->dev->chan_dma_dev)
-		return &chan->dev->device;
+	if (chan->chan_dev->chan_dma_dev)
+		return &chan->chan_dev->device;
 
 	return chan->device->dev;
 }

-- 
2.43.0


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-03 20:53 ` [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
@ 2026-09-03 22:30   ` Logan Gunthorpe
  2026-09-04  8:35   ` Amelie Delaunay
  2026-09-04  9:08   ` Andy Shevchenko
  2 siblings, 0 replies; 12+ messages in thread
From: Logan Gunthorpe @ 2026-09-03 22:30 UTC (permalink / raw)
  To: Frank.Li, Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li,
	Paul Cercueil, Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou,
	Patrice Chotard, Amélie Delaunay, Maxime Coquelin,
	Alexandre Torgue, Steven Rostedt, Masami Hiramatsu,
	Mathieu Desnoyers, Thierry Reding, Jonathan Hunter,
	Ludovic Desroches, Viresh Kumar, Keguang Zhang,
	Andreas Färber, Manivannan Sadhasivam, Daniel Mack,
	Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai, Jernej Skrabec,
	Samuel Holland, Kelvin Cao, Laxman Dewangan, Vignesh Raghavendra
  Cc: linux-arm-kernel, dmaengine, linux-kernel, linux-mips,
	linux-stm32, linux-trace-kernel, linux-tegra, linux-actions,
	linux-sunxi, imx, Frank Li



On 2026-09-03 2:53 p.m., Frank.Li@oss.nxp.com wrote:
> From: Frank Li <Frank.Li@nxp.com>
> 
> Introduce vchan_chan_name() to obtain the DMA channel device name.
> 
> Use a dedicated helper instead of directly accessing dma_chan::dev
> so callers remain unaffected by an upcoming rename of the struct member.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>

Makes sense to me:

Reviewed-by: Logan Gunthorpe <logang@deltatee.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-03 20:53 ` [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
  2026-09-03 22:30   ` Logan Gunthorpe
@ 2026-09-04  8:35   ` Amelie Delaunay
  2026-09-04  9:10     ` [Linux-stm32] " Amelie Delaunay
  2026-09-04  9:08   ` Andy Shevchenko
  2 siblings, 1 reply; 12+ messages in thread
From: Amelie Delaunay @ 2026-09-04  8:35 UTC (permalink / raw)
  To: Frank.Li, Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li,
	Paul Cercueil, Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou,
	Patrice Chotard, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra
  Cc: linux-arm-kernel, dmaengine, linux-kernel, linux-mips,
	linux-stm32, linux-trace-kernel, linux-tegra, linux-actions,
	linux-sunxi, imx, Frank Li

Hi Frank,

On 9/3/26 22:53, Frank.Li@oss.nxp.com wrote:
> From: Frank Li <Frank.Li@nxp.com>
> 
> Introduce vchan_chan_name() to obtain the DMA channel device name.
> 
> Use a dedicated helper instead of directly accessing dma_chan::dev
> so callers remain unaffected by an upcoming rename of the struct member.
> 
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>   drivers/dma/arm-dma350.c                     |  2 +-
>   drivers/dma/loongson/loongson2-apb-cmc-dma.c |  2 +-
>   drivers/dma/stm32/stm32-dma.c                |  2 +-
>   drivers/dma/stm32/stm32-dma3.c               |  4 ++--

Could you move the driver updates from this patch to the next one? I 
don’t understand why the drivers above are modified here, while others 
are deferred to "[PATCH v2 2/3] dmaengine: use dma_chan_name() helper to 
get per-channel device name".

Regards,
Amelie

>   drivers/dma/virt-dma.h                       | 11 +++++++++++
>   5 files changed, 16 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/dma/arm-dma350.c b/drivers/dma/arm-dma350.c
> index 09403aca8bb06..52f5242ea3327 100644
> --- a/drivers/dma/arm-dma350.c
> +++ b/drivers/dma/arm-dma350.c
> @@ -512,7 +512,7 @@ static int d350_alloc_chan_resources(struct dma_chan *chan)
>   {
>   	struct d350_chan *dch = to_d350_chan(chan);
>   	int ret = request_irq(dch->irq, d350_irq, IRQF_SHARED,
> -			      dev_name(&dch->vc.chan.dev->device), dch);
> +			      vchan_chan_name(&dch->vc), dch);
>   	if (!ret)
>   		writel_relaxed(CH_INTREN_DONE | CH_INTREN_ERR, dch->base + CH_INTREN);
>   
> diff --git a/drivers/dma/loongson/loongson2-apb-cmc-dma.c b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
> index 1c9a542edc859..2f1c8c4fd0654 100644
> --- a/drivers/dma/loongson/loongson2-apb-cmc-dma.c
> +++ b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
> @@ -678,7 +678,7 @@ static int loongson2_cmc_dma_probe(struct platform_device *pdev)
>   			return lchan->irq;
>   
>   		ret = devm_request_irq(dev, lchan->irq, loongson2_cmc_dma_chan_irq, IRQF_SHARED,
> -				       dev_name(chan2dev(lchan)), lchan);
> +				       vchan_chan_name(&lchan->vchan), lchan);
>   		if (ret)
>   			return ret;
>   	}
> diff --git a/drivers/dma/stm32/stm32-dma.c b/drivers/dma/stm32/stm32-dma.c
> index d3ad78562a140..3e8151e2ad75a 100644
> --- a/drivers/dma/stm32/stm32-dma.c
> +++ b/drivers/dma/stm32/stm32-dma.c
> @@ -1668,7 +1668,7 @@ static int stm32_dma_probe(struct platform_device *pdev)
>   
>   		ret = devm_request_irq(&pdev->dev, chan->irq,
>   				       stm32_dma_chan_irq, 0,
> -				       dev_name(chan2dev(chan)), chan);
> +				       vchan_chan_name(&chan->vchan), chan);
>   		if (ret) {
>   			dev_err(&pdev->dev,
>   				"request_irq failed with err %d channel %d\n",
> diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32-dma3.c
> index 4724e7fa0008e..1ee1bd22703fb 100644
> --- a/drivers/dma/stm32/stm32-dma3.c
> +++ b/drivers/dma/stm32/stm32-dma3.c
> @@ -1892,10 +1892,10 @@ static int stm32_dma3_probe(struct platform_device *pdev)
>   		chan->irq = ret;
>   
>   		ret = devm_request_irq(&pdev->dev, chan->irq, stm32_dma3_chan_irq, 0,
> -				       dev_name(chan2dev(chan)), chan);
> +				       vchan_chan_name(&chan->vchan), chan);
>   		if (ret) {
>   			dev_err_probe(&pdev->dev, ret, "Failed to request channel %s IRQ\n",
> -				      dev_name(chan2dev(chan)));
> +				      vchan_chan_name(&chan->vchan));
>   			goto err_clk_disable;
>   		}
>   	}
> diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h
> index 59d9eabc8b674..dd023a3831209 100644
> --- a/drivers/dma/virt-dma.h
> +++ b/drivers/dma/virt-dma.h
> @@ -209,6 +209,17 @@ static inline void vchan_free_chan_resources(struct virt_dma_chan *vc)
>   	vchan_dma_desc_free_list(vc, &head);
>   }
>   
> +/**
> + * vchan_chan_name - Return vchan DMA channel device name
> + * @vc: virtual channel
> + *
> + * Return: The name of the DMA channel device
> + */
> +static inline const char *vchan_chan_name(struct virt_dma_chan *vc)
> +{
> +	return dma_chan_name(&vc->chan);
> +}
> +
>   /**
>    * vchan_synchronize() - synchronize callback execution to the current context
>    * @vc: virtual channel to synchronize
> 


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-03 20:53 ` [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
  2026-09-03 22:30   ` Logan Gunthorpe
  2026-09-04  8:35   ` Amelie Delaunay
@ 2026-09-04  9:08   ` Andy Shevchenko
  2026-09-04  9:26     ` Amelie Delaunay
  2 siblings, 1 reply; 12+ messages in thread
From: Andy Shevchenko @ 2026-09-04  9:08 UTC (permalink / raw)
  To: Frank.Li
  Cc: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Binbin Zhou, Patrice Chotard,
	Amélie Delaunay, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra, linux-arm-kernel, dmaengine,
	linux-kernel, linux-mips, linux-stm32, linux-trace-kernel,
	linux-tegra, linux-actions, linux-sunxi, imx, Frank Li

On Thu, Sep 03, 2026 at 04:53:11PM -0400, Frank.Li@oss.nxp.com wrote:

> Introduce vchan_chan_name() to obtain the DMA channel device name.
> 
> Use a dedicated helper instead of directly accessing dma_chan::dev
> so callers remain unaffected by an upcoming rename of the struct member.

LGTM,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

...

>  		ret = devm_request_irq(&pdev->dev, chan->irq,
>  				       stm32_dma_chan_irq, 0,
> -				       dev_name(chan2dev(chan)), chan);
> +				       vchan_chan_name(&chan->vchan), chan);
>  		if (ret) {
>  			dev_err(&pdev->dev,
>  				"request_irq failed with err %d channel %d\n",

This one...

> +++ b/drivers/dma/stm32/stm32-dma3.c

>  		ret = devm_request_irq(&pdev->dev, chan->irq, stm32_dma3_chan_irq, 0,
> -				       dev_name(chan2dev(chan)), chan);
> +				       vchan_chan_name(&chan->vchan), chan);
>  		if (ret) {
>  			dev_err_probe(&pdev->dev, ret, "Failed to request channel %s IRQ\n",
> -				      dev_name(chan2dev(chan)));
> +				      vchan_chan_name(&chan->vchan));
>  			goto err_clk_disable;

...and this one are duplicate messages as devm_request*irq() printsr
most of the information.

Not sure if there will be a patch to simply drop them.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Linux-stm32] [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-04  8:35   ` Amelie Delaunay
@ 2026-09-04  9:10     ` Amelie Delaunay
  2026-09-04 14:21       ` Frank Li
  0 siblings, 1 reply; 12+ messages in thread
From: Amelie Delaunay @ 2026-09-04  9:10 UTC (permalink / raw)
  To: Frank.Li, Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li,
	Paul Cercueil, Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou,
	Patrice Chotard, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra
  Cc: imx, Frank Li, linux-actions, linux-kernel, linux-mips,
	linux-tegra, dmaengine, linux-sunxi, linux-stm32,
	linux-arm-kernel, linux-trace-kernel

On 9/4/26 10:35, Amelie Delaunay wrote:
> Hi Frank,
> 
> On 9/3/26 22:53, Frank.Li@oss.nxp.com wrote:
>> From: Frank Li <Frank.Li@nxp.com>
>>
>> Introduce vchan_chan_name() to obtain the DMA channel device name.
>>
>> Use a dedicated helper instead of directly accessing dma_chan::dev
>> so callers remain unaffected by an upcoming rename of the struct member.
>>
>> Signed-off-by: Frank Li <Frank.Li@nxp.com>
>> ---
>>   drivers/dma/arm-dma350.c                     |  2 +-
>>   drivers/dma/loongson/loongson2-apb-cmc-dma.c |  2 +-
>>   drivers/dma/stm32/stm32-dma.c                |  2 +-
>>   drivers/dma/stm32/stm32-dma3.c               |  4 ++--
> 
> Could you move the driver updates from this patch to the next one? I 
> don’t understand why the drivers above are modified here, while others 
> are deferred to "[PATCH v2 2/3] dmaengine: use dma_chan_name() helper to 
> get per-channel device name".
> 

Oh, okay — my bad. I've just looked at v1, and I now understand that you 
split the vchan_chan_name() and dma_chan_name() updates.
I didn’t catch that at first glance because your cover letter hasn’t 
changed between v1 and v2.
"1st patch: use the existing helper dma_chan_name() to reduce rename 
differences.
2nd patch: rename drivers/dma"

> Regards,
> Amelie
> 
>>   drivers/dma/virt-dma.h                       | 11 +++++++++++
>>   5 files changed, 16 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/dma/arm-dma350.c b/drivers/dma/arm-dma350.c
>> index 09403aca8bb06..52f5242ea3327 100644
>> --- a/drivers/dma/arm-dma350.c
>> +++ b/drivers/dma/arm-dma350.c
>> @@ -512,7 +512,7 @@ static int d350_alloc_chan_resources(struct 
>> dma_chan *chan)
>>   {
>>       struct d350_chan *dch = to_d350_chan(chan);
>>       int ret = request_irq(dch->irq, d350_irq, IRQF_SHARED,
>> -                  dev_name(&dch->vc.chan.dev->device), dch);
>> +                  vchan_chan_name(&dch->vc), dch);
>>       if (!ret)
>>           writel_relaxed(CH_INTREN_DONE | CH_INTREN_ERR, dch->base + 
>> CH_INTREN);
>> diff --git a/drivers/dma/loongson/loongson2-apb-cmc-dma.c b/drivers/ 
>> dma/loongson/loongson2-apb-cmc-dma.c
>> index 1c9a542edc859..2f1c8c4fd0654 100644
>> --- a/drivers/dma/loongson/loongson2-apb-cmc-dma.c
>> +++ b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
>> @@ -678,7 +678,7 @@ static int loongson2_cmc_dma_probe(struct 
>> platform_device *pdev)
>>               return lchan->irq;
>>           ret = devm_request_irq(dev, lchan->irq, 
>> loongson2_cmc_dma_chan_irq, IRQF_SHARED,
>> -                       dev_name(chan2dev(lchan)), lchan);
>> +                       vchan_chan_name(&lchan->vchan), lchan);
>>           if (ret)
>>               return ret;
>>       }
>> diff --git a/drivers/dma/stm32/stm32-dma.c b/drivers/dma/stm32/stm32- 
>> dma.c
>> index d3ad78562a140..3e8151e2ad75a 100644
>> --- a/drivers/dma/stm32/stm32-dma.c
>> +++ b/drivers/dma/stm32/stm32-dma.c
>> @@ -1668,7 +1668,7 @@ static int stm32_dma_probe(struct 
>> platform_device *pdev)
>>           ret = devm_request_irq(&pdev->dev, chan->irq,
>>                          stm32_dma_chan_irq, 0,
>> -                       dev_name(chan2dev(chan)), chan);
>> +                       vchan_chan_name(&chan->vchan), chan);
>>           if (ret) {
>>               dev_err(&pdev->dev,
>>                   "request_irq failed with err %d channel %d\n",
>> diff --git a/drivers/dma/stm32/stm32-dma3.c b/drivers/dma/stm32/stm32- 
>> dma3.c
>> index 4724e7fa0008e..1ee1bd22703fb 100644
>> --- a/drivers/dma/stm32/stm32-dma3.c
>> +++ b/drivers/dma/stm32/stm32-dma3.c
>> @@ -1892,10 +1892,10 @@ static int stm32_dma3_probe(struct 
>> platform_device *pdev)
>>           chan->irq = ret;
>>           ret = devm_request_irq(&pdev->dev, chan->irq, 
>> stm32_dma3_chan_irq, 0,
>> -                       dev_name(chan2dev(chan)), chan);
>> +                       vchan_chan_name(&chan->vchan), chan);
>>           if (ret) {
>>               dev_err_probe(&pdev->dev, ret, "Failed to request 
>> channel %s IRQ\n",
>> -                      dev_name(chan2dev(chan)));
>> +                      vchan_chan_name(&chan->vchan));
>>               goto err_clk_disable;
>>           }
>>       }
>> diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h
>> index 59d9eabc8b674..dd023a3831209 100644
>> --- a/drivers/dma/virt-dma.h
>> +++ b/drivers/dma/virt-dma.h
>> @@ -209,6 +209,17 @@ static inline void 
>> vchan_free_chan_resources(struct virt_dma_chan *vc)
>>       vchan_dma_desc_free_list(vc, &head);
>>   }
>> +/**
>> + * vchan_chan_name - Return vchan DMA channel device name
>> + * @vc: virtual channel
>> + *
>> + * Return: The name of the DMA channel device
>> + */
>> +static inline const char *vchan_chan_name(struct virt_dma_chan *vc)
>> +{
>> +    return dma_chan_name(&vc->chan);
>> +}
>> +
>>   /**
>>    * vchan_synchronize() - synchronize callback execution to the 
>> current context
>>    * @vc: virtual channel to synchronize
>>
> 
> _______________________________________________
> Linux-stm32 mailing list
> Linux-stm32@st-md-mailman.stormreply.com
> https://st-md-mailman.stormreply.com/mailman/listinfo/linux-stm32


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 3/3] dmaengine: add union chan_dev for dma_chan::dev for clarity
  2026-09-03 20:53 ` [PATCH v2 3/3] dmaengine: add union chan_dev for dma_chan::dev for clarity Frank.Li
@ 2026-09-04  9:19   ` Andy Shevchenko
  0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2026-09-04  9:19 UTC (permalink / raw)
  To: Frank.Li
  Cc: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Binbin Zhou, Patrice Chotard,
	Amélie Delaunay, Maxime Coquelin, Alexandre Torgue,
	Steven Rostedt, Masami Hiramatsu, Mathieu Desnoyers,
	Thierry Reding, Jonathan Hunter, Ludovic Desroches, Viresh Kumar,
	Keguang Zhang, Andreas Färber, Manivannan Sadhasivam,
	Daniel Mack, Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, Kelvin Cao, Logan Gunthorpe,
	Laxman Dewangan, Vignesh Raghavendra, linux-arm-kernel, dmaengine,
	linux-kernel, linux-mips, linux-stm32, linux-trace-kernel,
	linux-tegra, linux-actions, linux-sunxi, imx, Frank Li

On Thu, Sep 03, 2026 at 04:53:13PM -0400, Frank.Li@oss.nxp.com wrote:

> The current dma_chan structure contains both "device" and "dev". So
> 
> chan->device->dev refers to the DMA engine device.
> chan->dev->device refers to the per-channel device instance.
> 
> Their similar naming makes the distinction unclear and increases reader
> confusion.
> 
> Add union dma_chan::chan_dev to make its purpose explicit and clearly
> identify it as the per-channel device. After all user switch to chan_dev,
> union and dma_chan::dev will be removed.
> 
> Update the kernel-doc accordingly. Besides its sysfs usage, the per-channel
> device is also used by some DMA engine drivers for IOMMU mapping and
> therefore deserves a more accurate description.
> 
> No functional change intended.

...

>  static inline struct device *chan2dev(struct axi_dma_chan *chan)
>  {
> -	return &chan->vc.chan.dev->device;
> +	return &chan->vc.chan.chan_dev->device;
>  }

Looking at this and below I think we need a common helper(s)

>  static struct device *chan2dev(struct loongson2_cmc_dma_chan *lchan)
>  {
> -	return &lchan->vchan.chan.dev->device;
> +	return &lchan->vchan.chan.chan_dev->device;
>  }

>  	({								\
>  		u32 _v;							\
>  		_v = readl_relaxed((phy)->base + _reg((phy)->idx));	\
> -		dev_vdbg(&phy->vchan->vc.chan.dev->device,		\
> +		dev_vdbg(&phy->vchan->vc.chan.chan_dev->device,		\
>  			 "%s(): readl(%s): 0x%08x\n", __func__, #_reg,	\
>  			  _v);						\
>  		_v;							\

>  #define phy_writel(phy, val, _reg)					\
>  	do {								\
>  		writel((val), (phy)->base + _reg((phy)->idx));		\
> -		dev_vdbg(&phy->vchan->vc.chan.dev->device,		\
> +		dev_vdbg(&phy->vchan->vc.chan.chan_dev->device,		\
>  			 "%s(): writel(0x%08x, %s)\n",			\
>  			 __func__, (u32)(val), #_reg);			\
>  	} while (0)
>  #define phy_writel_relaxed(phy, val, _reg)				\
>  	do {								\
>  		writel_relaxed((val), (phy)->base + _reg((phy)->idx));	\
> -		dev_vdbg(&phy->vchan->vc.chan.dev->device,		\
> +		dev_vdbg(&phy->vchan->vc.chan.chan_dev->device,		\
>  			 "%s(): writel_relaxed(0x%08x, %s)\n",		\
>  			 __func__, (u32)(val), #_reg);			\
>  	} while (0)

>  out_unlock:
>  	spin_unlock_irqrestore(&pdev->phy_lock, flags);
> -	dev_dbg(&pchan->vc.chan.dev->device,
> +	dev_dbg(&pchan->vc.chan.chan_dev->device,
>  		"%s(): phy=%p(%d)\n", __func__, found,
>  		found ? found->idx : -1);
>  

> -	dev_dbg(&chan->vc.chan.dev->device,
> +	dev_dbg(&chan->vc.chan.chan_dev->device,
>  		"%s(): freeing\n", __func__);

> -	dev_dbg(&phy->vchan->vc.chan.dev->device,
> +	dev_dbg(&phy->vchan->vc.chan.chan_dev->device,
>  		"%s(); phy=%p(%d) misaligned=%d\n", __func__,
>  		phy, phy->idx, misaligned);

> -	dev_dbg(&phy->vchan->vc.chan.dev->device,
> +	dev_dbg(&phy->vchan->vc.chan.chan_dev->device,
>  		"%s(): phy=%p(%d)\n", __func__, phy, phy->idx);

> -	dev_dbg(&chan->vc.chan.dev->device,
> +	dev_dbg(&chan->vc.chan.chan_dev->device,
>  		"%s(): desc=%p\n", __func__, desc);
>  	if (!chan->phy) {
>  		chan->phy = lookup_phy(chan);
>  		if (!chan->phy) {
> -			dev_dbg(&chan->vc.chan.dev->device,
> +			dev_dbg(&chan->vc.chan.chan_dev->device,
>  				"%s(): no free dma channel\n", __func__);
>  			return;

(and so on in this PXA driver)

Besides that we should drop __func__ from all _dbg() messages, that can be
enabled run-time with help of Dynamic Debug.

So I think this driver requires more prerequisite work.

>  static struct device *chan2dev(struct stm32_dma_chan *chan)
>  {
> -	return &chan->vchan.chan.dev->device;
> +	return &chan->vchan.chan.chan_dev->device;
>  }

>  static struct device *chan2dev(struct stm32_dma3_chan *chan)
>  {
> -	return &chan->vchan.chan.dev->device;
> +	return &chan->vchan.chan.chan_dev->device;
>  }

>  static struct device *chan2dev(struct stm32_mdma_chan *chan)
>  {
> -	return &chan->vchan.chan.dev->device;
> +	return &chan->vchan.chan.chan_dev->device;
>  }

...

Something like

vchan_to_device(vchan)
{
	return &vchan->chan.chan_dev->device;
}



-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-04  9:08   ` Andy Shevchenko
@ 2026-09-04  9:26     ` Amelie Delaunay
  2026-09-04 11:38       ` Andy Shevchenko
  0 siblings, 1 reply; 12+ messages in thread
From: Amelie Delaunay @ 2026-09-04  9:26 UTC (permalink / raw)
  To: Andy Shevchenko, Frank.Li
  Cc: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Binbin Zhou, Patrice Chotard, Maxime Coquelin,
	Alexandre Torgue, Steven Rostedt, Masami Hiramatsu,
	Mathieu Desnoyers, Thierry Reding, Jonathan Hunter,
	Ludovic Desroches, Viresh Kumar, Keguang Zhang,
	Andreas Färber, Manivannan Sadhasivam, Daniel Mack,
	Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai, Jernej Skrabec,
	Samuel Holland, Kelvin Cao, Logan Gunthorpe, Laxman Dewangan,
	Vignesh Raghavendra, linux-arm-kernel, dmaengine, linux-kernel,
	linux-mips, linux-stm32, linux-trace-kernel, linux-tegra,
	linux-actions, linux-sunxi, imx, Frank Li

On 9/4/26 11:08, Andy Shevchenko wrote:
> On Thu, Sep 03, 2026 at 04:53:11PM -0400, Frank.Li@oss.nxp.com wrote:
> 
>> Introduce vchan_chan_name() to obtain the DMA channel device name.
>>
>> Use a dedicated helper instead of directly accessing dma_chan::dev
>> so callers remain unaffected by an upcoming rename of the struct member.
> 
> LGTM,
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> 
> ...
> 
>>   		ret = devm_request_irq(&pdev->dev, chan->irq,
>>   				       stm32_dma_chan_irq, 0,
>> -				       dev_name(chan2dev(chan)), chan);
>> +				       vchan_chan_name(&chan->vchan), chan);
>>   		if (ret) {
>>   			dev_err(&pdev->dev,
>>   				"request_irq failed with err %d channel %d\n",
> 
> This one...
> 
>> +++ b/drivers/dma/stm32/stm32-dma3.c
> 
>>   		ret = devm_request_irq(&pdev->dev, chan->irq, stm32_dma3_chan_irq, 0,
>> -				       dev_name(chan2dev(chan)), chan);
>> +				       vchan_chan_name(&chan->vchan), chan);
>>   		if (ret) {
>>   			dev_err_probe(&pdev->dev, ret, "Failed to request channel %s IRQ\n",
>> -				      dev_name(chan2dev(chan)));
>> +				      vchan_chan_name(&chan->vchan));
>>   			goto err_clk_disable;
> 
> ...and this one are duplicate messages as devm_request*irq() printsr
> most of the information.
> 
> Not sure if there will be a patch to simply drop them.
> 

It was the purpose of this series:
https://lore.kernel.org/dmaengine/20260709135846.97972-1-panchuang@vivo.com/


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-04  9:26     ` Amelie Delaunay
@ 2026-09-04 11:38       ` Andy Shevchenko
  0 siblings, 0 replies; 12+ messages in thread
From: Andy Shevchenko @ 2026-09-04 11:38 UTC (permalink / raw)
  To: Amelie Delaunay
  Cc: Frank.Li, Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li,
	Paul Cercueil, Eugeniy Paltsev, Binbin Zhou, Patrice Chotard,
	Maxime Coquelin, Alexandre Torgue, Steven Rostedt,
	Masami Hiramatsu, Mathieu Desnoyers, Thierry Reding,
	Jonathan Hunter, Ludovic Desroches, Viresh Kumar, Keguang Zhang,
	Andreas Färber, Manivannan Sadhasivam, Daniel Mack,
	Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai, Jernej Skrabec,
	Samuel Holland, Kelvin Cao, Logan Gunthorpe, Laxman Dewangan,
	Vignesh Raghavendra, linux-arm-kernel, dmaengine, linux-kernel,
	linux-mips, linux-stm32, linux-trace-kernel, linux-tegra,
	linux-actions, linux-sunxi, imx, Frank Li

On Fri, Sep 04, 2026 at 11:26:37AM +0200, Amelie Delaunay wrote:
> On 9/4/26 11:08, Andy Shevchenko wrote:
> > On Thu, Sep 03, 2026 at 04:53:11PM -0400, Frank.Li@oss.nxp.com wrote:
> > 
> > > Introduce vchan_chan_name() to obtain the DMA channel device name.
> > > 
> > > Use a dedicated helper instead of directly accessing dma_chan::dev
> > > so callers remain unaffected by an upcoming rename of the struct member.
> > 
> > LGTM,
> > Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > 
> > ...
> > 
> > >   		ret = devm_request_irq(&pdev->dev, chan->irq,
> > >   				       stm32_dma_chan_irq, 0,
> > > -				       dev_name(chan2dev(chan)), chan);
> > > +				       vchan_chan_name(&chan->vchan), chan);
> > >   		if (ret) {
> > >   			dev_err(&pdev->dev,
> > >   				"request_irq failed with err %d channel %d\n",
> > 
> > This one...
> > 
> > > +++ b/drivers/dma/stm32/stm32-dma3.c
> > 
> > >   		ret = devm_request_irq(&pdev->dev, chan->irq, stm32_dma3_chan_irq, 0,
> > > -				       dev_name(chan2dev(chan)), chan);
> > > +				       vchan_chan_name(&chan->vchan), chan);
> > >   		if (ret) {
> > >   			dev_err_probe(&pdev->dev, ret, "Failed to request channel %s IRQ\n",
> > > -				      dev_name(chan2dev(chan)));
> > > +				      vchan_chan_name(&chan->vchan));
> > >   			goto err_clk_disable;
> > 
> > ...and this one are duplicate messages as devm_request*irq() printsr
> > most of the information.
> > 
> > Not sure if there will be a patch to simply drop them.
> 
> It was the purpose of this series:
> https://lore.kernel.org/dmaengine/20260709135846.97972-1-panchuang@vivo.com/

Yes, thanks. My point is (independently on who contributes that patch) that
the piece above may be an unneeded churn due to messages are going to be
removed. It all relies if that series (a.k.a. patch that removes messages)
goes first.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [Linux-stm32] [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name
  2026-09-04  9:10     ` [Linux-stm32] " Amelie Delaunay
@ 2026-09-04 14:21       ` Frank Li
  0 siblings, 0 replies; 12+ messages in thread
From: Frank Li @ 2026-09-04 14:21 UTC (permalink / raw)
  To: Amelie Delaunay
  Cc: Jacky Huang, Shan-Chun Hung, Vinod Koul, Frank Li, Paul Cercueil,
	Eugeniy Paltsev, Andy Shevchenko, Binbin Zhou, Patrice Chotard,
	Maxime Coquelin, Alexandre Torgue, Steven Rostedt,
	Masami Hiramatsu, Mathieu Desnoyers, Thierry Reding,
	Jonathan Hunter, Ludovic Desroches, Viresh Kumar, Keguang Zhang,
	Andreas Färber, Manivannan Sadhasivam, Daniel Mack,
	Haojian Zhuang, Robert Jarzmik, Chen-Yu Tsai, Jernej Skrabec,
	Samuel Holland, Kelvin Cao, Logan Gunthorpe, Laxman Dewangan,
	Vignesh Raghavendra, imx, Frank Li, linux-actions, linux-kernel,
	linux-mips, linux-tegra, dmaengine, linux-sunxi, linux-stm32,
	linux-arm-kernel, linux-trace-kernel

On Fri, Sep 04, 2026 at 11:10:54AM +0200, Amelie Delaunay wrote:
> On 9/4/26 10:35, Amelie Delaunay wrote:
> > Hi Frank,
> >
> > On 9/3/26 22:53, Frank.Li@oss.nxp.com wrote:
> > > From: Frank Li <Frank.Li@nxp.com>
> > >
> > > Introduce vchan_chan_name() to obtain the DMA channel device name.
> > >
> > > Use a dedicated helper instead of directly accessing dma_chan::dev
> > > so callers remain unaffected by an upcoming rename of the struct member.
> > >
> > > Signed-off-by: Frank Li <Frank.Li@nxp.com>
> > > ---
> > >   drivers/dma/arm-dma350.c                     |  2 +-
> > >   drivers/dma/loongson/loongson2-apb-cmc-dma.c |  2 +-
> > >   drivers/dma/stm32/stm32-dma.c                |  2 +-
> > >   drivers/dma/stm32/stm32-dma3.c               |  4 ++--
> >
> > Could you move the driver updates from this patch to the next one? I
> > don’t understand why the drivers above are modified here, while others
> > are deferred to "[PATCH v2 2/3] dmaengine: use dma_chan_name() helper to
> > get per-channel device name".
> >
>
> Oh, okay — my bad. I've just looked at v1, and I now understand that you
> split the vchan_chan_name() and dma_chan_name() updates.
> I didn’t catch that at first glance because your cover letter hasn’t changed
> between v1 and v2.
> "1st patch: use the existing helper dma_chan_name() to reduce rename
> differences.
> 2nd patch: rename drivers/dma"

B4 did not update it. Do you agree on this change?

Frank

>
> > Regards,
> > Amelie
> >
> > >   drivers/dma/virt-dma.h                       | 11 +++++++++++
> > >   5 files changed, 16 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/dma/arm-dma350.c b/drivers/dma/arm-dma350.c
> > > index 09403aca8bb06..52f5242ea3327 100644
> > > --- a/drivers/dma/arm-dma350.c
> > > +++ b/drivers/dma/arm-dma350.c
> > > @@ -512,7 +512,7 @@ static int d350_alloc_chan_resources(struct
> > > dma_chan *chan)
> > >   {
> > >       struct d350_chan *dch = to_d350_chan(chan);
> > >       int ret = request_irq(dch->irq, d350_irq, IRQF_SHARED,
> > > -                  dev_name(&dch->vc.chan.dev->device), dch);
> > > +                  vchan_chan_name(&dch->vc), dch);
> > >       if (!ret)
> > >           writel_relaxed(CH_INTREN_DONE | CH_INTREN_ERR, dch->base +
> > > CH_INTREN);
> > > diff --git a/drivers/dma/loongson/loongson2-apb-cmc-dma.c b/drivers/
> > > dma/loongson/loongson2-apb-cmc-dma.c
> > > index 1c9a542edc859..2f1c8c4fd0654 100644
> > > --- a/drivers/dma/loongson/loongson2-apb-cmc-dma.c
> > > +++ b/drivers/dma/loongson/loongson2-apb-cmc-dma.c
> > > @@ -678,7 +678,7 @@ static int loongson2_cmc_dma_probe(struct
> > > platform_device *pdev)
> > >               return lchan->irq;
> > >           ret = devm_request_irq(dev, lchan->irq,
> > > loongson2_cmc_dma_chan_irq, IRQF_SHARED,
> > > -                       dev_name(chan2dev(lchan)), lchan);
> > > +                       vchan_chan_name(&lchan->vchan), lchan);
> > >           if (ret)
> > >               return ret;
> > >       }
> > > diff --git a/drivers/dma/stm32/stm32-dma.c
> > > b/drivers/dma/stm32/stm32- dma.c
> > > index d3ad78562a140..3e8151e2ad75a 100644
> > > --- a/drivers/dma/stm32/stm32-dma.c
> > > +++ b/drivers/dma/stm32/stm32-dma.c
> > > @@ -1668,7 +1668,7 @@ static int stm32_dma_probe(struct
> > > platform_device *pdev)
> > >           ret = devm_request_irq(&pdev->dev, chan->irq,
> > >                          stm32_dma_chan_irq, 0,
> > > -                       dev_name(chan2dev(chan)), chan);
> > > +                       vchan_chan_name(&chan->vchan), chan);
> > >           if (ret) {
> > >               dev_err(&pdev->dev,
> > >                   "request_irq failed with err %d channel %d\n",
> > > diff --git a/drivers/dma/stm32/stm32-dma3.c
> > > b/drivers/dma/stm32/stm32- dma3.c
> > > index 4724e7fa0008e..1ee1bd22703fb 100644
> > > --- a/drivers/dma/stm32/stm32-dma3.c
> > > +++ b/drivers/dma/stm32/stm32-dma3.c
> > > @@ -1892,10 +1892,10 @@ static int stm32_dma3_probe(struct
> > > platform_device *pdev)
> > >           chan->irq = ret;
> > >           ret = devm_request_irq(&pdev->dev, chan->irq,
> > > stm32_dma3_chan_irq, 0,
> > > -                       dev_name(chan2dev(chan)), chan);
> > > +                       vchan_chan_name(&chan->vchan), chan);
> > >           if (ret) {
> > >               dev_err_probe(&pdev->dev, ret, "Failed to request
> > > channel %s IRQ\n",
> > > -                      dev_name(chan2dev(chan)));
> > > +                      vchan_chan_name(&chan->vchan));
> > >               goto err_clk_disable;
> > >           }
> > >       }
> > > diff --git a/drivers/dma/virt-dma.h b/drivers/dma/virt-dma.h
> > > index 59d9eabc8b674..dd023a3831209 100644
> > > --- a/drivers/dma/virt-dma.h
> > > +++ b/drivers/dma/virt-dma.h
> > > @@ -209,6 +209,17 @@ static inline void
> > > vchan_free_chan_resources(struct virt_dma_chan *vc)
> > >       vchan_dma_desc_free_list(vc, &head);
> > >   }
> > > +/**
> > > + * vchan_chan_name - Return vchan DMA channel device name
> > > + * @vc: virtual channel
> > > + *
> > > + * Return: The name of the DMA channel device
> > > + */
> > > +static inline const char *vchan_chan_name(struct virt_dma_chan *vc)
> > > +{
> > > +    return dma_chan_name(&vc->chan);
> > > +}
> > > +
> > >   /**
> > >    * vchan_synchronize() - synchronize callback execution to the
> > > current context
> > >    * @vc: virtual channel to synchronize
> > >
> >
> > _______________________________________________
> > Linux-stm32 mailing list
> > Linux-stm32@st-md-mailman.stormreply.com
> > https://st-md-mailman.stormreply.com/mailman/listinfo/linux-stm32
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-09-04 14:21 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03 20:53 [PATCH v2 0/3] dmaengine: rename dma_chan::dev to dma_chan::chan_dev for clarity Frank.Li
2026-09-03 20:53 ` [PATCH v2 1/3] dmaengine: vchan: add vchan_chan_name() to get channel device name Frank.Li
2026-09-03 22:30   ` Logan Gunthorpe
2026-09-04  8:35   ` Amelie Delaunay
2026-09-04  9:10     ` [Linux-stm32] " Amelie Delaunay
2026-09-04 14:21       ` Frank Li
2026-09-04  9:08   ` Andy Shevchenko
2026-09-04  9:26     ` Amelie Delaunay
2026-09-04 11:38       ` Andy Shevchenko
2026-09-03 20:53 ` [PATCH v2 2/3] dmaengine: use dma_chan_name() helper to get per-channel " Frank.Li
2026-09-03 20:53 ` [PATCH v2 3/3] dmaengine: add union chan_dev for dma_chan::dev for clarity Frank.Li
2026-09-04  9:19   ` Andy Shevchenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox