diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c index fe79b6fd52b4..fc47de7692e7 100644 --- a/drivers/video/fbdev/msm/mdss_fb.c +++ b/drivers/video/fbdev/msm/mdss_fb.c @@ -301,6 +301,7 @@ static void mdss_fb_set_bl_brightness(struct led_classdev *led_cdev, mdss_fb_set_backlight(mfd, bl_lvl); mutex_unlock(&mfd->bl_lock); } + mfd->bl_level_usr = bl_lvl; } static enum led_brightness mdss_fb_get_bl_brightness( @@ -309,7 +310,7 @@ static enum led_brightness mdss_fb_get_bl_brightness( struct msm_fb_data_type *mfd = dev_get_drvdata(led_cdev->dev->parent); enum led_brightness value; - MDSS_BL_TO_BRIGHT(value, mfd->bl_level, mfd->panel_info->bl_max, + MDSS_BL_TO_BRIGHT(value, mfd->bl_level_usr, mfd->panel_info->bl_max, mfd->panel_info->brightness_max); return value; @@ -1276,6 +1277,7 @@ static int mdss_fb_probe(struct platform_device *pdev) mfd->calib_mode_bl = 0; mfd->unset_bl_level = U32_MAX; mfd->bl_extn_level = -1; + mfd->bl_level_usr = backlight_led.brightness; mfd->pdev = pdev; diff --git a/drivers/video/fbdev/msm/mdss_fb.h b/drivers/video/fbdev/msm/mdss_fb.h index 321531c72a08..f046ff08cbf7 100644 --- a/drivers/video/fbdev/msm/mdss_fb.h +++ b/drivers/video/fbdev/msm/mdss_fb.h @@ -314,6 +314,7 @@ struct msm_fb_data_type { u32 unset_bl_level; bool allow_bl_update; u32 bl_level_scaled; + u32 bl_level_usr; struct mutex bl_lock; struct mutex mdss_sysfs_lock; bool ipc_resume; diff --git a/drivers/video/fbdev/msm/mdss_mdp_ctl.c b/drivers/video/fbdev/msm/mdss_mdp_ctl.c index bd70535e79f9..49348e5e16a9 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_ctl.c +++ b/drivers/video/fbdev/msm/mdss_mdp_ctl.c @@ -6061,6 +6061,7 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg, mutex_lock(&ctl->mfd->bl_lock); mdss_fb_set_backlight(ctl->mfd, ctl->mfd->bl_extn_level); + ctl->mfd->bl_level_usr = ctl->mfd->bl_extn_level; mutex_unlock(&ctl->mfd->bl_lock); } }