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

Commit b1af7958 authored by Rajkumar Subbiah's avatar Rajkumar Subbiah Committed by Abhijith Desai
Browse files

msm: mdss: flush timing after splash done for video panel



During continuous splash handoff the pipes are unstaged and the
timing engine is being turned off. But this change is not
being flushed. Right after that we release the splash memory
and this sometimes causes a memory fault. This change adds
the necessary flush.

Change-Id: Ia78359fd8159a7217ffc4f0192788f295ac3504c
Signed-off-by: default avatarRajkumar Subbiah <rsubbia@codeaurora.org>
parent b533147d
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1562,7 +1562,7 @@ int mdss_mdp_video_reconfigure_splash_done(struct mdss_mdp_ctl *ctl,
	struct mdss_panel_data *pdata;
	int i, ret = 0, off;
	u32 data, flush;
	struct mdss_mdp_video_ctx *ctx;
	struct mdss_mdp_video_ctx *ctx, *sctx = NULL;
	struct mdss_mdp_ctl *sctl;

	if (!ctl) {
@@ -1586,10 +1586,13 @@ int mdss_mdp_video_reconfigure_splash_done(struct mdss_mdp_ctl *ctl,
	pdata->panel_info.cont_splash_enabled = 0;
	sctl = mdss_mdp_get_split_ctl(ctl);

	if (sctl)
	if (sctl) {
		sctl->panel_data->panel_info.cont_splash_enabled = 0;
	else if (ctl->panel_data->next && is_pingpong_split(ctl->mfd))
		sctx = (struct mdss_mdp_video_ctx *) sctl->intf_ctx[MASTER_CTX];
	} else if (ctl->panel_data->next && is_pingpong_split(ctl->mfd)) {
		ctl->panel_data->next->panel_info.cont_splash_enabled = 0;
		sctx = (struct mdss_mdp_video_ctx *) ctl->intf_ctx[SLAVE_CTX];
	}

	if (!handoff) {
		ret = mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_CONT_SPLASH_BEGIN,
@@ -1615,6 +1618,8 @@ int mdss_mdp_video_reconfigure_splash_done(struct mdss_mdp_ctl *ctl,
		mdss_mdp_ctl_write(ctl, MDSS_MDP_REG_CTL_FLUSH, flush);

		mdp_video_write(ctx, MDSS_MDP_REG_INTF_TIMING_ENGINE_EN, 0);
		mdss_mdp_video_timegen_flush(ctl, sctx);

		/* wait for 1 VSYNC for the pipe to be unstaged */
		msleep(20);