Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+28 −15
Original line number Diff line number Diff line
@@ -366,11 +366,14 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
	/* Always call panel functions once, because even for dual panels,
	 * there is only one drm_panel instance.
	 */
	if (panel) {
		ret = drm_panel_prepare(panel);
		if (ret) {
		pr_err("%s: prepare panel %d failed, %d\n", __func__, id, ret);
			pr_err("%s: prepare panel %d failed, %d\n", __func__,
								id, ret);
			goto panel_prep_fail;
		}
	}

	ret = msm_dsi_host_enable(host);
	if (ret) {
@@ -386,11 +389,14 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
		}
	}

	if (panel) {
		ret = drm_panel_enable(panel);
		if (ret) {
		pr_err("%s: enable panel %d failed, %d\n", __func__, id, ret);
			pr_err("%s: enable panel %d failed, %d\n", __func__, id,
									ret);
			goto panel_en_fail;
		}
	}

	return;

@@ -400,6 +406,7 @@ static void dsi_mgr_bridge_pre_enable(struct drm_bridge *bridge)
host1_en_fail:
	msm_dsi_host_disable(host);
host_en_fail:
	if (panel)
		drm_panel_unprepare(panel);
panel_prep_fail:
	if (is_dual_dsi && msm_dsi1)
@@ -436,9 +443,12 @@ static void dsi_mgr_bridge_post_disable(struct drm_bridge *bridge)
			(is_dual_dsi && (DSI_1 == id)))
		return;

	if (panel) {
		ret = drm_panel_disable(panel);
		if (ret)
		pr_err("%s: Panel %d OFF failed, %d\n", __func__, id, ret);
			pr_err("%s: Panel %d OFF failed, %d\n", __func__, id,
									ret);
	}

	ret = msm_dsi_host_disable(host);
	if (ret)
@@ -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);
	}

	if (panel) {
		ret = drm_panel_unprepare(panel);
		if (ret)
		pr_err("%s: Panel %d unprepare failed,%d\n", __func__, id, ret);
			pr_err("%s: Panel %d unprepare failed,%d\n", __func__,
								id, ret);
	}

	ret = msm_dsi_host_power_off(host);
	if (ret)