display: Update device-interface code more simple 94/38994/1
authorJiyoung Yun <jy910.yun@samsung.com>
Wed, 6 May 2015 10:13:30 +0000 (19:13 +0900)
committerJiyoung Yun <jy910.yun@samsung.com>
Wed, 6 May 2015 10:13:30 +0000 (19:13 +0900)
Do not use deprecated OAL functions (device_set/get_property)
instead it accesses /sys/power/* nodes directly.
And remove the unnecessary x-lcd-on.c file and PMSys structure.

Change-Id: I37495125589f7e9d9880e333416d1bfea7e2fa1c
Signed-off-by: Jiyoung Yun <jy910.yun@samsung.com>
src/display/core.c
src/display/device-interface.c
src/display/device-interface.h
src/display/x-lcd-on.c [deleted file]

index 2aa8260..d5bfe1e 100644 (file)
@@ -82,7 +82,6 @@ static enum device_ops_status status = DEVICE_OPS_STATUS_UNINIT;
 int pm_cur_state;
 int pm_old_state;
 Ecore_Timer *timeout_src_id;
-static int pre_suspend_flag = false;
 int system_wakeup_flag = false;
 static unsigned int custom_normal_timeout = 0;
 static unsigned int custom_dim_timeout = 0;
@@ -705,10 +704,6 @@ void lcd_on_direct(enum device_flags flags)
            && pm_cur_state == S_SLEEP)
                power_ops.power_lock();
 
-       if (pre_suspend_flag == true) {
-               power_ops.post_resume();
-               pre_suspend_flag = false;
-       }
 #ifdef MICRO_DD
        _D("lcd is on directly");
        gettimeofday(&lcdon_tv, NULL);
@@ -1625,13 +1620,9 @@ static int default_action(int timeout)
                 * normal state : backlight on and restore
                 * the previous brightness
                 */
-               if (pm_old_state == S_LCDOFF || pm_old_state == S_SLEEP) {
-                       if (pre_suspend_flag == true) {
-                               power_ops.post_resume();
-                               pre_suspend_flag = false;
-                       }
+               if (pm_old_state == S_LCDOFF || pm_old_state == S_SLEEP)
                        check_lock_screen();
-               else if (pm_old_state == S_LCDDIM)
+               else if (pm_old_state == S_LCDDIM)
                        backlight_ops.update();
 
                if (check_lcd_on() == true)
@@ -1657,11 +1648,6 @@ static int default_action(int timeout)
                        /* lcd off state : turn off the backlight */
                        if (backlight_ops.get_lcd_power() != PM_LCD_POWER_OFF)
                                lcd_off_procedure();
-
-                       if (pre_suspend_flag == false) {
-                               pre_suspend_flag = true;
-                               power_ops.pre_suspend();
-                       }
                }
 
                if (backlight_ops.get_lcd_power() != PM_LCD_POWER_OFF
@@ -1678,8 +1664,7 @@ static int default_action(int timeout)
 
                if (!power_ops.get_power_lock_support()) {
                        /* sleep state : set system mode to SUSPEND */
-                       if (device_get_property(DEVICE_TYPE_POWER,
-                           PROP_POWER_WAKEUP_COUNT, &wakeup_count) < 0)
+                       if (power_ops.get_wakeup_count(&wakeup_count) < 0)
                                _E("wakeup count read error");
 
                        if (wakeup_count < 0) {
@@ -1687,8 +1672,7 @@ static int default_action(int timeout)
                                goto go_lcd_off;
                        }
 
-                       if (device_set_property(DEVICE_TYPE_POWER,
-                           PROP_POWER_WAKEUP_COUNT, wakeup_count) < 0) {
+                       if (power_ops.set_wakeup_count(wakeup_count) < 0) {
                                _E("wakeup count write error");
                                goto go_lcd_off;
                        }
index 17bd707..bc455f0 100644 (file)
 #define LCD_PHASED_CHANGE_STEP         5
 #define LCD_PHASED_DELAY               35000 /* microsecond */
 
-#define POWER_LOCK_PATH                "/sys/power/wake_lock"
-#define POWER_UNLOCK_PATH      "/sys/power/wake_unlock"
+#define POWER_LOCK_PATH         "/sys/power/wake_lock"
+#define POWER_UNLOCK_PATH       "/sys/power/wake_unlock"
+#define POWER_WAKEUP_PATH       "/sys/power/wakeup_count"
+#define POWER_STATE_PATH        "/sys/power/state"
 
 enum {
        POWER_UNLOCK = 0,
        POWER_LOCK,
 };
 
-typedef struct _PMSys PMSys;
-struct _PMSys {
-       int def_brt;
-       int dim_brt;
-
-       int (*sys_power_state) (PMSys *, int);
-       int (*sys_power_lock) (PMSys *, int);
-       int (*sys_get_power_lock_support) (PMSys *);
-       int (*sys_get_lcd_power) (PMSys *);
-       int (*bl_onoff) (PMSys *, int);
-       int (*bl_brt) (PMSys *, int, int);
-};
-
-static PMSys *pmsys;
 struct _backlight_ops backlight_ops;
 struct _power_ops power_ops;
 
-#ifdef ENABLE_X_LCD_ONOFF
-#include "x-lcd-on.c"
-static bool x_dpms_enable = false;
-#endif
-
-static int power_lock_support = -1;
-static bool custom_status = false;
-static int custom_brightness = 0;
-static int force_brightness = 0;
+static bool custom_status;
+static int custom_brightness;
+static int force_brightness;
+static int default_brightness;
 
 static struct display_device *display_dev;
 
-static int _bl_onoff(PMSys *p, int on)
+static int bl_onoff(int on)
 {
        if (!display_dev || !display_dev->set_state) {
                _E("there is no display device");
@@ -94,7 +77,7 @@ static int _bl_onoff(PMSys *p, int on)
        return display_dev->set_state(on);
 }
 
-static int _bl_brt(PMSys *p, int brightness, int delay)
+static int bl_brt(int brightness, int delay)
 {
        int ret = -1;
        int prev;
@@ -109,7 +92,7 @@ static int _bl_brt(PMSys *p, int brightness, int delay)
        if (delay > 0)
                usleep(delay);
 
-       if (force_brightness > 0 && brightness != p->dim_brt) {
+       if (force_brightness > 0 && brightness != PM_DIM_BRIGHTNESS) {
                _I("brightness(%d), force brightness(%d)",
                    brightness, force_brightness);
                brightness = force_brightness;
@@ -130,175 +113,64 @@ static int _bl_brt(PMSys *p, int brightness, int delay)
        return ret;
 }
 
-static int _sys_power_state(PMSys *p, int state)
-{
-       if (state < POWER_STATE_SUSPEND || state > POWER_STATE_POST_RESUME)
-               return 0;
-       return device_set_property(DEVICE_TYPE_POWER, PROP_POWER_STATE, state);
-}
-
-static int _sys_power_lock(PMSys *p, int state)
-{
-       if (state == POWER_LOCK)
-               return sys_set_str(POWER_LOCK_PATH, "mainlock");
-       else if (state == POWER_UNLOCK)
-               return sys_set_str(POWER_UNLOCK_PATH, "mainlock");
-       else
-               return -EINVAL;
-}
-
-static int _sys_get_power_lock_support(PMSys *p)
-{
-       int value = 0;
-       int ret;
-
-       ret = sys_check_node(POWER_LOCK_PATH);
-       if (ret < 0)
-               return 0;
-       return 1;
-}
-
-static int _sys_get_lcd_power(PMSys *p)
-{
-       enum display_state state;
-       int ret;
-
-       if (!display_dev || !display_dev->get_state) {
-               _E("there is no display device");
-               return -ENOENT;
-       }
-
-       ret = display_dev->get_state(&state);
-       if (ret < 0)
-               return ret;
-
-       return state;
-}
-
-static void _init_bldev(PMSys *p, unsigned int flags)
-{
-       int ret;
-       //_update_curbrt(p);
-       p->bl_brt = _bl_brt;
-       p->bl_onoff = _bl_onoff;
-#ifdef ENABLE_X_LCD_ONOFF
-       if (flags & FLAG_X_DPMS) {
-               p->bl_onoff = pm_x_set_lcd_backlight;
-               x_dpms_enable = true;
-       }
-#endif
-}
-
-static void _init_pmsys(PMSys *p)
-{
-       char *val;
-
-       val = getenv("PM_SYS_DIMBRT");
-       p->dim_brt = (val ? atoi(val) : 0);
-       p->sys_power_state = _sys_power_state;
-       p->sys_power_lock = _sys_power_lock;
-       p->sys_get_power_lock_support = _sys_get_power_lock_support;
-       p->sys_get_lcd_power = _sys_get_lcd_power;
-}
-
-static void *_system_suspend_cb(void *data)
-{
-       int ret;
-
-       _I("enter system suspend");
-       if (pmsys && pmsys->sys_power_state)
-               ret = pmsys->sys_power_state(pmsys, POWER_STATE_SUSPEND);
-       else
-               ret = -EFAULT;
-
-       if (ret < 0)
-               _E("Failed to system suspend! %d", ret);
-
-       return NULL;
-}
-
 static int system_suspend(void)
 {
-       pthread_t pth;
        int ret;
 
-       ret = pthread_create(&pth, 0, _system_suspend_cb, (void*)NULL);
-       if (ret < 0) {
-               _E("pthread creation failed!, suspend directly!");
-               _system_suspend_cb((void*)NULL);
-       } else {
-               pthread_join(pth, NULL);
-       }
-
-       return 0;
-}
-
-static int system_pre_suspend(void)
-{
-       _I("enter system pre suspend");
-       if (pmsys && pmsys->sys_power_state)
-               return pmsys->sys_power_state(pmsys, POWER_STATE_PRE_SUSPEND);
-
-       return 0;
-}
-
-static int system_post_resume(void)
-{
-       _I("enter system post resume");
-       if (pmsys && pmsys->sys_power_state)
-               return pmsys->sys_power_state(pmsys, POWER_STATE_POST_RESUME);
-
+       _I("system suspend");
+       ret = sys_set_str(POWER_STATE_PATH, "mem");
+       _I("system resume (result : %d)", ret);
        return 0;
 }
 
 static int system_power_lock(void)
 {
        _I("system power lock");
-       if (pmsys && pmsys->sys_power_lock)
-               return pmsys->sys_power_lock(pmsys, POWER_LOCK);
-
-       return 0;
+       return sys_set_str(POWER_LOCK_PATH, "mainlock");
 }
 
 static int system_power_unlock(void)
 {
        _I("system power unlock");
-       if (pmsys && pmsys->sys_power_lock)
-               return pmsys->sys_power_lock(pmsys, POWER_UNLOCK);
-
-       return 0;
+       return sys_set_str(POWER_UNLOCK_PATH, "mainlock");
 }
 
 static int system_get_power_lock_support(void)
 {
-       int value = -1;
-
-       if (power_lock_support == -1) {
-               if (pmsys && pmsys->sys_get_power_lock_support) {
-                       value = pmsys->sys_get_power_lock_support(pmsys);
-                       if (value == 1) {
-                                       _I("system power lock : support");
-                                       power_lock_support = 1;
-                       } else {
-                               _E("system power lock : not support");
-                               power_lock_support = 0;
-                       }
-               } else {
-                       _E("system power lock : read fail");
-                       power_lock_support = 0;
-               }
-       }
+       static int power_lock_support = -1;
+       int ret;
+
+       if (power_lock_support >= 0)
+               goto out;
 
+       ret = sys_check_node(POWER_LOCK_PATH);
+       if (ret < 0)
+               power_lock_support = false;
+       else
+               power_lock_support = true;
+
+       _I("system power lock : %s",
+                       (power_lock_support ? "support" : "not support"));
+
+out:
        return power_lock_support;
 }
 
 static int get_lcd_power(void)
 {
-       if (pmsys && pmsys->sys_get_lcd_power) {
-               return pmsys->sys_get_lcd_power(pmsys);
+       enum display_state state;
+       int ret;
+
+       if (!display_dev || !display_dev->get_state) {
+               _E("there is no display device");
+               return -ENOENT;
        }
 
-       return -1;
+       ret = display_dev->get_state(&state);
+       if (ret < 0)
+               return ret;
+
+       return state;
 }
 
 void change_brightness(int start, int end, int step)
@@ -343,7 +215,7 @@ void change_brightness(int start, int end, int step)
                    (val < 0 && start < end))
                        start = end;
 
-               pmsys->bl_brt(pmsys, start, LCD_PHASED_DELAY);
+               bl_brt(start, LCD_PHASED_DELAY);
        }
 }
 
@@ -354,11 +226,8 @@ static int backlight_on(enum device_flags flags)
 
        _D("LCD on %x", flags);
 
-       if (!pmsys || !pmsys->bl_onoff)
-               return -1;
-
        for (i = 0; i < PM_LCD_RETRY_CNT; i++) {
-               ret = pmsys->bl_onoff(pmsys, DISPLAY_ON);
+               ret = bl_onoff(DISPLAY_ON);
                if (get_lcd_power() == DISPLAY_ON) {
 #ifdef ENABLE_PM_LOG
                        pm_history_save(PM_LOG_LCD_ON, pm_cur_state);
@@ -368,18 +237,14 @@ static int backlight_on(enum device_flags flags)
 #ifdef ENABLE_PM_LOG
                        pm_history_save(PM_LOG_LCD_ON_FAIL, pm_cur_state);
 #endif
-#ifdef ENABLE_X_LCD_ONOFF
-                       _E("Failed to LCD on, through xset");
-#else
                        _E("Failed to LCD on, through OAL");
-#endif
                        ret = -1;
                }
        }
 
        if (flags & LCD_PHASED_TRANSIT_MODE)
                change_brightness(LCD_PHASED_MIN_BRIGHTNESS,
-                   pmsys->def_brt, LCD_PHASED_CHANGE_STEP);
+                   default_brightness, LCD_PHASED_CHANGE_STEP);
 
        return ret;
 }
@@ -391,19 +256,13 @@ static int backlight_off(enum device_flags flags)
 
        _D("LCD off %x", flags);
 
-       if (!pmsys || !pmsys->bl_onoff)
-               return -1;
-
        if (flags & LCD_PHASED_TRANSIT_MODE)
-               change_brightness(pmsys->def_brt,
+               change_brightness(default_brightness,
                    LCD_PHASED_MIN_BRIGHTNESS, LCD_PHASED_CHANGE_STEP);
 
        for (i = 0; i < PM_LCD_RETRY_CNT; i++) {
-#ifdef ENABLE_X_LCD_ONOFF
-               if (x_dpms_enable == false)
-#endif
-                       usleep(30000);
-               ret = pmsys->bl_onoff(pmsys, DISPLAY_OFF);
+               usleep(30000);
+               ret = bl_onoff(DISPLAY_OFF);
                if (get_lcd_power() == DISPLAY_OFF) {
 #ifdef ENABLE_PM_LOG
                        pm_history_save(PM_LOG_LCD_OFF, pm_cur_state);
@@ -413,11 +272,7 @@ static int backlight_off(enum device_flags flags)
 #ifdef ENABLE_PM_LOG
                        pm_history_save(PM_LOG_LCD_OFF_FAIL, pm_cur_state);
 #endif
-#ifdef ENABLE_X_LCD_ONOFF
-                       _E("Failed to LCD off, through xset");
-#else
                        _E("Failed to LCD off, through OAL");
-#endif
                        ret = -1;
                }
        }
@@ -426,16 +281,15 @@ static int backlight_off(enum device_flags flags)
 
 static int backlight_dim(void)
 {
-       int ret = 0;
-       if (pmsys && pmsys->bl_brt) {
-               ret = pmsys->bl_brt(pmsys, pmsys->dim_brt, 0);
+       int ret;
+
+       ret = bl_brt(PM_DIM_BRIGHTNESS, 0);
 #ifdef ENABLE_PM_LOG
-               if (!ret)
-                       pm_history_save(PM_LOG_LCD_DIM, pm_cur_state);
-               else
-                       pm_history_save(PM_LOG_LCD_DIM_FAIL, pm_cur_state);
+       if (!ret)
+               pm_history_save(PM_LOG_LCD_DIM, pm_cur_state);
+       else
+               pm_history_save(PM_LOG_LCD_DIM_FAIL, pm_cur_state);
 #endif
-       }
        return ret;
 }
 
@@ -477,9 +331,9 @@ static int custom_backlight_update(void)
 
        if ((pm_status_flag & PWRSV_FLAG) && !(pm_status_flag & BRTCH_FLAG)) {
                ret = backlight_dim();
-       } else if (pmsys && pmsys->bl_brt) {
+       } else {
                _I("custom brightness restored! %d", custom_brightness);
-               ret = pmsys->bl_brt(pmsys, custom_brightness, 0);
+               ret = bl_brt(custom_brightness, 0);
        }
 
        return ret;
@@ -505,8 +359,8 @@ static int backlight_update(void)
        }
        if ((pm_status_flag & PWRSV_FLAG) && !(pm_status_flag & BRTCH_FLAG)) {
                ret = backlight_dim();
-       } else if (pmsys && pmsys->bl_brt) {
-               ret = pmsys->bl_brt(pmsys, pmsys->def_brt, 0);
+       } else {
+               ret = bl_brt(default_brightness, 0);
        }
        return ret;
 }
@@ -514,12 +368,10 @@ static int backlight_update(void)
 static int backlight_standby(int force)
 {
        int ret = -1;
-       if (!pmsys || !pmsys->bl_onoff)
-               return -1;
 
        if ((get_lcd_power() == DISPLAY_ON) || force) {
                _I("LCD standby");
-               ret = pmsys->bl_onoff(pmsys, DISPLAY_STANDBY);
+               ret = bl_onoff(DISPLAY_STANDBY);
        }
 
        return ret;
@@ -527,12 +379,10 @@ static int backlight_standby(int force)
 
 static int set_default_brt(int level)
 {
-       if (!pmsys)
-               return -EFAULT;
-
        if (level < PM_MIN_BRIGHTNESS || level > PM_MAX_BRIGHTNESS)
                level = PM_DEFAULT_BRIGHTNESS;
-       pmsys->def_brt = level;
+
+       default_brightness = level;
 
        return 0;
 }
@@ -545,6 +395,33 @@ static int check_wakeup_src(void)
        return EVENT_DEVICE;
 }
 
+static int get_wakeup_count(int *cnt)
+{
+       int ret;
+       int wakeup_count;
+
+       if (!cnt)
+               return -EINVAL;
+
+       ret = sys_get_int(POWER_WAKEUP_PATH, &wakeup_count);
+       if (ret < 0)
+               return ret;
+
+       *cnt = wakeup_count;
+       return 0;
+}
+
+static int set_wakeup_count(int cnt)
+{
+       int ret;
+
+       ret = sys_set_int(POWER_WAKEUP_PATH, cnt);
+       if (ret < 0)
+               return ret;
+
+       return 0;
+}
+
 static int set_brightness(int val)
 {
        if (!display_dev || !display_dev->set_brightness) {
@@ -565,7 +442,7 @@ static int get_brightness(int *val)
        return display_dev->get_brightness(val);
 }
 
-void _init_ops(void)
+static void _init_ops(void)
 {
        backlight_ops.off = backlight_off;
        backlight_ops.dim = backlight_dim;
@@ -583,12 +460,12 @@ void _init_ops(void)
        backlight_ops.get_brightness = get_brightness;
 
        power_ops.suspend = system_suspend;
-       power_ops.pre_suspend = system_pre_suspend;
-       power_ops.post_resume = system_post_resume;
        power_ops.power_lock = system_power_lock;
        power_ops.power_unlock = system_power_unlock;
        power_ops.get_power_lock_support = system_get_power_lock_support;
        power_ops.check_wakeup_src = check_wakeup_src;
+       power_ops.get_wakeup_count = get_wakeup_count;
+       power_ops.set_wakeup_count = set_wakeup_count;
 }
 
 int display_service_load(void)
@@ -636,26 +513,7 @@ int display_service_free(void)
 
 int init_sysfs(unsigned int flags)
 {
-       int ret;
-
-       pmsys = (PMSys *) malloc(sizeof(PMSys));
-       if (pmsys == NULL) {
-               _E("Not enough memory to alloc PM Sys");
-               return -1;
-       }
-
-       memset(pmsys, 0x0, sizeof(PMSys));
-
-       _init_pmsys(pmsys);
-       _init_bldev(pmsys, flags);
-
-       if (pmsys->bl_onoff == NULL || pmsys->sys_power_state == NULL) {
-               _E("We have no managable resource to reduce the power consumption");
-               return -1;
-       }
-
        _init_ops();
-
        return 0;
 }
 
@@ -680,8 +538,6 @@ int exit_sysfs(void)
        if (!check_default(ops))
                ops->start(NORMAL_MODE);
 
-       free(pmsys);
-       pmsys = NULL;
        if(fd != -1)
                close(fd);
 
index 01f44ef..1b9a011 100644 (file)
@@ -34,6 +34,7 @@
 #define PM_MAX_BRIGHTNESS       100
 #define PM_MIN_BRIGHTNESS       1
 #define PM_DEFAULT_BRIGHTNESS  60
+#define PM_DIM_BRIGHTNESS      0
 
 #define PM_LCD_POWER_ON                0
 #define PM_LCD_POWER_OFF       3
@@ -80,12 +81,12 @@ struct _backlight_ops {
 
 struct _power_ops {
        int (*suspend)(void);
-       int (*pre_suspend)(void);
-       int (*post_resume)(void);
        int (*power_lock)(void);
        int (*power_unlock)(void);
        int (*get_power_lock_support)(void);
        int (*check_wakeup_src)(void);
+       int (*get_wakeup_count)(int *cnt);
+       int (*set_wakeup_count)(int cnt);
 };
 
 extern struct _backlight_ops backlight_ops;
diff --git a/src/display/x-lcd-on.c b/src/display/x-lcd-on.c
deleted file mode 100644 (file)
index 807b6b3..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  deviced
- *
- * Copyright (c) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
-*/
-
-
-#ifndef __PM_X_LCD_ONOFF_C__
-#define __PM_X_LCD_ONOFF_C__
-
-#include <string.h>
-#include <sys/wait.h>
-#include <errno.h>
-
-#include "core/log.h"
-#include "core/common.h"
-
-#define CMD_ON         "on"
-#define CMD_OFF                "off"
-#define CMD_STANDBY    "standby"
-
-static const char *xset_arg[] = {
-       "/usr/bin/xset",
-       "dpms", "force", NULL, NULL,
-};
-
-static int pm_x_set_lcd_backlight(struct _PMSys *p, int on)
-{
-       pid_t pid;
-       char cmd_line[8];
-       int argc;
-
-       _D("Backlight on=%d", on);
-
-       switch (on) {
-       case STATUS_ON:
-               snprintf(cmd_line, sizeof(cmd_line), "%s", CMD_ON);
-               break;
-       case STATUS_OFF:
-               snprintf(cmd_line, sizeof(cmd_line), "%s", CMD_OFF);
-               break;
-       case STATUS_STANDBY:
-               snprintf(cmd_line, sizeof(cmd_line), "%s", CMD_STANDBY);
-               break;
-       }
-
-       argc = ARRAY_SIZE(xset_arg);
-       xset_arg[argc - 2] = cmd_line;
-       return run_child(argc, xset_arg);
-}
-
-#endif                         /*__PM_X_LCD_ONOFF_C__ */