static struct display_plugin *disp_plgn;
static int auto_brightness_state = SETTING_BRIGHTNESS_AUTOMATIC_OFF;
-static bool lbm, hbm, hold, lowdim;
+static bool lbm, hbm, hold_brt, lowdim;
static void change_brightness_transit(int start, int end)
{
static void set_brightness_level(int level)
{
+ int default_brightness;
+ int current_brightness;
+
if (get_pm_cur_state() != S_NORMAL)
return;
/*
auto_brightness_control(BR_HBM_ON, BR_IMPLICIT);
break;
case SPECIFIC_MODE_OFF:
- /*
- * Disable LBM or HBM.
- * If the flag hold is set when disabling LBM, brightness remains
- * held brightness. (FYI. HBM and Hold cannot be both enabled, so
- * no need to consider hold flag when disabling HBM)
- * Otherwise, brightness changes to default or dim brightness
- * depending on flag lowdim.
- */
+ default_brightness = backlight_ops.get_default_brt();
+ backlight_ops.get_brightness(¤t_brightness);
+
+ /* Disable HBM, LBM */
auto_brightness_control(BR_HBM_OFF, BR_IMPLICIT);
auto_brightness_control(BR_LBM_OFF, BR_IMPLICIT);
+
+ /* For AOD -> LCDON, brightness effect is deferred to this point */
+ if (current_brightness != default_brightness && !hold_brt && !lowdim) {
+ change_brightness_transit(current_brightness, default_brightness);
+ auto_brightness_control(BR_SET_BRIGHTNESS, default_brightness);
+ }
+
break;
default:
/*
// previous
int plbm = lbm;
int phbm = hbm;
- int phold = hold;
+ int phold = hold_brt;
int pld = lowdim;
- if (flag != &lbm && flag != &hbm && flag != &hold && flag != &lowdim) {
+ if (flag != &lbm && flag != &hbm && flag != &hold_brt && flag != &lowdim) {
_E("Invalid flag setting.");
return;
}
_D("Change flag LBM/HBM/Hold/LowDim: %d%d%d%d -> %d%d%d%d",
plbm, phbm, phold, pld,
- lbm, hbm, hold, lowdim);
+ lbm, hbm, hold_brt, lowdim);
}
int auto_brightness_control(enum brightness_request_e request, int set_brightness)
if (request == BR_LBM_ON) {
if (!get_lbm_setting())
return 0;
- if (!lbm && !hbm && !hold && !lowdim) {
+ if (!lbm && !hbm && !hold_brt && !lowdim) {
change_brightness_transit(default_brightness, lbm_down_brt(default_brightness));
lbm_set_state(true);
backlight_ops.set_brightness(default_brightness);
change_flag(&lbm, 1);
- } else if (!lbm && !hbm && !hold && lowdim) {
+ } else if (!lbm && !hbm && !hold_brt && lowdim) {
change_brightness_transit(current_brightness, lbm_down_brt(current_brightness));
lbm_set_state(true);
backlight_ops.set_brightness(current_brightness);
change_flag(&lbm, 1);
- } else if (!lbm && !hbm && hold) {
+ } else if (!lbm && !hbm && hold_brt) {
change_flag(&lbm, 1);
}
} else if (request == BR_HBM_ON) {
- if (!lbm && !hbm && !hold) {
+ if (!lbm && !hbm && !hold_brt) {
if (!lowdim)
change_brightness_transit(default_brightness, PM_MAX_BRIGHTNESS);
else
change_brightness_transit(current_brightness, PM_MAX_BRIGHTNESS);
hbm_set_state(true);
change_flag(&hbm, 1);
- } else if (!lbm && !hbm && hold) {
+ } else if (!lbm && !hbm && hold_brt) {
_E("Someone holds brightness, HBM is ignored.");
return -EBUSY;
}
_E("HBM state. Hold brightness is ignored.");
return -EBUSY;
}
- if (lbm && !hold) {
+ if (lbm && !hold_brt) {
lbm_set_state(false);
change_brightness_transit(lbm_down_brt(current_brightness), set_brightness);
} else {
backlight_ops.set_brightness(set_brightness);
}
- change_flag(&hold, 1);
+ change_flag(&hold_brt, 1);
} else if (request == BR_LOWDIM_ON) {
if (!lowdim) {
- if (!hbm && !hold && (get_pm_cur_state() == S_NORMAL))
+ if (!hbm && !hold_brt && (get_pm_cur_state() == S_NORMAL))
backlight_ops.dim();
change_flag(&lowdim, 1);
}
} else if (request == BR_LBM_OFF) {
- if (lbm && !hold) {
+ if (lbm && !hold_brt) {
lbm_set_state(false);
change_flag(&lbm, 0);
} else {
backlight_ops.dim();
}
- } else if (lbm && hold) {
+ } else if (lbm && hold_brt) {
change_flag(&lbm, 0);
}
} else if (request == BR_HBM_OFF) {
change_flag(&hbm, 0);
}
} else if (request == BR_RELEASE_BRIGHTNESS) {
- if (!lbm && hold) {
- change_flag(&hold, 0);
+ if (!lbm && hold_brt) {
+ change_flag(&hold_brt, 0);
/* called by DEVICE_NOTIFIER_LCD_OFF_COMPLETE, no need to change brightness */
if (get_pm_cur_state() != S_NORMAL)
backlight_ops.set_brightness(default_brightness);
else
backlight_ops.dim();
- } else if (lbm && hold) {
- change_flag(&hold, 0);
+ } else if (lbm && hold_brt) {
+ change_flag(&hold_brt, 0);
if (!lowdim) {
change_brightness_transit(current_brightness, lbm_down_brt(default_brightness));
lbm_set_state(true);
}
} else if (request == BR_LOWDIM_OFF) {
if (lowdim) {
- if (!hbm && !hold && (get_pm_cur_state() == S_NORMAL))
+ if (!hbm && !hold_brt && (get_pm_cur_state() == S_NORMAL))
backlight_ops.update();
change_flag(&lowdim, 0);
}
} else if (request == BR_SET_BRIGHTNESS) {
- if (lbm && hold)
+ if (lbm && hold_brt)
lbm_set_state(true);
change_flag(&lowdim, 0);
- change_flag(&hold, 0);
+ change_flag(&hold_brt, 0);
backlight_ops.set_default_brt(set_brightness);
if (!hbm) {
ret = backlight_ops.set_brightness(set_brightness);
int auto_brightness_restore(void)
{
/* maintain hold brightness */
- if (hold)
+ if (hold_brt)
return 0;
/* update to the default brightness */