* [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces
@ 2026-01-16 16:29 Frank Li
2026-01-16 16:29 ` [PATCH v4 1/4] media: nxp: use dev_err_probe() to simplify code Frank Li
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Frank Li @ 2026-01-16 16:29 UTC (permalink / raw)
To: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Laurent Pinchart, Martin Kepplinger-Novakovic, Purism Kernel Team
Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Frank Li,
Alexander Stein
Some trivial patch to reduce goto at probe functions.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Changes in v4:
- collect alex's review tag
- fix grammer in error message
- Link to v3: https://lore.kernel.org/r/20251215-cam_cleanup-v3-0-a61995068f38@nxp.com
Changes in v3:
- rebase to v6.19-rc1
- avoid use __free() == NULL according to cleanup.h
- Link to v2: https://lore.kernel.org/r/20251119-cam_cleanup-v2-0-df732cc83ff1@nxp.com
Changes in v2:
- add new patch media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers
- detail change see each patch's change log.
- Link to v1: https://lore.kernel.org/r/20251117-cam_cleanup-v1-0-6cd42872db79@nxp.com
---
Frank Li (4):
media: nxp: use dev_err_probe() to simplify code
media: nxp: imx8-isi: use devm_pm_runtime_enable() to simplify code
media: nxp: use cleanup __free(fwnode_handle) simplify code
media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers
drivers/media/platform/nxp/imx-mipi-csis.c | 54 +++++++--------
drivers/media/platform/nxp/imx7-media-csi.c | 14 ++--
.../media/platform/nxp/imx8-isi/imx8-isi-core.c | 16 ++---
drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 77 ++++++++++------------
4 files changed, 71 insertions(+), 90 deletions(-)
---
base-commit: 49cc7b5d0dee386c44b51a90eb49037b2a1f5b2e
change-id: 20250807-cam_cleanup-b6d90ba9dac3
Best regards,
--
Frank Li <Frank.Li@nxp.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v4 1/4] media: nxp: use dev_err_probe() to simplify code
2026-01-16 16:29 [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Frank Li
@ 2026-01-16 16:29 ` Frank Li
2026-01-16 16:29 ` [PATCH v4 2/4] media: nxp: imx8-isi: use devm_pm_runtime_enable() " Frank Li
` (3 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Frank Li @ 2026-01-16 16:29 UTC (permalink / raw)
To: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Laurent Pinchart, Martin Kepplinger-Novakovic, Purism Kernel Team
Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Frank Li,
Alexander Stein
Use dev_err_probe() to simplify the code. Drop the explicit error message
after returning from imx8mq_mipi_csi_parse_dt(), as the error is already
reported by this helper.
No functional change.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Change in v3
- add Alexander Stein's review tag
- fix error message grammer
change in v2:
- add Laurent Pinchart review tags
- wrap error message to new line
- remove error code print in dev_err_probe();
- drop error messaage at imx8mq_mipi_csi_parse_dt()
---
drivers/media/platform/nxp/imx-mipi-csis.c | 6 ++---
drivers/media/platform/nxp/imx7-media-csi.c | 14 ++++--------
drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 33 ++++++++++++---------------
3 files changed, 21 insertions(+), 32 deletions(-)
diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c
index 088b2945aee33731c565f049dd17721356300b84..ce93d868746f002c22e2f86b1e0aa84ec1a76061 100644
--- a/drivers/media/platform/nxp/imx-mipi-csis.c
+++ b/drivers/media/platform/nxp/imx-mipi-csis.c
@@ -1547,10 +1547,8 @@ static int mipi_csis_probe(struct platform_device *pdev)
/* Now that the hardware is initialized, request the interrupt. */
ret = devm_request_irq(dev, irq, mipi_csis_irq_handler, 0,
dev_name(dev), csis);
- if (ret) {
- dev_err(dev, "Interrupt request failed\n");
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret, "Interrupt request failed\n");
/* Initialize and register the subdev. */
ret = mipi_csis_subdev_init(csis);
diff --git a/drivers/media/platform/nxp/imx7-media-csi.c b/drivers/media/platform/nxp/imx7-media-csi.c
index 933a5f39f9f4c9b43ca8d2a1819d0145981266e6..7ddc7ba06e3d4e007013821f67d783898a15461f 100644
--- a/drivers/media/platform/nxp/imx7-media-csi.c
+++ b/drivers/media/platform/nxp/imx7-media-csi.c
@@ -2218,11 +2218,9 @@ static int imx7_csi_probe(struct platform_device *pdev)
/* Acquire resources and install interrupt handler. */
csi->mclk = devm_clk_get(&pdev->dev, "mclk");
- if (IS_ERR(csi->mclk)) {
- ret = PTR_ERR(csi->mclk);
- dev_err(dev, "Failed to get mclk: %d", ret);
- return ret;
- }
+ if (IS_ERR(csi->mclk))
+ return dev_err_probe(dev, PTR_ERR(csi->mclk),
+ "Failed to get mclk\n");
csi->irq = platform_get_irq(pdev, 0);
if (csi->irq < 0)
@@ -2236,10 +2234,8 @@ static int imx7_csi_probe(struct platform_device *pdev)
ret = devm_request_irq(dev, csi->irq, imx7_csi_irq_handler, 0, "csi",
(void *)csi);
- if (ret < 0) {
- dev_err(dev, "Request CSI IRQ failed.\n");
- return ret;
- }
+ if (ret < 0)
+ return dev_err_probe(dev, ret, "Request CSI IRQ failed.\n");
/* Initialize all the media device infrastructure. */
ret = imx7_csi_media_init(csi);
diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
index 0851f4a9ae52d3096f454da643cfdc5017e000b1..83da050a1dcbad1d41c94de0e352dcafe3f25e62 100644
--- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
+++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
@@ -951,10 +951,9 @@ static int imx8mq_mipi_csi_parse_dt(struct csi_state *state)
int ret = 0;
state->rst = devm_reset_control_array_get_exclusive(dev);
- if (IS_ERR(state->rst)) {
- dev_err(dev, "Failed to get reset: %pe\n", state->rst);
- return PTR_ERR(state->rst);
- }
+ if (IS_ERR(state->rst))
+ return dev_err_probe(dev, PTR_ERR(state->rst),
+ "Failed to get reset\n");
if (state->pdata->use_reg_csr) {
const struct regmap_config regmap_config = {
@@ -977,24 +976,22 @@ static int imx8mq_mipi_csi_parse_dt(struct csi_state *state)
ret = of_property_read_u32_array(np, "fsl,mipi-phy-gpr", out_val,
ARRAY_SIZE(out_val));
- if (ret) {
- dev_err(dev, "no fsl,mipi-phy-gpr property found: %d\n", ret);
- return ret;
- }
+ if (ret)
+ return dev_err_probe(dev, ret, "property %s not found\n",
+ "fsl,mipi-phy-gpr");
ph = *out_val;
node = of_find_node_by_phandle(ph);
- if (!node) {
- dev_err(dev, "Error finding node by phandle\n");
- return -ENODEV;
- }
+ if (!node)
+ return dev_err_probe(dev, -ENODEV,
+ "Error finding node by phandle\n");
+
state->phy_gpr = syscon_node_to_regmap(node);
of_node_put(node);
- if (IS_ERR(state->phy_gpr)) {
- dev_err(dev, "failed to get gpr regmap: %pe\n", state->phy_gpr);
- return PTR_ERR(state->phy_gpr);
- }
+ if (IS_ERR(state->phy_gpr))
+ return dev_err_probe(dev, PTR_ERR(state->phy_gpr),
+ "failed to get gpr regmap\n");
state->phy_gpr_reg = out_val[1];
dev_dbg(dev, "phy gpr register set to 0x%x\n", state->phy_gpr_reg);
@@ -1017,10 +1014,8 @@ static int imx8mq_mipi_csi_probe(struct platform_device *pdev)
state->pdata = of_device_get_match_data(dev);
ret = imx8mq_mipi_csi_parse_dt(state);
- if (ret < 0) {
- dev_err(dev, "Failed to parse device tree: %d\n", ret);
+ if (ret < 0)
return ret;
- }
/* Acquire resources. */
state->regs = devm_platform_ioremap_resource(pdev, 0);
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 2/4] media: nxp: imx8-isi: use devm_pm_runtime_enable() to simplify code
2026-01-16 16:29 [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Frank Li
2026-01-16 16:29 ` [PATCH v4 1/4] media: nxp: use dev_err_probe() to simplify code Frank Li
@ 2026-01-16 16:29 ` Frank Li
2026-01-21 1:43 ` Laurent Pinchart
2026-01-16 16:29 ` [PATCH v4 3/4] media: nxp: use cleanup __free(fwnode_handle) " Frank Li
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2026-01-16 16:29 UTC (permalink / raw)
To: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Laurent Pinchart, Martin Kepplinger-Novakovic, Purism Kernel Team
Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Frank Li
Use devm_pm_runtime_enable() to simplify code. Change to use
dev_err_probe() because previous goto change to return.
No functional change.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
change in v2
- remove error code print at dev_err_probe.
---
drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
index c3d411ddf492eb27b372763ce5d344a90c6ec524..486092511d1f9381c250ddcf844fc74c61a789b7 100644
--- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
+++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
@@ -499,13 +499,14 @@ static int mxc_isi_probe(struct platform_device *pdev)
dma_size = isi->pdata->has_36bit_dma ? 36 : 32;
dma_set_mask_and_coherent(dev, DMA_BIT_MASK(dma_size));
- pm_runtime_enable(dev);
+ ret = devm_pm_runtime_enable(dev);
+ if (ret)
+ return ret;
ret = mxc_isi_crossbar_init(isi);
- if (ret) {
- dev_err(dev, "Failed to initialize crossbar: %d\n", ret);
- goto err_pm;
- }
+ if (ret)
+ return dev_err_probe(dev, ret,
+ "Failed to initialize crossbar\n");
for (i = 0; i < isi->pdata->num_channels; ++i) {
ret = mxc_isi_pipe_init(isi, i);
@@ -528,8 +529,7 @@ static int mxc_isi_probe(struct platform_device *pdev)
err_xbar:
mxc_isi_crossbar_cleanup(&isi->crossbar);
-err_pm:
- pm_runtime_disable(isi->dev);
+
return ret;
}
@@ -548,8 +548,6 @@ static void mxc_isi_remove(struct platform_device *pdev)
mxc_isi_crossbar_cleanup(&isi->crossbar);
mxc_isi_v4l2_cleanup(isi);
-
- pm_runtime_disable(isi->dev);
}
static const struct of_device_id mxc_isi_of_match[] = {
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 3/4] media: nxp: use cleanup __free(fwnode_handle) simplify code
2026-01-16 16:29 [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Frank Li
2026-01-16 16:29 ` [PATCH v4 1/4] media: nxp: use dev_err_probe() to simplify code Frank Li
2026-01-16 16:29 ` [PATCH v4 2/4] media: nxp: imx8-isi: use devm_pm_runtime_enable() " Frank Li
@ 2026-01-16 16:29 ` Frank Li
2026-01-21 1:45 ` Laurent Pinchart
2026-01-16 16:29 ` [PATCH v4 4/4] media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers Frank Li
2026-01-21 1:55 ` [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Laurent Pinchart
4 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2026-01-16 16:29 UTC (permalink / raw)
To: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Laurent Pinchart, Martin Kepplinger-Novakovic, Purism Kernel Team
Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Frank Li
Use cleanup __free(fwnode_handle) simplify code. No functional change.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
change in v3
- Rollback to v1 version to align guide at cleanup.h.
- Ref similar link
Link: https://lore.kernel.org/r/20240904044825.1048256-1-dmitry.torokhov@gmail.com
Link: https://patch.msgid.link/20251208020750.4727-3-krzysztof.kozlowski@oss.qualcomm.com
452e0adff2618 Input: iqs7222 - use cleanup facility for fwnodes
52776177d8b7e Input: iqs626a - use cleanup facility for fwnodes
9a540b67a9c26 Input: iqs269a - use cleanup facility for fwnodes
cc3b18f9fedec i3c: master: Fix confusing cleanup.h syntax
change in v2.
- move variable define to top.
- remove dev_err_probe() change
---
drivers/media/platform/nxp/imx-mipi-csis.c | 25 ++++++++-----------------
drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 25 ++++++++-----------------
2 files changed, 16 insertions(+), 34 deletions(-)
diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c
index ce93d868746f002c22e2f86b1e0aa84ec1a76061..9a43fd1eb0bcee7ac0c47f28ad89012de45a70d9 100644
--- a/drivers/media/platform/nxp/imx-mipi-csis.c
+++ b/drivers/media/platform/nxp/imx-mipi-csis.c
@@ -12,6 +12,7 @@
*
*/
+#include <linux/cleanup.h>
#include <linux/clk.h>
#include <linux/debugfs.h>
#include <linux/delay.h>
@@ -1349,27 +1350,26 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
.bus_type = V4L2_MBUS_CSI2_DPHY,
};
struct v4l2_async_connection *asd;
- struct fwnode_handle *ep;
unsigned int i;
int ret;
v4l2_async_subdev_nf_init(&csis->notifier, &csis->sd);
- ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(csis->dev), 0, 0,
- FWNODE_GRAPH_ENDPOINT_NEXT);
+ struct fwnode_handle *ep __free(fwnode_handle) =
+ fwnode_graph_get_endpoint_by_id(dev_fwnode(csis->dev), 0, 0,
+ FWNODE_GRAPH_ENDPOINT_NEXT);
if (!ep)
return -ENOTCONN;
ret = v4l2_fwnode_endpoint_parse(ep, &vep);
if (ret)
- goto err_parse;
+ return ret;
for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
dev_err(csis->dev,
"data lanes reordering is not supported");
- ret = -EINVAL;
- goto err_parse;
+ return -EINVAL;
}
}
@@ -1381,12 +1381,8 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
asd = v4l2_async_nf_add_fwnode_remote(&csis->notifier, ep,
struct v4l2_async_connection);
- if (IS_ERR(asd)) {
- ret = PTR_ERR(asd);
- goto err_parse;
- }
-
- fwnode_handle_put(ep);
+ if (IS_ERR(asd))
+ return PTR_ERR(asd);
csis->notifier.ops = &mipi_csis_notify_ops;
@@ -1395,11 +1391,6 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
return ret;
return v4l2_async_register_subdev(&csis->sd);
-
-err_parse:
- fwnode_handle_put(ep);
-
- return ret;
}
/* -----------------------------------------------------------------------------
diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
index 83da050a1dcbad1d41c94de0e352dcafe3f25e62..9d946b68cf59d9f4fb3413fc90219efd380d9d95 100644
--- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
+++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
@@ -6,6 +6,7 @@
*/
#include <linux/bitfield.h>
+#include <linux/cleanup.h>
#include <linux/clk.h>
#include <linux/clk-provider.h>
#include <linux/delay.h>
@@ -717,27 +718,26 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
.bus_type = V4L2_MBUS_CSI2_DPHY,
};
struct v4l2_async_connection *asd;
- struct fwnode_handle *ep;
unsigned int i;
int ret;
v4l2_async_subdev_nf_init(&state->notifier, &state->sd);
- ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(state->dev), 0, 0,
- FWNODE_GRAPH_ENDPOINT_NEXT);
+ struct fwnode_handle *ep __free(fwnode_handle) =
+ fwnode_graph_get_endpoint_by_id(dev_fwnode(state->dev), 0, 0,
+ FWNODE_GRAPH_ENDPOINT_NEXT);
if (!ep)
return -ENOTCONN;
ret = v4l2_fwnode_endpoint_parse(ep, &vep);
if (ret)
- goto err_parse;
+ return ret;
for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
dev_err(state->dev,
"data lanes reordering is not supported");
- ret = -EINVAL;
- goto err_parse;
+ return -EINVAL;
}
}
@@ -749,12 +749,8 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
asd = v4l2_async_nf_add_fwnode_remote(&state->notifier, ep,
struct v4l2_async_connection);
- if (IS_ERR(asd)) {
- ret = PTR_ERR(asd);
- goto err_parse;
- }
-
- fwnode_handle_put(ep);
+ if (IS_ERR(asd))
+ return PTR_ERR(asd);
state->notifier.ops = &imx8mq_mipi_csi_notify_ops;
@@ -763,11 +759,6 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
return ret;
return v4l2_async_register_subdev(&state->sd);
-
-err_parse:
- fwnode_handle_put(ep);
-
- return ret;
}
/* -----------------------------------------------------------------------------
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v4 4/4] media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers
2026-01-16 16:29 [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Frank Li
` (2 preceding siblings ...)
2026-01-16 16:29 ` [PATCH v4 3/4] media: nxp: use cleanup __free(fwnode_handle) " Frank Li
@ 2026-01-16 16:29 ` Frank Li
2026-01-21 1:51 ` Laurent Pinchart
2026-01-21 1:55 ` [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Laurent Pinchart
4 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2026-01-16 16:29 UTC (permalink / raw)
To: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Laurent Pinchart, Martin Kepplinger-Novakovic, Purism Kernel Team
Cc: linux-media, imx, linux-arm-kernel, linux-kernel, Frank Li
Add dev_err_probe() to all error branches in the *async_register() helpers
to provide clearer diagnostic information when device registration fails.
Drop the explicit error message after returning from
mipi_csis_async_register(), as the error is already reported by this
helper.
No functional change.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
change in v2
- new patch
---
drivers/media/platform/nxp/imx-mipi-csis.c | 31 ++++++++++++++++-----------
drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 27 ++++++++++++++---------
2 files changed, 35 insertions(+), 23 deletions(-)
diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c
index 9a43fd1eb0bcee7ac0c47f28ad89012de45a70d9..85098824f4917b3cda3aa71c4ed0a41939283e12 100644
--- a/drivers/media/platform/nxp/imx-mipi-csis.c
+++ b/drivers/media/platform/nxp/imx-mipi-csis.c
@@ -1359,18 +1359,18 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
fwnode_graph_get_endpoint_by_id(dev_fwnode(csis->dev), 0, 0,
FWNODE_GRAPH_ENDPOINT_NEXT);
if (!ep)
- return -ENOTCONN;
+ return dev_err_probe(csis->dev, -ENOTCONN,
+ "failed to get remote endpoint\n");
ret = v4l2_fwnode_endpoint_parse(ep, &vep);
if (ret)
- return ret;
+ return dev_err_probe(csis->dev, ret,
+ "failed to parse endpoint\n");
for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
- if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
- dev_err(csis->dev,
- "data lanes reordering is not supported");
- return -EINVAL;
- }
+ if (vep.bus.mipi_csi2.data_lanes[i] != i + 1)
+ return dev_err_probe(csis->dev, -EINVAL,
+ "data lanes reordering is not supported");
}
csis->bus = vep.bus.mipi_csi2;
@@ -1382,15 +1382,22 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
asd = v4l2_async_nf_add_fwnode_remote(&csis->notifier, ep,
struct v4l2_async_connection);
if (IS_ERR(asd))
- return PTR_ERR(asd);
+ return dev_err_probe(csis->dev, PTR_ERR(asd),
+ "failed to add remote fwmode to notifier\n");
csis->notifier.ops = &mipi_csis_notify_ops;
ret = v4l2_async_nf_register(&csis->notifier);
if (ret)
- return ret;
+ return dev_err_probe(csis->dev, ret,
+ "failed to register notifier\n");
- return v4l2_async_register_subdev(&csis->sd);
+ ret = v4l2_async_register_subdev(&csis->sd);
+ if (ret)
+ return dev_err_probe(csis->dev, ret,
+ "failed to register subdev\n");
+
+ return 0;
}
/* -----------------------------------------------------------------------------
@@ -1549,10 +1556,8 @@ static int mipi_csis_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, &csis->sd);
ret = mipi_csis_async_register(csis);
- if (ret < 0) {
- dev_err(dev, "async register failed: %d\n", ret);
+ if (ret < 0)
goto err_cleanup;
- }
/* Initialize debugfs. */
mipi_csis_debugfs_init(csis);
diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
index 9d946b68cf59d9f4fb3413fc90219efd380d9d95..b3b9e9dc8a95c76628d573824c12f9391fb7b4a0 100644
--- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
+++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
@@ -727,18 +727,18 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
fwnode_graph_get_endpoint_by_id(dev_fwnode(state->dev), 0, 0,
FWNODE_GRAPH_ENDPOINT_NEXT);
if (!ep)
- return -ENOTCONN;
+ return dev_err_probe(state->dev, -ENOTCONN,
+ "failed to get remote endpoint fwnode\n");
ret = v4l2_fwnode_endpoint_parse(ep, &vep);
if (ret)
- return ret;
+ return dev_err_probe(state->dev, ret,
+ "failed parse endpoint fwnode\n");
for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
- if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
- dev_err(state->dev,
- "data lanes reordering is not supported");
- return -EINVAL;
- }
+ if (vep.bus.mipi_csi2.data_lanes[i] != i + 1)
+ return dev_err_probe(state->dev, -EINVAL,
+ "data lanes reordering is not supported");
}
state->bus = vep.bus.mipi_csi2;
@@ -750,15 +750,22 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
asd = v4l2_async_nf_add_fwnode_remote(&state->notifier, ep,
struct v4l2_async_connection);
if (IS_ERR(asd))
- return PTR_ERR(asd);
+ return dev_err_probe(state->dev, PTR_ERR(asd),
+ "failed add fwnode to notifier\n");
state->notifier.ops = &imx8mq_mipi_csi_notify_ops;
ret = v4l2_async_nf_register(&state->notifier);
if (ret)
- return ret;
+ return dev_err_probe(state->dev, ret,
+ "failed to register notifier\n");
- return v4l2_async_register_subdev(&state->sd);
+ ret = v4l2_async_register_subdev(&state->sd);
+ if (ret)
+ return dev_err_probe(state->dev, ret,
+ "failed to register subdev\n");
+
+ return 0;
}
/* -----------------------------------------------------------------------------
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v4 2/4] media: nxp: imx8-isi: use devm_pm_runtime_enable() to simplify code
2026-01-16 16:29 ` [PATCH v4 2/4] media: nxp: imx8-isi: use devm_pm_runtime_enable() " Frank Li
@ 2026-01-21 1:43 ` Laurent Pinchart
0 siblings, 0 replies; 9+ messages in thread
From: Laurent Pinchart @ 2026-01-21 1:43 UTC (permalink / raw)
To: Frank Li
Cc: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Martin Kepplinger-Novakovic, Purism Kernel Team, linux-media, imx,
linux-arm-kernel, linux-kernel
Hi Frank,
Thank you for the patch.
On Fri, Jan 16, 2026 at 11:29:20AM -0500, Frank Li wrote:
> Use devm_pm_runtime_enable() to simplify code. Change to use
> dev_err_probe() because previous goto change to return.
>
> No functional change.
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> change in v2
> - remove error code print at dev_err_probe.
> ---
> drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
> index c3d411ddf492eb27b372763ce5d344a90c6ec524..486092511d1f9381c250ddcf844fc74c61a789b7 100644
> --- a/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
> +++ b/drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c
> @@ -499,13 +499,14 @@ static int mxc_isi_probe(struct platform_device *pdev)
> dma_size = isi->pdata->has_36bit_dma ? 36 : 32;
> dma_set_mask_and_coherent(dev, DMA_BIT_MASK(dma_size));
>
> - pm_runtime_enable(dev);
> + ret = devm_pm_runtime_enable(dev);
> + if (ret)
> + return ret;
>
> ret = mxc_isi_crossbar_init(isi);
> - if (ret) {
> - dev_err(dev, "Failed to initialize crossbar: %d\n", ret);
> - goto err_pm;
> - }
> + if (ret)
> + return dev_err_probe(dev, ret,
> + "Failed to initialize crossbar\n");
>
> for (i = 0; i < isi->pdata->num_channels; ++i) {
> ret = mxc_isi_pipe_init(isi, i);
> @@ -528,8 +529,7 @@ static int mxc_isi_probe(struct platform_device *pdev)
>
> err_xbar:
> mxc_isi_crossbar_cleanup(&isi->crossbar);
> -err_pm:
> - pm_runtime_disable(isi->dev);
> +
> return ret;
> }
>
> @@ -548,8 +548,6 @@ static void mxc_isi_remove(struct platform_device *pdev)
>
> mxc_isi_crossbar_cleanup(&isi->crossbar);
> mxc_isi_v4l2_cleanup(isi);
> -
> - pm_runtime_disable(isi->dev);
> }
>
> static const struct of_device_id mxc_isi_of_match[] = {
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 3/4] media: nxp: use cleanup __free(fwnode_handle) simplify code
2026-01-16 16:29 ` [PATCH v4 3/4] media: nxp: use cleanup __free(fwnode_handle) " Frank Li
@ 2026-01-21 1:45 ` Laurent Pinchart
0 siblings, 0 replies; 9+ messages in thread
From: Laurent Pinchart @ 2026-01-21 1:45 UTC (permalink / raw)
To: Frank Li
Cc: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Martin Kepplinger-Novakovic, Purism Kernel Team, linux-media, imx,
linux-arm-kernel, linux-kernel
Hi Frank,
Thank you for the patch.
On Fri, Jan 16, 2026 at 11:29:21AM -0500, Frank Li wrote:
> Use cleanup __free(fwnode_handle) simplify code. No functional change.
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
> change in v3
> - Rollback to v1 version to align guide at cleanup.h.
> - Ref similar link
>
> Link: https://lore.kernel.org/r/20240904044825.1048256-1-dmitry.torokhov@gmail.com
> Link: https://patch.msgid.link/20251208020750.4727-3-krzysztof.kozlowski@oss.qualcomm.com
>
> 452e0adff2618 Input: iqs7222 - use cleanup facility for fwnodes
> 52776177d8b7e Input: iqs626a - use cleanup facility for fwnodes
> 9a540b67a9c26 Input: iqs269a - use cleanup facility for fwnodes
> cc3b18f9fedec i3c: master: Fix confusing cleanup.h syntax
>
> change in v2.
> - move variable define to top.
> - remove dev_err_probe() change
> ---
> drivers/media/platform/nxp/imx-mipi-csis.c | 25 ++++++++-----------------
> drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 25 ++++++++-----------------
> 2 files changed, 16 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c
> index ce93d868746f002c22e2f86b1e0aa84ec1a76061..9a43fd1eb0bcee7ac0c47f28ad89012de45a70d9 100644
> --- a/drivers/media/platform/nxp/imx-mipi-csis.c
> +++ b/drivers/media/platform/nxp/imx-mipi-csis.c
> @@ -12,6 +12,7 @@
> *
> */
>
> +#include <linux/cleanup.h>
> #include <linux/clk.h>
> #include <linux/debugfs.h>
> #include <linux/delay.h>
> @@ -1349,27 +1350,26 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
> .bus_type = V4L2_MBUS_CSI2_DPHY,
> };
> struct v4l2_async_connection *asd;
> - struct fwnode_handle *ep;
> unsigned int i;
> int ret;
>
> v4l2_async_subdev_nf_init(&csis->notifier, &csis->sd);
>
> - ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(csis->dev), 0, 0,
> - FWNODE_GRAPH_ENDPOINT_NEXT);
> + struct fwnode_handle *ep __free(fwnode_handle) =
> + fwnode_graph_get_endpoint_by_id(dev_fwnode(csis->dev), 0, 0,
> + FWNODE_GRAPH_ENDPOINT_NEXT);
> if (!ep)
> return -ENOTCONN;
>
> ret = v4l2_fwnode_endpoint_parse(ep, &vep);
> if (ret)
> - goto err_parse;
> + return ret;
>
> for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
> if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
> dev_err(csis->dev,
> "data lanes reordering is not supported");
> - ret = -EINVAL;
> - goto err_parse;
> + return -EINVAL;
> }
> }
>
> @@ -1381,12 +1381,8 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
>
> asd = v4l2_async_nf_add_fwnode_remote(&csis->notifier, ep,
> struct v4l2_async_connection);
> - if (IS_ERR(asd)) {
> - ret = PTR_ERR(asd);
> - goto err_parse;
> - }
> -
> - fwnode_handle_put(ep);
> + if (IS_ERR(asd))
> + return PTR_ERR(asd);
>
> csis->notifier.ops = &mipi_csis_notify_ops;
>
> @@ -1395,11 +1391,6 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
> return ret;
>
> return v4l2_async_register_subdev(&csis->sd);
> -
> -err_parse:
> - fwnode_handle_put(ep);
> -
> - return ret;
> }
>
> /* -----------------------------------------------------------------------------
> diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
> index 83da050a1dcbad1d41c94de0e352dcafe3f25e62..9d946b68cf59d9f4fb3413fc90219efd380d9d95 100644
> --- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
> +++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
> @@ -6,6 +6,7 @@
> */
>
> #include <linux/bitfield.h>
> +#include <linux/cleanup.h>
> #include <linux/clk.h>
> #include <linux/clk-provider.h>
> #include <linux/delay.h>
> @@ -717,27 +718,26 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
> .bus_type = V4L2_MBUS_CSI2_DPHY,
> };
> struct v4l2_async_connection *asd;
> - struct fwnode_handle *ep;
> unsigned int i;
> int ret;
>
> v4l2_async_subdev_nf_init(&state->notifier, &state->sd);
>
> - ep = fwnode_graph_get_endpoint_by_id(dev_fwnode(state->dev), 0, 0,
> - FWNODE_GRAPH_ENDPOINT_NEXT);
> + struct fwnode_handle *ep __free(fwnode_handle) =
> + fwnode_graph_get_endpoint_by_id(dev_fwnode(state->dev), 0, 0,
> + FWNODE_GRAPH_ENDPOINT_NEXT);
> if (!ep)
> return -ENOTCONN;
>
> ret = v4l2_fwnode_endpoint_parse(ep, &vep);
> if (ret)
> - goto err_parse;
> + return ret;
>
> for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
> if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
> dev_err(state->dev,
> "data lanes reordering is not supported");
> - ret = -EINVAL;
> - goto err_parse;
> + return -EINVAL;
> }
> }
>
> @@ -749,12 +749,8 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
>
> asd = v4l2_async_nf_add_fwnode_remote(&state->notifier, ep,
> struct v4l2_async_connection);
> - if (IS_ERR(asd)) {
> - ret = PTR_ERR(asd);
> - goto err_parse;
> - }
> -
> - fwnode_handle_put(ep);
> + if (IS_ERR(asd))
> + return PTR_ERR(asd);
>
> state->notifier.ops = &imx8mq_mipi_csi_notify_ops;
>
> @@ -763,11 +759,6 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
> return ret;
>
> return v4l2_async_register_subdev(&state->sd);
> -
> -err_parse:
> - fwnode_handle_put(ep);
> -
> - return ret;
> }
>
> /* -----------------------------------------------------------------------------
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 4/4] media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers
2026-01-16 16:29 ` [PATCH v4 4/4] media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers Frank Li
@ 2026-01-21 1:51 ` Laurent Pinchart
0 siblings, 0 replies; 9+ messages in thread
From: Laurent Pinchart @ 2026-01-21 1:51 UTC (permalink / raw)
To: Frank Li
Cc: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Martin Kepplinger-Novakovic, Purism Kernel Team, linux-media, imx,
linux-arm-kernel, linux-kernel
Hi Frank,
Thank you for the patch.
On Fri, Jan 16, 2026 at 11:29:22AM -0500, Frank Li wrote:
> Add dev_err_probe() to all error branches in the *async_register() helpers
> to provide clearer diagnostic information when device registration fails.
>
> Drop the explicit error message after returning from
> mipi_csis_async_register(), as the error is already reported by this
> helper.
>
> No functional change.
That's not quite exact, there are functional changes.
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> change in v2
> - new patch
> ---
> drivers/media/platform/nxp/imx-mipi-csis.c | 31 ++++++++++++++++-----------
> drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 27 ++++++++++++++---------
> 2 files changed, 35 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/media/platform/nxp/imx-mipi-csis.c b/drivers/media/platform/nxp/imx-mipi-csis.c
> index 9a43fd1eb0bcee7ac0c47f28ad89012de45a70d9..85098824f4917b3cda3aa71c4ed0a41939283e12 100644
> --- a/drivers/media/platform/nxp/imx-mipi-csis.c
> +++ b/drivers/media/platform/nxp/imx-mipi-csis.c
> @@ -1359,18 +1359,18 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
> fwnode_graph_get_endpoint_by_id(dev_fwnode(csis->dev), 0, 0,
> FWNODE_GRAPH_ENDPOINT_NEXT);
> if (!ep)
> - return -ENOTCONN;
> + return dev_err_probe(csis->dev, -ENOTCONN,
> + "failed to get remote endpoint\n");
It's not the remote endpoint, but the local endpoint.
>
> ret = v4l2_fwnode_endpoint_parse(ep, &vep);
> if (ret)
> - return ret;
> + return dev_err_probe(csis->dev, ret,
> + "failed to parse endpoint\n");
>
> for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
> - if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
> - dev_err(csis->dev,
> - "data lanes reordering is not supported");
> - return -EINVAL;
> - }
> + if (vep.bus.mipi_csi2.data_lanes[i] != i + 1)
> + return dev_err_probe(csis->dev, -EINVAL,
> + "data lanes reordering is not supported");
Missing \n
> }
>
> csis->bus = vep.bus.mipi_csi2;
> @@ -1382,15 +1382,22 @@ static int mipi_csis_async_register(struct mipi_csis_device *csis)
> asd = v4l2_async_nf_add_fwnode_remote(&csis->notifier, ep,
> struct v4l2_async_connection);
> if (IS_ERR(asd))
> - return PTR_ERR(asd);
> + return dev_err_probe(csis->dev, PTR_ERR(asd),
> + "failed to add remote fwmode to notifier\n");
s/fwmode/fwnode/
>
> csis->notifier.ops = &mipi_csis_notify_ops;
>
> ret = v4l2_async_nf_register(&csis->notifier);
> if (ret)
> - return ret;
> + return dev_err_probe(csis->dev, ret,
> + "failed to register notifier\n");
>
> - return v4l2_async_register_subdev(&csis->sd);
> + ret = v4l2_async_register_subdev(&csis->sd);
> + if (ret)
> + return dev_err_probe(csis->dev, ret,
> + "failed to register subdev\n");
> +
> + return 0;
> }
>
> /* -----------------------------------------------------------------------------
> @@ -1549,10 +1556,8 @@ static int mipi_csis_probe(struct platform_device *pdev)
> platform_set_drvdata(pdev, &csis->sd);
>
> ret = mipi_csis_async_register(csis);
> - if (ret < 0) {
> - dev_err(dev, "async register failed: %d\n", ret);
> + if (ret < 0)
> goto err_cleanup;
> - }
>
> /* Initialize debugfs. */
> mipi_csis_debugfs_init(csis);
> diff --git a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
> index 9d946b68cf59d9f4fb3413fc90219efd380d9d95..b3b9e9dc8a95c76628d573824c12f9391fb7b4a0 100644
> --- a/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
> +++ b/drivers/media/platform/nxp/imx8mq-mipi-csi2.c
> @@ -727,18 +727,18 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
> fwnode_graph_get_endpoint_by_id(dev_fwnode(state->dev), 0, 0,
> FWNODE_GRAPH_ENDPOINT_NEXT);
> if (!ep)
> - return -ENOTCONN;
> + return dev_err_probe(state->dev, -ENOTCONN,
> + "failed to get remote endpoint fwnode\n");
>
> ret = v4l2_fwnode_endpoint_parse(ep, &vep);
> if (ret)
> - return ret;
> + return dev_err_probe(state->dev, ret,
> + "failed parse endpoint fwnode\n");
I'd write
+ "failed to parse endpoint\n");
to match the imx-mipi-csis.c driver.
>
> for (i = 0; i < vep.bus.mipi_csi2.num_data_lanes; ++i) {
> - if (vep.bus.mipi_csi2.data_lanes[i] != i + 1) {
> - dev_err(state->dev,
> - "data lanes reordering is not supported");
> - return -EINVAL;
> - }
> + if (vep.bus.mipi_csi2.data_lanes[i] != i + 1)
> + return dev_err_probe(state->dev, -EINVAL,
> + "data lanes reordering is not supported");
> }
>
> state->bus = vep.bus.mipi_csi2;
> @@ -750,15 +750,22 @@ static int imx8mq_mipi_csi_async_register(struct csi_state *state)
> asd = v4l2_async_nf_add_fwnode_remote(&state->notifier, ep,
> struct v4l2_async_connection);
> if (IS_ERR(asd))
> - return PTR_ERR(asd);
> + return dev_err_probe(state->dev, PTR_ERR(asd),
> + "failed add fwnode to notifier\n");
s/failed add/failed to add/
>
> state->notifier.ops = &imx8mq_mipi_csi_notify_ops;
>
> ret = v4l2_async_nf_register(&state->notifier);
> if (ret)
> - return ret;
> + return dev_err_probe(state->dev, ret,
> + "failed to register notifier\n");
>
> - return v4l2_async_register_subdev(&state->sd);
> + ret = v4l2_async_register_subdev(&state->sd);
> + if (ret)
> + return dev_err_probe(state->dev, ret,
> + "failed to register subdev\n");
> +
> + return 0;
> }
>
> /* -----------------------------------------------------------------------------
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces
2026-01-16 16:29 [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Frank Li
` (3 preceding siblings ...)
2026-01-16 16:29 ` [PATCH v4 4/4] media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers Frank Li
@ 2026-01-21 1:55 ` Laurent Pinchart
4 siblings, 0 replies; 9+ messages in thread
From: Laurent Pinchart @ 2026-01-21 1:55 UTC (permalink / raw)
To: Frank Li
Cc: Philipp Zabel, Mauro Carvalho Chehab, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Rui Miguel Silva,
Martin Kepplinger-Novakovic, Purism Kernel Team, linux-media, imx,
linux-arm-kernel, linux-kernel, Alexander Stein
Hi Frank,
On Fri, Jan 16, 2026 at 11:29:18AM -0500, Frank Li wrote:
> Some trivial patch to reduce goto at probe functions.
I've applied patches 1/4 to 3/4 to my tree. 4/4 needs a few small fixes.
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> Changes in v4:
> - collect alex's review tag
> - fix grammer in error message
> - Link to v3: https://lore.kernel.org/r/20251215-cam_cleanup-v3-0-a61995068f38@nxp.com
>
> Changes in v3:
> - rebase to v6.19-rc1
> - avoid use __free() == NULL according to cleanup.h
> - Link to v2: https://lore.kernel.org/r/20251119-cam_cleanup-v2-0-df732cc83ff1@nxp.com
>
> Changes in v2:
> - add new patch media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers
> - detail change see each patch's change log.
> - Link to v1: https://lore.kernel.org/r/20251117-cam_cleanup-v1-0-6cd42872db79@nxp.com
>
> ---
> Frank Li (4):
> media: nxp: use dev_err_probe() to simplify code
> media: nxp: imx8-isi: use devm_pm_runtime_enable() to simplify code
> media: nxp: use cleanup __free(fwnode_handle) simplify code
> media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers
>
> drivers/media/platform/nxp/imx-mipi-csis.c | 54 +++++++--------
> drivers/media/platform/nxp/imx7-media-csi.c | 14 ++--
> .../media/platform/nxp/imx8-isi/imx8-isi-core.c | 16 ++---
> drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 77 ++++++++++------------
> 4 files changed, 71 insertions(+), 90 deletions(-)
> ---
> base-commit: 49cc7b5d0dee386c44b51a90eb49037b2a1f5b2e
> change-id: 20250807-cam_cleanup-b6d90ba9dac3
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-01-21 1:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-16 16:29 [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Frank Li
2026-01-16 16:29 ` [PATCH v4 1/4] media: nxp: use dev_err_probe() to simplify code Frank Li
2026-01-16 16:29 ` [PATCH v4 2/4] media: nxp: imx8-isi: use devm_pm_runtime_enable() " Frank Li
2026-01-21 1:43 ` Laurent Pinchart
2026-01-16 16:29 ` [PATCH v4 3/4] media: nxp: use cleanup __free(fwnode_handle) " Frank Li
2026-01-21 1:45 ` Laurent Pinchart
2026-01-16 16:29 ` [PATCH v4 4/4] media: nxp: Add dev_err_probe() to all error paths in *async_register() helpers Frank Li
2026-01-21 1:51 ` Laurent Pinchart
2026-01-21 1:55 ` [PATCH v4 0/4] media: platform: nxp: Trivial cleanup pathces Laurent Pinchart
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.