display: Add display implementation 72/37572/1 submit/tizen/20150423.020639 submit/tizen_mobile/20150428.072824
authorJiyoung Yun <jy910.yun@samsung.com>
Tue, 31 Mar 2015 07:52:38 +0000 (16:52 +0900)
committerJiyoung Yun <jy910.yun@samsung.com>
Tue, 31 Mar 2015 07:53:14 +0000 (16:53 +0900)
Detail info:
https://wiki.tizen.org/wiki/HAL_upgrade_for_Tizen_3.0

Signed-off-by: Jiyoung Yun <jy910.yun@samsung.com>
Change-Id: I841d00ccefcbde88773558929cb887916bcf0e50

CMakeLists.txt
hw/display/CMakeLists.txt [new file with mode: 0644]
hw/display/display.c [moved from hw/backlight.c with 52% similarity]
hw/led/CMakeLists.txt [new file with mode: 0644]
hw/led/led.c [moved from hw/led.c with 99% similarity]
hw/shared.h
packaging/device-manager-plugin-exynos5433.spec

index 4a501fa..9175ff1 100644 (file)
@@ -3,16 +3,5 @@ PROJECT(device-manager-exynos5433 C)
 
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED dlog hwcommon)
-
-FOREACH(flag ${pkgs_CFLAGS})
-       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
-
-ADD_LIBRARY(led MODULE hw/led.c hw/shared.c)
-SET_TARGET_PROPERTIES(led PROPERTIES PREFIX "")
-INSTALL(TARGETS led DESTINATION ${LIB_INSTALL_DIR}/hw COMPONENT RuntimeLibraries)
+ADD_SUBDIRECTORY(hw/display)
+ADD_SUBDIRECTORY(hw/led)
diff --git a/hw/display/CMakeLists.txt b/hw/display/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f1193e8
--- /dev/null
@@ -0,0 +1,19 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(display C)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(display_pkgs REQUIRED hwcommon dlog x11 xext)
+
+FOREACH(flag ${display_pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
+ADD_LIBRARY(${PROJECT_NAME} MODULE display.c ../shared.c)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${display_pkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "")
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR}/hw COMPONENT RuntimeLibraries)
similarity index 52%
rename from hw/backlight.c
rename to hw/display/display.c
index 6411813..f956d51 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <linux/limits.h>
+#include <X11/Xlib.h>
+#include <X11/extensions/dpms.h>
 
-#include <hw/backlight.h>
-#include "shared.h"
+#include <hw/display.h>
+#include "../shared.h"
 
 #ifndef BACKLIGHT_PATH
-#define BACKLIGHT_PATH "/sys/class/backlight/s6e8aa0-bl"
+#define BACKLIGHT_PATH  "/sys/class/backlight/s6e3ha2"
 #endif
 
 static int get_max_brightness(int *val)
@@ -48,7 +50,7 @@ static int get_max_brightness(int *val)
        return 0;
 }
 
-static int backlight_get_brightness(int *brightness)
+static int display_get_brightness(int *brightness)
 {
        int r, v;
 
@@ -67,7 +69,7 @@ static int backlight_get_brightness(int *brightness)
        return 0;
 }
 
-static int backlight_set_brightness(int brightness)
+static int display_set_brightness(int brightness)
 {
        int r, v, max;
 
@@ -92,50 +94,86 @@ static int backlight_set_brightness(int brightness)
        return 0;
 }
 
-static int backlight_get_mode(enum backlight_mode *mode)
+static int display_get_power_state(enum display_state *state)
 {
-       if (!mode) {
-               _E("wrong parameter");
-               return -EINVAL;
+       Display *dpy;
+       int dummy;
+       CARD16 dpms_state = DPMSModeOff;
+       BOOL onoff;
+
+       dpy = XOpenDisplay(NULL);
+       if (dpy == NULL) {
+               _E("fail to open display");
+               return -EPERM;
        }
 
-       *mode = BACKLIGHT_MANUAL;
+       if (DPMSQueryExtension(dpy, &dummy, &dummy)) {
+               if (DPMSCapable(dpy)) {
+                       DPMSInfo(dpy, &dpms_state, &onoff);
+               }
+       }
+
+       XCloseDisplay(dpy);
+
+       if (state)
+               *state = dpms_state;
+
        return 0;
 }
 
-static int backlight_set_mode(enum backlight_mode mode)
+static int display_set_power_state(enum display_state state)
 {
-       if (mode == BACKLIGHT_SENSOR) {
-               _E("not supported option");
-               return -ENOTSUP;
+       int type;
+       Display *dpy;
+
+       if (state == DISPLAY_ON)
+               type = DPMSModeOn;
+       else if (state == DISPLAY_STANDBY)
+               type = DPMSModeStandby;
+       else if (state == DISPLAY_SUSPEND)
+               type = DPMSModeSuspend;
+       else if (state == DISPLAY_OFF)
+               type = DPMSModeOff;
+       else
+               return -EINVAL;
+
+       dpy = XOpenDisplay(NULL);
+       if (dpy == NULL) {
+               _E("fail to open display");
+               return -EPERM;
        }
 
+       DPMSEnable(dpy);
+       DPMSForceLevel(dpy, type);
+
+       XCloseDisplay(dpy);
+
        return 0;
 }
 
-static int backlight_open(struct hw_info *info,
+static int display_open(struct hw_info *info,
                const char *id, struct hw_common **common)
 {
-       struct backlight_device *backlight_dev;
+       struct display_device *display_dev;
 
        if (!info || !common)
                return -EINVAL;
 
-       backlight_dev = calloc(1, sizeof(struct backlight_device));
-       if (!backlight_dev)
+       display_dev = calloc(1, sizeof(struct display_device));
+       if (!display_dev)
                return -ENOMEM;
 
-       backlight_dev->common.info = info;
-       backlight_dev->get_brightness = backlight_get_brightness;
-       backlight_dev->set_brightness = backlight_set_brightness;
-       backlight_dev->get_mode = backlight_get_mode;
-       backlight_dev->set_mode = backlight_set_mode;
+       display_dev->common.info = info;
+       display_dev->get_brightness = display_get_brightness;
+       display_dev->set_brightness = display_set_brightness;
+       display_dev->get_state = display_get_power_state;
+       display_dev->set_state = display_set_power_state;
 
-       *common = (struct hw_common *)backlight_dev;
+       *common = (struct hw_common *)display_dev;
        return 0;
 }
 
-static int backlight_close(struct hw_common *common)
+static int display_close(struct hw_common *common)
 {
        if (!common)
                return -EINVAL;
@@ -147,10 +185,9 @@ static int backlight_close(struct hw_common *common)
 HARDWARE_MODULE_STRUCTURE = {
        .magic = HARDWARE_INFO_TAG,
        .hal_version = HARDWARE_INFO_VERSION,
-       .device_version = BACKLIGHT_HARDWARE_DEVICE_VERSION,
-       .id = BACKLIGHT_HARDWARE_DEVICE_ID,
-       .name = "Default Backlight",
-       .author = "Jiyoung Yun <jy910.yun@samsung.com>",
-       .open = backlight_open,
-       .close = backlight_close,
+       .device_version = DISPLAY_HARDWARE_DEVICE_VERSION,
+       .id = DISPLAY_HARDWARE_DEVICE_ID,
+       .name = "Display",
+       .open = display_open,
+       .close = display_close,
 };
diff --git a/hw/led/CMakeLists.txt b/hw/led/CMakeLists.txt
new file mode 100644 (file)
index 0000000..017ddc6
--- /dev/null
@@ -0,0 +1,16 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(led C)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED dlog hwcommon)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+
+ADD_LIBRARY(${PROJECT_NAME} MODULE led.c ../shared.c)
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "")
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR}/hw COMPONENT RuntimeLibraries)
similarity index 99%
rename from hw/led.c
rename to hw/led/led.c
index 7486b79..b7c3e4a 100644 (file)
--- a/hw/led.c
@@ -24,7 +24,7 @@
 #include <linux/limits.h>
 
 #include <hw/led.h>
-#include "shared.h"
+#include "../shared.h"
 
 #ifndef CAMERA_BACK_PATH
 #define CAMERA_BACK_PATH       "/sys/class/leds/ktd2692"
index 8f7e648..da51ca4 100644 (file)
@@ -21,7 +21,7 @@
 #define __HW_DEFAULT_SHARED_H__
 
 #define FEATURE_HARDWARE_DLOG
-#ifndef FEATURE_HARDWARE_DLOG
+#ifdef FEATURE_HARDWARE_DLOG
 #define LOG_TAG        "HARDWARE"
 #include <dlog.h>
 #define _I(fmt, args...)       SLOGI(fmt, ##args)
@@ -33,6 +33,8 @@
 #define _E(x, ...)                     do { } while (0)
 #endif
 
+#define ARRAY_SIZE(name) (sizeof(name)/sizeof(name[0]))
+
 int sys_get_int(char *fname, int *val);
 int sys_get_str(char *fname, char *str, int len);
 int sys_set_int(char *fname, int val);
index 570d53e..da0c372 100644 (file)
@@ -11,6 +11,8 @@ Requires(postun): /sbin/ldconfig
 BuildRequires:  cmake
 BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(hwcommon)
+BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(xext)
 
 %description
 Device manager plugin exynos 5433