summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPing Li <pingli@codeaurora.org>2015-10-06 18:39:12 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:46:35 -0700
commitdbee1d115f9bf1fce31e4fd24ea33d813f74bab8 (patch)
tree432f6a0ce1ed3fc910a7c41191b73316a2eee4ef
parenta6d490834142c12ad8d89fb38f670d17af431aad (diff)
msm: mdss: Reset AD event notification count
Reset the AD event notification count whenever ALS or backlight input of AD has been made. This provides a way for user space to track and sync with the AD sync iteration numbers in driver. Change-Id: I4e4a2a93378c6abacb4ffbcf8f4a14aaf38789af Signed-off-by: Ping Li <pingli@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_pp.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_pp.c b/drivers/video/fbdev/msm/mdss_mdp_pp.c
index 2b40eb0beb7a..75e6d9840684 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_pp.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_pp.c
@@ -5424,6 +5424,7 @@ static int mdss_mdp_ad_setup(struct msm_fb_data_type *mfd)
struct mdss_data_type *mdata;
u32 bypass = MDSS_PP_AD_BYPASS_DEF, bl;
u32 width;
+ struct mdss_overlay_private *mdp5_data;
ret = mdss_mdp_get_ad(mfd, &ad);
if (ret == -ENODEV || ret == -EPERM) {
@@ -5471,13 +5472,16 @@ static int mdss_mdp_ad_setup(struct msm_fb_data_type *mfd)
if ((ad->cfg.mode == MDSS_AD_MODE_AUTO_STR) &&
(ad->last_bl != bl)) {
ad->last_bl = bl;
- ad->calc_itr = ad->cfg.stab_itr;
- ad->sts |= PP_AD_STS_DIRTY_VSYNC;
linear_map(bl, &ad->bl_data,
bl_mfd->panel_info->bl_max,
MDSS_MDP_AD_BL_SCALE);
}
+ ad->calc_itr = ad->cfg.stab_itr;
+ ad->sts |= PP_AD_STS_DIRTY_VSYNC;
ad->reg_sts |= PP_AD_STS_DIRTY_DATA;
+ mdp5_data = mfd_to_mdp5_data(mfd);
+ if (mdp5_data)
+ mdp5_data->ad_events = 0;
}
if (ad->sts & PP_AD_STS_DIRTY_CFG) {
@@ -5625,15 +5629,13 @@ static void pp_ad_calc_worker(struct work_struct *work)
readl_relaxed(base + MDSS_MDP_REG_AD_STR_OUT));
mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF);
}
-
+ if (mdp5_data) {
+ mdp5_data->ad_events++;
+ sysfs_notify_dirent(mdp5_data->ad_event_sd);
+ }
if (!ad->calc_itr) {
ad->state &= ~PP_AD_STATE_VSYNC;
ctl->ops.remove_vsync_handler(ctl, &ad->handle);
- } else {
- if (mdp5_data) {
- mdp5_data->ad_events++;
- sysfs_notify_dirent(mdp5_data->ad_event_sd);
- }
}
mutex_unlock(&ad->lock);
}