Merge "msm: mdss: Fix AD backlight configuration"
This commit is contained in:
commit
5551ac503f
1 changed files with 25 additions and 17 deletions
|
@ -3099,8 +3099,8 @@ static int pp_ad_calc_bl(struct msm_fb_data_type *mfd, int bl_in, int *bl_out,
|
||||||
mutex_lock(&ad->lock);
|
mutex_lock(&ad->lock);
|
||||||
if (!mfd->ad_bl_level)
|
if (!mfd->ad_bl_level)
|
||||||
mfd->ad_bl_level = bl_in;
|
mfd->ad_bl_level = bl_in;
|
||||||
if (!(ad->state & PP_AD_STATE_RUN)) {
|
if (!(ad->sts & PP_STS_ENABLE)) {
|
||||||
pr_debug("AD is not running.\n");
|
pr_debug("AD is not enabled.\n");
|
||||||
mutex_unlock(&ad->lock);
|
mutex_unlock(&ad->lock);
|
||||||
return -EPERM;
|
return -EPERM;
|
||||||
}
|
}
|
||||||
|
@ -3123,6 +3123,7 @@ static int pp_ad_calc_bl(struct msm_fb_data_type *mfd, int bl_in, int *bl_out,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ad->init.alpha > 0) {
|
||||||
ret = pp_ad_attenuate_bl(ad, temp, &temp);
|
ret = pp_ad_attenuate_bl(ad, temp, &temp);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("Failed to attenuate BL: %d\n", ret);
|
pr_err("Failed to attenuate BL: %d\n", ret);
|
||||||
|
@ -3131,14 +3132,18 @@ static int pp_ad_calc_bl(struct msm_fb_data_type *mfd, int bl_in, int *bl_out,
|
||||||
}
|
}
|
||||||
ad_bl_out = temp;
|
ad_bl_out = temp;
|
||||||
|
|
||||||
ret = pp_ad_linearize_bl(ad, temp, &temp, MDP_PP_AD_BL_LINEAR_INV);
|
ret = pp_ad_linearize_bl(ad, temp, &temp,
|
||||||
|
MDP_PP_AD_BL_LINEAR_INV);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("Failed to inverse linearize BL: %d\n", ret);
|
pr_err("Failed to inverse linearize BL: %d\n", ret);
|
||||||
mutex_unlock(&ad->lock);
|
mutex_unlock(&ad->lock);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
*bl_out = temp;
|
*bl_out = temp;
|
||||||
|
} else {
|
||||||
|
ad_bl_out = temp;
|
||||||
|
}
|
||||||
|
|
||||||
if (pp_ad_bl_threshold_check(ad->init.al_thresh, ad->init.alpha_base,
|
if (pp_ad_bl_threshold_check(ad->init.al_thresh, ad->init.alpha_base,
|
||||||
ad->last_bl, ad_bl_out)) {
|
ad->last_bl, ad_bl_out)) {
|
||||||
mfd->ad_bl_level = ad_bl_out;
|
mfd->ad_bl_level = ad_bl_out;
|
||||||
|
@ -6193,6 +6198,8 @@ static int mdss_mdp_ad_setup(struct msm_fb_data_type *mfd)
|
||||||
ad->sts &= ~PP_AD_STS_DIRTY_DATA;
|
ad->sts &= ~PP_AD_STS_DIRTY_DATA;
|
||||||
ad->state |= PP_AD_STATE_DATA;
|
ad->state |= PP_AD_STATE_DATA;
|
||||||
pr_debug("dirty data, last_bl = %d\n", ad->last_bl);
|
pr_debug("dirty data, last_bl = %d\n", ad->last_bl);
|
||||||
|
if (!bl_mfd->ad_bl_level)
|
||||||
|
bl_mfd->ad_bl_level = bl_mfd->bl_level;
|
||||||
bl = bl_mfd->ad_bl_level;
|
bl = bl_mfd->ad_bl_level;
|
||||||
|
|
||||||
if (ad->last_bl != bl) {
|
if (ad->last_bl != bl) {
|
||||||
|
@ -6280,6 +6287,7 @@ static int mdss_mdp_ad_setup(struct msm_fb_data_type *mfd)
|
||||||
memset(&ad->cfg, 0, sizeof(struct mdss_ad_cfg));
|
memset(&ad->cfg, 0, sizeof(struct mdss_ad_cfg));
|
||||||
bl_mfd->ext_bl_ctrl = 0;
|
bl_mfd->ext_bl_ctrl = 0;
|
||||||
bl_mfd->ext_ad_ctrl = -1;
|
bl_mfd->ext_ad_ctrl = -1;
|
||||||
|
bl_mfd->ad_bl_level = 0;
|
||||||
}
|
}
|
||||||
ad->state &= ~PP_AD_STATE_RUN;
|
ad->state &= ~PP_AD_STATE_RUN;
|
||||||
}
|
}
|
||||||
|
@ -7401,8 +7409,8 @@ static int pp_mfd_ad_release_all(struct msm_fb_data_type *mfd)
|
||||||
ad->mfd = NULL;
|
ad->mfd = NULL;
|
||||||
ad->bl_mfd = NULL;
|
ad->bl_mfd = NULL;
|
||||||
ad->state = 0;
|
ad->state = 0;
|
||||||
cancel_work_sync(&ad->calc_work);
|
|
||||||
mutex_unlock(&ad->lock);
|
mutex_unlock(&ad->lock);
|
||||||
|
cancel_work_sync(&ad->calc_work);
|
||||||
|
|
||||||
ctl = mfd_to_ctl(mfd);
|
ctl = mfd_to_ctl(mfd);
|
||||||
if (ctl && ctl->ops.remove_vsync_handler)
|
if (ctl && ctl->ops.remove_vsync_handler)
|
||||||
|
|
Loading…
Add table
Reference in a new issue