Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [High] Probe fails with -ENODEV when port 2 has no downstream panel or bridge 
defined, breaking DisplayPort output.
--

commit 70b94894718399f191075561feb4f2f4f31b4aa9
Author: Alexander Stein <[email protected]>

drm/bridge: tc358767: do not open-code devm_drm_of_get_bridge in DSI path

This commit replaces the open-coded panel/bridge discovery logic
with devm_drm_of_get_bridge() to simplify the probing code path
in the tc358767 bridge driver.

> diff --git a/drivers/gpu/drm/bridge/tc358767.c 
> b/drivers/gpu/drm/bridge/tc358767.c
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
[ ... ]
> @@ -2341,28 +2341,22 @@ static int tc_probe_edp_bridge_endpoint(struct 
> tc_data *tc)
>  {
>       struct device *dev = tc->dev;
>       struct drm_bridge *bridge;
> -     struct drm_panel *panel;
>       int ret;
>  
>       /* port@2 is the output port */
> -     ret = drm_of_find_panel_or_bridge(dev->of_node, 2, 0, &panel, &bridge);
> -     if (ret && ret != -ENODEV)
> -             return dev_err_probe(dev, ret,
> -                                  "Could not find DSI panel or bridge\n");
> -
> -     if (panel) {
> -             struct drm_bridge *panel_bridge;
> -
> -             panel_bridge = devm_drm_panel_bridge_add(dev, panel);
> -             if (IS_ERR(panel_bridge))
> -                     return PTR_ERR(panel_bridge);
> -
> -             tc->panel_bridge = panel_bridge;
> -             tc->bridge.type = DRM_MODE_CONNECTOR_eDP;
> -     } else {
> -             tc->bridge.type = DRM_MODE_CONNECTOR_DisplayPort;
> +     bridge = devm_drm_of_get_bridge(dev, dev->of_node, 2, 0);
> +     if (IS_ERR(bridge)) {
> +             ret = PTR_ERR(bridge);
> +             if (ret != -ENODEV)
> +                     return dev_err_probe(dev, ret,
> +                                          "Could not find DSI panel or 
> bridge\n");
> +             else
> +                     return ret;

[Severity: High]
Does this break the probe sequence for DisplayPort configurations?

The previous code in tc_probe_edp_bridge_endpoint() allowed -ENODEV
to bypass the early return, falling back to setting the bridge type to
DRM_MODE_CONNECTOR_DisplayPort when no panel or bridge was found.

By explicitly returning ret when it equals -ENODEV, probe is now aborted
if the downstream device isn't fixed in the device tree. Could this cause
the DisplayPort/eDP bridge driver to fail to load on valid hardware setups?

>       }
>  
> +     tc->panel_bridge = bridge;
> +     tc->bridge.type = bridge->type;
> +
>       if (tc->hpd_pin >= 0)
>               tc->bridge.ops |= DRM_BRIDGE_OP_DETECT;
>       tc->bridge.ops |= DRM_BRIDGE_OP_EDID;

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

Reply via email to