msm: mdss: Add missing BL lock around BL-related info

The bl_updated variable requires the BL lock. Otherwise, it can be
corrupted and cause backlight issues.

Change-Id: I55eb4b8d525765ede4f27a404f5c3f1f0b446719
Signed-off-by: Benet Clark <benetc@codeaurora.org>
This commit is contained in:
Benet Clark 2014-05-19 14:36:34 -07:00 committed by David Keitel
parent cb25aa9770
commit c02df0f77f
2 changed files with 5 additions and 3 deletions

View file

@ -977,17 +977,17 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd)
{
struct mdss_panel_data *pdata;
mutex_lock(&mfd->bl_lock);
if (mfd->unset_bl_level && !mfd->bl_updated) {
pdata = dev_get_platdata(&mfd->pdev->dev);
if ((pdata) && (pdata->set_backlight)) {
mutex_lock(&mfd->bl_lock);
mfd->bl_level = mfd->unset_bl_level;
pdata->set_backlight(pdata, mfd->bl_level);
mfd->bl_level_old = mfd->unset_bl_level;
mutex_unlock(&mfd->bl_lock);
mfd->bl_updated = 1;
}
}
mutex_unlock(&mfd->bl_lock);
}
static int mdss_fb_blank_sub(int blank_mode, struct fb_info *info,
@ -1042,7 +1042,9 @@ static int mdss_fb_blank_sub(int blank_mode, struct fb_info *info,
mfd->op_enable = false;
curr_pwr_state = mfd->panel_power_on;
mfd->panel_power_on = false;
mutex_lock(&mfd->bl_lock);
mfd->bl_updated = 0;
mutex_unlock(&mfd->bl_lock);
ret = mfd->mdp.off_fnc(mfd);
if (ret)

View file

@ -511,8 +511,8 @@ static int mdss_mdp_splash_thread(void *data)
}
unlock_fb_info(mfd->fbi);
mfd->bl_updated = true;
mutex_lock(&mfd->bl_lock);
mfd->bl_updated = true;
mdss_fb_set_backlight(mfd, mfd->panel_info->bl_max >> 1);
mutex_unlock(&mfd->bl_lock);