drm/msm/dp: fix panel bridge attachment
In commit8a3b4c17f8
("drm/msm/dp: employ bridge mechanism for display enable and disable") the DP driver received a drm_bridge instance, which is always attached to the encoder as a root bridge. However it conflicts with the panel_bridge support for eDP panels. The panel bridge attaches to the encoder before the "dp" bridge (DP driver's drm_bridge instance created in msm_dp_bridge_init()) has a chance to do so. Change panel bridge attachment to come after the "dp" bridge attachment (and to use it as a previous bridge). Fixes:8a3b4c17f8
("drm/msm/dp: employ bridge mechanism for display enable and disable") Cc: Kuogee Hsieh <quic_khsieh@quicinc.com> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Tested-by: Kuogee Hsieh <quic_khsieh@quicinc.com> Reviewed-by: Stephen Boyd <swboyd@chromium.org> Link: https://lore.kernel.org/r/20220211224006.1797846-2-dmitry.baryshkov@linaro.org [db: fixed commit message according to Stephen's suggestions] Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
This commit is contained in:
parent
2af0fc9260
commit
4d793a02c4
@ -169,16 +169,6 @@ struct drm_connector *dp_drm_connector_init(struct msm_dp *dp_display)
|
||||
|
||||
drm_connector_attach_encoder(connector, dp_display->encoder);
|
||||
|
||||
if (dp_display->panel_bridge) {
|
||||
ret = drm_bridge_attach(dp_display->encoder,
|
||||
dp_display->panel_bridge, NULL,
|
||||
DRM_BRIDGE_ATTACH_NO_CONNECTOR);
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("failed to attach panel bridge: %d\n", ret);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
}
|
||||
|
||||
return connector;
|
||||
}
|
||||
|
||||
@ -246,5 +236,16 @@ struct drm_bridge *msm_dp_bridge_init(struct msm_dp *dp_display, struct drm_devi
|
||||
return ERR_PTR(rc);
|
||||
}
|
||||
|
||||
if (dp_display->panel_bridge) {
|
||||
rc = drm_bridge_attach(dp_display->encoder,
|
||||
dp_display->panel_bridge, bridge,
|
||||
DRM_BRIDGE_ATTACH_NO_CONNECTOR);
|
||||
if (rc < 0) {
|
||||
DRM_ERROR("failed to attach panel bridge: %d\n", rc);
|
||||
drm_bridge_remove(bridge);
|
||||
return ERR_PTR(rc);
|
||||
}
|
||||
}
|
||||
|
||||
return bridge;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user