summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDhaval Patel <pdhaval@codeaurora.org>2015-09-15 10:49:27 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:45:49 -0700
commitea17353082138b39716c011ed3c9d6a372bdb63b (patch)
tree06df76c940574588f1f89021fee4ee75f7d76ffb
parentda53655c179a9f3f2fa77e6643836a4b31d7ec35 (diff)
msm: mdss: skip software underrun recovery for split display
Commit cb78c355b9225b815302c721b8f410168cba4a84 ("msm: mdss: Issue ctl sw reset when underrun happens") enables the software underrun recovery for split display cases due to hardware limitation. This limitation is not applicable to 8994, 8996 and all upcoming targets. This change skips the recovery path when hardware supports it. Change-Id: I09e17bb50749ea5a0ec32ed604adab7126434e59 Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss.h1
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp.c4
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_video.c4
3 files changed, 8 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss.h b/drivers/video/fbdev/msm/mdss.h
index e994cd0e7179..9d4a19cfc642 100644
--- a/drivers/video/fbdev/msm/mdss.h
+++ b/drivers/video/fbdev/msm/mdss.h
@@ -158,6 +158,7 @@ enum mdss_hw_quirk {
enum mdss_hw_capabilities {
MDSS_CAPS_YUV_CONFIG,
MDSS_CAPS_SCM_RESTORE_NOT_REQUIRED,
+ MDSS_CAPS_3D_MUX_UNDERRUN_RECOVERY_SUPPORTED,
MDSS_CAPS_MAX,
};
diff --git a/drivers/video/fbdev/msm/mdss_mdp.c b/drivers/video/fbdev/msm/mdss_mdp.c
index 8e0f183c61bb..0bc0def0e3be 100644
--- a/drivers/video/fbdev/msm/mdss_mdp.c
+++ b/drivers/video/fbdev/msm/mdss_mdp.c
@@ -1212,6 +1212,8 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata)
set_bit(MDSS_CAPS_YUV_CONFIG, mdata->mdss_caps_map);
set_bit(MDSS_CAPS_SCM_RESTORE_NOT_REQUIRED,
mdata->mdss_caps_map);
+ set_bit(MDSS_CAPS_3D_MUX_UNDERRUN_RECOVERY_SUPPORTED,
+ mdata->mdss_caps_map);
mdss_mdp_init_default_prefill_factors(mdata);
break;
case MDSS_MDP_HW_REV_105:
@@ -1220,6 +1222,8 @@ static void mdss_mdp_hw_rev_caps_init(struct mdss_data_type *mdata)
mdata->max_target_zorder = 7; /* excluding base layer */
mdata->max_cursor_size = 128;
set_bit(MDSS_QOS_OTLIM, mdata->mdss_qos_map);
+ set_bit(MDSS_CAPS_3D_MUX_UNDERRUN_RECOVERY_SUPPORTED,
+ mdata->mdss_caps_map);
break;
case MDSS_MDP_HW_REV_110:
mdss_set_quirk(mdata, MDSS_QUIRK_BWCPANIC);
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
index d8c7dd91e97c..a35c0d7910a1 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
@@ -705,7 +705,9 @@ static void mdss_mdp_video_underrun_intr_done(void *arg)
pr_debug("display underrun detected for ctl=%d count=%d\n", ctl->num,
ctl->underrun_cnt);
- if (ctl->opmode & MDSS_MDP_CTL_OP_PACK_3D_ENABLE)
+ if (!test_bit(MDSS_CAPS_3D_MUX_UNDERRUN_RECOVERY_SUPPORTED,
+ ctl->mdata->mdss_caps_map) &&
+ (ctl->opmode & MDSS_MDP_CTL_OP_PACK_3D_ENABLE))
schedule_work(&ctl->recover_work);
}