Loading drivers/video/msm/mdss/mdss_fb.c +14 −4 Original line number Diff line number Diff line Loading @@ -610,6 +610,7 @@ static int mdss_fb_probe(struct platform_device *pdev) mfd->ext_ad_ctrl = -1; mfd->bl_level = 0; mfd->bl_level_prev_scaled = 0; mfd->bl_scale = 1024; mfd->bl_min_lvl = 30; mfd->fb_imgType = MDP_RGBA_8888; Loading Loading @@ -944,6 +945,7 @@ void mdss_fb_set_backlight(struct msm_fb_data_type *mfd, u32 bkl_lvl) pdata = dev_get_platdata(&mfd->pdev->dev); if ((pdata) && (pdata->set_backlight)) { mfd->bl_level_prev_scaled = mfd->bl_level_scaled; if (!IS_CALIB_MODE_BL(mfd)) mdss_fb_scale_bl(mfd, &temp); /* Loading @@ -954,13 +956,13 @@ void mdss_fb_set_backlight(struct msm_fb_data_type *mfd, u32 bkl_lvl) * as well as setting bl_level to bkl_lvl even though the * backlight has been set to the scaled value. */ if (mfd->bl_level_old == temp) { if (mfd->bl_level_scaled == temp) { mfd->bl_level = bkl_lvl; return; } pdata->set_backlight(pdata, temp); mfd->bl_level = bkl_lvl; mfd->bl_level_old = temp; mfd->bl_level_scaled = temp; if (mfd->mdp.update_ad_input) { update_ad_input = mfd->mdp.update_ad_input; Loading @@ -983,7 +985,7 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd) if ((pdata) && (pdata->set_backlight)) { mfd->bl_level = mfd->unset_bl_level; pdata->set_backlight(pdata, mfd->bl_level); mfd->bl_level_old = mfd->unset_bl_level; mfd->bl_level_scaled = mfd->unset_bl_level; mfd->bl_updated = 1; } } Loading Loading @@ -1020,6 +1022,13 @@ static int mdss_fb_blank_sub(int blank_mode, struct fb_info *info, schedule_delayed_work(&mfd->idle_notify_work, msecs_to_jiffies(mfd->idle_time)); } mutex_lock(&mfd->bl_lock); if (!mfd->bl_updated) { mfd->bl_updated = 1; mdss_fb_set_backlight(mfd, mfd->bl_level_prev_scaled); } mutex_unlock(&mfd->bl_lock); break; case FB_BLANK_VSYNC_SUSPEND: Loading @@ -1041,8 +1050,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); mdss_fb_set_backlight(mfd, 0); mfd->panel_power_on = false; mfd->bl_updated = 0; mutex_unlock(&mfd->bl_lock); Loading drivers/video/msm/mdss/mdss_fb.h +2 −1 Original line number Diff line number Diff line Loading @@ -213,7 +213,8 @@ struct msm_fb_data_type { u32 bl_min_lvl; u32 unset_bl_level; u32 bl_updated; u32 bl_level_old; u32 bl_level_scaled; u32 bl_level_prev_scaled; struct mutex bl_lock; struct platform_device *pdev; Loading Loading
drivers/video/msm/mdss/mdss_fb.c +14 −4 Original line number Diff line number Diff line Loading @@ -610,6 +610,7 @@ static int mdss_fb_probe(struct platform_device *pdev) mfd->ext_ad_ctrl = -1; mfd->bl_level = 0; mfd->bl_level_prev_scaled = 0; mfd->bl_scale = 1024; mfd->bl_min_lvl = 30; mfd->fb_imgType = MDP_RGBA_8888; Loading Loading @@ -944,6 +945,7 @@ void mdss_fb_set_backlight(struct msm_fb_data_type *mfd, u32 bkl_lvl) pdata = dev_get_platdata(&mfd->pdev->dev); if ((pdata) && (pdata->set_backlight)) { mfd->bl_level_prev_scaled = mfd->bl_level_scaled; if (!IS_CALIB_MODE_BL(mfd)) mdss_fb_scale_bl(mfd, &temp); /* Loading @@ -954,13 +956,13 @@ void mdss_fb_set_backlight(struct msm_fb_data_type *mfd, u32 bkl_lvl) * as well as setting bl_level to bkl_lvl even though the * backlight has been set to the scaled value. */ if (mfd->bl_level_old == temp) { if (mfd->bl_level_scaled == temp) { mfd->bl_level = bkl_lvl; return; } pdata->set_backlight(pdata, temp); mfd->bl_level = bkl_lvl; mfd->bl_level_old = temp; mfd->bl_level_scaled = temp; if (mfd->mdp.update_ad_input) { update_ad_input = mfd->mdp.update_ad_input; Loading @@ -983,7 +985,7 @@ void mdss_fb_update_backlight(struct msm_fb_data_type *mfd) if ((pdata) && (pdata->set_backlight)) { mfd->bl_level = mfd->unset_bl_level; pdata->set_backlight(pdata, mfd->bl_level); mfd->bl_level_old = mfd->unset_bl_level; mfd->bl_level_scaled = mfd->unset_bl_level; mfd->bl_updated = 1; } } Loading Loading @@ -1020,6 +1022,13 @@ static int mdss_fb_blank_sub(int blank_mode, struct fb_info *info, schedule_delayed_work(&mfd->idle_notify_work, msecs_to_jiffies(mfd->idle_time)); } mutex_lock(&mfd->bl_lock); if (!mfd->bl_updated) { mfd->bl_updated = 1; mdss_fb_set_backlight(mfd, mfd->bl_level_prev_scaled); } mutex_unlock(&mfd->bl_lock); break; case FB_BLANK_VSYNC_SUSPEND: Loading @@ -1041,8 +1050,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); mdss_fb_set_backlight(mfd, 0); mfd->panel_power_on = false; mfd->bl_updated = 0; mutex_unlock(&mfd->bl_lock); Loading
drivers/video/msm/mdss/mdss_fb.h +2 −1 Original line number Diff line number Diff line Loading @@ -213,7 +213,8 @@ struct msm_fb_data_type { u32 bl_min_lvl; u32 unset_bl_level; u32 bl_updated; u32 bl_level_old; u32 bl_level_scaled; u32 bl_level_prev_scaled; struct mutex bl_lock; struct platform_device *pdev; Loading