Commit 09992e4d authored by Archit Taneja's avatar Archit Taneja Committed by Rob Clark

drm/msm/dsi: Modify dsi manager bridge ops to work with external bridges

The dsi bridge ops call drm_panel functions to set up the connected
drm_panel. Add checks to make sure these aren't called when we're
connected to an external bridge.
Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent c118e290
...@@ -366,10 +366,13 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge) ...@@ -366,10 +366,13 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
/* Always call panel functions once, because even for dual panels, /* Always call panel functions once, because even for dual panels,
* there is only one drm_panel instance. * there is only one drm_panel instance.
*/ */
ret = drm_panel_prepare(panel); if (panel) {
if (ret) { ret = drm_panel_prepare(panel);
pr_err("%s: prepare panel %d failed, %d\n", __func__, id, ret); if (ret) {
goto panel_prep_fail; pr_err("%s: prepare panel %d failed, %d\n", __func__,
id, ret);
goto panel_prep_fail;
}
} }
ret = msm_dsi_host_enable(host); ret = msm_dsi_host_enable(host);
...@@ -386,10 +389,13 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge) ...@@ -386,10 +389,13 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
} }
} }
ret = drm_panel_enable(panel); if (panel) {
if (ret) { ret = drm_panel_enable(panel);
pr_err("%s: enable panel %d failed, %d\n", __func__, id, ret); if (ret) {
goto panel_en_fail; pr_err("%s: enable panel %d failed, %d\n", __func__, id,
ret);
goto panel_en_fail;
}
} }
return; return;
...@@ -400,7 +406,8 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge) ...@@ -400,7 +406,8 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
host1_en_fail: host1_en_fail:
msm_dsi_host_disable(host); msm_dsi_host_disable(host);
host_en_fail: host_en_fail:
drm_panel_unprepare(panel); if (panel)
drm_panel_unprepare(panel);
panel_prep_fail: panel_prep_fail:
if (is_dual_dsi && msm_dsi1) if (is_dual_dsi && msm_dsi1)
msm_dsi_host_power_off(msm_dsi1->host); msm_dsi_host_power_off(msm_dsi1->host);
...@@ -436,9 +443,12 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge) ...@@ -436,9 +443,12 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
(is_dual_dsi && (DSI_1 == id))) (is_dual_dsi && (DSI_1 == id)))
return; return;
ret = drm_panel_disable(panel); if (panel) {
if (ret) ret = drm_panel_disable(panel);
pr_err("%s: Panel %d OFF failed, %d\n", __func__, id, ret); if (ret)
pr_err("%s: Panel %d OFF failed, %d\n", __func__, id,
ret);
}
ret = msm_dsi_host_disable(host); ret = msm_dsi_host_disable(host);
if (ret) if (ret)
...@@ -450,9 +460,12 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge) ...@@ -450,9 +460,12 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
pr_err("%s: host1 disable failed, %d\n", __func__, ret); pr_err("%s: host1 disable failed, %d\n", __func__, ret);
} }
ret = drm_panel_unprepare(panel); if (panel) {
if (ret) ret = drm_panel_unprepare(panel);
pr_err("%s: Panel %d unprepare failed,%d\n", __func__, id, ret); if (ret)
pr_err("%s: Panel %d unprepare failed,%d\n", __func__,
id, ret);
}
ret = msm_dsi_host_power_off(host); ret = msm_dsi_host_power_off(host);
if (ret) if (ret)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment