display: backlight: Relocate display_backlight_set/get/change_brightness() to reduce... 02/289202/9
authorYunhee Seo <yuni.seo@samsung.com>
Thu, 2 Mar 2023 10:53:27 +0000 (19:53 +0900)
committeryunhee <yuni.seo@samsung.com>
Mon, 20 Mar 2023 08:07:20 +0000 (17:07 +0900)
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>
16 files changed:
plugins/iot-headed/display/core.c
plugins/iot-headed/display/device-interface.c
plugins/mobile/display/core.c
plugins/mobile/display/device-interface.c
plugins/tv/display/core.c
plugins/tv/display/device-interface.c
plugins/wearable/display/auto-brightness-sensorhub.c
plugins/wearable/display/core.c
plugins/wearable/display/device-interface.c
plugins/wearable/display/lbm.c
src/display/auto-brightness.c
src/display/device-interface.h
src/display/display-backlight.c
src/display/display-backlight.h
src/display/display-dbus.c
src/display/display-panel.c

index d87a3cc..30bf606 100644 (file)
@@ -1436,7 +1436,7 @@ static int default_action(int timeout)
        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 */
@@ -1702,7 +1702,7 @@ static void check_seed_status(void)
        }
        _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) {
index cb0941c..a46ca4d 100644 (file)
@@ -52,7 +52,6 @@
 #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"
 
@@ -92,126 +91,6 @@ bool display_dimstay_check(void)
        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)
 {
@@ -221,21 +100,21 @@ 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) {
@@ -246,7 +125,7 @@ static int backlight_transit_state(int state)
 
                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;
@@ -254,18 +133,18 @@ static int backlight_transit_state(int state)
 
 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)
index 245d7eb..398e68b 100644 (file)
@@ -1446,7 +1446,7 @@ static int default_action(int timeout)
        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 */
@@ -1712,7 +1712,7 @@ static void check_seed_status(void)
        }
        _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) {
index a416a44..fb2abbf 100644 (file)
@@ -53,7 +53,6 @@
 #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"
 
@@ -91,126 +90,6 @@ bool display_dimstay_check(void)
        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)
 {
@@ -220,21 +99,21 @@ 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) {
@@ -245,7 +124,7 @@ static int backlight_transit_state(int state)
 
                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;
@@ -253,18 +132,18 @@ static int backlight_transit_state(int state)
 
 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)
index e36a91b..d434bd4 100644 (file)
@@ -1436,7 +1436,7 @@ static int default_action(int timeout)
        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 */
@@ -1702,7 +1702,7 @@ static void check_seed_status(void)
        }
        _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) {
index a52a506..1caaa12 100644 (file)
@@ -52,7 +52,6 @@
 #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"
 
@@ -92,126 +91,6 @@ bool display_dimstay_check(void)
        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)
 {
@@ -221,21 +100,21 @@ 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) {
@@ -246,7 +125,7 @@ static int backlight_transit_state(int state)
 
                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;
@@ -254,18 +133,18 @@ static int backlight_transit_state(int state)
 
 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)
index 6e7226e..77e5030 100644 (file)
@@ -49,7 +49,7 @@ static void change_brightness_transit(int start, int end)
                _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);
 }
 
@@ -94,7 +94,7 @@ static void set_brightness_level(int level)
                break;
        case SPECIFIC_MODE_OFF:
                display_backlight_get_default_brightness(&default_brightness);
-               backlight_ops->get_brightness(&current_brightness);
+               display_backlight_get_brightness_by_plugin_profile(&current_brightness);
 
                /* Disable HBM, LBM */
                auto_brightness_control(BR_HBM_OFF, BR_IMPLICIT);
@@ -187,7 +187,7 @@ int auto_brightness_control(enum brightness_request_e request, int set_brightnes
        int ret;
 
        display_backlight_get_default_brightness(&default_brightness);
-       backlight_ops->get_brightness(&current_brightness);
+       display_backlight_get_brightness_by_plugin_profile(&current_brightness);
 
        if (request == BR_LBM_ON) {
                if (!get_lbm_setting())
@@ -195,12 +195,12 @@ int auto_brightness_control(enum brightness_request_e request, int set_brightnes
                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);
@@ -226,7 +226,7 @@ int auto_brightness_control(enum brightness_request_e request, int set_brightnes
                        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) {
@@ -246,7 +246,7 @@ int auto_brightness_control(enum brightness_request_e request, int set_brightnes
 
                        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();
                        }
@@ -271,7 +271,7 @@ int auto_brightness_control(enum brightness_request_e request, int set_brightnes
                                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) {
@@ -279,11 +279,11 @@ int auto_brightness_control(enum brightness_request_e request, int set_brightnes
                        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) {
@@ -299,7 +299,7 @@ int auto_brightness_control(enum brightness_request_e request, int set_brightnes
                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;
index a87e408..c62c3db 100644 (file)
@@ -1707,7 +1707,7 @@ static int default_action(int timeout)
        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 */
@@ -1969,7 +1969,7 @@ static void check_seed_status(void)
        }
        _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) {
index 4b3c185..6f84242 100644 (file)
@@ -55,7 +55,6 @@
 #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"
 
@@ -101,60 +100,6 @@ bool display_dimstay_check(void)
        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;
@@ -194,34 +139,6 @@ static int set_brightness(int 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)
 {
@@ -232,17 +149,17 @@ 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
                 *
@@ -296,7 +213,7 @@ static int backlight_transit_state(int state)
 
                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 */
@@ -309,7 +226,7 @@ static int backlight_transit_state(int state)
                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;
@@ -318,19 +235,17 @@ static int backlight_transit_state(int state)
 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)
index f60eea9..f256247 100644 (file)
@@ -26,6 +26,7 @@
 #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"
@@ -140,7 +141,7 @@ static void lbm_change_brightness(int start, int end, int step)
        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);
@@ -163,7 +164,7 @@ static void lbm_change_brightness(int start, int end, int step)
                        if (ret < 0)
                                _E("Failed to set_multi_brightness, %d.", ret);
 
-                       backlight_ops->set_brightness(end);
+                       display_backlight_set_brightness(end);
 
                        return;
                }
@@ -186,7 +187,7 @@ static void lbm_change_brightness(int start, int end, int step)
                        start = end;
 
                usleep(LCD_PHASED_DELAY);
-               backlight_ops->set_brightness(start);
+               display_backlight_set_brightness(start);
        }
 }
 
index 393794f..866c6ad 100644 (file)
@@ -110,7 +110,7 @@ static void alc_set_brightness(int setting, int value, float light)
        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;
index 7de0e98..70d2592 100644 (file)
@@ -64,7 +64,6 @@ struct _backlight_ops {
        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);
index 0f3e8ea..538a1da 100644 (file)
  * 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"
@@ -26,6 +29,7 @@
 #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;
@@ -103,6 +107,144 @@ int display_backlight_get_normalized_brightness(int raw_brightness,
        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) {
@@ -127,7 +269,7 @@ int display_backlight_set_brightness_by_dim_brightness(void)
 {
        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)
@@ -155,7 +297,7 @@ int display_backlight_update_by_default_brightness(void)
                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;
@@ -179,7 +321,7 @@ int display_backlight_update_by_custom_brightness(void)
                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;
@@ -228,7 +370,7 @@ static gboolean blink_cb(gpointer data)
 {
        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;
@@ -282,7 +424,7 @@ int display_backlight_set_brightness_with_delay(int brightness, int delay)
                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;
index 7c1349d..538d7c7 100644 (file)
 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);
index 091bcc5..cdcfc38 100644 (file)
@@ -410,7 +410,7 @@ static GVariant *dbus_getbrightness(GDBusConnection *conn,
        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
@@ -475,7 +475,7 @@ static GVariant *dbus_setbrightness(GDBusConnection *conn,
                        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);
@@ -484,7 +484,7 @@ static GVariant *dbus_setbrightness(GDBusConnection *conn,
                }
        } 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;
                }
@@ -538,7 +538,7 @@ static GVariant *dbus_holdbrightness(GDBusConnection *conn,
        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;
@@ -606,7 +606,7 @@ static GVariant *dbus_releasebrightness(GDBusConnection *conn,
        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;
 
@@ -615,7 +615,7 @@ static GVariant *dbus_releasebrightness(GDBusConnection *conn,
            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;
        }
 
@@ -624,7 +624,7 @@ static GVariant *dbus_releasebrightness(GDBusConnection *conn,
                        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");
@@ -1198,7 +1198,7 @@ static GVariant *dbus_getbrightnessinfo(GDBusConnection *conn,
        int current_brightness;
 
        display_backlight_get_default_brightness(&default_brightness);
-       backlight_ops->get_brightness_raw(&current_brightness);
+       display_backlight_get_brightness(&current_brightness);
 
        return g_variant_new("(ii)", default_brightness, current_brightness);
 }
index f9e49d6..7900a58 100644 (file)
@@ -156,7 +156,7 @@ int display_panel_set_panel_state_by_off_state(enum device_flags flags)
        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)