static int mdp3_bl_scale_config(struct msm_fb_data_type *mfd, struct mdp_bl_scale_data *data) { int ret = 0; int curr_bl; mutex_lock(&mfd->bl_lock); curr_bl = mfd->bl_level; mfd->bl_scale = data->scale; mfd->bl_min_lvl = data->min_lvl; pr_debug("update scale = %d, min_lvl = %d\n", mfd->bl_scale, mfd->bl_min_lvl); /* update current backlight to use new scaling*/ mdss_fb_set_backlight(mfd, curr_bl); mutex_unlock(&mfd->bl_lock); return ret; }
static void mdss_fb_set_bl_brightness(struct led_classdev *led_cdev, enum led_brightness value) { struct msm_fb_data_type *mfd = dev_get_drvdata(led_cdev->dev->parent); int bl_lvl; if (value > MDSS_MAX_BL_BRIGHTNESS) value = MDSS_MAX_BL_BRIGHTNESS; /* This maps light HAL backlight level 0 to 4095 into driver backlight level 0 to bl_max with rounding */ MDSS_BRIGHT_TO_BL(bl_lvl, value, mfd->panel_info->bl_max, MDSS_MAX_BL_BRIGHTNESS); if (!bl_lvl && value) bl_lvl = 1; if (!IS_CALIB_MODE_BL(mfd) && (!mfd->ext_bl_ctrl || !value || !mfd->bl_level)) { mutex_lock(&mfd->bl_lock); mdss_fb_set_backlight(mfd, bl_lvl); mutex_unlock(&mfd->bl_lock); } }