Message ID | 20220724224317.288727-1-marex@denx.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/bridge: tc358767: Handle bridge past DPI output | expand |
Hi Marek, On Mon, 25 Jul 2022 at 00:43, Marek Vasut <marex@denx.de> wrote: > > Currently the driver only handles panel directly connected to the DPI output. > Handle the case where a bridge is connected past DPI output of this bridge. > This could be e.g. DPI to LVDS encoder chip. > > Signed-off-by: Marek Vasut <marex@denx.de> > Cc: Jonas Karlman <jonas@kwiboo.se> > Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> > Cc: Lucas Stach <l.stach@pengutronix.de> > Cc: Maxime Ripard <maxime@cerno.tech> > Cc: Neil Armstrong <narmstrong@baylibre.com> > Cc: Robert Foss <robert.foss@linaro.org> > Cc: Sam Ravnborg <sam@ravnborg.org> > --- > drivers/gpu/drm/bridge/tc358767.c | 15 ++++++++------- > 1 file changed, 8 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c > index f8c1cd711753b..814ab206fe7ef 100644 > --- a/drivers/gpu/drm/bridge/tc358767.c > +++ b/drivers/gpu/drm/bridge/tc358767.c > @@ -1926,22 +1926,23 @@ static int tc_mipi_dsi_host_attach(struct tc_data *tc) > static int tc_probe_dpi_bridge_endpoint(struct tc_data *tc) > { > struct device *dev = tc->dev; > + struct drm_bridge *bridge; > struct drm_panel *panel; > int ret; > > /* port@1 is the DPI input/output port */ > - ret = drm_of_find_panel_or_bridge(dev->of_node, 1, 0, &panel, NULL); > + ret = drm_of_find_panel_or_bridge(dev->of_node, 1, 0, &panel, &bridge); > if (ret && ret != -ENODEV) > return ret; > > 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); > + bridge = devm_drm_panel_bridge_add(dev, panel); > + if (IS_ERR(bridge)) > + return PTR_ERR(bridge); > + } > > - tc->panel_bridge = panel_bridge; > + if (bridge) { > + tc->panel_bridge = bridge; > tc->bridge.type = DRM_MODE_CONNECTOR_DPI; > tc->bridge.funcs = &tc_dpi_bridge_funcs; > > -- > 2.35.1 Reviewed-by: Robert Foss <robert.foss@linaro.org> Applied to drm-misc-next.
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c index f8c1cd711753b..814ab206fe7ef 100644 --- a/drivers/gpu/drm/bridge/tc358767.c +++ b/drivers/gpu/drm/bridge/tc358767.c @@ -1926,22 +1926,23 @@ static int tc_mipi_dsi_host_attach(struct tc_data *tc) static int tc_probe_dpi_bridge_endpoint(struct tc_data *tc) { struct device *dev = tc->dev; + struct drm_bridge *bridge; struct drm_panel *panel; int ret; /* port@1 is the DPI input/output port */ - ret = drm_of_find_panel_or_bridge(dev->of_node, 1, 0, &panel, NULL); + ret = drm_of_find_panel_or_bridge(dev->of_node, 1, 0, &panel, &bridge); if (ret && ret != -ENODEV) return ret; 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); + bridge = devm_drm_panel_bridge_add(dev, panel); + if (IS_ERR(bridge)) + return PTR_ERR(bridge); + } - tc->panel_bridge = panel_bridge; + if (bridge) { + tc->panel_bridge = bridge; tc->bridge.type = DRM_MODE_CONNECTOR_DPI; tc->bridge.funcs = &tc_dpi_bridge_funcs;
Currently the driver only handles panel directly connected to the DPI output. Handle the case where a bridge is connected past DPI output of this bridge. This could be e.g. DPI to LVDS encoder chip. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Jonas Karlman <jonas@kwiboo.se> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com> Cc: Lucas Stach <l.stach@pengutronix.de> Cc: Maxime Ripard <maxime@cerno.tech> Cc: Neil Armstrong <narmstrong@baylibre.com> Cc: Robert Foss <robert.foss@linaro.org> Cc: Sam Ravnborg <sam@ravnborg.org> --- drivers/gpu/drm/bridge/tc358767.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)