summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSravan Kumar D.V.N <sravank1@codeaurora.org>2016-05-03 18:38:47 +0530
committerGopikrishnaiah Anandan <agopik@codeaurora.org>2016-11-07 11:45:52 -0800
commit9712a5825e5ed7ca0978f0b52b23765e12da96c7 (patch)
treef03c906a7c8e37a9475ef60e70acdec0e559de69
parent85d7e134cc5d95dfd3a1a5ee5a1d1435633288cd (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.c20
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.