diff options
-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); } |