diff --git a/drivers/video/msm/mdss/mdss_fb.c b/drivers/video/msm/mdss/mdss_fb.c index f5e4010fcd27add4baf7003d54809d3eba44941b..edfedb3935ba5920e254e15920129d8355a2bdb9 100644 --- a/drivers/video/msm/mdss/mdss_fb.c +++ b/drivers/video/msm/mdss/mdss_fb.c @@ -1316,7 +1316,7 @@ void mdss_fb_signal_timeline(struct msm_sync_pt_data *sync_pt_data) sync_pt_data->fence_name, sync_pt_data->timeline_value, atomic_read(&sync_pt_data->commit_cnt)); } else { - pr_warn("%s timeline signaled without commits val=%d\n", + pr_debug("%s timeline signaled without commits val=%d\n", sync_pt_data->fence_name, sync_pt_data->timeline_value); } mutex_unlock(&sync_pt_data->sync_mutex); diff --git a/drivers/video/msm/mdss/mdss_mdp_ctl.c b/drivers/video/msm/mdss/mdss_mdp_ctl.c index d43b926cd3663f88050f68c0eab15c21e0a71885..11dac474fd82a3ca92aa1568c365de10027ae592 100644 --- a/drivers/video/msm/mdss/mdss_mdp_ctl.c +++ b/drivers/video/msm/mdss/mdss_mdp_ctl.c @@ -1741,7 +1741,7 @@ int mdss_mdp_display_wait4pingpong(struct mdss_mdp_ctl *ctl) } if (ctl->wait_pingpong) - ret = ctl->wait_pingpong(ctl, NULL); + ret = ctl->wait_pingpong(ctl, (void*) 1); mutex_unlock(&ctl->lock); @@ -1807,7 +1807,7 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg) mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_READY); if (ctl->wait_pingpong) - ctl->wait_pingpong(ctl, NULL); + ctl->wait_pingpong(ctl, (void*) 0); /* postprocessing setup, including dspp */ mdss_mdp_pp_setup_locked(ctl); diff --git a/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c b/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c index 27bdd0a4a7819e5d966f5d2cdd582de423030926..053d5632ece17a9891e1721236eac93dcb9b495f 100644 --- a/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c +++ b/drivers/video/msm/mdss/mdss_mdp_intf_cmd.c @@ -415,6 +415,7 @@ static int mdss_mdp_cmd_wait4pingpong(struct mdss_mdp_ctl *ctl, void *arg) unsigned long flags; int need_wait = 0; int rc = 0; + int flush_wq = (int) arg; ctx = (struct mdss_mdp_cmd_ctx *) ctl->priv_data; if (!ctx) { @@ -444,6 +445,9 @@ static int mdss_mdp_cmd_wait4pingpong(struct mdss_mdp_ctl *ctl, void *arg) } } + if (flush_wq) + flush_work_sync(&ctx->pp_done_work); + return rc; } diff --git a/drivers/video/msm/mdss/mdss_mdp_overlay.c b/drivers/video/msm/mdss/mdss_mdp_overlay.c index c379fff70d3ae23efd38b78a6895099cd7a4763f..845c2c82ba3bd145146f5931115ecc295d28a08b 100644 --- a/drivers/video/msm/mdss/mdss_mdp_overlay.c +++ b/drivers/video/msm/mdss/mdss_mdp_overlay.c @@ -2026,8 +2026,12 @@ static int mdss_mdp_overlay_on(struct msm_fb_data_type *mfd) if (!mfd->panel_info->cont_splash_enabled) { rc = mdss_mdp_overlay_start(mfd); if (!IS_ERR_VALUE(rc) && (mfd->panel_info->type != DTV_PANEL) && - (mfd->panel_info->type != WRITEBACK_PANEL)) + (mfd->panel_info->type != WRITEBACK_PANEL)) { rc = mdss_mdp_overlay_kickoff(mfd); + + if (mfd->panel_info->type == MIPI_CMD_PANEL) + mdss_mdp_display_wait4pingpong(mdp5_data->ctl); + } } else { rc = mdss_mdp_ctl_setup(mdp5_data->ctl); if (rc)