diff options
| author | Sravan Kumar D.V.N <sravank1@codeaurora.org> | 2016-05-03 18:38:47 +0530 |
|---|---|---|
| committer | Gopikrishnaiah Anandan <agopik@codeaurora.org> | 2016-11-07 11:45:52 -0800 |
| commit | 9712a5825e5ed7ca0978f0b52b23765e12da96c7 (patch) | |
| tree | f03c906a7c8e37a9475ef60e70acdec0e559de69 | |
| parent | 85d7e134cc5d95dfd3a1a5ee5a1d1435633288cd (diff) | |
msm: mdss: Move PP programming after mdp wait for ping pong done
To ensure PP registers are not programming in the middle of the
frame transfer moving PP programming to after wait4pingpong
for command mode panel devices
Change-Id: Ie639a26543e2f20b61d6dfc73b3bcbd6a43b24be
Signed-off-by: Sravan Kumar D.V.N <sravank1@codeaurora.org>
Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_ctl.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c index 1d61653b76bb..5c471af850ff 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -5696,7 +5696,7 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg, mdss_mdp_ctl_split_display_enable(split_lm_valid, ctl, sctl); ATRACE_BEGIN("postproc_programming"); - if (ctl->mfd && ctl->mfd->dcm_state != DTM_ENTER) + if (ctl->is_video_mode && ctl->mfd && ctl->mfd->dcm_state != DTM_ENTER) /* postprocessing setup, including dspp */ mdss_mdp_pp_setup_locked(ctl); @@ -5742,6 +5742,24 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg, if (ctl->ops.wait_pingpong && !mdata->serialize_wait4pp) mdss_mdp_display_wait4pingpong(ctl, false); + /* Moved pp programming to post ping pong */ + if (!ctl->is_video_mode && ctl->mfd && + ctl->mfd->dcm_state != DTM_ENTER) { + /* postprocessing setup, including dspp */ + mutex_lock(&ctl->flush_lock); + mdss_mdp_pp_setup_locked(ctl); + if (sctl) { + if (ctl->split_flush_en) { + ctl->flush_bits |= sctl->flush_bits; + sctl->flush_bits = 0; + sctl_flush_bits = 0; + } else { + sctl_flush_bits = sctl->flush_bits; + } + } + ctl_flush_bits = ctl->flush_bits; + mutex_unlock(&ctl->flush_lock); + } /* * if serialize_wait4pp is false then roi_bkup used in wait4pingpong * will be of previous frame as expected. |
