[PATCH v2 2/2] drm/bridge: fsl-ldb: simplify device_node error handling
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed May 21 20:23:31 UTC 2025
Hi Marco,
Thank you for the patch.
On Thu, May 15, 2025 at 07:36:43PM +0200, Marco Felsch wrote:
> Make use of __free(device_node) to simplify the of_node_put() error
> handling paths. No functional changes.
>
> Signed-off-by: Marco Felsch <m.felsch at pengutronix.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> Changelog:
> v2:
> - drop __free() from panel_node
>
> drivers/gpu/drm/bridge/fsl-ldb.c | 22 ++++++++--------------
> 1 file changed, 8 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-ldb.c
> index 6916cdb15372..f80c68617ce5 100644
> --- a/drivers/gpu/drm/bridge/fsl-ldb.c
> +++ b/drivers/gpu/drm/bridge/fsl-ldb.c
> @@ -293,7 +293,8 @@ static int fsl_ldb_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct device_node *panel_node;
> - struct device_node *remote1, *remote2;
> + struct device_node *remote1 __free(device_node) = NULL;
> + struct device_node *remote2 __free(device_node) = NULL;
> struct drm_panel *panel;
> struct fsl_ldb *fsl_ldb;
> int dual_link;
> @@ -325,21 +326,16 @@ static int fsl_ldb_probe(struct platform_device *pdev)
> remote2 = of_graph_get_remote_node(dev->of_node, 2, 0);
> fsl_ldb->ch0_enabled = (remote1 != NULL);
> fsl_ldb->ch1_enabled = (remote2 != NULL);
> - panel_node = of_node_get(remote1 ? remote1 : remote2);
> - of_node_put(remote1);
> - of_node_put(remote2);
> + panel_node = remote1 ? remote1 : remote2;
>
> - if (!fsl_ldb->ch0_enabled && !fsl_ldb->ch1_enabled) {
> - of_node_put(panel_node);
> + if (!fsl_ldb->ch0_enabled && !fsl_ldb->ch1_enabled)
> return dev_err_probe(dev, -ENXIO, "No panel node found");
> - }
>
> dev_dbg(dev, "Using %s\n",
> fsl_ldb_is_dual(fsl_ldb) ? "dual-link mode" :
> fsl_ldb->ch0_enabled ? "channel 0" : "channel 1");
>
> panel = of_drm_find_panel(panel_node);
> - of_node_put(panel_node);
> if (IS_ERR(panel))
> return dev_err_probe(dev, PTR_ERR(panel), "drm panel not found\n");
>
> @@ -349,14 +345,12 @@ static int fsl_ldb_probe(struct platform_device *pdev)
> "drm panel-bridge add failed\n");
>
> if (fsl_ldb_is_dual(fsl_ldb)) {
> - struct device_node *port1, *port2;
> + struct device_node *port1 __free(device_node) =
> + of_graph_get_port_by_id(dev->of_node, 1);
> + struct device_node *port2 __free(device_node) =
> + of_graph_get_port_by_id(dev->of_node, 2);
>
> - port1 = of_graph_get_port_by_id(dev->of_node, 1);
> - port2 = of_graph_get_port_by_id(dev->of_node, 2);
> dual_link = drm_of_lvds_get_dual_link_pixel_order(port1, port2);
> - of_node_put(port1);
> - of_node_put(port2);
> -
> if (dual_link < 0)
> return dev_err_probe(dev, dual_link,
> "Error getting dual link configuration\n");
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list