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
