Loading drivers/video/msm/mdss/mdss_fb.c +14 −7 Original line number Diff line number Diff line Loading @@ -661,7 +661,7 @@ static int mdss_fb_blanking_mode_switch(struct msm_fb_data_type *mfd, int mode) unlock_fb_info(mfd->fbi); mutex_lock(&mfd->bl_lock); mfd->bl_updated = true; mfd->allow_bl_update = true; mdss_fb_set_backlight(mfd, bl_lvl); mutex_unlock(&mfd->bl_lock); Loading Loading @@ -1471,7 +1471,7 @@ void mdss_fb_set_backlight(struct msm_fb_data_type *mfd, u32 bkl_lvl) bool bl_notify_needed = false; if ((((mdss_fb_is_power_off(mfd) && mfd->dcm_state != DCM_ENTER) || !mfd->bl_updated) && !IS_CALIB_MODE_BL(mfd)) || || !mfd->allow_bl_update) && !IS_CALIB_MODE_BL(mfd)) || mfd->panel_info->cont_splash_enabled) { mfd->unset_bl_level = bkl_lvl; return; Loading Loading @@ -1525,7 +1525,7 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd) if (!mfd->unset_bl_level) return; mutex_lock(&mfd->bl_lock); if (!mfd->bl_updated) { if (!mfd->allow_bl_update) { pdata = dev_get_platdata(&mfd->pdev->dev); if ((pdata) && (pdata->set_backlight)) { mfd->bl_level = mfd->unset_bl_level; Loading @@ -1538,7 +1538,7 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd) NOTIFY_TYPE_BL_AD_ATTEN_UPDATE); pdata->set_backlight(pdata, temp); mfd->bl_level_scaled = mfd->unset_bl_level; mfd->bl_updated = 1; mfd->allow_bl_update = true; } } mutex_unlock(&mfd->bl_lock); Loading Loading @@ -1644,7 +1644,7 @@ static int mdss_fb_blank_blank(struct msm_fb_data_type *mfd, mutex_lock(&mfd->bl_lock); current_bl = mfd->bl_level; mdss_fb_set_backlight(mfd, 0); mfd->bl_updated = 0; mfd->allow_bl_update = false; mfd->unset_bl_level = current_bl; mutex_unlock(&mfd->bl_lock); } Loading Loading @@ -1721,8 +1721,8 @@ static int mdss_fb_blank_unblank(struct msm_fb_data_type *mfd) /* Reset the backlight only if the panel was off */ if (mdss_panel_is_power_off(cur_power_state)) { mutex_lock(&mfd->bl_lock); if (!mfd->bl_updated) { mfd->bl_updated = 1; if (!mfd->allow_bl_update) { mfd->allow_bl_update = true; /* * If in AD calibration mode then frameworks would not * be allowed to update backlight hence post unblank Loading @@ -1733,6 +1733,13 @@ static int mdss_fb_blank_unblank(struct msm_fb_data_type *mfd) mdss_fb_set_backlight(mfd, mfd->unset_bl_level); else mdss_fb_set_backlight(mfd, mfd->calib_mode_bl); /* * it blocks the backlight update between unblank and * first kickoff to avoid backlight turn on before black * frame is transferred to panel through unblank call. */ mfd->allow_bl_update = false; } mutex_unlock(&mfd->bl_lock); } Loading drivers/video/msm/mdss/mdss_fb.h +1 −1 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ struct msm_fb_data_type { u32 bl_scale; u32 bl_min_lvl; u32 unset_bl_level; u32 bl_updated; bool allow_bl_update; u32 bl_level_scaled; struct mutex bl_lock; Loading drivers/video/msm/mdss/mdss_mdp_splash_logo.c +1 −1 Original line number Diff line number Diff line Loading @@ -587,7 +587,7 @@ static int mdss_mdp_splash_thread(void *data) unlock_fb_info(mfd->fbi); mutex_lock(&mfd->bl_lock); mfd->bl_updated = true; mfd->allow_bl_update = true; mdss_fb_set_backlight(mfd, mfd->panel_info->bl_max >> 1); mutex_unlock(&mfd->bl_lock); Loading Loading
drivers/video/msm/mdss/mdss_fb.c +14 −7 Original line number Diff line number Diff line Loading @@ -661,7 +661,7 @@ static int mdss_fb_blanking_mode_switch(struct msm_fb_data_type *mfd, int mode) unlock_fb_info(mfd->fbi); mutex_lock(&mfd->bl_lock); mfd->bl_updated = true; mfd->allow_bl_update = true; mdss_fb_set_backlight(mfd, bl_lvl); mutex_unlock(&mfd->bl_lock); Loading Loading @@ -1471,7 +1471,7 @@ void mdss_fb_set_backlight(struct msm_fb_data_type *mfd, u32 bkl_lvl) bool bl_notify_needed = false; if ((((mdss_fb_is_power_off(mfd) && mfd->dcm_state != DCM_ENTER) || !mfd->bl_updated) && !IS_CALIB_MODE_BL(mfd)) || || !mfd->allow_bl_update) && !IS_CALIB_MODE_BL(mfd)) || mfd->panel_info->cont_splash_enabled) { mfd->unset_bl_level = bkl_lvl; return; Loading Loading @@ -1525,7 +1525,7 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd) if (!mfd->unset_bl_level) return; mutex_lock(&mfd->bl_lock); if (!mfd->bl_updated) { if (!mfd->allow_bl_update) { pdata = dev_get_platdata(&mfd->pdev->dev); if ((pdata) && (pdata->set_backlight)) { mfd->bl_level = mfd->unset_bl_level; Loading @@ -1538,7 +1538,7 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd) NOTIFY_TYPE_BL_AD_ATTEN_UPDATE); pdata->set_backlight(pdata, temp); mfd->bl_level_scaled = mfd->unset_bl_level; mfd->bl_updated = 1; mfd->allow_bl_update = true; } } mutex_unlock(&mfd->bl_lock); Loading Loading @@ -1644,7 +1644,7 @@ static int mdss_fb_blank_blank(struct msm_fb_data_type *mfd, mutex_lock(&mfd->bl_lock); current_bl = mfd->bl_level; mdss_fb_set_backlight(mfd, 0); mfd->bl_updated = 0; mfd->allow_bl_update = false; mfd->unset_bl_level = current_bl; mutex_unlock(&mfd->bl_lock); } Loading Loading @@ -1721,8 +1721,8 @@ static int mdss_fb_blank_unblank(struct msm_fb_data_type *mfd) /* Reset the backlight only if the panel was off */ if (mdss_panel_is_power_off(cur_power_state)) { mutex_lock(&mfd->bl_lock); if (!mfd->bl_updated) { mfd->bl_updated = 1; if (!mfd->allow_bl_update) { mfd->allow_bl_update = true; /* * If in AD calibration mode then frameworks would not * be allowed to update backlight hence post unblank Loading @@ -1733,6 +1733,13 @@ static int mdss_fb_blank_unblank(struct msm_fb_data_type *mfd) mdss_fb_set_backlight(mfd, mfd->unset_bl_level); else mdss_fb_set_backlight(mfd, mfd->calib_mode_bl); /* * it blocks the backlight update between unblank and * first kickoff to avoid backlight turn on before black * frame is transferred to panel through unblank call. */ mfd->allow_bl_update = false; } mutex_unlock(&mfd->bl_lock); } Loading
drivers/video/msm/mdss/mdss_fb.h +1 −1 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ struct msm_fb_data_type { u32 bl_scale; u32 bl_min_lvl; u32 unset_bl_level; u32 bl_updated; bool allow_bl_update; u32 bl_level_scaled; struct mutex bl_lock; Loading
drivers/video/msm/mdss/mdss_mdp_splash_logo.c +1 −1 Original line number Diff line number Diff line Loading @@ -587,7 +587,7 @@ static int mdss_mdp_splash_thread(void *data) unlock_fb_info(mfd->fbi); mutex_lock(&mfd->bl_lock); mfd->bl_updated = true; mfd->allow_bl_update = true; mdss_fb_set_backlight(mfd, mfd->panel_info->bl_max >> 1); mutex_unlock(&mfd->bl_lock); Loading