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

Commit 83b4c67e authored by Sandeep Panda's avatar Sandeep Panda Committed by Nirmal Abraham
Browse files

msm: mdss: serialize wait for pingpong with kickoff



Serialize wait for pingpong with kickoff when autorefresh
feature is enabled.

Change-Id: Ia51889dd86561e7513b4e7123a9fefb77a26d1ea
Signed-off-by: default avatarSandeep Panda <spanda@codeaurora.org>
parent 834739e9
Loading
Loading
Loading
Loading
+7 −1
Original line number Original line Diff line number Diff line
@@ -406,7 +406,7 @@ static void mdss_mdp_cmd_wait4_autorefresh_pp(struct mdss_mdp_ctl *ctl)
		return;
		return;
	}
	}


	if (line_out < ctl->mixer_left->roi.h) {
	if ((line_out < ctl->mixer_left->roi.h) && (line_out)) {
		reinit_completion(&ctx->autorefresh_ppdone);
		reinit_completion(&ctx->autorefresh_ppdone);


		/* enable ping pong done */
		/* enable ping pong done */
@@ -2510,6 +2510,7 @@ int mdss_mdp_cmd_set_autorefresh_mode(struct mdss_mdp_ctl *mctl, int frame_cnt)
		 */
		 */
		ctx->autorefresh_state = MDP_AUTOREFRESH_ON_REQUESTED;
		ctx->autorefresh_state = MDP_AUTOREFRESH_ON_REQUESTED;
		ctx->autorefresh_frame_cnt = frame_cnt;
		ctx->autorefresh_frame_cnt = frame_cnt;
		mctl->mdata->serialize_wait4pp = true;


		/* Cancel GATE Work Item */
		/* Cancel GATE Work Item */
		if (cancel_work_sync(&ctx->gate_clk_work))
		if (cancel_work_sync(&ctx->gate_clk_work))
@@ -2523,8 +2524,10 @@ int mdss_mdp_cmd_set_autorefresh_mode(struct mdss_mdp_ctl *mctl, int frame_cnt)
		if (frame_cnt == 0) {
		if (frame_cnt == 0) {
			ctx->autorefresh_state = MDP_AUTOREFRESH_OFF;
			ctx->autorefresh_state = MDP_AUTOREFRESH_OFF;
			ctx->autorefresh_frame_cnt = 0;
			ctx->autorefresh_frame_cnt = 0;
			mctl->mdata->serialize_wait4pp = false;
		} else {
		} else {
			ctx->autorefresh_frame_cnt = frame_cnt;
			ctx->autorefresh_frame_cnt = frame_cnt;
			mctl->mdata->serialize_wait4pp = true;
		}
		}
		break;
		break;
	case MDP_AUTOREFRESH_ON:
	case MDP_AUTOREFRESH_ON:
@@ -2536,6 +2539,7 @@ int mdss_mdp_cmd_set_autorefresh_mode(struct mdss_mdp_ctl *mctl, int frame_cnt)
			ctx->autorefresh_state = MDP_AUTOREFRESH_OFF_REQUESTED;
			ctx->autorefresh_state = MDP_AUTOREFRESH_OFF_REQUESTED;
		} else {
		} else {
			ctx->autorefresh_frame_cnt = frame_cnt;
			ctx->autorefresh_frame_cnt = frame_cnt;
			mctl->mdata->serialize_wait4pp = true;
		}
		}
		break;
		break;
	case MDP_AUTOREFRESH_OFF_REQUESTED:
	case MDP_AUTOREFRESH_OFF_REQUESTED:
@@ -2545,6 +2549,7 @@ int mdss_mdp_cmd_set_autorefresh_mode(struct mdss_mdp_ctl *mctl, int frame_cnt)
			pr_debug("cancelling autorefresh off request\n");
			pr_debug("cancelling autorefresh off request\n");
			ctx->autorefresh_state = MDP_AUTOREFRESH_ON;
			ctx->autorefresh_state = MDP_AUTOREFRESH_ON;
			ctx->autorefresh_frame_cnt = frame_cnt;
			ctx->autorefresh_frame_cnt = frame_cnt;
			mctl->mdata->serialize_wait4pp = true;
		}
		}
		break;
		break;
	default:
	default:
@@ -2873,6 +2878,7 @@ static int mdss_mdp_disable_autorefresh(struct mdss_mdp_ctl *ctl,
	cfg |= BIT(20);
	cfg |= BIT(20);
	mdss_mdp_pingpong_write(pp_base,
	mdss_mdp_pingpong_write(pp_base,
				MDSS_MDP_REG_PP_SYNC_CONFIG_VSYNC, cfg);
				MDSS_MDP_REG_PP_SYNC_CONFIG_VSYNC, cfg);
	ctl->mdata->serialize_wait4pp = false;


	return 0;
	return 0;
}
}