mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement
@ 2026-02-25 21:41 Frank Li
  2026-02-25 21:41 ` [PATCH v3 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
                   ` (13 more replies)
  0 siblings, 14 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li, Jindong Yue

Add managed API devm_of_dma_controller_register().

simple mxs-dma code and add build as module support.
Use dev_err_probe() simple freescale dmaengines.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Changes in v3:
- rebase to dmaengine/next
- Link to v2: https://lore.kernel.org/r/20260115-mxsdma-module-v2-0-0e1638939d03@nxp.com

Changes in v2:
- fix missed int at stub function
- reorder patches according to dmaengine
- Link to v1: https://lore.kernel.org/r/20260114-mxsdma-module-v1-0-9b2a9eaa4226@nxp.com

---
Frank Li (11):
      dmaengine: of_dma: Add devm_of_dma_controller_register()
      dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register()
      dmaengine: mxs-dma: Use local dev variable in probe()
      dmaengine: mxs-dma: Use dev_err_probe() to simplify code
      dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register()
      dmaengine: imx-sdma: Use devm_clk_get_prepared() to simplify code
      dmaengine: imx-sdma: Use managed API to simplify code
      dmaengine: imx-sdma: Use dev_err_probe() to simplify code
      dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register()
      dmaengine: fsl-edma: Use dev_err_probe() to simplify code
      dmaengine: fsl-qdma: Use dev_err_probe() to simplify code

Jindong Yue (2):
      dmaengine: mxs-dma: Add module license and description
      dmaengine: mxs-dma: Turn MXS_DMA as tristate

 drivers/dma/Kconfig         |  2 +-
 drivers/dma/fsl-edma-main.c | 55 ++++++++++++++++++--------------------------
 drivers/dma/fsl-qdma.c      | 47 +++++++++++++++----------------------
 drivers/dma/imx-sdma.c      | 56 ++++++++++++---------------------------------
 drivers/dma/mxs-dma.c       | 37 +++++++++++++++---------------
 include/linux/of_dma.h      | 29 +++++++++++++++++++++++
 6 files changed, 104 insertions(+), 122 deletions(-)
---
base-commit: 9a07b4bb2c6019a8c585f48ee9b87fc843840e6e
change-id: 20260114-mxsdma-module-eb20ccac4986

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


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

* [PATCH v3 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 02/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register() Frank Li
                   ` (12 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Add a managed API, devm_of_dma_controller_register(), to simplify DMA
engine controller registration by automatically handling resource
cleanup.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
change in v2
- fixed missing int at stub funciton.
---
 include/linux/of_dma.h | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/include/linux/of_dma.h b/include/linux/of_dma.h
index fd706cdf255c61c82ce30ef9a2c44930bef34bc8..16b08234d03b33476ea3f8cc6654f6fd72e60df3 100644
--- a/include/linux/of_dma.h
+++ b/include/linux/of_dma.h
@@ -38,6 +38,26 @@ extern int of_dma_controller_register(struct device_node *np,
 		void *data);
 extern void of_dma_controller_free(struct device_node *np);
 
+static void __of_dma_controller_free(void *np)
+{
+	of_dma_controller_free(np);
+}
+
+static inline int
+devm_of_dma_controller_register(struct device *dev, struct device_node *np,
+				struct dma_chan *(*of_dma_xlate)
+				(struct of_phandle_args *, struct of_dma *),
+				void *data)
+{
+	int ret;
+
+	ret = of_dma_controller_register(np, of_dma_xlate, data);
+	if (ret)
+		return ret;
+
+	return devm_add_action_or_reset(dev, __of_dma_controller_free, np);
+}
+
 extern int of_dma_router_register(struct device_node *np,
 		void *(*of_dma_route_allocate)
 		(struct of_phandle_args *, struct of_dma *),
@@ -64,6 +84,15 @@ static inline void of_dma_controller_free(struct device_node *np)
 {
 }
 
+static inline int
+devm_of_dma_controller_register(struct device *dev, struct device_node *np,
+				struct dma_chan *(*of_dma_xlate)
+				(struct of_phandle_args *, struct of_dma *),
+				void *data)
+{
+	return -ENODEV;
+}
+
 static inline int of_dma_router_register(struct device_node *np,
 		void *(*of_dma_route_allocate)
 		(struct of_phandle_args *, struct of_dma *),

-- 
2.43.0


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

* [PATCH v3 02/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register()
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
  2026-02-25 21:41 ` [PATCH v3 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 03/13] dmaengine: mxs-dma: Use local dev variable in probe() Frank Li
                   ` (11 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Propagate the return value of of_dma_controller_register() in probe()
instead of ignoring it.

Fixes: a580b8c5429a6 ("dmaengine: mxs-dma: add dma support for i.MX23/28")
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/mxs-dma.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index cfb9962417ef68e976ae03c3c6f3054dc89bd1e6..53f572b6b6fc62c6cb2496f0da281887f8fc3280 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -824,6 +824,7 @@ static int mxs_dma_probe(struct platform_device *pdev)
 	if (ret) {
 		dev_err(mxs_dma->dma_device.dev,
 			"failed to register controller\n");
+		return ret;
 	}
 
 	dev_info(mxs_dma->dma_device.dev, "initialized\n");

-- 
2.43.0


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

* [PATCH v3 03/13] dmaengine: mxs-dma: Use local dev variable in probe()
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
  2026-02-25 21:41 ` [PATCH v3 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
  2026-02-25 21:41 ` [PATCH v3 02/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register() Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 04/13] dmaengine: mxs-dma: Use dev_err_probe() to simplify code Frank Li
                   ` (10 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Introduce a local dev variable in probe() to avoid repeated use of
&pdev->dev throughout the function.

No functional change.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/mxs-dma.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index 53f572b6b6fc62c6cb2496f0da281887f8fc3280..5340f831ae9dbf5423564e070735f5289c8d49de 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -744,20 +744,21 @@ static int mxs_dma_probe(struct platform_device *pdev)
 {
 	struct device_node *np = pdev->dev.of_node;
 	const struct mxs_dma_type *dma_type;
+	struct device *dev = &pdev->dev;
 	struct mxs_dma_engine *mxs_dma;
 	int ret, i;
 
-	mxs_dma = devm_kzalloc(&pdev->dev, sizeof(*mxs_dma), GFP_KERNEL);
+	mxs_dma = devm_kzalloc(dev, sizeof(*mxs_dma), GFP_KERNEL);
 	if (!mxs_dma)
 		return -ENOMEM;
 
 	ret = of_property_read_u32(np, "dma-channels", &mxs_dma->nr_channels);
 	if (ret) {
-		dev_err(&pdev->dev, "failed to read dma-channels\n");
+		dev_err(dev, "failed to read dma-channels\n");
 		return ret;
 	}
 
-	dma_type = (struct mxs_dma_type *)of_device_get_match_data(&pdev->dev);
+	dma_type = (struct mxs_dma_type *)of_device_get_match_data(dev);
 	mxs_dma->type = dma_type->type;
 	mxs_dma->dev_id = dma_type->id;
 
@@ -765,7 +766,7 @@ static int mxs_dma_probe(struct platform_device *pdev)
 	if (IS_ERR(mxs_dma->base))
 		return PTR_ERR(mxs_dma->base);
 
-	mxs_dma->clk = devm_clk_get(&pdev->dev, NULL);
+	mxs_dma->clk = devm_clk_get(dev, NULL);
 	if (IS_ERR(mxs_dma->clk))
 		return PTR_ERR(mxs_dma->clk);
 
@@ -795,10 +796,10 @@ static int mxs_dma_probe(struct platform_device *pdev)
 		return ret;
 
 	mxs_dma->pdev = pdev;
-	mxs_dma->dma_device.dev = &pdev->dev;
+	mxs_dma->dma_device.dev = dev;
 
 	/* mxs_dma gets 65535 bytes maximum sg size */
-	dma_set_max_seg_size(mxs_dma->dma_device.dev, MAX_XFER_BYTES);
+	dma_set_max_seg_size(dev, MAX_XFER_BYTES);
 
 	mxs_dma->dma_device.device_alloc_chan_resources = mxs_dma_alloc_chan_resources;
 	mxs_dma->dma_device.device_free_chan_resources = mxs_dma_free_chan_resources;
@@ -816,18 +817,18 @@ static int mxs_dma_probe(struct platform_device *pdev)
 
 	ret = dmaenginem_async_device_register(&mxs_dma->dma_device);
 	if (ret) {
-		dev_err(mxs_dma->dma_device.dev, "unable to register\n");
+		dev_err(dev, "unable to register\n");
 		return ret;
 	}
 
 	ret = of_dma_controller_register(np, mxs_dma_xlate, mxs_dma);
 	if (ret) {
-		dev_err(mxs_dma->dma_device.dev,
+		dev_err(dev,
 			"failed to register controller\n");
 		return ret;
 	}
 
-	dev_info(mxs_dma->dma_device.dev, "initialized\n");
+	dev_info(dev, "initialized\n");
 
 	return 0;
 }

-- 
2.43.0


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

* [PATCH v3 04/13] dmaengine: mxs-dma: Use dev_err_probe() to simplify code
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (2 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 03/13] dmaengine: mxs-dma: Use local dev variable in probe() Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register() Frank Li
                   ` (9 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use dev_err_probe() simplify code. No functional change.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/mxs-dma.c | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index 5340f831ae9dbf5423564e070735f5289c8d49de..e05bca738d2efe45d385dfb2180dd1c75b00163e 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -753,10 +753,8 @@ static int mxs_dma_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	ret = of_property_read_u32(np, "dma-channels", &mxs_dma->nr_channels);
-	if (ret) {
-		dev_err(dev, "failed to read dma-channels\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(dev, ret, "failed to read dma-channels\n");
 
 	dma_type = (struct mxs_dma_type *)of_device_get_match_data(dev);
 	mxs_dma->type = dma_type->type;
@@ -816,17 +814,13 @@ static int mxs_dma_probe(struct platform_device *pdev)
 	mxs_dma->dma_device.device_issue_pending = mxs_dma_enable_chan;
 
 	ret = dmaenginem_async_device_register(&mxs_dma->dma_device);
-	if (ret) {
-		dev_err(dev, "unable to register\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(dev, ret, "unable to register\n");
 
 	ret = of_dma_controller_register(np, mxs_dma_xlate, mxs_dma);
-	if (ret) {
-		dev_err(dev,
-			"failed to register controller\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(dev, ret,
+				     "failed to register controller\n");
 
 	dev_info(dev, "initialized\n");
 

-- 
2.43.0


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

* [PATCH v3 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register()
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (3 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 04/13] dmaengine: mxs-dma: Use dev_err_probe() to simplify code Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 06/13] dmaengine: mxs-dma: Add module license and description Frank Li
                   ` (8 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use managed API devm_of_dma_controller_register() to prepare support module
remove.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/mxs-dma.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index e05bca738d2efe45d385dfb2180dd1c75b00163e..be35affb91576f43d4ec41179f4f0013eee2d347 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -817,7 +817,7 @@ static int mxs_dma_probe(struct platform_device *pdev)
 	if (ret)
 		return dev_err_probe(dev, ret, "unable to register\n");
 
-	ret = of_dma_controller_register(np, mxs_dma_xlate, mxs_dma);
+	ret = devm_of_dma_controller_register(dev, np, mxs_dma_xlate, mxs_dma);
 	if (ret)
 		return dev_err_probe(dev, ret,
 				     "failed to register controller\n");

-- 
2.43.0


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

* [PATCH v3 06/13] dmaengine: mxs-dma: Add module license and description
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (4 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register() Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate Frank Li
                   ` (7 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li, Jindong Yue

From: Jindong Yue <jindong.yue@nxp.com>

Module license string is required for loading it as a module.

Signed-off-by: Jindong Yue <jindong.yue@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/mxs-dma.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index be35affb91576f43d4ec41179f4f0013eee2d347..7acb3d29dad3074ac842425619f7373fdf0e56b3 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -836,3 +836,6 @@ static struct platform_driver mxs_dma_driver = {
 };
 
 builtin_platform_driver(mxs_dma_driver);
+
+MODULE_DESCRIPTION("MXS DMA driver");
+MODULE_LICENSE("GPL");

-- 
2.43.0


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

* [PATCH v3 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (5 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 06/13] dmaengine: mxs-dma: Add module license and description Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 08/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() to simplify code Frank Li
                   ` (6 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li, Jindong Yue

From: Jindong Yue <jindong.yue@nxp.com>

Use tristate for mxs-dma to support module building.

Signed-off-by: Jindong Yue <jindong.yue@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 66cda7cc9f7ab92e198d80cc5f0fb6420b937088..abeb086ba1d6b31206be8b18acb6363d73170339 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -505,7 +505,7 @@ config MV_XOR_V2
 	  platforms.
 
 config MXS_DMA
-	bool "MXS DMA support"
+	tristate "MXS DMA support"
 	depends on ARCH_MXS || ARCH_MXC || COMPILE_TEST
 	select STMP_DEVICE
 	select DMA_ENGINE

-- 
2.43.0


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

* [PATCH v3 08/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() to simplify code
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (6 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 09/13] dmaengine: imx-sdma: Use managed API " Frank Li
                   ` (5 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use devm_clk_get_prepared() to simplify code. No functional change.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/imx-sdma.c | 26 +++++---------------------
 1 file changed, 5 insertions(+), 21 deletions(-)

diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 4c8196d78001201bd354bbdb8057440eae625030..187e8e573fdf437a0d614548f1aa777a0ba3e24d 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -2265,34 +2265,24 @@ static int sdma_probe(struct platform_device *pdev)
 	if (IS_ERR(sdma->regs))
 		return PTR_ERR(sdma->regs);
 
-	sdma->clk_ipg = devm_clk_get(&pdev->dev, "ipg");
+	sdma->clk_ipg = devm_clk_get_prepared(&pdev->dev, "ipg");
 	if (IS_ERR(sdma->clk_ipg))
 		return PTR_ERR(sdma->clk_ipg);
 
-	sdma->clk_ahb = devm_clk_get(&pdev->dev, "ahb");
+	sdma->clk_ahb = devm_clk_get_prepared(&pdev->dev, "ahb");
 	if (IS_ERR(sdma->clk_ahb))
 		return PTR_ERR(sdma->clk_ahb);
 
-	ret = clk_prepare(sdma->clk_ipg);
-	if (ret)
-		return ret;
-
-	ret = clk_prepare(sdma->clk_ahb);
-	if (ret)
-		goto err_clk;
-
 	ret = devm_request_irq(&pdev->dev, irq, sdma_int_handler, 0,
 				dev_name(&pdev->dev), sdma);
 	if (ret)
-		goto err_irq;
+		return ret;
 
 	sdma->irq = irq;
 
 	sdma->script_addrs = kzalloc_obj(*sdma->script_addrs);
-	if (!sdma->script_addrs) {
-		ret = -ENOMEM;
-		goto err_irq;
-	}
+	if (!sdma->script_addrs)
+		return -ENOMEM;
 
 	/* initially no scripts available */
 	saddr_arr = (s32 *)sdma->script_addrs;
@@ -2406,10 +2396,6 @@ static int sdma_probe(struct platform_device *pdev)
 	dma_async_device_unregister(&sdma->dma_device);
 err_init:
 	kfree(sdma->script_addrs);
-err_irq:
-	clk_unprepare(sdma->clk_ahb);
-err_clk:
-	clk_unprepare(sdma->clk_ipg);
 	return ret;
 }
 
@@ -2421,8 +2407,6 @@ static void sdma_remove(struct platform_device *pdev)
 	devm_free_irq(&pdev->dev, sdma->irq, sdma);
 	dma_async_device_unregister(&sdma->dma_device);
 	kfree(sdma->script_addrs);
-	clk_unprepare(sdma->clk_ahb);
-	clk_unprepare(sdma->clk_ipg);
 	/* Kill the tasklet */
 	for (i = 0; i < MAX_DMA_CHANNELS; i++) {
 		struct sdma_channel *sdmac = &sdma->channel[i];

-- 
2.43.0


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

* [PATCH v3 09/13] dmaengine: imx-sdma: Use managed API to simplify code
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (7 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 08/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() to simplify code Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 10/13] dmaengine: imx-sdma: Use dev_err_probe() " Frank Li
                   ` (4 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use managed API devm_kzalloc(), dmaenginem_async_device_register() and
devm_of_dma_controller_register() to simple code.

No functional change.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/imx-sdma.c | 21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 187e8e573fdf437a0d614548f1aa777a0ba3e24d..16b5f60bc748ad20380670da337846fdefb5fc58 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -2323,11 +2323,11 @@ static int sdma_probe(struct platform_device *pdev)
 
 	ret = sdma_init(sdma);
 	if (ret)
-		goto err_init;
+		return ret;
 
 	ret = sdma_event_remap(sdma);
 	if (ret)
-		goto err_init;
+		return ret;
 
 	if (sdma->drvdata->script_addrs)
 		sdma_add_scripts(sdma, sdma->drvdata->script_addrs);
@@ -2353,17 +2353,18 @@ static int sdma_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, sdma);
 
-	ret = dma_async_device_register(&sdma->dma_device);
+	ret = dmaenginem_async_device_register(&sdma->dma_device);
 	if (ret) {
 		dev_err(&pdev->dev, "unable to register\n");
-		goto err_init;
+		return ret;
 	}
 
 	if (np) {
-		ret = of_dma_controller_register(np, sdma_xlate, sdma);
+		ret = devm_of_dma_controller_register(&pdev->dev, np,
+						      sdma_xlate, sdma);
 		if (ret) {
 			dev_err(&pdev->dev, "failed to register controller\n");
-			goto err_register;
+			return ret;
 		}
 
 		spba_bus = of_find_compatible_node(NULL, NULL, "fsl,spba-bus");
@@ -2391,12 +2392,6 @@ static int sdma_probe(struct platform_device *pdev)
 	}
 
 	return 0;
-
-err_register:
-	dma_async_device_unregister(&sdma->dma_device);
-err_init:
-	kfree(sdma->script_addrs);
-	return ret;
 }
 
 static void sdma_remove(struct platform_device *pdev)
@@ -2405,8 +2400,6 @@ static void sdma_remove(struct platform_device *pdev)
 	int i;
 
 	devm_free_irq(&pdev->dev, sdma->irq, sdma);
-	dma_async_device_unregister(&sdma->dma_device);
-	kfree(sdma->script_addrs);
 	/* Kill the tasklet */
 	for (i = 0; i < MAX_DMA_CHANNELS; i++) {
 		struct sdma_channel *sdmac = &sdma->channel[i];

-- 
2.43.0


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

* [PATCH v3 10/13] dmaengine: imx-sdma: Use dev_err_probe() to simplify code
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (8 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 09/13] dmaengine: imx-sdma: Use managed API " Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 11/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register() Frank Li
                   ` (3 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use dev_err_probe() to simplify code. No functional change.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/imx-sdma.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 16b5f60bc748ad20380670da337846fdefb5fc58..3d527883776b40131c5c5190d12ef81c9ece8699 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -2354,18 +2354,15 @@ static int sdma_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, sdma);
 
 	ret = dmaenginem_async_device_register(&sdma->dma_device);
-	if (ret) {
-		dev_err(&pdev->dev, "unable to register\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret, "unable to register\n");
 
 	if (np) {
 		ret = devm_of_dma_controller_register(&pdev->dev, np,
 						      sdma_xlate, sdma);
-		if (ret) {
-			dev_err(&pdev->dev, "failed to register controller\n");
-			return ret;
-		}
+		if (ret)
+			return dev_err_probe(&pdev->dev, ret,
+					     "failed to register controller\n");
 
 		spba_bus = of_find_compatible_node(NULL, NULL, "fsl,spba-bus");
 		ret = of_address_to_resource(spba_bus, 0, &spba_res);

-- 
2.43.0


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

* [PATCH v3 11/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register()
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (9 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 10/13] dmaengine: imx-sdma: Use dev_err_probe() " Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 12/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code Frank Li
                   ` (2 subsequent siblings)
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use managed API dmaenginem_async_device_register() and
devm_of_dma_controller_register() to simple code.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/fsl-edma-main.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c
index dbcdd1e68319005dfab85a6c28b4e3f929f29132..57a185bb4076db1257e761e1c1be523178a5ff04 100644
--- a/drivers/dma/fsl-edma-main.c
+++ b/drivers/dma/fsl-edma-main.c
@@ -882,20 +882,19 @@ static int fsl_edma_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, fsl_edma);
 
-	ret = dma_async_device_register(&fsl_edma->dma_dev);
+	ret = dmaenginem_async_device_register(&fsl_edma->dma_dev);
 	if (ret) {
 		dev_err(&pdev->dev,
 			"Can't register Freescale eDMA engine. (%d)\n", ret);
 		return ret;
 	}
 
-	ret = of_dma_controller_register(np,
+	ret = devm_of_dma_controller_register(&pdev->dev, np,
 			drvdata->dmamuxs ? fsl_edma_xlate : fsl_edma3_xlate,
 			fsl_edma);
 	if (ret) {
 		dev_err(&pdev->dev,
 			"Can't register Freescale eDMA of_dma. (%d)\n", ret);
-		dma_async_device_unregister(&fsl_edma->dma_dev);
 		return ret;
 	}
 
@@ -908,12 +907,9 @@ static int fsl_edma_probe(struct platform_device *pdev)
 
 static void fsl_edma_remove(struct platform_device *pdev)
 {
-	struct device_node *np = pdev->dev.of_node;
 	struct fsl_edma_engine *fsl_edma = platform_get_drvdata(pdev);
 
 	fsl_edma_irq_exit(pdev, fsl_edma);
-	of_dma_controller_free(np);
-	dma_async_device_unregister(&fsl_edma->dma_dev);
 	fsl_edma_cleanup_vchan(&fsl_edma->dma_dev);
 }
 

-- 
2.43.0


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

* [PATCH v3 12/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (10 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 11/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register() Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-02-25 21:41 ` [PATCH v3 13/13] dmaengine: fsl-qdma: " Frank Li
  2026-03-09 11:45 ` [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Vinod Koul
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use dev_err_probe() to simplify code.

No functional change.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/fsl-edma-main.c | 47 +++++++++++++++++++--------------------------
 1 file changed, 20 insertions(+), 27 deletions(-)

diff --git a/drivers/dma/fsl-edma-main.c b/drivers/dma/fsl-edma-main.c
index 57a185bb4076db1257e761e1c1be523178a5ff04..950538cc88830a7f899449fe6dc43efacc9d2e3c 100644
--- a/drivers/dma/fsl-edma-main.c
+++ b/drivers/dma/fsl-edma-main.c
@@ -709,16 +709,14 @@ static int fsl_edma_probe(struct platform_device *pdev)
 	int ret, i;
 
 	drvdata = device_get_match_data(&pdev->dev);
-	if (!drvdata) {
-		dev_err(&pdev->dev, "unable to find driver data\n");
-		return -EINVAL;
-	}
+	if (!drvdata)
+		return dev_err_probe(&pdev->dev, -EINVAL,
+				     "unable to find driver data\n");
 
 	ret = of_property_read_u32(np, "dma-channels", &chans);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't get dma-channels.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't get dma-channels.\n");
 
 	fsl_edma = devm_kzalloc(&pdev->dev, struct_size(fsl_edma, chans, chans),
 				GFP_KERNEL);
@@ -742,10 +740,10 @@ static int fsl_edma_probe(struct platform_device *pdev)
 
 	if (drvdata->flags & FSL_EDMA_DRV_HAS_DMACLK) {
 		fsl_edma->dmaclk = devm_clk_get_enabled(&pdev->dev, "dma");
-		if (IS_ERR(fsl_edma->dmaclk)) {
-			dev_err(&pdev->dev, "Missing DMA block clock.\n");
-			return PTR_ERR(fsl_edma->dmaclk);
-		}
+		if (IS_ERR(fsl_edma->dmaclk))
+			return dev_err_probe(&pdev->dev,
+					     PTR_ERR(fsl_edma->dmaclk),
+					     "Missing DMA block clock.\n");
 	}
 
 	ret = of_property_read_variable_u32_array(np, "dma-channel-mask", chan_mask, 1, 2);
@@ -769,11 +767,10 @@ static int fsl_edma_probe(struct platform_device *pdev)
 
 		sprintf(clkname, "dmamux%d", i);
 		fsl_edma->muxclk[i] = devm_clk_get_enabled(&pdev->dev, clkname);
-		if (IS_ERR(fsl_edma->muxclk[i])) {
-			dev_err(&pdev->dev, "Missing DMAMUX block clock.\n");
-			/* on error: disable all previously enabled clks */
-			return PTR_ERR(fsl_edma->muxclk[i]);
-		}
+		if (IS_ERR(fsl_edma->muxclk[i]))
+			return dev_err_probe(&pdev->dev,
+					     PTR_ERR(fsl_edma->muxclk[i]),
+					     "Missing DMAMUX block clock.\n");
 	}
 
 	fsl_edma->big_endian = of_property_read_bool(np, "big-endian");
@@ -883,20 +880,16 @@ static int fsl_edma_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, fsl_edma);
 
 	ret = dmaenginem_async_device_register(&fsl_edma->dma_dev);
-	if (ret) {
-		dev_err(&pdev->dev,
-			"Can't register Freescale eDMA engine. (%d)\n", ret);
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't register Freescale eDMA engine.\n");
 
 	ret = devm_of_dma_controller_register(&pdev->dev, np,
 			drvdata->dmamuxs ? fsl_edma_xlate : fsl_edma3_xlate,
 			fsl_edma);
-	if (ret) {
-		dev_err(&pdev->dev,
-			"Can't register Freescale eDMA of_dma. (%d)\n", ret);
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't register Freescale eDMA of_dma.\n");
 
 	/* enable round robin arbitration */
 	if (!(drvdata->flags & FSL_EDMA_DRV_SPLIT_REG))

-- 
2.43.0


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

* [PATCH v3 13/13] dmaengine: fsl-qdma: Use dev_err_probe() to simplify code
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (11 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 12/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code Frank Li
@ 2026-02-25 21:41 ` Frank Li
  2026-03-09 11:45 ` [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Vinod Koul
  13 siblings, 0 replies; 15+ messages in thread
From: Frank Li @ 2026-02-25 21:41 UTC (permalink / raw)
  To: Rob Herring, Vinod Koul, Shawn Guo, Sascha Hauer,
	Pengutronix Kernel Team, Fabio Estevam, Saravana Kannan
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Frank Li

Use dev_err_probe() to simplify code. No functional change.

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 drivers/dma/fsl-qdma.c | 47 +++++++++++++++++++----------------------------
 1 file changed, 19 insertions(+), 28 deletions(-)

diff --git a/drivers/dma/fsl-qdma.c b/drivers/dma/fsl-qdma.c
index 0bbff9df362f87ca7cfa09c668ad5996111a424f..df843fad0ece50c148b6a45d2c1c6ddb413d5c24 100644
--- a/drivers/dma/fsl-qdma.c
+++ b/drivers/dma/fsl-qdma.c
@@ -1127,22 +1127,19 @@ static int fsl_qdma_probe(struct platform_device *pdev)
 	struct device_node *np = pdev->dev.of_node;
 
 	ret = of_property_read_u32(np, "dma-channels", &chans);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't get dma-channels.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't get dma-channels.\n");
 
 	ret = of_property_read_u32(np, "block-offset", &blk_off);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't get block-offset.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't get block-offset.\n");
 
 	ret = of_property_read_u32(np, "block-number", &blk_num);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't get block-number.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't get block-number.\n");
 
 	blk_num = min_t(int, blk_num, num_online_cpus());
 
@@ -1167,10 +1164,8 @@ static int fsl_qdma_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	ret = of_property_read_u32(np, "fsl,dma-queues", &queues);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't get queues.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret, "Can't get queues.\n");
 
 	fsl_qdma->desc_allocated = 0;
 	fsl_qdma->n_chans = chans;
@@ -1231,28 +1226,24 @@ static int fsl_qdma_probe(struct platform_device *pdev)
 	fsl_qdma->dma_dev.device_terminate_all = fsl_qdma_terminate_all;
 
 	ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(40));
-	if (ret) {
-		dev_err(&pdev->dev, "dma_set_mask failure.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret, "dma_set_mask failure.\n");
 
 	platform_set_drvdata(pdev, fsl_qdma);
 
 	ret = fsl_qdma_reg_init(fsl_qdma);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't Initialize the qDMA engine.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't Initialize the qDMA engine.\n");
 
 	ret = fsl_qdma_irq_init(pdev, fsl_qdma);
 	if (ret)
 		return ret;
 
 	ret = dma_async_device_register(&fsl_qdma->dma_dev);
-	if (ret) {
-		dev_err(&pdev->dev, "Can't register NXP Layerscape qDMA engine.\n");
-		return ret;
-	}
+	if (ret)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Can't register NXP Layerscape qDMA engine.\n");
 
 	return 0;
 }

-- 
2.43.0


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

* Re: [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement
  2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
                   ` (12 preceding siblings ...)
  2026-02-25 21:41 ` [PATCH v3 13/13] dmaengine: fsl-qdma: " Frank Li
@ 2026-03-09 11:45 ` Vinod Koul
  13 siblings, 0 replies; 15+ messages in thread
From: Vinod Koul @ 2026-03-09 11:45 UTC (permalink / raw)
  To: Rob Herring, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
	Fabio Estevam, Saravana Kannan, Frank Li
  Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
	Shawn Guo, Jindong Yue


On Wed, 25 Feb 2026 16:41:36 -0500, Frank Li wrote:
> Add managed API devm_of_dma_controller_register().
> 
> simple mxs-dma code and add build as module support.
> Use dev_err_probe() simple freescale dmaengines.
> 
> 

Applied, thanks!

[01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
        commit: 3a005126c9d7f30093627a6f329656c358e16b3a
[02/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register()
        commit: ab2bf6d4c0a0152907b18d25c1b118ea5ea779df
[03/13] dmaengine: mxs-dma: Use local dev variable in probe()
        commit: 96857a90982c2a461520fadc55dda3b8051e8d96
[04/13] dmaengine: mxs-dma: Use dev_err_probe() to simplify code
        commit: 4a5b0a728d665b3b7b08fb5bf6b2f69c995e30ec
[05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register()
        commit: d11544c674b64beb9948724ba27187238c52b079
[06/13] dmaengine: mxs-dma: Add module license and description
        commit: e1b712c9352cf74285973462ced8d60ed7a9183c
[07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate
        commit: 67adf1f6643d75e33509900a2cb35db3a31f0410
[08/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() to simplify code
        commit: 5daee52d7cc87415367fa0051a80998cccbab920
[09/13] dmaengine: imx-sdma: Use managed API to simplify code
        commit: 8982cb214a7f29db7d28058a3b4697f436af34d2
[10/13] dmaengine: imx-sdma: Use dev_err_probe() to simplify code
        commit: 917edfa57783352cd491cd5759a04d7b60de1714
[11/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register()
        commit: 4035726a6b724ff0f04b4f1429c7b1a935fc2e76
[12/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code
        commit: 804e18f7da6d29cff7ed4e004bcc05658f51d737
[13/13] dmaengine: fsl-qdma: Use dev_err_probe() to simplify code
        commit: 2438deea9ff82940ebfce67e232d558199ab8a6e

Best regards,
-- 
~Vinod



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

end of thread, other threads:[~2026-03-09 11:46 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-02-25 21:41 [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
2026-02-25 21:41 ` [PATCH v3 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
2026-02-25 21:41 ` [PATCH v3 02/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register() Frank Li
2026-02-25 21:41 ` [PATCH v3 03/13] dmaengine: mxs-dma: Use local dev variable in probe() Frank Li
2026-02-25 21:41 ` [PATCH v3 04/13] dmaengine: mxs-dma: Use dev_err_probe() to simplify code Frank Li
2026-02-25 21:41 ` [PATCH v3 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register() Frank Li
2026-02-25 21:41 ` [PATCH v3 06/13] dmaengine: mxs-dma: Add module license and description Frank Li
2026-02-25 21:41 ` [PATCH v3 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate Frank Li
2026-02-25 21:41 ` [PATCH v3 08/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() to simplify code Frank Li
2026-02-25 21:41 ` [PATCH v3 09/13] dmaengine: imx-sdma: Use managed API " Frank Li
2026-02-25 21:41 ` [PATCH v3 10/13] dmaengine: imx-sdma: Use dev_err_probe() " Frank Li
2026-02-25 21:41 ` [PATCH v3 11/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register() Frank Li
2026-02-25 21:41 ` [PATCH v3 12/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code Frank Li
2026-02-25 21:41 ` [PATCH v3 13/13] dmaengine: fsl-qdma: " Frank Li
2026-03-09 11:45 ` [PATCH v3 00/13] dmaegnine: freescale-dmas: small improvement Vinod Koul

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

all inboxes | Powered by JetHome®