diff options
author | Dhaval Patel <pdhaval@codeaurora.org> | 2015-09-15 10:49:27 -0700 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:45:49 -0700 |
commit | ea17353082138b39716c011ed3c9d6a372bdb63b (patch) | |
tree | 06df76c940574588f1f89021fee4ee75f7d76ffb | |
parent | da53655c179a9f3f2fa77e6643836a4b31d7ec35 (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.h | 1 | ||||
-rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp.c | 4 | ||||
-rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_intf_video.c | 4 |
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); } |