summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPawan Kumar <pavaku@codeaurora.org>2013-09-19 19:44:01 +0530
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:22:41 -0700
commit94b2cc41bdeb4f1d70851b48e7e9c421e7e742ea (patch)
tree861bb2663ade3f2585071291d2341bdb6d3e1bc0
parent85fa4712e8f15a78a1f0b50f6d5e8f8ddde54a37 (diff)
msm: mdss: Fix under run on HDMI on adb shell stop
Wait for at least one vsync on HDMI interface for proper TG OFF. Calculate wait time based on hdmi refresh rate. Change-Id: Ia935886ba4cce9cf8d6ce994143b07060f648620 Signed-off-by: Pawan Kumar <pavaku@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_video.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
index f3f3ea42f03d..6f2fbe125d20 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
@@ -294,6 +294,7 @@ static int mdss_mdp_video_stop(struct mdss_mdp_ctl *ctl)
struct mdss_mdp_video_ctx *ctx;
struct mdss_mdp_vsync_handler *tmp, *handle;
int rc;
+ u32 frame_rate = 0;
pr_debug("stop ctl=%d\n", ctl->num);
@@ -313,6 +314,14 @@ static int mdss_mdp_video_stop(struct mdss_mdp_ctl *ctl)
WARN(rc, "intf %d blank error (%d)\n", ctl->intf_num, rc);
mdp_video_write(ctx, MDSS_MDP_REG_INTF_TIMING_ENGINE_EN, 0);
+ /* wait for at least one VSYNC on HDMI intf for proper TG OFF */
+ if (MDSS_INTF_HDMI == ctx->intf_type) {
+ frame_rate = mdss_panel_get_framerate
+ (&(ctl->panel_data->panel_info));
+ if (!(frame_rate >= 24 && frame_rate <= 240))
+ frame_rate = 24;
+ msleep((1000/frame_rate) + 1);
+ }
mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF, false);
ctx->timegen_en = false;