Remove and redefine functions in the backlight_ops.
- set_brightness, get_brightness, transit_brt, get_brightness_raw
Wearable profile can have two status of get_brightness lbm_get_brightness/(default)get_brightness
That's why get_brightness_raw was put in backlight_ops to always call (default)get_brightness.
get_brightness_raw can be replaced by display_backlight_get_brightness.
These functions are added to below diplay-backlight.
int display_backlight_set_brightness(int brightness)
int display_backlight_get_brightness(int *brightness)
void display_backlight_change_brightness(int start, int end, int step)
-> With these functions, it is possible to get and set brightness through HAL.
int display_backlight_get_brightness_by_plugin_profile(int *brightness)
-> This function is temporary, it is for handling wearable profile dependency.
To keep original code intent, this is necessary for functions that are dependent on wearable profile.
Change-Id: I0c9cb7675c39094576dd7e42d66d46a29da4144b
Signed-off-by: Yunhee Seo <yuni.seo@samsung.com>
case S_LCDDIM:
display_backlight_get_custom_status(&custom_status);
if ((get_pm_old_state() == S_NORMAL) && custom_status) {
- backlight_ops->get_brightness(&brightness);
+ display_backlight_get_brightness(&brightness);
display_backlight_set_custom_brightness(brightness);
}
/* lcd dim state : dim the brightness */
}
_I("Set brightness(%d) from setting app.", tmp);
display_backlight_set_default_brightness(tmp);
- backlight_ops->set_brightness(tmp);
+ display_backlight_set_brightness(tmp);
ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state);
if (ret < 0) {
#define TOUCH_OFF 0
#define LCD_PHASED_MAX_BRIGHTNESS 100
-#define LCD_PHASED_DELAY 10000 /* microsecond */
#define DISPLAY_HAL_LIB_PATH "/usr/lib/libdisplay-hal.so"
return false;
}
-static void change_brightness(int start, int end, int step)
-{
- int diff, val;
- int ret = -1;
- int prev;
-
- if (display_dimstay_check())
- return;
-
- ret = backlight_ops.get_brightness(&prev);
- if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
- return;
- }
-
- if (prev == end)
- return;
-
- if (get_pm_status_flag() & DIM_MASK)
- end = 0;
-
- _I("start %d end %d step %d", start, end, step);
-
- if (display_dev_available) {
- ret = hal_device_display_set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret != -ENODEV) {
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
-
- backlight_ops.set_brightness(end);
-
- return;
- }
- }
-
- diff = end - start;
-
- if (abs(diff) < step)
- val = (diff > 0 ? 1 : -1);
- else
- val = (int)ceil((double)diff / step);
-
- while (start != end) {
- if (val == 0) break;
-
- start += val;
- if ((val > 0 && start > end) ||
- (val < 0 && start < end))
- start = end;
-
- display_backlight_set_brightness_with_delay(start, LCD_PHASED_DELAY);
- }
-}
-
-static int set_brightness(int val)
-{
- int max, ret;
- int default_brightness = 0, force_brightness = 0;
-
- display_backlight_get_default_brightness(&default_brightness);
- display_backlight_get_force_brightness(&force_brightness);
-
- if (!display_dev_available) {
- _E("There is no display device.");
- return -ENOENT;
- }
-
- ret = display_backlight_get_max_brightness(&max);
- if (ret < 0) {
- _E("Failed to get max brightness.");
- return ret;
- }
-
- if (force_brightness > 0 && val != PM_DIM_BRIGHTNESS) {
- _I("brightness(%d), force brightness(%d)",
- val, force_brightness);
- val = force_brightness;
- }
-
- if (get_pm_status_flag() & DIM_MASK)
- val = 0;
-
- /* Maximum Brightness to users is 100.
- * Thus real brightness need to be calculated */
- val = val * max / 100;
-
- _I("set brightness %d (default:%d)", val, default_brightness);
- device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
-
- return hal_device_display_set_brightness(val);
-}
-
-static int get_brightness(int *val)
-{
- int brt, ret;
-
- if (!display_dev_available) {
- _E("There is no display device.");
- return -ENOENT;
- }
-
- ret = hal_device_display_get_brightness(&brt);
- if (ret < 0) {
- if (ret == -ENODEV)
- _E("Get brightness is not supported.");
- else
- _E("Failed to get brightness: %d", ret);
-
- return ret;
- }
-
- ret = display_backlight_get_normalized_brightness(brt, val);
- if (ret < 0) {
- _E("Failed to get normalized brightness.");
- return ret;
- }
-
- return 0;
-}
-
/* It was operated only AOD enter & leave */
static int backlight_transit_state(int state)
{
display_backlight_get_default_brightness(&default_brightness);
- backlight_ops.get_brightness(&brt);
+ display_backlight_get_brightness(&brt);
if (state == DPMS_OFF) {
start = brt;
end = display_conf->aod_enter_level;
/*
- * The value of backlight_ops.get_brightness is system brightness.
+ * The value of display_backlight_get_brightness is system brightness.
* But when device is LBM, the value is not same with real brightness.
* So it should be read exactly value for transit smooth effect
*/
- get_brightness(&val);
+ display_backlight_get_brightness(&val);
if (val > display_conf->aod_enter_level)
- backlight_ops.transit_brt(start, end, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, end, display_conf->brightness_change_step);
} else {
/* prevent transit effect when another effect is already executed */
if (brt != display_conf->aod_enter_level) {
start = display_conf->aod_enter_level;
end = default_brightness;
- backlight_ops.transit_brt(start, end, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, end, display_conf->brightness_change_step);
}
return 0;
static void restore_brightness_func(void)
{
- backlight_ops.set_brightness = set_brightness;
- backlight_ops.get_brightness = get_brightness;
- backlight_ops.transit_brt = change_brightness;
+ backlight_ops.set_brightness = NULL;
+ backlight_ops.get_brightness = NULL;
+ backlight_ops.transit_brt = NULL;
}
static struct _backlight_ops backlight_ops = {
.get_lcd_power = dpms_get_cached_state,
- .set_brightness = set_brightness,
- .get_brightness = get_brightness,
+ .set_brightness = NULL,
+ .get_brightness = NULL,
.restore_brightness_func = restore_brightness_func,
.transit_state = backlight_transit_state,
- .transit_brt = change_brightness,
+ .transit_brt = NULL,
};
int display_service_load(void)
case S_LCDDIM:
display_backlight_get_custom_status(&custom_status);
if ((get_pm_old_state() == S_NORMAL) && custom_status) {
- backlight_ops->get_brightness(&brightness);
+ display_backlight_get_brightness(&brightness);
display_backlight_set_custom_brightness(brightness);
}
/* lcd dim state : dim the brightness */
}
_I("Set brightness(%d) from setting app.", tmp);
display_backlight_set_default_brightness(tmp);
- backlight_ops->set_brightness(tmp);
+ display_backlight_set_brightness(tmp);
ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state);
if (ret < 0) {
#define TOUCH_OFF 0
#define LCD_PHASED_MAX_BRIGHTNESS 100
-#define LCD_PHASED_DELAY 10000 /* microsecond */
#define DISPLAY_HAL_LIB_PATH "/usr/lib/libdisplay-hal.so"
return false;
}
-static void change_brightness(int start, int end, int step)
-{
- int diff, val;
- int ret = -1;
- int prev;
-
- if (display_dimstay_check())
- return;
-
- ret = backlight_ops.get_brightness(&prev);
- if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
- return;
- }
-
- if (prev == end)
- return;
-
- if (get_pm_status_flag() & DIM_MASK)
- end = 0;
-
- _I("start %d end %d step %d", start, end, step);
-
- if (display_dev_available) {
- ret = hal_device_display_set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret != -ENODEV) {
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
-
- backlight_ops.set_brightness(end);
-
- return;
- }
- }
-
- diff = end - start;
-
- if (abs(diff) < step)
- val = (diff > 0 ? 1 : -1);
- else
- val = (int)ceil((double)diff / step);
-
- while (start != end) {
- if (val == 0) break;
-
- start += val;
- if ((val > 0 && start > end) ||
- (val < 0 && start < end))
- start = end;
-
- display_backlight_set_brightness_with_delay(start, LCD_PHASED_DELAY);
- }
-}
-
-static int set_brightness(int val)
-{
- int max, ret;
- int default_brightness = 0, force_brightness = 0;
-
- display_backlight_get_default_brightness(&default_brightness);
- display_backlight_get_force_brightness(&force_brightness);
-
- if (!display_dev_available) {
- _E("There is no display device.");
- return -ENOENT;
- }
-
- ret = display_backlight_get_max_brightness(&max);
- if (ret < 0) {
- _E("Failed to get max brightness.");
- return ret;
- }
-
- if (force_brightness > 0 && val != PM_DIM_BRIGHTNESS) {
- _I("brightness(%d), force brightness(%d)",
- val, force_brightness);
- val = force_brightness;
- }
-
- if (get_pm_status_flag() & DIM_MASK)
- val = 0;
-
- /* Maximum Brightness to users is 100.
- * Thus real brightness need to be calculated */
- val = val * max / 100;
-
- _I("set brightness %d (default:%d)", val, default_brightness);
- device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
-
- return hal_device_display_set_brightness(val);
-}
-
-static int get_brightness(int *val)
-{
- int brt, ret;
-
- if (!display_dev_available) {
- _E("There is no display device.");
- return -ENOENT;
- }
-
- ret = hal_device_display_get_brightness(&brt);
- if (ret < 0) {
- if (ret == -ENODEV)
- _E("Get brightness is not supported.");
- else
- _E("Failed to get brightness: %d", ret);
-
- return ret;
- }
-
- ret = display_backlight_get_normalized_brightness(brt, val);
- if (ret < 0) {
- _E("Failed to get normalized brightness.");
- return ret;
- }
-
- return 0;
-}
-
/* It was operated only AOD enter & leave */
static int backlight_transit_state(int state)
{
display_backlight_get_default_brightness(&default_brightness);
- backlight_ops.get_brightness(&brt);
+ display_backlight_get_brightness(&brt);
if (state == DPMS_OFF) {
start = brt;
end = display_conf->aod_enter_level;
/*
- * The value of backlight_ops.get_brightness is system brightness.
+ * The value of display_backlight_get_brightness is system brightness.
* But when device is LBM, the value is not same with real brightness.
* So it should be read exactly value for transit smooth effect
*/
- get_brightness(&val);
+ display_backlight_get_brightness(&val);
if (val > display_conf->aod_enter_level)
- backlight_ops.transit_brt(start, end, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, end, display_conf->brightness_change_step);
} else {
/* prevent transit effect when another effect is already executed */
if (brt != display_conf->aod_enter_level) {
start = display_conf->aod_enter_level;
end = default_brightness;
- backlight_ops.transit_brt(start, end, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, end, display_conf->brightness_change_step);
}
return 0;
static void restore_brightness_func(void)
{
- backlight_ops.set_brightness = set_brightness;
- backlight_ops.get_brightness = get_brightness;
- backlight_ops.transit_brt = change_brightness;
+ backlight_ops.set_brightness = NULL;
+ backlight_ops.get_brightness = NULL;
+ backlight_ops.transit_brt = NULL;
}
static struct _backlight_ops backlight_ops = {
.get_lcd_power = dpms_get_cached_state,
- .set_brightness = set_brightness,
- .get_brightness = get_brightness,
+ .set_brightness = NULL,
+ .get_brightness = NULL,
.restore_brightness_func = restore_brightness_func,
.transit_state = backlight_transit_state,
- .transit_brt = change_brightness,
+ .transit_brt = NULL,
};
int display_service_load(void)
case S_LCDDIM:
display_backlight_get_custom_status(&custom_status);
if ((get_pm_old_state() == S_NORMAL) && custom_status) {
- backlight_ops->get_brightness(&brightness);
+ display_backlight_get_brightness(&brightness);
display_backlight_set_custom_brightness(brightness);
}
/* lcd dim state : dim the brightness */
}
_I("Set brightness(%d) from setting app.", tmp);
display_backlight_set_default_brightness(tmp);
- backlight_ops->set_brightness(tmp);
+ display_backlight_set_brightness(tmp);
ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state);
if (ret < 0) {
#define TOUCH_OFF 0
#define LCD_PHASED_MAX_BRIGHTNESS 100
-#define LCD_PHASED_DELAY 10000 /* microsecond */
#define DISPLAY_HAL_LIB_PATH "/usr/lib/libdisplay-hal.so"
return false;
}
-static void change_brightness(int start, int end, int step)
-{
- int diff, val;
- int ret = -1;
- int prev;
-
- if (display_dimstay_check())
- return;
-
- ret = backlight_ops.get_brightness(&prev);
- if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
- return;
- }
-
- if (prev == end)
- return;
-
- if (get_pm_status_flag() & DIM_MASK)
- end = 0;
-
- _I("start %d end %d step %d", start, end, step);
-
- if (display_dev_available) {
- ret = hal_device_display_set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret != -ENODEV) {
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
-
- backlight_ops.set_brightness(end);
-
- return;
- }
- }
-
- diff = end - start;
-
- if (abs(diff) < step)
- val = (diff > 0 ? 1 : -1);
- else
- val = (int)ceil((double)diff / step);
-
- while (start != end) {
- if (val == 0) break;
-
- start += val;
- if ((val > 0 && start > end) ||
- (val < 0 && start < end))
- start = end;
-
- display_backlight_set_brightness_with_delay(start, LCD_PHASED_DELAY);
- }
-}
-
-static int set_brightness(int val)
-{
- int max, ret;
- int default_brightness = 0, force_brightness = 0;
-
- display_backlight_get_default_brightness(&default_brightness);
- display_backlight_get_force_brightness(&force_brightness);
-
- if (!display_dev_available) {
- _E("There is no display device.");
- return -ENOENT;
- }
-
- ret = display_backlight_get_max_brightness(&max);
- if (ret < 0) {
- _E("Failed to get max brightness.");
- return ret;
- }
-
- if (force_brightness > 0 && val != PM_DIM_BRIGHTNESS) {
- _I("brightness(%d), force brightness(%d)",
- val, force_brightness);
- val = force_brightness;
- }
-
- if (get_pm_status_flag() & DIM_MASK)
- val = 0;
-
- /* Maximum Brightness to users is 100.
- * Thus real brightness need to be calculated */
- val = val * max / 100;
-
- _I("set brightness %d (default:%d)", val, default_brightness);
- device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
-
- return hal_device_display_set_brightness(val);
-}
-
-static int get_brightness(int *val)
-{
- int brt, ret;
-
- if (!display_dev_available) {
- _E("There is no display device.");
- return -ENOENT;
- }
-
- ret = hal_device_display_get_brightness(&brt);
- if (ret < 0) {
- if (ret == -ENODEV)
- _E("Get brightness is not supported.");
- else
- _E("Failed to get brightness: %d", ret);
-
- return ret;
- }
-
- ret = display_backlight_get_normalized_brightness(brt, val);
- if (ret < 0) {
- _E("Failed to get normalized brightness.");
- return ret;
- }
-
- return 0;
-}
-
/* It was operated only AOD enter & leave */
static int backlight_transit_state(int state)
{
display_backlight_get_default_brightness(&default_brightness);
- backlight_ops.get_brightness(&brt);
+ display_backlight_get_brightness(&brt);
if (state == DPMS_OFF) {
start = brt;
end = display_conf->aod_enter_level;
/*
- * The value of backlight_ops.get_brightness is system brightness.
+ * The value of display_backlight_get_brightness is system brightness.
* But when device is LBM, the value is not same with real brightness.
* So it should be read exactly value for transit smooth effect
*/
- get_brightness(&val);
+ display_backlight_get_brightness(&val);
if (val > display_conf->aod_enter_level)
- backlight_ops.transit_brt(start, end, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, end, display_conf->brightness_change_step);
} else {
/* prevent transit effect when another effect is already executed */
if (brt != display_conf->aod_enter_level) {
start = display_conf->aod_enter_level;
end = default_brightness;
- backlight_ops.transit_brt(start, end, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, end, display_conf->brightness_change_step);
}
return 0;
static void restore_brightness_func(void)
{
- backlight_ops.set_brightness = set_brightness;
- backlight_ops.get_brightness = get_brightness;
- backlight_ops.transit_brt = change_brightness;
+ backlight_ops.set_brightness = NULL;
+ backlight_ops.get_brightness = NULL;
+ backlight_ops.transit_brt = NULL;
}
static struct _backlight_ops backlight_ops = {
.get_lcd_power = dpms_get_cached_state,
- .set_brightness = set_brightness,
- .get_brightness = get_brightness,
+ .set_brightness = NULL,
+ .get_brightness = NULL,
.restore_brightness_func = restore_brightness_func,
.transit_state = backlight_transit_state,
- .transit_brt = change_brightness,
+ .transit_brt = NULL,
};
int display_service_load(void)
_E("Failed to get display configuration variable.");
return ;
}
- backlight_ops->transit_brt(start, end,
+ display_backlight_change_brightness(start, end,
display_conf->brightness_change_step);
}
break;
case SPECIFIC_MODE_OFF:
display_backlight_get_default_brightness(&default_brightness);
- backlight_ops->get_brightness(¤t_brightness);
+ display_backlight_get_brightness_by_plugin_profile(¤t_brightness);
/* Disable HBM, LBM */
auto_brightness_control(BR_HBM_OFF, BR_IMPLICIT);
int ret;
display_backlight_get_default_brightness(&default_brightness);
- backlight_ops->get_brightness(¤t_brightness);
+ display_backlight_get_brightness_by_plugin_profile(¤t_brightness);
if (request == BR_LBM_ON) {
if (!get_lbm_setting())
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);
+ display_backlight_set_brightness(default_brightness);
change_flag(&lbm, 1);
} 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);
+ display_backlight_set_brightness(current_brightness);
change_flag(&lbm, 1);
} else if (!lbm && !hbm && hold_brt) {
change_flag(&lbm, 1);
lbm_set_state(false);
change_brightness_transit(lbm_down_brt(current_brightness), set_brightness);
} else {
- backlight_ops->set_brightness(set_brightness);
+ display_backlight_set_brightness(set_brightness);
}
change_flag(&hold_brt, 1);
} else if (request == BR_LOWDIM_ON) {
if (!lowdim) {
change_brightness_transit(lbm_down_brt(default_brightness), default_brightness);
- backlight_ops->set_brightness(default_brightness);
+ display_backlight_set_brightness(default_brightness);
} else {
display_backlight_set_brightness_by_dim_brightness();
}
return 0;
if (!lowdim)
- backlight_ops->set_brightness(default_brightness);
+ display_backlight_set_brightness(default_brightness);
else
display_backlight_set_brightness_by_dim_brightness();
} else if (lbm && hold_brt) {
if (!lowdim) {
change_brightness_transit(current_brightness, lbm_down_brt(default_brightness));
lbm_set_state(true);
- backlight_ops->set_brightness(default_brightness);
+ display_backlight_set_brightness(default_brightness);
} else {
change_brightness_transit(current_brightness, lbm_down_brt(PM_DIM_BRIGHTNESS));
lbm_set_state(true);
- backlight_ops->set_brightness(PM_DIM_BRIGHTNESS);
+ display_backlight_set_brightness(PM_DIM_BRIGHTNESS);
}
}
} else if (request == BR_LOWDIM_OFF) {
change_flag(&hold_brt, 0);
display_backlight_set_default_brightness(set_brightness);
if (!hbm) {
- ret = backlight_ops->set_brightness(set_brightness);
+ ret = display_backlight_set_brightness(set_brightness);
if (ret < 0) {
_E("Failed to set brightness to %d.", set_brightness);
return ret;
case S_LCDDIM:
display_backlight_get_custom_status(&custom_status);
if ((get_pm_old_state() == S_NORMAL) && custom_status) {
- backlight_ops->get_brightness(&brightness);
+ display_backlight_get_brightness(&brightness);
display_backlight_set_custom_brightness(brightness);
}
/* lcd dim state : dim the brightness */
}
_I("Set brightness(%d) from setting app.", tmp);
display_backlight_set_default_brightness(tmp);
- backlight_ops->set_brightness(tmp);
+ display_backlight_set_brightness(tmp);
ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &bat_state);
if (ret < 0) {
#define TOUCH_OFF 0
#define LCD_PHASED_MAX_BRIGHTNESS 100
-#define LCD_PHASED_DELAY 10000 /* microsecond */
#define DISPLAY_HAL_LIB_PATH "/usr/lib/libdisplay-hal.so"
return false;
}
-static void change_brightness(int start, int end, int step)
-{
- int diff, val;
- int ret = -1;
- int prev;
-
- if (display_dimstay_check())
- return;
-
- ret = backlight_ops.get_brightness(&prev);
- if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
- return;
- }
-
- if (prev == end)
- return;
-
- if (get_pm_status_flag() & DIM_MASK)
- end = 0;
-
- _I("start %d end %d step %d", start, end, step);
-
- if (display_dev_available) {
- ret = hal_device_display_set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret != -ENODEV) {
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
-
- backlight_ops.set_brightness(end);
-
- return;
- }
- }
-
- diff = end - start;
-
- if (abs(diff) < step)
- val = (diff > 0 ? 1 : -1);
- else
- val = (int)ceil((double)diff / step);
-
- while (start != end) {
- if (val == 0) break;
-
- start += val;
- if ((val > 0 && start > end) ||
- (val < 0 && start < end))
- start = end;
-
- display_backlight_set_brightness_with_delay(start, LCD_PHASED_DELAY);
- }
-}
-
static int set_brightness(int val)
{
int max, ret;
return hal_device_display_set_brightness(val);
}
-static int get_brightness(int *val)
-{
- int brt, ret;
-
- if (!display_dev_available) {
- _E("There is no display device.");
- return -ENOENT;
- }
-
- ret = hal_device_display_get_brightness(&brt);
- if (ret < 0) {
- if (ret == -ENODEV)
- _E("Get brightness is not supported.");
- else
- _E("Failed to get brightness: %d", ret);
-
- return ret;
- }
-
- ret = display_backlight_get_normalized_brightness(brt, val);
- if (ret < 0) {
- _E("Failed to get normalized brightness.");
- return ret;
- }
-
- return 0;
-}
-
/* It was operated only AOD enter & leave */
static int backlight_transit_state(int state)
{
display_backlight_get_default_brightness(&default_brightness);
- backlight_ops.get_brightness(&brt);
+ display_backlight_get_brightness_by_plugin_profile(&brt);
if (state == DPMS_OFF) {
start = brt;
/*
- * The value of backlight_ops.get_brightness is system brightness.
+ * The value of display_backlight_get_brightness is system brightness.
* But when device is LBM, the value is not same with real brightness.
* So it should be read exactly value for transit smooth effect
*/
- get_brightness(&val);
+ display_backlight_get_brightness(&val);
/* AOD brightness
*
if (val > aod_brightness_level) {
_D("backlight transit start %d end %d DPMS OFF", start, aod_brightness_level);
- backlight_ops.transit_brt(start, aod_brightness_level, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, aod_brightness_level, display_conf->brightness_change_step);
}
} else {
/* prevent transit effect when another effect is already executed */
start = aod_brightness_level;
end = default_brightness;
_D("backlight transit start %d end %d DPMS ON", start, end);
- backlight_ops.transit_brt(start, end, display_conf->brightness_change_step);
+ display_backlight_change_brightness(start, end, display_conf->brightness_change_step);
}
return 0;
static void restore_brightness_func(void)
{
backlight_ops.set_brightness = set_brightness;
- backlight_ops.get_brightness = get_brightness;
- backlight_ops.transit_brt = change_brightness;
+ backlight_ops.get_brightness = NULL;
+ backlight_ops.transit_brt = NULL;
}
static struct _backlight_ops backlight_ops = {
.get_lcd_power = dpms_get_cached_state,
.set_brightness = set_brightness,
- .get_brightness = get_brightness,
+ .get_brightness = NULL,
.restore_brightness_func = restore_brightness_func,
.transit_state = backlight_transit_state,
- .transit_brt = change_brightness,
- /* auto-test only function */
- .get_brightness_raw = get_brightness, /* always fetch brightness from node even LBM mode */
+ .transit_brt = NULL,
};
int display_service_load(void)
#include "display-info.h"
#include "display/util.h"
#include "display/core.h"
+#include "display/display-backlight.h"
#include "display/display-ops.h"
#include "shared/common.h"
#include "shared/device-notifier.h"
if (display_dimstay_check())
return;
- ret = backlight_ops->get_brightness(&prev);
+ ret = display_backlight_get_brightness_by_plugin_profile(&prev);
if (ret < 0) {
_E("Failed to get brightness, %d.", ret);
if (ret < 0)
_E("Failed to set_multi_brightness, %d.", ret);
- backlight_ops->set_brightness(end);
+ display_backlight_set_brightness(end);
return;
}
start = end;
usleep(LCD_PHASED_DELAY);
- backlight_ops->set_brightness(start);
+ display_backlight_set_brightness(start);
}
}
static float old;
int position, tmp_value = 0, ret;
- ret = backlight_ops->get_brightness(&tmp_value);
+ ret = display_backlight_get_brightness_by_plugin_profile(&tmp_value);
if (ret < 0) {
_E("Failed to get display brightness.");
return;
int (*get_lcd_power)(void);
int (*set_brightness)(int val);
int (*get_brightness)(int *val);
- int (*get_brightness_raw)(int *val);
void (*restore_brightness_func)(void);
int (*transit_state)(int state);
void (*transit_brt)(int start, int end, int step);
* limitations under the License.
*/
+#include <math.h>
+
#include <hal/device/hal-display.h>
+#include "shared/device-notifier.h"
#include "shared/log.h"
#include "power/power-suspend.h"
#include "core.h"
#include "display-dpms.h"
#define DUMP_MODE_WAITING_TIME 600000 /* milisecond */
+#define LCD_PHASED_DELAY 10000 /* microsecond */
static const struct display_config *display_conf;
static struct _backlight_ops *backlight_ops;
return 0;
}
+int display_backlight_set_brightness(int brightness)
+{
+ int max_brightness, ret;
+ int default_brightness = display_backlight_get_default_brightness();
+ int force_brightness = display_backlight_get_force_brightness();
+
+ if (backlight_ops && backlight_ops->set_brightness)
+ return backlight_ops->set_brightness(brightness);
+
+ if (!display_is_hal_backend_available()) {
+ _E("There is no display device.");
+ return -ENOENT;
+ }
+
+ ret = display_backlight_get_max_brightness(&max_brightness);
+ if (ret < 0) {
+ _E("Failed to get max brightness.");
+ return ret;
+ }
+
+ if (force_brightness > 0 && brightness != PM_DIM_BRIGHTNESS) {
+ _I("brightness(%d), force brightness(%d)", brightness, force_brightness);
+ brightness = force_brightness;
+ }
+
+ if (get_pm_status_flag() & DIM_MASK)
+ brightness = PM_DIM_BRIGHTNESS;
+
+ /* Maximum Brightness to users is 100.
+ * Thus real brightness need to be calculated */
+ brightness = brightness * max_brightness / 100;
+
+ _I("set brightness %d (default:%d)", brightness, default_brightness);
+ device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&brightness);
+
+ return hal_device_display_set_brightness(brightness);
+}
+
+int display_backlight_get_brightness(int *brightness)
+{
+ int brt, ret;
+
+ if (!display_is_hal_backend_available()) {
+ _E("There is no display device.");
+ return -ENOENT;
+ }
+
+ ret = hal_device_display_get_brightness(&brt);
+ if (ret < 0) {
+ if (ret == -ENODEV)
+ _E("Get brightness is not supported.");
+ else
+ _E("Failed to get brightness: %d", ret);
+
+ return ret;
+ }
+
+ ret = display_backlight_get_normalized_brightness(brt, brightness);
+ if (ret < 0) {
+ _E("Failed to get normalized brightness.");
+ return ret;
+ }
+
+ return 0;
+}
+
+/* FIXME: this function is only for wearable plugin, it should changed or removed after refactoring */
+int display_backlight_get_brightness_by_plugin_profile(int *brightness)
+{
+ if (backlight_ops && backlight_ops->get_brightness)
+ return backlight_ops->get_brightness(brightness);
+
+ return display_backlight_get_brightness(brightness);
+}
+
+void display_backlight_change_brightness(int start, int end, int step)
+{
+ int diff, val;
+ int ret = -1;
+ int prev;
+
+ if (backlight_ops && backlight_ops->transit_brt)
+ return backlight_ops->transit_brt(start, end, step);
+
+ if (display_dimstay_check())
+ return;
+
+ ret = display_backlight_get_brightness(&prev);
+ if (ret < 0) {
+ _E("Failed to get brightness: %d", ret);
+ return;
+ }
+
+ if (prev == end)
+ return;
+
+ if (get_pm_status_flag() & DIM_MASK)
+ end = PM_DIM_BRIGHTNESS;
+
+ _I("start %d end %d step %d", start, end, step);
+
+ if (!display_is_hal_backend_available()) {
+ ret = hal_device_display_set_multi_brightness(end, step, LCD_PHASED_DELAY);
+ if (ret != -ENODEV) {
+ if (ret < 0)
+ _E("Failed to set_multi_brightness (%d)", ret);
+
+ display_backlight_set_brightness(end);
+
+ return;
+ }
+ }
+
+ diff = end - start;
+
+ if (abs(diff) < step)
+ val = (diff > 0 ? 1 : -1);
+ else
+ val = (int)ceil((double)diff / step);
+
+ while (start != end) {
+ if (val == 0)
+ break;
+
+ start += val;
+ if ((val > 0 && start > end) || (val < 0 && start < end))
+ start = end;
+
+ display_backlight_set_brightness_with_delay(start, LCD_PHASED_DELAY);
+ }
+}
+
+void display_backlight_restore_brightness_funcs(void)
+{
+ if (backlight_ops && backlight_ops->restore_brightness_func)
+ return backlight_ops->restore_brightness_func();
+}
+
int display_backlight_set_default_brightness(int brightness)
{
if (brightness < PM_MIN_BRIGHTNESS || brightness > PM_MAX_BRIGHTNESS) {
{
int ret = 0;
- ret = backlight_ops->set_brightness(PM_DIM_BRIGHTNESS);
+ ret = display_backlight_set_brightness(PM_DIM_BRIGHTNESS);
#ifdef ENABLE_PM_LOG
if (!ret)
ret = display_backlight_set_brightness_by_dim_brightness();
} else {
display_backlight_get_default_brightness(&default_brightness);
- ret = backlight_ops->set_brightness(default_brightness);
+ ret = display_backlight_set_brightness(default_brightness);
}
return ret;
ret = display_backlight_set_brightness_by_dim_brightness();
} else {
_I("Custom brightness restored! %d", custom_brightness);
- ret = backlight_ops->set_brightness(custom_brightness);
+ ret = display_backlight_set_brightness(custom_brightness);
}
return ret;
{
static bool flag;
- backlight_ops->set_brightness(flag ? PM_MAX_BRIGHTNESS : PM_MIN_BRIGHTNESS);
+ display_backlight_set_brightness(flag ? PM_MAX_BRIGHTNESS : PM_MIN_BRIGHTNESS);
flag = !flag;
return G_SOURCE_CONTINUE;
usleep(delay);
/* Update device brightness */
- ret = backlight_ops->set_brightness(brightness);
+ ret = display_backlight_set_brightness(brightness);
_I("Set brightness(%d): %d", brightness, ret);
return ret;
int display_backlight_get_max_brightness(int *max_brightness);
int display_backlight_get_normalized_brightness(int raw_brightness,
int *normalized_brightness);
+int display_backlight_set_brightness(int brightness);
+int display_backlight_get_brightness(int *brightness);
+int display_backlight_get_brightness_by_plugin_profile(int *brightness);
+void display_backlight_change_brightness(int start, int end, int step);
int display_backlight_set_default_brightness(int brightness);
int display_backlight_get_default_brightness(int *brightness);
int display_backlight_update_by_default_brightness(void);
int brt = -1, ret, result;
if (get_pm_cur_state() == S_NORMAL) {
- ret = backlight_ops->get_brightness(&brt);
+ ret = display_backlight_get_brightness_by_plugin_profile(&brt);
if (ret < 0)
result = 0;
else
ret = disp_plgn->auto_brightness_control(BR_SET_BRIGHTNESS, brt);
} else {
display_backlight_set_default_brightness(brt);
- ret = backlight_ops->set_brightness(brt);
+ ret = display_backlight_set_brightness(brt);
if (ret < 0)
goto error;
ret = vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, brt);
}
} else if (state == DISPLAY_STATE_SCREEN_DIM) {
if (get_pm_cur_state() == S_LCDDIM) {
- ret = backlight_ops->set_brightness(brt);
+ ret = display_backlight_set_brightness(brt);
if (ret < 0)
goto error;
}
if (disp_plgn->auto_brightness_control)
ret = disp_plgn->auto_brightness_control(BR_HOLD_BRIGHTNESS, brt);
else
- ret = backlight_ops->set_brightness(brt);
+ ret = display_backlight_set_brightness(brt);
if (ret < 0)
goto error;
if (ret < 0)
_E("Failed to set vconf value for custom brightness status: %d", vconf_get_ext_errno());
- ret = backlight_ops->get_brightness(&brt);
+ ret = display_backlight_get_brightness_by_plugin_profile(&brt);
if (ret < 0)
brt = ret;
charger == VCONFKEY_SYSMAN_CHARGER_DISCONNECTED && !changed) {
_D("batt warning low : brightness is not changed!");
if (brt != 0)
- backlight_ops->set_brightness(0);
+ display_backlight_set_brightness(0);
goto error;
}
disp_plgn->auto_brightness_control(BR_RELEASE_BRIGHTNESS, BR_IMPLICIT);
} else {
if (brt != setting)
- backlight_ops->set_brightness(setting);
+ display_backlight_set_brightness(setting);
}
} else if (autobrt == SETTING_BRIGHTNESS_AUTOMATIC_PAUSE) {
_D("Auto brightness will be enable");
int current_brightness;
display_backlight_get_default_brightness(&default_brightness);
- backlight_ops->get_brightness_raw(¤t_brightness);
+ display_backlight_get_brightness(¤t_brightness);
return g_variant_new("(ii)", default_brightness, current_brightness);
}
cnt++;
if (flags & LCD_PHASED_TRANSIT_MODE)
- backlight_ops->transit_brt(default_brightness,
+ display_backlight_change_brightness(default_brightness,
LCD_PHASED_MIN_BRIGHTNESS, LCD_PHASED_CHANGE_STEP);
if (flags & FORCE_OFF_MODE)