Re: [PATCH 10/11] drm/bridge: fsl-ldb: don't create a panel_bridge

[email protected]
Newsgroups org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.