Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [High] Returning `-ENODEV` instead of `-EPROBE_DEFER` when the downstream 
bridge is not found permanently breaks probe deferral.
--

--- Patch [10]: [PATCH 10/11] drm/bridge: fsl-ldb: don't create a panel_bridge 
---
commit cea029e41728150133bf916d81ee3178f44b5540
Author: Luca Ceresoli <[email protected]>
drm/bridge: fsl-ldb: don't create a panel_bridge

This commit simplifies fsl_ldb_probe() by retrieving an existing bridge via
of_drm_find_and_get_bridge() rather than unconditionally creating a second
panel_bridge for the same panel. It also ensures the refcounted bridge is
properly managed.

> diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c 
> b/drivers/gpu/drm/bridge/fsl-ldb.c
> --- a/drivers/gpu/drm/bridge/fsl-ldb.c
> +++ b/drivers/gpu/drm/bridge/fsl-ldb.c
[ ... ]
> @@ -298,7 +297,6 @@ static int fsl_ldb_probe(struct platform_device *pdev)
[ ... ]
> -     panel = of_drm_find_panel(panel_node);
> -     of_node_put(panel_node);
> -     if (IS_ERR(panel))
> -             return PTR_ERR(panel);
> -
>       if (of_property_present(dev->of_node, 
> "nxp,enable-termination-resistor"))
>               fsl_ldb->use_termination_resistor = true;
>  
> -     fsl_ldb->panel_bridge = devm_drm_panel_bridge_add(dev, panel);
> -     drm_panel_put(panel);
> -     if (IS_ERR(fsl_ldb->panel_bridge))
> -             return PTR_ERR(fsl_ldb->panel_bridge);
> -
> +     fsl_ldb->bridge.next_bridge = of_drm_find_and_get_bridge(panel_node);
> +     of_node_put(panel_node);
> +     if (!fsl_ldb->bridge.next_bridge)
> +             return -ENODEV;

[Severity: High]
Does this change break probe deferral when the downstream driver loads later?

Previously, if the downstream panel driver hadn't loaded yet, 
of_drm_find_panel() returned -EPROBE_DEFER, which was propagated back to 
allow fsl_ldb_probe() to try again later.

With the updated code, if of_drm_find_and_get_bridge() returns NULL because 
the downstream bridge driver hasn't successfully probed yet, this returns a 
hard -ENODEV error. Could this permanently fail the display pipeline 
initialization depending on module load order? Should this return 
-EPROBE_DEFER instead?

>  
>       if (fsl_ldb_is_dual(fsl_ldb)) {
>               struct device_node *port1, *port2;

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=10

Reply via email to