* [PATCH 00/13] dmaegnine: freescale-dmas: small improvement
@ 2026-01-14 22:33 Frank Li
2026-01-14 22:33 ` [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
` (12 more replies)
0 siblings, 13 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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>
---
Frank Li (11):
dmaengine: of_dma: Add devm_of_dma_controller_register()
dmaengine: mxs-dma: Use local dev variable in probe()
dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register()
dmaengine: mxs-dma: Use dev_err_probe() simple code
dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register()
dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register()
dmaengine: fsl-edma: Use dev_err_probe() to simplify code
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-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 | 60 ++++++++++++++-------------------------------
drivers/dma/mxs-dma.c | 33 ++++++++++++-------------
include/linux/of_dma.h | 29 ++++++++++++++++++++++
6 files changed, 105 insertions(+), 121 deletions(-)
---
base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
change-id: 20260114-mxsdma-module-eb20ccac4986
Best regards,
--
Frank Li <Frank.Li@nxp.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-15 8:44 ` Daniel Baluta
` (2 more replies)
2026-01-14 22:33 ` [PATCH 02/13] dmaengine: mxs-dma: Use local dev variable in probe() Frank Li
` (11 subsequent siblings)
12 siblings, 3 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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>
---
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..c630b23fdd1313168e2362415093f106d6a66c46 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
+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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 02/13] dmaengine: mxs-dma: Use local dev variable in probe()
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
2026-01-14 22:33 ` [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 23:27 ` Fabio Estevam
2026-01-14 22:33 ` [PATCH 03/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register() Frank Li
` (10 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index cfb9962417ef68e976ae03c3c6f3054dc89bd1e6..c7e535c91469f0d819d6fe7465725736dc6128d8 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,7 +796,7 @@ 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);
@@ -816,13 +817,13 @@ 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");
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 03/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register()
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
2026-01-14 22:33 ` [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
2026-01-14 22:33 ` [PATCH 02/13] dmaengine: mxs-dma: Use local dev variable in probe() Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-15 8:45 ` Daniel Baluta
2026-01-14 22:33 ` [PATCH 04/13] dmaengine: mxs-dma: Use dev_err_probe() simple code Frank Li
` (9 subsequent siblings)
12 siblings, 1 reply; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 c7e535c91469f0d819d6fe7465725736dc6128d8..dbc8747de591cc83e39ef873633418f41b5ea982 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -825,6 +825,7 @@ static int mxs_dma_probe(struct platform_device *pdev)
if (ret) {
dev_err(dev,
"failed to register controller\n");
+ return ret;
}
dev_info(mxs_dma->dma_device.dev, "initialized\n");
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 04/13] dmaengine: mxs-dma: Use dev_err_probe() simple code
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (2 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 03/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register() Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register() Frank Li
` (8 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
Cc: dmaengine, devicetree, linux-kernel, imx, linux-arm-kernel,
Shawn Guo, Frank Li
Use dev_err_probe() simple 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 dbc8747de591cc83e39ef873633418f41b5ea982..c1d4c6690df1af476aeafe77ff7f78bff1e413f1 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(mxs_dma->dma_device.dev, "initialized\n");
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register()
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (3 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 04/13] dmaengine: mxs-dma: Use dev_err_probe() simple code Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 06/13] dmaengine: mxs-dma: Add module license and description Frank Li
` (7 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 c1d4c6690df1af476aeafe77ff7f78bff1e413f1..e047a41a8df2e84e0c68b112f59cc79c0ab84491 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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 06/13] dmaengine: mxs-dma: Add module license and description
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (4 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register() Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate Frank Li
` (6 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 e047a41a8df2e84e0c68b112f59cc79c0ab84491..083a396a8d0d6f92bdde41e90c09f316da0dcad5 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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (5 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 06/13] dmaengine: mxs-dma: Add module license and description Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 08/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register() Frank Li
` (5 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 8bb0a119ecd48a6695404d43fce225987c9c69ff..b1c2d0fd0836edec9f9b6868e020310f50bba63c 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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 08/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register()
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (6 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 09/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code Frank Li
` (4 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 a753b7cbfa7a3369d17314bc5bc9139c9f8e5c27..c0305fd2ec06c41dfa8396bad6bfc225fd3861f0 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);
fsl_disable_clocks(fsl_edma, fsl_edma->drvdata->dmamuxs);
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 09/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (7 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 08/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register() Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 10/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() " Frank Li
` (3 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 c0305fd2ec06c41dfa8396bad6bfc225fd3861f0..8804217facba7870a0a9973d99ff7264cfa2b59c 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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 10/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() to simplify code
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (8 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 09/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 11/13] dmaengine: imx-sdma: Use managed API " Frank Li
` (2 subsequent siblings)
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 ed9e56de5a9b9484c6598d438f66a836504818be..f7518f567ecd707575e73803a94c2c1d4762f3f4 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(sizeof(*sdma->script_addrs), GFP_KERNEL);
- 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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 11/13] dmaengine: imx-sdma: Use managed API to simplify code
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (9 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 10/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() " Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 12/13] dmaengine: imx-sdma: Use dev_err_probe() " Frank Li
2026-01-14 22:33 ` [PATCH 13/13] dmaengine: fsl-qdma: " Frank Li
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 | 25 ++++++++++---------------
1 file changed, 10 insertions(+), 15 deletions(-)
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index f7518f567ecd707575e73803a94c2c1d4762f3f4..95458ea188e3b0fc4e4f861df567c1c7524a3029 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -2280,7 +2280,9 @@ static int sdma_probe(struct platform_device *pdev)
sdma->irq = irq;
- sdma->script_addrs = kzalloc(sizeof(*sdma->script_addrs), GFP_KERNEL);
+ sdma->script_addrs = devm_kzalloc(&pdev->dev,
+ sizeof(*sdma->script_addrs),
+ GFP_KERNEL);
if (!sdma->script_addrs)
return -ENOMEM;
@@ -2323,11 +2325,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 +2355,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 +2394,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 +2402,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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 12/13] dmaengine: imx-sdma: Use dev_err_probe() to simplify code
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (10 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 11/13] dmaengine: imx-sdma: Use managed API " Frank Li
@ 2026-01-14 22:33 ` Frank Li
2026-01-14 22:33 ` [PATCH 13/13] dmaengine: fsl-qdma: " Frank Li
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 95458ea188e3b0fc4e4f861df567c1c7524a3029..543ac44873696a2091e5aab0f47bd1af2af9d1ad 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -2356,18 +2356,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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 13/13] dmaengine: fsl-qdma: Use dev_err_probe() to simplify code
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
` (11 preceding siblings ...)
2026-01-14 22:33 ` [PATCH 12/13] dmaengine: imx-sdma: Use dev_err_probe() " Frank Li
@ 2026-01-14 22:33 ` Frank Li
12 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-14 22:33 UTC (permalink / raw)
To: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam
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 6ace5bf80c40be4226b17503fbe8caf8f08dd139..4c3a06653c909ce89677b66aa6a900c82c38a872 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.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 02/13] dmaengine: mxs-dma: Use local dev variable in probe()
2026-01-14 22:33 ` [PATCH 02/13] dmaengine: mxs-dma: Use local dev variable in probe() Frank Li
@ 2026-01-14 23:27 ` Fabio Estevam
2026-01-15 14:35 ` Frank Li
0 siblings, 1 reply; 20+ messages in thread
From: Fabio Estevam @ 2026-01-14 23:27 UTC (permalink / raw)
To: Frank Li
Cc: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, dmaengine, devicetree, linux-kernel, imx,
linux-arm-kernel, Shawn Guo
On Wed, Jan 14, 2026 at 7:33 PM Frank Li <Frank.Li@nxp.com> wrote:
> 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");
Better put the dev_err() into a single line now.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
2026-01-14 22:33 ` [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
@ 2026-01-15 8:44 ` Daniel Baluta
2026-01-15 10:45 ` kernel test robot
2026-01-15 11:29 ` kernel test robot
2 siblings, 0 replies; 20+ messages in thread
From: Daniel Baluta @ 2026-01-15 8:44 UTC (permalink / raw)
To: Frank Li
Cc: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, dmaengine, devicetree,
linux-kernel, imx, linux-arm-kernel, Shawn Guo
On Thu, Jan 15, 2026 at 12:34 AM Frank Li <Frank.Li@nxp.com> wrote:
>
> Add a managed API, devm_of_dma_controller_register(), to simplify DMA
> engine controller registration by automatically handling resource
> cleanup.
<snip>
> +static inline
> +devm_of_dma_controller_register(struct device *dev, struct device_node *np,
static inline int?
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 03/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register()
2026-01-14 22:33 ` [PATCH 03/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register() Frank Li
@ 2026-01-15 8:45 ` Daniel Baluta
0 siblings, 0 replies; 20+ messages in thread
From: Daniel Baluta @ 2026-01-15 8:45 UTC (permalink / raw)
To: Frank Li
Cc: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, dmaengine, devicetree,
linux-kernel, imx, linux-arm-kernel, Shawn Guo
On Thu, Jan 15, 2026 at 12:34 AM Frank Li <Frank.Li@nxp.com> wrote:
>
> 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>
I think you can send this as an independent patch or at least put it
first in the series as it is a bugfix.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
2026-01-14 22:33 ` [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
2026-01-15 8:44 ` Daniel Baluta
@ 2026-01-15 10:45 ` kernel test robot
2026-01-15 11:29 ` kernel test robot
2 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2026-01-15 10:45 UTC (permalink / raw)
To: Frank Li, Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: oe-kbuild-all, dmaengine, devicetree, linux-kernel, imx,
linux-arm-kernel, Frank Li
Hi Frank,
kernel test robot noticed the following build errors:
[auto build test ERROR on 8f0b4cce4481fb22653697cced8d0d04027cb1e8]
url: https://github.com/intel-lab-lkp/linux/commits/Frank-Li/dmaengine-of_dma-Add-devm_of_dma_controller_register/20260115-063955
base: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
patch link: https://lore.kernel.org/r/20260114-mxsdma-module-v1-1-9b2a9eaa4226%40nxp.com
patch subject: [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
config: x86_64-randconfig-161-20260115 (https://download.01.org/0day-ci/archive/20260115/202601151857.D1ikP7GO-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
smatch version: v0.5.0-8985-g2614ff1a
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260115/202601151857.D1ikP7GO-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601151857.D1ikP7GO-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/dma/dmaengine.c:54:
>> include/linux/of_dma.h:88:1: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
87 | static inline
| ~~~~~~~~~~~~~
| int
88 | devm_of_dma_controller_register(struct device *dev, struct device_node *np,
| ^
1 error generated.
vim +/int +88 include/linux/of_dma.h
86
87 static inline
> 88 devm_of_dma_controller_register(struct device *dev, struct device_node *np,
89 struct dma_chan *(*of_dma_xlate)
90 (struct of_phandle_args *, struct of_dma *),
91 void *data)
92 {
93 return -ENODEV;
94 }
95
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
2026-01-14 22:33 ` [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
2026-01-15 8:44 ` Daniel Baluta
2026-01-15 10:45 ` kernel test robot
@ 2026-01-15 11:29 ` kernel test robot
2 siblings, 0 replies; 20+ messages in thread
From: kernel test robot @ 2026-01-15 11:29 UTC (permalink / raw)
To: Frank Li, Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: oe-kbuild-all, dmaengine, devicetree, linux-kernel, imx,
linux-arm-kernel, Frank Li
Hi Frank,
kernel test robot noticed the following build errors:
[auto build test ERROR on 8f0b4cce4481fb22653697cced8d0d04027cb1e8]
url: https://github.com/intel-lab-lkp/linux/commits/Frank-Li/dmaengine-of_dma-Add-devm_of_dma_controller_register/20260115-063955
base: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
patch link: https://lore.kernel.org/r/20260114-mxsdma-module-v1-1-9b2a9eaa4226%40nxp.com
patch subject: [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register()
config: x86_64-randconfig-r071-20260115 (https://download.01.org/0day-ci/archive/20260115/202601151942.cEs9s8Tj-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.4.0-5) 12.4.0
smatch version: v0.5.0-8985-g2614ff1a
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260115/202601151942.cEs9s8Tj-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601151942.cEs9s8Tj-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/tty/serial/fsl_lpuart.c:22:
>> include/linux/of_dma.h:88:1: error: return type defaults to 'int' [-Werror=implicit-int]
88 | devm_of_dma_controller_register(struct device *dev, struct device_node *np,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/int +88 include/linux/of_dma.h
86
87 static inline
> 88 devm_of_dma_controller_register(struct device *dev, struct device_node *np,
89 struct dma_chan *(*of_dma_xlate)
90 (struct of_phandle_args *, struct of_dma *),
91 void *data)
92 {
93 return -ENODEV;
94 }
95
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 02/13] dmaengine: mxs-dma: Use local dev variable in probe()
2026-01-14 23:27 ` Fabio Estevam
@ 2026-01-15 14:35 ` Frank Li
0 siblings, 0 replies; 20+ messages in thread
From: Frank Li @ 2026-01-15 14:35 UTC (permalink / raw)
To: Fabio Estevam
Cc: Rob Herring, Saravana Kannan, Vinod Koul, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, dmaengine, devicetree, linux-kernel, imx,
linux-arm-kernel, Shawn Guo
On Wed, Jan 14, 2026 at 08:27:18PM -0300, Fabio Estevam wrote:
> On Wed, Jan 14, 2026 at 7:33 PM Frank Li <Frank.Li@nxp.com> wrote:
>
> > 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");
>
> Better put the dev_err() into a single line now.
follow patch change to use dev_err_probe().
dmaengine: mxs-dma: Use dev_err_probe() simple code
Frank
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2026-01-15 14:35 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-14 22:33 [PATCH 00/13] dmaegnine: freescale-dmas: small improvement Frank Li
2026-01-14 22:33 ` [PATCH 01/13] dmaengine: of_dma: Add devm_of_dma_controller_register() Frank Li
2026-01-15 8:44 ` Daniel Baluta
2026-01-15 10:45 ` kernel test robot
2026-01-15 11:29 ` kernel test robot
2026-01-14 22:33 ` [PATCH 02/13] dmaengine: mxs-dma: Use local dev variable in probe() Frank Li
2026-01-14 23:27 ` Fabio Estevam
2026-01-15 14:35 ` Frank Li
2026-01-14 22:33 ` [PATCH 03/13] dmaengine: mxs-dma: Fix missing return value from of_dma_controller_register() Frank Li
2026-01-15 8:45 ` Daniel Baluta
2026-01-14 22:33 ` [PATCH 04/13] dmaengine: mxs-dma: Use dev_err_probe() simple code Frank Li
2026-01-14 22:33 ` [PATCH 05/13] dmaengine: mxs-dma: Use managed API devm_of_dma_controller_register() Frank Li
2026-01-14 22:33 ` [PATCH 06/13] dmaengine: mxs-dma: Add module license and description Frank Li
2026-01-14 22:33 ` [PATCH 07/13] dmaengine: mxs-dma: Turn MXS_DMA as tristate Frank Li
2026-01-14 22:33 ` [PATCH 08/13] dmaengine: fsl-edma: Use managed API dmaenginem_async_device_register() Frank Li
2026-01-14 22:33 ` [PATCH 09/13] dmaengine: fsl-edma: Use dev_err_probe() to simplify code Frank Li
2026-01-14 22:33 ` [PATCH 10/13] dmaengine: imx-sdma: Use devm_clk_get_prepared() " Frank Li
2026-01-14 22:33 ` [PATCH 11/13] dmaengine: imx-sdma: Use managed API " Frank Li
2026-01-14 22:33 ` [PATCH 12/13] dmaengine: imx-sdma: Use dev_err_probe() " Frank Li
2026-01-14 22:33 ` [PATCH 13/13] dmaengine: fsl-qdma: " Frank Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox