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

Commit 2fcd6925 authored by Terence Hampson's avatar Terence Hampson
Browse files

mdss: mdp3: enhance vsync event report for mdp3



It is possible for client to register for vsync event before we
have commited a frame to display. It is in this case that we need
to fake vsync as it is not possible to get real vsync until we have
sent frame to be displayed.

Change-Id: Ied1821c847f22dbe703745fee1443c1dabdc4682
Signed-off-by: default avatarTerence Hampson <thampson@codeaurora.org>
parent b26a0ee6
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -178,7 +178,7 @@ static int mdp3_ctrl_vsync_enable(struct msm_fb_data_type *mfd, int enable)
	 * active or when dsi clocks are currently off
	 */
	if (enable && mdp3_session->status == 1
			&& !mdp3_session->intf->active) {
			&& mdp3_session->vsync_before_commit) {
		mod_timer(&mdp3_session->vsync_timer,
			jiffies + msecs_to_jiffies(mdp3_session->vsync_period));
	} else if (enable && !mdp3_session->clk_on) {
@@ -194,7 +194,7 @@ static int mdp3_ctrl_vsync_enable(struct msm_fb_data_type *mfd, int enable)
void mdp3_vsync_timer_func(unsigned long arg)
{
	struct mdp3_session_data *session = (struct mdp3_session_data *)arg;
	if (session->status == 1 && !session->intf->active) {
	if (session->status == 1 && session->vsync_before_commit) {
		pr_debug("mdp3_vsync_timer_func trigger\n");
		vsync_notify_handler(session);
		mod_timer(&session->vsync_timer,
@@ -974,6 +974,8 @@ static int mdp3_ctrl_display_commit_kickoff(struct msm_fb_data_type *mfd,
		msleep(1000 / panel_info->mipi.frame_rate);
		mdp3_session->first_commit = false;
	}

	mdp3_session->vsync_before_commit = 0;
	if (reset_done && (panel && panel->set_backlight))
		panel->set_backlight(panel, panel->panel_info.bl_max);

@@ -1045,6 +1047,8 @@ static void mdp3_ctrl_pan_display(struct msm_fb_data_type *mfd)
		mdp3_session->first_commit = false;
	}

	mdp3_session->vsync_before_commit = 0;

pan_error:
	mutex_unlock(&mdp3_session->lock);
}
@@ -1731,6 +1735,7 @@ int mdp3_ctrl_init(struct msm_fb_data_type *mfd)
	if (mdp3_get_cont_spash_en())
		mdp3_session->clk_on = 1;

	mdp3_session->vsync_before_commit = true;
init_done:
	if (IS_ERR_VALUE(rc))
		kfree(mdp3_session);
+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ struct mdp3_session_data {
	struct mutex histo_lock;
	int lut_sel;
	int cc_vect_sel;
	bool vsync_before_commit;
	bool first_commit;
	int clk_on;