tizen 2.3 release tizen_2.3 submit/tizen_2.3/20150202.052551 tizen_2.3_release
authorjk7744.park <jk7744.park@samsung.com>
Sun, 1 Feb 2015 03:52:15 +0000 (12:52 +0900)
committerjk7744.park <jk7744.park@samsung.com>
Sun, 1 Feb 2015 03:52:15 +0000 (12:52 +0900)
include/devman_define_node_path.h
src/device_manager_plugin_exynos3250.c

index 46b88cf..18bbc41 100755 (executable)
@@ -37,6 +37,8 @@
 #define IMAGE_ENHANCE_PATH                     "/sys/class/extension/mdnie/%s"
 #define IMAGE_ENHANCE_PATH_INFO                        "/sys/class/extension/mdnie"
 
+#define DRM_PATH       "/sys/devices/platform/exynos-drm/drm/card0"
+
 #define DISPLAY_FRAME_RATE_PATH        "/sys/class/graphics/fb0/dynamic_fps"
 #define DISPLAY_MISC_LCD_FPS_PATH        "/sys/class/sec/sec_misc/lcd_fps"
 
index 535dab3..6efd78d 100755 (executable)
@@ -799,36 +799,52 @@ int OEM_sys_set_backlight_elvss_control(int index, int value)
 
 int OEM_sys_get_lcd_power(int index, int *value)
 {
-       int ret = -1;
-       char path[MAX_NAME+1];
-
-       if (index >= DISP_MAX) {
-               devmgr_log("supports %d display node", DISP_MAX);
-               return ret;
+       static const char *str_conn = "connected";
+       static const char *str_on = "On", *str_off = "Off";
+       DIR *dir;
+       struct dirent *dent;
+       char path[PATH_MAX], buf[BUFF_MAX] = {0,};
+       int ret, connected = 0;
+
+       dir = opendir(DRM_PATH);
+       if (!dir)
+               return -errno;
+
+       while ((dent = readdir(dir))) {
+               if (!(dent->d_type == DT_DIR && strstr(dent->d_name, "card0")))
+                       continue;
+
+               snprintf(path, sizeof(path), "%s/%s/status", DRM_PATH, dent->d_name);
+               ret = sys_get_str(path, buf);
+               if (!strncmp(buf, str_conn, strlen(str_conn))) {
+                       connected = 1;
+                       break;
+               }
        }
 
-       snprintf(path, MAX_NAME, LCD_POWER_PATH, disp_info[index].lcd_name);
-       ret = sys_get_int(path, value);
-       /*devmgr_log("path[%s]value[%d]", path, *value);*/
+       closedir(dir);
 
-       return ret;
-}
+       if (!connected)
+               return -ENOENT;
 
-int OEM_sys_set_lcd_power(int index, int value)
-{
-       int ret = -1;
-       char path[MAX_NAME+1];
+       memset(buf, 0, sizeof(buf));
+       snprintf(path, sizeof(path), "%s/%s/dpms", DRM_PATH, dent->d_name);
+       ret = sys_get_str(path, buf);
 
-       if (index >= DISP_MAX) {
-               devmgr_log("supports %d display node", DISP_MAX);
-               return ret;
-       }
+       if (!strncmp(buf, str_on, strlen(str_on)))
+               *value = 0;
+       else if (!strncmp(buf, str_off, strlen(str_off)))
+               *value = 4;
+       else
+               return -EPERM;
 
-       snprintf(path, MAX_NAME, LCD_POWER_PATH, disp_info[index].lcd_name);
-       devmgr_log("path[%s]value[%d]", path, value);
-       ret = sys_set_int(path, value);
+       devmgr_log("%s - %d", path, *value);
+       return 0;
+}
 
-       return ret;
+int OEM_sys_set_lcd_power(int index, int value)
+{
+       return -EPERM;
 }
 
 /* image_enhance */