On Wed, Mar 2, 2022 at 5:37 AM Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> wrote: > On Wed, Mar 2, 2022 at 4:50 AM Linus Walleij <linus.walleij@xxxxxxxxxx> wrote: > > > > On Tue, Mar 1, 2022 at 3:13 PM Jagan Teki <jagan@xxxxxxxxxxxxxxxxxxxx> wrote: > > > > > + bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0); > > > + if (IS_ERR(bridge)) { > > > + dev_err(dev, "error to get bridge\n"); > > > + return PTR_ERR(bridge); > > > } > > > > > > d->bridge_out = bridge; > > > > Also notice how this bridge gets used in other places: > > > > struct drm_connector *connector = drm_panel_bridge_connector(mcde->bridge); > > mcde->bridge bridge is the current bridge pointer it cannot affect > this change. d->bridge_out is what we are finding of the downstream > bridge. Sorry I confused things. Got lost in my own code :/ The bridge in the other file is for DPI obviously... I should rename it dpi_panel_bridge. > > Since you deleted: > > > > - } else if (bridge) { > > - /* TODO: AV8100 HDMI encoder goes here for example */ > > - dev_info(dev, "connected to non-panel bridge (unsupported)\n"); > > - return -ENODEV; > > So, this means mcde dsi can support if the downstream bridge is the > panel not if the downstream bridge is the next bridge. With > devm_drm_of_get_bridge we cannot find that diff. Identifying the > panel-bridge with some name pointer during panel_bridge_add might > solve this, not sure that is proper way to do that? I'd say leave it, as the DSI bridge (bridge_out) doesn't really care about this being a panel or not. A further bridge down the chain should "just work" (famous last words). Just make sure we properly remove bridge_out in unbind call. Yours, Linus Walleij