summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlokilee73 <changjoo.lee@samsung.com>2021-01-12 09:54:42 +0900
committerINSUN PYO <insun.pyo@samsung.com>2021-01-26 08:07:16 +0900
commit02c021113393b4db2c501133eedb2e2140e77576 (patch)
tree976a9c30b39f7b8592ab0cc2baa2345dda11fbc4
parent965cb8542001f1a03fb08407f8cf9fa33d9838b2 (diff)
downloaddeviced-submit/tizen/20210127.032903.tar.gz
deviced-submit/tizen/20210127.032903.tar.bz2
deviced-submit/tizen/20210127.032903.zip
Change-Id: I0d11e7e89a83846bbb7ab93b17cd3dc066e911e3 Signed-off-by: lokilee73 <changjoo.lee@samsung.com>
-rw-r--r--CMakeLists.txt3
-rw-r--r--packaging/deviced.spec2
-rw-r--r--plugins/iot/display/core.c1
-rw-r--r--plugins/iot/display/device-interface.c198
-rw-r--r--plugins/iot/display/key-filter.c1
-rw-r--r--plugins/mobile/display/core.c1
-rw-r--r--plugins/mobile/display/device-interface.c198
-rw-r--r--plugins/mobile/display/key-filter.c1
-rwxr-xr-x[-rw-r--r--]plugins/tv/display/core.c1
-rw-r--r--plugins/tv/display/device-interface.c199
-rw-r--r--plugins/tv/display/key-filter.c1
-rw-r--r--plugins/wearable/display/bezel.c76
-rw-r--r--plugins/wearable/display/core.c1
-rw-r--r--plugins/wearable/display/device-interface.c205
-rw-r--r--plugins/wearable/display/display-handler.c1
-rw-r--r--plugins/wearable/display/enhance.c3
-rw-r--r--plugins/wearable/display/key-filter.c1
-rw-r--r--plugins/wearable/display/lbm.c23
-rw-r--r--src/battery/battery-time.c12
-rw-r--r--src/battery/lowbat-handler.c2
-rw-r--r--src/battery/power-supply.c58
-rw-r--r--src/board/board-info.c35
-rw-r--r--src/display/device-interface.h4
-rw-r--r--src/extcon/extcon.c46
-rw-r--r--src/extcon/extcon.h2
-rw-r--r--src/led/rgb.c67
-rw-r--r--src/led/torch.c49
-rw-r--r--src/led/touch-key.c62
-rw-r--r--src/power/power-control.c1
-rw-r--r--src/thermal/thermal.c41
-rw-r--r--src/touchscreen/sensitivity.c50
-rw-r--r--src/touchscreen/touchscreen.c73
-rw-r--r--src/usb/usb-dbus.c2
-rw-r--r--src/usb/usb-debug.c2
-rw-r--r--src/usb/usb-state.c2
-rw-r--r--src/usb/usb-tethering.c2
-rw-r--r--src/usb/usb.c205
-rw-r--r--src/usbhost/usb-host.c1
38 files changed, 642 insertions, 990 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b104d6e9..ad7c1a7d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -168,7 +168,6 @@ SET(PKG_MODULES
vconf
dlog
libudev
- device-node
capi-base-common
glib-2.0
gio-2.0
@@ -176,6 +175,8 @@ SET(PKG_MODULES
eventsystem
libtzplatform-config
hwcommon
+ hal-api-common
+ hal-api-device
mount
capi-system-info
capi-system-device
diff --git a/packaging/deviced.spec b/packaging/deviced.spec
index ee2b3379..e6388686 100644
--- a/packaging/deviced.spec
+++ b/packaging/deviced.spec
@@ -25,6 +25,8 @@ BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(eventsystem)
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(hwcommon)
+BuildRequires: pkgconfig(hal-api-common)
+BuildRequires: pkgconfig(hal-api-device)
BuildRequires: pkgconfig(capi-system-info)
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libinput)
diff --git a/plugins/iot/display/core.c b/plugins/iot/display/core.c
index 5e5a727a..ffaa749d 100644
--- a/plugins/iot/display/core.c
+++ b/plugins/iot/display/core.c
@@ -44,7 +44,6 @@
#include "ambient-mode.h"
#include "util.h"
#include "core.h"
-#include "device-node.h"
#include "lock-detector.h"
#include "display-ops.h"
#include "core/devices.h"
diff --git a/plugins/iot/display/device-interface.c b/plugins/iot/display/device-interface.c
index ea407fba..ee04a1c2 100644
--- a/plugins/iot/display/device-interface.c
+++ b/plugins/iot/display/device-interface.c
@@ -30,6 +30,7 @@
#include <assert.h>
#include <errno.h>
#include <dlfcn.h>
+#include <hal/device/hal-display.h>
#include "ambient-mode.h"
#include "power/power-control.h"
@@ -41,7 +42,6 @@
#include "device-interface.h"
#include "vconf.h"
#include "core.h"
-#include "device-node.h"
#include "display/display-dpms.h"
#include "display/display.h"
#include "display/display-lock.h"
@@ -74,7 +74,7 @@ static int custom_brightness;
static int force_brightness;
static int default_brightness;
static int dpms_running_state = DPMS_SETTING_DONE;
-static struct display_device *display_dev;
+static bool display_dev_available = false;
static guint release_timer;
static struct display_config *display_conf;
@@ -83,9 +83,9 @@ inline struct _backlight_ops *get_var_backlight_ops(void)
return &backlight_ops;
}
-struct display_device *display_dev_get(void)
+bool display_dev_ready(void)
{
- return display_dev;
+ return display_dev_available;
}
void dpms_set_running_state(int val)
@@ -129,7 +129,7 @@ static int get_lcd_power_node(void)
int ret;
enum display_state val;
- ret = display_dev->get_state(&val);
+ ret = hal_device_display_get_state(&val);
if (ret < 0)
return ret;
@@ -187,14 +187,16 @@ static void change_brightness(int start, int end, int step)
_I("start %d end %d step %d", start, end, step);
- if (display_dev && display_dev->set_multi_brightness) {
- ret = display_dev->set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
+ 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);
+ backlight_ops.set_brightness(end);
- return;
+ return;
+ }
}
diff = end - start;
@@ -380,20 +382,21 @@ static int get_max_brightness(void)
if (max > 0)
return max;
- if (!display_dev) {
- _E("There is no display device.");
+ if (!display_dev_available) {
+ _E("There is no HAL for display.");
return -ENOENT;
}
- if (!display_dev->get_max_brightness) {
- max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
- return max;
- }
-
- ret = display_dev->get_max_brightness(&max);
+ ret = hal_device_display_get_max_brightness(&max);
if (ret < 0) {
- _E("Failed to get max brightness: %d", ret);
- return ret;
+ if (ret == -ENODEV) {
+ _E("Get max brightness is not supported.");
+ max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
+ return max;
+ } else {
+ _E("Failed to get max brightness: %d", ret);
+ return ret;
+ }
}
return max;
@@ -403,7 +406,7 @@ static int set_brightness(int val)
{
int max;
- if (!display_dev || !display_dev->set_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
@@ -430,7 +433,7 @@ static int set_brightness(int val)
_I("set brightness %d (default:%d)", val, default_brightness);
device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
- return display_dev->set_brightness(val);
+ return hal_device_display_set_brightness(val);
}
static int get_brt_normalized(int brt_raw)
@@ -467,14 +470,18 @@ static int get_brightness(int *val)
{
int brt, ret;
- if (!display_dev || !display_dev->get_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_brightness(&brt);
+ ret = hal_device_display_get_brightness(&brt);
if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get brightness is not supported.");
+ else
+ _E("Failed to get brightness: %d", ret);
+
return ret;
}
@@ -487,12 +494,16 @@ static int get_brightness_by_light_sensor(float lmax, float lmin, float light, i
int brt_raw;
int ret;
- if (!display_dev || !display_dev->get_auto_brightness)
+ if (!display_dev_available)
return -ENOTSUP;
- ret = display_dev->get_auto_brightness(lmax, lmin, light, &brt_raw);
+ ret = hal_device_display_get_auto_brightness(lmax, lmin, light, &brt_raw);
if (ret < 0) {
- _E("Failed to get brightness by light sensor: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get auto brightness is not supported.");
+ else
+ _E("Failed to get brightness by light sensor: %d", ret);
+
return ret;
}
@@ -505,14 +516,18 @@ static int get_image_effect(enum display_image_effect *effect)
int ret;
enum display_image_effect val;
- if (!display_dev || !display_dev->get_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_image_effect(&val);
+ ret = hal_device_display_get_image_effect(&val);
if (ret < 0) {
- _E("Failed to get image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get image effect is not supported.");
+ else
+ _E("Failed to get image effect: %d", ret);
+
return ret;
}
@@ -525,14 +540,18 @@ static int set_image_effect(enum display_image_effect effect)
{
int ret;
- if (!display_dev || !display_dev->set_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_image_effect(effect);
+ ret = hal_device_display_set_image_effect(effect);
if (ret < 0) {
- _E("Failed to set image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Set image effect is not supported.");
+ else
+ _E("Failed to set image effect: %d", ret);
+
return ret;
}
@@ -544,14 +563,18 @@ static int get_panel_mode(enum display_panel_mode *mode)
int ret;
enum display_panel_mode val;
- if (!display_dev || !display_dev->get_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_panel_mode(&val);
+ ret = hal_device_display_get_panel_mode(&val);
if (ret < 0) {
- _E("failed to get panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Get panel mode is not supported.");
+ else
+ _E("Failed to get panel mode(%d)", ret);
+
return ret;
}
@@ -564,14 +587,18 @@ static int set_panel_mode(enum display_panel_mode mode)
{
int ret;
- if (!display_dev || !display_dev->set_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_panel_mode(mode);
+ ret = hal_device_display_set_panel_mode(mode);
if (ret < 0) {
- _E("failed to set panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Set panel mode is not supported.");
+ else
+ _E("Failed to set panel mode(%d)", ret);
+
return ret;
}
@@ -583,10 +610,10 @@ static int get_frame_rate(int *rate)
if (!rate)
return -EINVAL;
- if (!display_dev || !display_dev->get_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- return display_dev->get_frame_rate(rate);
+ return hal_device_display_get_frame_rate(rate);
}
static int set_frame_rate(int rate)
@@ -594,39 +621,34 @@ static int set_frame_rate(int rate)
int ret;
static int fmin = -1, fmax = -1;
- if (!display_dev ||
- !display_dev->set_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- if (display_dev->get_min_frame_rate) {
- if (fmin < 0) {
- ret = display_dev->get_min_frame_rate(&fmin);
- if (ret < 0) {
- _E("Failed to get min frate rate: %d", ret);
- return ret;
- }
- }
- if (rate < fmin) {
- _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
- return -EINVAL;
+ if (fmin < 0) {
+ ret = hal_device_display_get_min_frame_rate(&fmin);
+ if (ret < 0) {
+ _E("Failed to get min frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate < fmin)) {
+ _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
+ return -EINVAL;
+ }
- if (display_dev->get_max_frame_rate) {
- if (fmax < 0) {
- ret = display_dev->get_max_frame_rate(&fmax);
- if (ret < 0) {
- _E("Failed to get max frate rate: %d", ret);
- return ret;
- }
- }
- if (rate > fmax) {
- _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
- return -EINVAL;
+ if (fmax < 0) {
+ ret = hal_device_display_get_max_frame_rate(&fmax);
+ if (ret < 0) {
+ _E("Failed to get max frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate > fmax)) {
+ _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
+ return -EINVAL;
+ }
- return display_dev->set_frame_rate(rate);
+ return hal_device_display_set_frame_rate(rate);
}
/* It was operated only AOD enter & leave */
@@ -757,49 +779,27 @@ static struct _backlight_ops backlight_ops = {
int display_service_load(void)
{
- struct hw_info *info;
int r;
- if (display_dev)
+ if (display_dev_available)
return 0;
- r = hw_get_info(DISPLAY_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ r = hal_device_display_get_backend();
if (r < 0) {
- _I("display shared library is not supported: %d", r);
+ _E("There is no HAL for display.");
+ display_dev_available = false;
return 0;
}
- if (!info->open) {
- _E("Failed to open display device: open(NULL).");
- return -EPERM;
- }
-
- r = info->open(info, NULL, (struct hw_common **)&display_dev);
- if (r < 0) {
- _E("Failed to get display device structure: %d", r);
- return -EPERM;
- }
-
+ display_dev_available = true;
_D("Display device structure load success.");
return 0;
}
int display_service_free(void)
{
- struct hw_info *info;
-
- if (!display_dev)
- return -ENOENT;
-
- info = display_dev->common.info;
-
- assert(info);
-
- info->close((struct hw_common *)display_dev);
- display_dev = NULL;
-
- return 0;
+ display_dev_available = false;
+ return hal_device_display_put_backend();
}
/* Dummy. Do not consider detached display state */
diff --git a/plugins/iot/display/key-filter.c b/plugins/iot/display/key-filter.c
index bc9d0dd3..9e6e3437 100644
--- a/plugins/iot/display/key-filter.c
+++ b/plugins/iot/display/key-filter.c
@@ -31,7 +31,6 @@
#include "util.h"
#include "core.h"
#include "poll.h"
-#include "device-node.h"
#include "display-actor.h"
#include "display-ops.h"
#include "core/common.h"
diff --git a/plugins/mobile/display/core.c b/plugins/mobile/display/core.c
index d7f8aea8..a8f516c8 100644
--- a/plugins/mobile/display/core.c
+++ b/plugins/mobile/display/core.c
@@ -44,7 +44,6 @@
#include "ambient-mode.h"
#include "util.h"
#include "core.h"
-#include "device-node.h"
#include "lock-detector.h"
#include "display-ops.h"
#include "core/devices.h"
diff --git a/plugins/mobile/display/device-interface.c b/plugins/mobile/display/device-interface.c
index d4ef77b4..313ec9c7 100644
--- a/plugins/mobile/display/device-interface.c
+++ b/plugins/mobile/display/device-interface.c
@@ -30,6 +30,7 @@
#include <assert.h>
#include <errno.h>
#include <dlfcn.h>
+#include <hal/device/hal-display.h>
#include "ambient-mode.h"
#include "core/log.h"
@@ -40,7 +41,6 @@
#include "device-interface.h"
#include "vconf.h"
#include "core.h"
-#include "device-node.h"
#include "display/display-dpms.h"
#include "display/display.h"
#include "display/display-lock.h"
@@ -73,7 +73,7 @@ static int custom_brightness;
static int force_brightness;
static int default_brightness;
static int dpms_running_state = DPMS_SETTING_DONE;
-static struct display_device *display_dev;
+static bool display_dev_available = false;
static guint release_timer;
static struct display_config *display_conf;
@@ -82,9 +82,9 @@ inline struct _backlight_ops *get_var_backlight_ops(void)
return &backlight_ops;
}
-struct display_device *display_dev_get(void)
+bool display_dev_ready(void)
{
- return display_dev;
+ return display_dev_available;
}
void dpms_set_running_state(int val)
@@ -128,7 +128,7 @@ static int get_lcd_power_node(void)
int ret;
enum display_state val;
- ret = display_dev->get_state(&val);
+ ret = hal_device_display_get_state(&val);
if (ret < 0)
return ret;
@@ -186,14 +186,16 @@ static void change_brightness(int start, int end, int step)
_I("start %d end %d step %d", start, end, step);
- if (display_dev && display_dev->set_multi_brightness) {
- ret = display_dev->set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
+ 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);
+ backlight_ops.set_brightness(end);
- return;
+ return;
+ }
}
diff = end - start;
@@ -379,20 +381,21 @@ static int get_max_brightness(void)
if (max > 0)
return max;
- if (!display_dev) {
- _E("There is no display device.");
+ if (!display_dev_available) {
+ _E("There is no HAL for display.");
return -ENOENT;
}
- if (!display_dev->get_max_brightness) {
- max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
- return max;
- }
-
- ret = display_dev->get_max_brightness(&max);
+ ret = hal_device_display_get_max_brightness(&max);
if (ret < 0) {
- _E("Failed to get max brightness: %d", ret);
- return ret;
+ if (ret == -ENODEV) {
+ _E("Get max brightness is not supported.");
+ max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
+ return max;
+ } else {
+ _E("Failed to get max brightness: %d", ret);
+ return ret;
+ }
}
return max;
@@ -402,7 +405,7 @@ static int set_brightness(int val)
{
int max;
- if (!display_dev || !display_dev->set_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
@@ -429,7 +432,7 @@ static int set_brightness(int val)
_I("set brightness %d (default:%d)", val, default_brightness);
device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
- return display_dev->set_brightness(val);
+ return hal_device_display_set_brightness(val);
}
static int get_brt_normalized(int brt_raw)
@@ -466,14 +469,18 @@ static int get_brightness(int *val)
{
int brt, ret;
- if (!display_dev || !display_dev->get_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_brightness(&brt);
+ ret = hal_device_display_get_brightness(&brt);
if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get brightness is not supported.");
+ else
+ _E("Failed to get brightness: %d", ret);
+
return ret;
}
@@ -486,12 +493,16 @@ static int get_brightness_by_light_sensor(float lmax, float lmin, float light, i
int brt_raw;
int ret;
- if (!display_dev || !display_dev->get_auto_brightness)
+ if (!display_dev_available)
return -ENOTSUP;
- ret = display_dev->get_auto_brightness(lmax, lmin, light, &brt_raw);
+ ret = hal_device_display_get_auto_brightness(lmax, lmin, light, &brt_raw);
if (ret < 0) {
- _E("Failed to get brightness by light sensor: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get auto brightness is not supported.");
+ else
+ _E("Failed to get brightness by light sensor: %d", ret);
+
return ret;
}
@@ -504,14 +515,18 @@ static int get_image_effect(enum display_image_effect *effect)
int ret;
enum display_image_effect val;
- if (!display_dev || !display_dev->get_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_image_effect(&val);
+ ret = hal_device_display_get_image_effect(&val);
if (ret < 0) {
- _E("Failed to get image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get image effect is not supported.");
+ else
+ _E("Failed to get image effect: %d", ret);
+
return ret;
}
@@ -524,14 +539,18 @@ static int set_image_effect(enum display_image_effect effect)
{
int ret;
- if (!display_dev || !display_dev->set_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_image_effect(effect);
+ ret = hal_device_display_set_image_effect(effect);
if (ret < 0) {
- _E("Failed to set image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Set image effect is not supported.");
+ else
+ _E("Failed to set image effect: %d", ret);
+
return ret;
}
@@ -543,14 +562,18 @@ static int get_panel_mode(enum display_panel_mode *mode)
int ret;
enum display_panel_mode val;
- if (!display_dev || !display_dev->get_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_panel_mode(&val);
+ ret = hal_device_display_get_panel_mode(&val);
if (ret < 0) {
- _E("failed to get panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Get panel mode is not supported.");
+ else
+ _E("Failed to get panel mode(%d)", ret);
+
return ret;
}
@@ -563,14 +586,18 @@ static int set_panel_mode(enum display_panel_mode mode)
{
int ret;
- if (!display_dev || !display_dev->set_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_panel_mode(mode);
+ ret = hal_device_display_set_panel_mode(mode);
if (ret < 0) {
- _E("failed to set panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Set panel mode is not supported.");
+ else
+ _E("Failed to set panel mode(%d)", ret);
+
return ret;
}
@@ -582,10 +609,10 @@ static int get_frame_rate(int *rate)
if (!rate)
return -EINVAL;
- if (!display_dev || !display_dev->get_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- return display_dev->get_frame_rate(rate);
+ return hal_device_display_get_frame_rate(rate);
}
static int set_frame_rate(int rate)
@@ -593,39 +620,34 @@ static int set_frame_rate(int rate)
int ret;
static int fmin = -1, fmax = -1;
- if (!display_dev ||
- !display_dev->set_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- if (display_dev->get_min_frame_rate) {
- if (fmin < 0) {
- ret = display_dev->get_min_frame_rate(&fmin);
- if (ret < 0) {
- _E("Failed to get min frate rate: %d", ret);
- return ret;
- }
- }
- if (rate < fmin) {
- _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
- return -EINVAL;
+ if (fmin < 0) {
+ ret = hal_device_display_get_min_frame_rate(&fmin);
+ if (ret < 0) {
+ _E("Failed to get min frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate < fmin)) {
+ _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
+ return -EINVAL;
+ }
- if (display_dev->get_max_frame_rate) {
- if (fmax < 0) {
- ret = display_dev->get_max_frame_rate(&fmax);
- if (ret < 0) {
- _E("Failed to get max frate rate: %d", ret);
- return ret;
- }
- }
- if (rate > fmax) {
- _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
- return -EINVAL;
+ if (fmax < 0) {
+ ret = hal_device_display_get_max_frame_rate(&fmax);
+ if (ret < 0) {
+ _E("Failed to get max frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate > fmax)) {
+ _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
+ return -EINVAL;
+ }
- return display_dev->set_frame_rate(rate);
+ return hal_device_display_set_frame_rate(rate);
}
/* It was operated only AOD enter & leave */
@@ -756,49 +778,27 @@ static struct _backlight_ops backlight_ops = {
int display_service_load(void)
{
- struct hw_info *info;
int r;
- if (display_dev)
+ if (display_dev_available)
return 0;
- r = hw_get_info(DISPLAY_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ r = hal_device_display_get_backend();
if (r < 0) {
- _I("display shared library is not supported: %d", r);
+ _E("There is no HAL for display.");
+ display_dev_available = false;
return 0;
}
- if (!info->open) {
- _E("Failed to open display device: open(NULL).");
- return -EPERM;
- }
-
- r = info->open(info, NULL, (struct hw_common **)&display_dev);
- if (r < 0) {
- _E("Failed to get display device structure: %d", r);
- return -EPERM;
- }
-
+ display_dev_available = true;
_D("Display device structure load success.");
return 0;
}
int display_service_free(void)
{
- struct hw_info *info;
-
- if (!display_dev)
- return -ENOENT;
-
- info = display_dev->common.info;
-
- assert(info);
-
- info->close((struct hw_common *)display_dev);
- display_dev = NULL;
-
- return 0;
+ display_dev_available = false;
+ return hal_device_display_put_backend();
}
static int booting_done(void *data)
diff --git a/plugins/mobile/display/key-filter.c b/plugins/mobile/display/key-filter.c
index 7a57a98f..93bcaafd 100644
--- a/plugins/mobile/display/key-filter.c
+++ b/plugins/mobile/display/key-filter.c
@@ -31,7 +31,6 @@
#include "util.h"
#include "core.h"
#include "poll.h"
-#include "device-node.h"
#include "display-actor.h"
#include "display-ops.h"
#include "core/common.h"
diff --git a/plugins/tv/display/core.c b/plugins/tv/display/core.c
index 4fe32fad..98a999a9 100644..100755
--- a/plugins/tv/display/core.c
+++ b/plugins/tv/display/core.c
@@ -44,7 +44,6 @@
#include "ambient-mode.h"
#include "util.h"
#include "core.h"
-#include "device-node.h"
#include "lock-detector.h"
#include "display-ops.h"
#include "core/devices.h"
diff --git a/plugins/tv/display/device-interface.c b/plugins/tv/display/device-interface.c
index da6583c5..d7a82215 100644
--- a/plugins/tv/display/device-interface.c
+++ b/plugins/tv/display/device-interface.c
@@ -30,6 +30,7 @@
#include <assert.h>
#include <errno.h>
#include <dlfcn.h>
+#include <hal/device/hal-display.h>
#include "ambient-mode.h"
#include "core/log.h"
@@ -40,7 +41,6 @@
#include "device-interface.h"
#include "vconf.h"
#include "core.h"
-#include "device-node.h"
#include "display/display-dpms.h"
#include "display/display.h"
#include "power/power-control.h"
@@ -74,7 +74,7 @@ static int custom_brightness;
static int force_brightness;
static int default_brightness;
static int dpms_running_state = DPMS_SETTING_DONE;
-static struct display_device *display_dev;
+static bool display_dev_available = false;
static guint release_timer;
static struct display_config *display_conf;
@@ -83,9 +83,9 @@ inline struct _backlight_ops *get_var_backlight_ops(void)
return &backlight_ops;
}
-struct display_device *display_dev_get(void)
+bool display_dev_ready(void)
{
- return display_dev;
+ return display_dev_available;
}
void dpms_set_running_state(int val)
@@ -129,7 +129,7 @@ static int get_lcd_power_node(void)
int ret;
enum display_state val;
- ret = display_dev->get_state(&val);
+ ret = hal_device_display_get_state(&val);
if (ret < 0)
return ret;
@@ -187,14 +187,16 @@ static void change_brightness(int start, int end, int step)
_I("start %d end %d step %d", start, end, step);
- if (display_dev && display_dev->set_multi_brightness) {
- ret = display_dev->set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
+ 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);
+ backlight_ops.set_brightness(end);
- return;
+ return;
+ }
}
diff = end - start;
@@ -380,20 +382,21 @@ static int get_max_brightness(void)
if (max > 0)
return max;
- if (!display_dev) {
- _E("There is no display device.");
+ if (!display_dev_available) {
+ _E("There is no HAL for display device.");
return -ENOENT;
}
- if (!display_dev->get_max_brightness) {
- max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
- return max;
- }
-
- ret = display_dev->get_max_brightness(&max);
+ ret = hal_device_display_get_max_brightness(&max);
if (ret < 0) {
- _E("Failed to get max brightness: %d", ret);
- return ret;
+ if (ret == -ENODEV) {
+ _E("Get max brightness is not supported.");
+ max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
+ return max;
+ } else {
+ _E("Failed to get max brightness: %d", ret);
+ return ret;
+ }
}
return max;
@@ -403,7 +406,7 @@ static int set_brightness(int val)
{
int max;
- if (!display_dev || !display_dev->set_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
@@ -430,7 +433,7 @@ static int set_brightness(int val)
_I("set brightness %d (default:%d)", val, default_brightness);
device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
- return display_dev->set_brightness(val);
+ return hal_device_display_set_brightness(val);
}
static int get_brt_normalized(int brt_raw)
@@ -467,14 +470,18 @@ static int get_brightness(int *val)
{
int brt, ret;
- if (!display_dev || !display_dev->get_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_brightness(&brt);
+ ret = hal_device_display_get_brightness(&brt);
if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get brightness is not supported.");
+ else
+ _E("Failed to get brightness: %d", ret);
+
return ret;
}
@@ -487,12 +494,16 @@ static int get_brightness_by_light_sensor(float lmax, float lmin, float light, i
int brt_raw;
int ret;
- if (!display_dev || !display_dev->get_auto_brightness)
+ if (!display_dev_available)
return -ENOTSUP;
- ret = display_dev->get_auto_brightness(lmax, lmin, light, &brt_raw);
+ ret = hal_device_display_get_auto_brightness(lmax, lmin, light, &brt_raw);
if (ret < 0) {
- _E("Failed to get brightness by light sensor: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get auto brightness is not supported.");
+ else
+ _E("Failed to get brightness by light sensor: %d", ret);
+
return ret;
}
@@ -505,14 +516,18 @@ static int get_image_effect(enum display_image_effect *effect)
int ret;
enum display_image_effect val;
- if (!display_dev || !display_dev->get_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_image_effect(&val);
+ ret = hal_device_display_get_image_effect(&val);
if (ret < 0) {
- _E("Failed to get image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get image effect is not supported.");
+ else
+ _E("Failed to get image effect: %d", ret);
+
return ret;
}
@@ -525,14 +540,18 @@ static int set_image_effect(enum display_image_effect effect)
{
int ret;
- if (!display_dev || !display_dev->set_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_image_effect(effect);
+ ret = hal_device_display_set_image_effect(effect);
if (ret < 0) {
- _E("Failed to set image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Set image effect is not supported.");
+ else
+ _E("Failed to set image effect: %d", ret);
+
return ret;
}
@@ -544,14 +563,18 @@ static int get_panel_mode(enum display_panel_mode *mode)
int ret;
enum display_panel_mode val;
- if (!display_dev || !display_dev->get_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_panel_mode(&val);
+ ret = hal_device_display_get_panel_mode(&val);
if (ret < 0) {
- _E("failed to get panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Get panel mode is not supported.");
+ else
+ _E("Failed to get panel mode(%d)", ret);
+
return ret;
}
@@ -564,14 +587,18 @@ static int set_panel_mode(enum display_panel_mode mode)
{
int ret;
- if (!display_dev || !display_dev->set_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_panel_mode(mode);
+ ret = hal_device_display_set_panel_mode(mode);
if (ret < 0) {
- _E("failed to set panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Set panel mode is not supported.");
+ else
+ _E("Failed to set panel mode(%d)", ret);
+
return ret;
}
@@ -583,10 +610,10 @@ static int get_frame_rate(int *rate)
if (!rate)
return -EINVAL;
- if (!display_dev || !display_dev->get_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- return display_dev->get_frame_rate(rate);
+ return hal_device_display_get_frame_rate(rate);
}
static int set_frame_rate(int rate)
@@ -594,39 +621,34 @@ static int set_frame_rate(int rate)
int ret;
static int fmin = -1, fmax = -1;
- if (!display_dev ||
- !display_dev->set_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- if (display_dev->get_min_frame_rate) {
- if (fmin < 0) {
- ret = display_dev->get_min_frame_rate(&fmin);
- if (ret < 0) {
- _E("Failed to get min frate rate: %d", ret);
- return ret;
- }
- }
- if (rate < fmin) {
- _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
- return -EINVAL;
+ if (fmin < 0) {
+ ret = hal_device_display_get_min_frame_rate(&fmin);
+ if (ret < 0) {
+ _E("Failed to get min frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate < fmin)) {
+ _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
+ return -EINVAL;
+ }
- if (display_dev->get_max_frame_rate) {
- if (fmax < 0) {
- ret = display_dev->get_max_frame_rate(&fmax);
- if (ret < 0) {
- _E("Failed to get max frate rate: %d", ret);
- return ret;
- }
- }
- if (rate > fmax) {
- _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
- return -EINVAL;
+ if (fmax < 0) {
+ ret = hal_device_display_get_max_frame_rate(&fmax);
+ if (ret < 0) {
+ _E("Failed to get max frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate > fmax)) {
+ _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
+ return -EINVAL;
+ }
- return display_dev->set_frame_rate(rate);
+ return hal_device_display_set_frame_rate(rate);
}
/* It was operated only AOD enter & leave */
@@ -757,52 +779,29 @@ static struct _backlight_ops backlight_ops = {
int display_service_load(void)
{
- struct hw_info *info;
int r;
- if (display_dev)
+ if (display_dev_available)
return 0;
- r = hw_get_info(DISPLAY_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ r = hal_device_display_get_backend();
if (r < 0) {
- _I("display shared library is not supported: %d", r);
+ _E("There is no HAL for display.");
+ display_dev_available = false;
return 0;
}
- if (!info->open) {
- _E("Failed to open display device: open(NULL).");
- return -EPERM;
- }
-
- r = info->open(info, NULL, (struct hw_common **)&display_dev);
- if (r < 0) {
- _E("Failed to get display device structure: %d", r);
- return -EPERM;
- }
-
+ display_dev_available = true;
_D("Display device structure load success.");
return 0;
}
int display_service_free(void)
{
- struct hw_info *info;
-
- if (!display_dev)
- return -ENOENT;
-
- info = display_dev->common.info;
-
- assert(info);
-
- info->close((struct hw_common *)display_dev);
- display_dev = NULL;
-
- return 0;
+ display_dev_available = false;
+ return hal_device_display_put_backend();
}
-
/* Dummy. Do not consider detached display state */
int is_lcdon_blocked(void)
{
diff --git a/plugins/tv/display/key-filter.c b/plugins/tv/display/key-filter.c
index 68fcf78a..90a94dd2 100644
--- a/plugins/tv/display/key-filter.c
+++ b/plugins/tv/display/key-filter.c
@@ -31,7 +31,6 @@
#include "util.h"
#include "core.h"
#include "poll.h"
-#include "device-node.h"
#include "display-actor.h"
#include "display-ops.h"
#include "core/common.h"
diff --git a/plugins/wearable/display/bezel.c b/plugins/wearable/display/bezel.c
index 87bd336d..9cec8b39 100644
--- a/plugins/wearable/display/bezel.c
+++ b/plugins/wearable/display/bezel.c
@@ -15,7 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include <hw/bezel.h>
+#include <hal/device/hal-bezel.h>
#include <assert.h>
#include <vconf.h>
@@ -45,7 +45,7 @@ enum bezel_type {
static enum bezel_state bezel_wakeup_control(void);
static struct display_plugin *disp_plgn;
-static struct bezel_device *bezel_dev;
+static bool bezel_dev_available = false;
static int bezel_wakeup = 0;
static int theater_mode = 0;
static int goodnight_mode = 0;
@@ -70,8 +70,8 @@ static void theater_changed_cb(keynode_t *key_nodes, void *data)
assert(key_nodes);
- if (!bezel_dev || !bezel_dev->set_state) {
- _E("bezel_dev->set_state is not supported.");
+ if (!bezel_dev_available) {
+ _E("There is no HAL for bezel.");
return;
}
@@ -80,7 +80,7 @@ static void theater_changed_cb(keynode_t *key_nodes, void *data)
if (get_pm_cur_state() == LCD_OFF) {
state = bezel_wakeup_control();
- bezel_dev->set_state(state);
+ hal_device_bezel_set_state(state);
}
}
@@ -90,8 +90,8 @@ static void goodnight_changed_cb(keynode_t *key_nodes, void *data)
assert(key_nodes);
- if (!bezel_dev || !bezel_dev->set_state) {
- _E("bezel_dev->set_state is not supported.");
+ if (!bezel_dev_available) {
+ _E("There is no HAL for bezel.");
return;
}
@@ -100,7 +100,7 @@ static void goodnight_changed_cb(keynode_t *key_nodes, void *data)
if (get_pm_cur_state() == LCD_OFF) {
state = bezel_wakeup_control();
- bezel_dev->set_state(state);
+ hal_device_bezel_set_state(state);
}
}
@@ -113,13 +113,12 @@ static void bezel_rotary_event_cb(keynode_t *key_nodes, void *data)
bezel_state = (enum bezel_state) vconf_keynode_get_bool(key_nodes);
- if (!bezel_dev || !bezel_dev->set_sw_state) {
- _E("bezel_dev->set_sw_state is not supported.");
+ if (!bezel_dev_available) {
+ _E("There is no HAL for bezel.");
return;
}
- ret = bezel_dev->set_sw_state(bezel_state);
-
+ ret = hal_device_bezel_set_sw_state(bezel_state);
if (ret == 0) {
_I("Bezel rotary event condition is %d", bezel_state);
if (disp_plgn->pm_change_internal)
@@ -133,12 +132,12 @@ static void bezel_rotary_vibration_set_state(int state)
{
int ret;
- if (!bezel_dev || !bezel_dev->set_vib_state) {
- _E("bezel_dev->set_vib_state is not supported.");
+ if (!bezel_dev_available) {
+ _E("There is no HAL for bezel.");
return;
}
- ret = bezel_dev->set_vib_state(state);
+ ret = hal_device_bezel_set_vib_state(state);
if (ret < 0)
_E("Can't set vib state %d (ret %d)", state, ret);
}
@@ -158,29 +157,20 @@ static void bezel_rotary_vibration_changed_cb(keynode_t *key_nodes, void *data)
static int bezel_probe(void *data)
{
- struct hw_info *info;
int ret;
- if (bezel_dev)
+ if (bezel_dev_available)
return 0;
- ret = hw_get_info(BEZEL_HARDWARE_DEVICE_ID, (const struct hw_info **)&info);
+ ret = hal_device_bezel_get_backend();
if (ret < 0) {
- _I("bezel shared library is not supported: %d", ret);
- return -ENOTSUP;
- }
+ _E("There is no HAL for bezel.");
+ bezel_dev_available = false;
- if (!info->open) {
- _E("Fail to open bezel device : open(NULL)");
- return -ENODEV;
- }
-
- ret = info->open(info, NULL, (struct hw_common **)&bezel_dev);
- if (ret < 0) {
- _E("Fail to get bezel device structure: %d", ret);
return ret;
}
+ bezel_dev_available = true;
return 0;
}
@@ -191,13 +181,13 @@ static void bezel_init(void *data)
int bezel_vib_state = -1;
enum bezel_state init_bezel_state;
- if (!bezel_dev)
+ if (!bezel_dev_available)
return;
- if (bezel_dev->get_sw_state && bezel_dev->get_sw_state(&init_bezel_state) == 0) {
+ if (hal_device_bezel_get_sw_state(&init_bezel_state) == 0) {
_I("Init SW bezel, state: %d", init_bezel_state);
bezel_type = BEZEL_SOFT;
- } else if (bezel_dev->get_state && bezel_dev->get_state(&init_bezel_state) == 0) {
+ } else if (hal_device_bezel_get_state(&init_bezel_state) == 0) {
_I("Init HW bezel, state: %d", init_bezel_state);
bezel_type = BEZEL_HARD;
} else {
@@ -235,7 +225,7 @@ static void bezel_init(void *data)
ret = vconf_get_bool(VCONFKEY_SETAPPL_ROTARY_EVENT_ENABLED_BOOL, &bezel_rotary_event);
if (ret == 0) {
- ret = bezel_dev->set_sw_state(bezel_rotary_event);
+ ret = hal_device_bezel_set_sw_state(bezel_rotary_event);
if (ret == 0)
_I("Bezel rotary event conditoin: %d.", bezel_rotary_event);
else
@@ -255,16 +245,8 @@ static void bezel_init(void *data)
static void bezel_exit(void *data)
{
- struct hw_info *info;
-
- if (!bezel_dev)
- return;
-
- info = bezel_dev->common.info;
-
- assert(info);
-
- info->close((struct hw_common *)bezel_dev);
+ bezel_dev_available = false;
+ hal_device_bezel_put_backend();
}
static enum bezel_state bezel_wakeup_control(void)
@@ -277,11 +259,11 @@ static enum bezel_state bezel_wakeup_control(void)
static int bezel_start(enum device_flags flags)
{
- if (!bezel_dev)
+ if (!bezel_dev_available)
return 0;
if (bezel_type == BEZEL_HARD)
- return bezel_dev->set_state(BEZEL_TURNON);
+ return hal_device_bezel_set_state(BEZEL_TURNON);
return 0;
}
@@ -290,12 +272,12 @@ static int bezel_stop(enum device_flags flags)
{
enum bezel_state state;
- if (!bezel_dev)
+ if (!bezel_dev_available)
return 0;
if (bezel_type == BEZEL_HARD) {
state = bezel_wakeup_control();
- return bezel_dev->set_state(state);
+ return hal_device_bezel_set_state(state);
}
return 0;
diff --git a/plugins/wearable/display/core.c b/plugins/wearable/display/core.c
index d69a3b63..6c123584 100644
--- a/plugins/wearable/display/core.c
+++ b/plugins/wearable/display/core.c
@@ -45,7 +45,6 @@
#include "ambient-mode.h"
#include "util.h"
#include "core.h"
-#include "device-node.h"
#include "lock-detector.h"
#include "display-ops.h"
#include "core/devices.h"
diff --git a/plugins/wearable/display/device-interface.c b/plugins/wearable/display/device-interface.c
index b368fba8..d0bef60e 100644
--- a/plugins/wearable/display/device-interface.c
+++ b/plugins/wearable/display/device-interface.c
@@ -30,6 +30,7 @@
#include <assert.h>
#include <errno.h>
#include <dlfcn.h>
+#include <hal/device/hal-display.h>
#include "ambient-mode.h"
#include "core/log.h"
@@ -40,7 +41,6 @@
#include "device-interface.h"
#include "vconf.h"
#include "core.h"
-#include "device-node.h"
#include "display/display-dpms.h"
#include "display/display.h"
#include "display/display-lock.h"
@@ -80,7 +80,7 @@ static int custom_brightness;
static int force_brightness;
static int default_brightness;
static int dpms_running_state = DPMS_SETTING_DONE;
-static struct display_device *display_dev;
+static bool display_dev_available = false;
static guint release_timer;
static int aod_max_level = -1;
static int aod_normal_level = -1;
@@ -95,9 +95,9 @@ inline struct _backlight_ops *get_var_backlight_ops(void)
return &backlight_ops;
}
-struct display_device *display_dev_get(void)
+bool display_dev_ready(void)
{
- return display_dev;
+ return display_dev_available;
}
void dpms_set_running_state(int val)
@@ -141,7 +141,7 @@ static int get_lcd_power_node(void)
int ret;
enum display_state val;
- ret = display_dev->get_state(&val);
+ ret = hal_device_display_get_state(&val);
if (ret < 0)
return ret;
@@ -198,14 +198,16 @@ static void change_brightness(int start, int end, int step)
_I("start %d end %d step %d", start, end, step);
- if (display_dev && display_dev->set_multi_brightness) {
- ret = display_dev->set_multi_brightness(end, step, LCD_PHASED_DELAY);
- if (ret < 0)
- _E("Failed to set_multi_brightness (%d)", ret);
+ 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);
+ backlight_ops.set_brightness(end);
- return;
+ return;
+ }
}
diff = end - start;
@@ -391,20 +393,21 @@ static int get_max_brightness(void)
if (max > 0)
return max;
- if (!display_dev) {
- _E("There is no display device.");
+ if (!display_dev_available) {
+ _E("There is no HAL for display.");
return -ENOENT;
}
- if (!display_dev->get_max_brightness) {
- max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
- return max;
- }
-
- ret = display_dev->get_max_brightness(&max);
+ ret = hal_device_display_get_max_brightness(&max);
if (ret < 0) {
- _E("Failed to get max brightness: %d", ret);
- return ret;
+ if (ret == -ENODEV) {
+ _E("Get max brightness is not supported.");
+ max = DEFAULT_DISPLAY_MAX_BRIGHTNESS;
+ return max;
+ } else {
+ _E("Failed to get max brightness: %d", ret);
+ return ret;
+ }
}
return max;
@@ -414,7 +417,7 @@ static int set_brightness(int val)
{
int max;
- if (!display_dev || !display_dev->set_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
@@ -442,7 +445,7 @@ static int set_brightness(int val)
_I("set brightness %d (default:%d)", val, default_brightness);
device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
- return display_dev->set_brightness(val);
+ return hal_device_display_set_brightness(val);
}
static int get_brt_normalized(int brt_raw)
@@ -479,14 +482,18 @@ static int get_brightness(int *val)
{
int brt, ret;
- if (!display_dev || !display_dev->get_brightness) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_brightness(&brt);
+ ret = hal_device_display_get_brightness(&brt);
if (ret < 0) {
- _E("Failed to get brightness: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get brightness is not supported.");
+ else
+ _E("Failed to get brightness: %d", ret);
+
return ret;
}
@@ -499,12 +506,16 @@ static int get_brightness_by_light_sensor(float lmax, float lmin, float light, i
int brt_raw;
int ret;
- if (!display_dev || !display_dev->get_auto_brightness)
+ if (!display_dev_available)
return -ENOTSUP;
- ret = display_dev->get_auto_brightness(lmax, lmin, light, &brt_raw);
+ ret = hal_device_display_get_auto_brightness(lmax, lmin, light, &brt_raw);
if (ret < 0) {
- _E("Failed to get brightness by light sensor: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get auto brightness is not supported.");
+ else
+ _E("Failed to get brightness by light sensor: %d", ret);
+
return ret;
}
@@ -517,14 +528,18 @@ static int get_image_effect(enum display_image_effect *effect)
int ret;
enum display_image_effect val;
- if (!display_dev || !display_dev->get_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_image_effect(&val);
+ ret = hal_device_display_get_image_effect(&val);
if (ret < 0) {
- _E("Failed to get image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Get image effect is not supported.");
+ else
+ _E("Failed to get image effect: %d", ret);
+
return ret;
}
@@ -537,14 +552,18 @@ static int set_image_effect(enum display_image_effect effect)
{
int ret;
- if (!display_dev || !display_dev->set_image_effect) {
+ if (!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_image_effect(effect);
+ ret = hal_device_display_set_image_effect(effect);
if (ret < 0) {
- _E("Failed to set image effect: %d", ret);
+ if (ret == -ENODEV)
+ _E("Set image effect is not supported.");
+ else
+ _E("Failed to set image effect: %d", ret);
+
return ret;
}
@@ -556,14 +575,18 @@ static int get_panel_mode(enum display_panel_mode *mode)
int ret;
enum display_panel_mode val;
- if (!display_dev || !display_dev->get_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->get_panel_mode(&val);
+ ret = hal_device_display_get_panel_mode(&val);
if (ret < 0) {
- _E("failed to get panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Get panel mode is not supported.");
+ else
+ _E("Failed to get panel mode(%d)", ret);
+
return ret;
}
@@ -576,14 +599,18 @@ static int set_panel_mode(enum display_panel_mode mode)
{
int ret;
- if (!display_dev || !display_dev->set_panel_mode) {
- _E("there is no display device");
+ if (!display_dev_available) {
+ _E("There is no display device.");
return -ENOENT;
}
- ret = display_dev->set_panel_mode(mode);
+ ret = hal_device_display_set_panel_mode(mode);
if (ret < 0) {
- _E("failed to set panel mode(%d)", ret);
+ if (ret == -ENODEV)
+ _E("Set panel mode is not supported.");
+ else
+ _E("Failed to set panel mode(%d)", ret);
+
return ret;
}
@@ -595,10 +622,10 @@ static int get_frame_rate(int *rate)
if (!rate)
return -EINVAL;
- if (!display_dev || !display_dev->get_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- return display_dev->get_frame_rate(rate);
+ return hal_device_display_get_frame_rate(rate);
}
static int set_frame_rate(int rate)
@@ -606,39 +633,34 @@ static int set_frame_rate(int rate)
int ret;
static int fmin = -1, fmax = -1;
- if (!display_dev ||
- !display_dev->set_frame_rate)
+ if (!display_dev_available)
return -ENOTSUP;
- if (display_dev->get_min_frame_rate) {
- if (fmin < 0) {
- ret = display_dev->get_min_frame_rate(&fmin);
- if (ret < 0) {
- _E("Failed to get min frate rate: %d", ret);
- return ret;
- }
- }
- if (rate < fmin) {
- _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
- return -EINVAL;
+ if (fmin < 0) {
+ ret = hal_device_display_get_min_frame_rate(&fmin);
+ if (ret < 0) {
+ _E("Failed to get min frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate < fmin)) {
+ _E("Invalid rate(%d). (Valid rate: %d <= rate)", rate, fmin);
+ return -EINVAL;
+ }
- if (display_dev->get_max_frame_rate) {
- if (fmax < 0) {
- ret = display_dev->get_max_frame_rate(&fmax);
- if (ret < 0) {
- _E("Failed to get max frate rate: %d", ret);
- return ret;
- }
- }
- if (rate > fmax) {
- _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
- return -EINVAL;
+ if (fmax < 0) {
+ ret = hal_device_display_get_max_frame_rate(&fmax);
+ if (ret < 0) {
+ _E("Failed to get max frate rate: %d", ret);
+ return ret;
}
}
+ if ((ret != -ENODEV) && (rate > fmax)) {
+ _E("Invalid rate(%d). (Valid rate: rate <= %d)", rate, fmax);
+ return -EINVAL;
+ }
- return display_dev->set_frame_rate(rate);
+ return hal_device_display_set_frame_rate(rate);
}
/* It was operated only AOD enter & leave */
@@ -824,56 +846,27 @@ static struct _backlight_ops backlight_ops = {
int display_service_load(void)
{
- struct hw_info *info;
int r;
- if (display_dev)
+ if (display_dev_available)
return 0;
- r = hw_get_info(DISPLAY_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ r = hal_device_display_get_backend();
if (r < 0) {
- _I("display shared library is not supported: %d", r);
+ _E("There is no HAL for display.");
+ display_dev_available = false;
return 0;
}
- if (!info->open) {
- _E("Failed to open display device: open(NULL).");
- return -EPERM;
- }
-
- r = info->open(info, NULL, (struct hw_common **)&display_dev);
- if (r < 0) {
- _E("Failed to get display device structure: %d", r);
- return -EPERM;
- }
-
- if (display_dev && display_dev->get_aod_brightness) {
- display_dev->get_aod_brightness(&aod_max_level, &aod_normal_level, &aod_min_level, &aod_charging_level);
- _I("Use various AOD brightness: max %d, normal %d, min %d, charging %d.",
- aod_max_level, aod_normal_level, aod_min_level, aod_charging_level);
- }
-
+ display_dev_available = true;
_D("Display device structure load success.");
-
return 0;
}
int display_service_free(void)
{
- struct hw_info *info;
-
- if (!display_dev)
- return -ENOENT;
-
- info = display_dev->common.info;
-
- assert(info);
-
- info->close((struct hw_common *)display_dev);
- display_dev = NULL;
-
- return 0;
+ display_dev_available = false;
+ return hal_device_display_put_backend();
}
int is_lcdon_blocked(void)
diff --git a/plugins/wearable/display/display-handler.c b/plugins/wearable/display/display-handler.c
index ed2e9ba6..0b0c784b 100644
--- a/plugins/wearable/display/display-handler.c
+++ b/plugins/wearable/display/display-handler.c
@@ -20,7 +20,6 @@
#include <sys/stat.h>
#include <unistd.h>
#include <error.h>
-#include <device-node.h>
#include "auto-brightness-sensorhub.h"
#include "core/device-notifier.h"
diff --git a/plugins/wearable/display/enhance.c b/plugins/wearable/display/enhance.c
index 0ac0b646..d4e0495e 100644
--- a/plugins/wearable/display/enhance.c
+++ b/plugins/wearable/display/enhance.c
@@ -19,9 +19,8 @@
#include <stdio.h>
#include <stdbool.h>
-#include <device-node.h>
#include <vconf.h>
-#include <hw/display.h>
+#include <hal/device/hal-display.h>
#include <libsyscommon/dbus-system.h>
#include "display/core.h"
diff --git a/plugins/wearable/display/key-filter.c b/plugins/wearable/display/key-filter.c
index 5f8989b6..17ee67e1 100644
--- a/plugins/wearable/display/key-filter.c
+++ b/plugins/wearable/display/key-filter.c
@@ -31,7 +31,6 @@
#include "util.h"
#include "core.h"
#include "poll.h"
-#include "device-node.h"
#include "display-actor.h"
#include "display-ops.h"
#include "core/common.h"
diff --git a/plugins/wearable/display/lbm.c b/plugins/wearable/display/lbm.c
index e10b09c1..06353482 100644
--- a/plugins/wearable/display/lbm.c
+++ b/plugins/wearable/display/lbm.c
@@ -18,6 +18,7 @@
#include <stdbool.h>
#include <math.h>
+#include <hal/device/hal-display.h>
#include "auto-brightness-sensorhub.h"
#include "lbm.h"
@@ -49,7 +50,7 @@ static struct lbm_config lbm_conf = {
static struct _backlight_ops *backlight_ops;
static int lbm_setting_mode;
static int system_brightness;
-static struct display_device *display_dev;
+static bool display_dev_available = false;
static void broadcast_lbm_state(int state)
{
@@ -112,7 +113,7 @@ static int lbm_set_brightness(int val)
{
int brt = 0;
- if (!display_dev || !display_dev->set_brightness) {
+ if(!display_dev_available) {
_E("There is no display device.");
return -ENOENT;
}
@@ -127,7 +128,7 @@ static int lbm_set_brightness(int val)
_I("Set brightness(LBM on) system=%d, real=%d.", val, brt);
device_notify(DEVICE_NOTIFIER_DISPLAY_BRIGHTNESS, (void *)&val);
- return display_dev->set_brightness(brt);
+ return hal_device_display_set_brightness(brt);
}
static void lbm_change_brightness(int start, int end, int step)
@@ -154,16 +155,18 @@ static void lbm_change_brightness(int start, int end, int step)
_I("Start %d, end %d, step %d.", start, end, step);
- if (display_dev && display_dev->set_multi_brightness) {
+ if (display_dev_available) {
diff = lbm_down_brt(end);
- ret = display_dev->set_multi_brightness(diff, step, LCD_PHASED_DELAY);
- if (ret < 0)
- _E("Failed to set_multi_brightness, %d.", ret);
+ ret = hal_device_display_set_multi_brightness(diff, step, LCD_PHASED_DELAY);
+ if (ret != -ENODEV) {
+ if (ret < 0)
+ _E("Failed to set_multi_brightness, %d.", ret);
- backlight_ops->set_brightness(end);
+ backlight_ops->set_brightness(end);
- return;
+ return;
+ }
}
diff = end - start;
@@ -330,7 +333,7 @@ static void lbm_init(void *data)
if (ret < 0)
_E("Failed to init dbus method, %d.", ret);
- display_dev = display_dev_get();
+ display_dev_available = display_dev_ready();
_I("LBM setting value is %d.", lbm_setting_mode);
}
diff --git a/src/battery/battery-time.c b/src/battery/battery-time.c
index 712824a5..7e12b30a 100644
--- a/src/battery/battery-time.c
+++ b/src/battery/battery-time.c
@@ -21,7 +21,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <vconf.h>
-#include <hw/battery.h>
+#include <hal/device/hal-battery.h>
#include <libsyscommon/dbus-system.h>
#include "core/common.h"
@@ -402,14 +402,13 @@ static const dbus_interface_u dbus_interface = {
static int battery_probe(void *data)
{
- struct hw_info *info;
int ret;
- ret = hw_get_info(BATTERY_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
-
- if (ret < 0) /* There is no HAL for battery */
+ ret = hal_device_battery_get_backend();
+ if (ret < 0) {
+ _E("There is no HAL for battery.");
return -ENODEV;
+ }
return 0;
}
@@ -428,6 +427,7 @@ static void battery_init(void *data)
static void battery_exit(void *data)
{
end_battinfo_gathering();
+ hal_device_battery_put_backend();
}
static const struct device_ops battery_time_device_ops = {
diff --git a/src/battery/lowbat-handler.c b/src/battery/lowbat-handler.c
index 6914562a..3e280bc4 100644
--- a/src/battery/lowbat-handler.c
+++ b/src/battery/lowbat-handler.c
@@ -24,7 +24,7 @@
#include <fcntl.h>
#include <bundle.h>
#include <eventsystem.h>
-#include <hw/battery.h>
+#include <hal/device/hal-battery.h>
#include <libsyscommon/dbus-system.h>
#include <libsyscommon/list.h>
diff --git a/src/battery/power-supply.c b/src/battery/power-supply.c
index c5109c5a..41dad87a 100644
--- a/src/battery/power-supply.c
+++ b/src/battery/power-supply.c
@@ -22,7 +22,7 @@
#include <vconf.h>
#include <bundle.h>
#include <eventsystem.h>
-#include <hw/battery.h>
+#include <hal/device/hal-battery.h>
#include <sys/stat.h>
#include "core/devices.h"
@@ -107,9 +107,7 @@ bool battery_do_not_disturb(void);
int battery_pm_change_internal(int pid, int s_bits);
static int booting_done(void *data);
static void update_health(enum battery_noti_status status);
-
-static struct battery_device *battery_dev;
-
+static bool battery_dev_available = false;
static int load_uevent(struct parse_result *result, void *user_data);
static int event_handler_state_changed(void *data);
@@ -1037,8 +1035,8 @@ static void power_supply_status_init(void)
{
int r;
- if (battery_dev && battery_dev->get_current_state) {
- r = battery_dev->get_current_state(battery_changed, NULL);
+ r = hal_device_battery_get_current_state(battery_changed, NULL);
+ if (battery_dev_available && (r != -ENODEV)) {
if (r < 0 || battery.capacity < 0) {
_E("Failed to get battery capacity (capa: %d, ret: %d)", battery.capacity, r);
return;
@@ -1302,7 +1300,7 @@ static GVariant *dbus_power_supply_handler(GDBusConnection *conn,
_D("C(%d) S(%s) H(%s) O(%d) P(%d) F(%d) SRC(%s) Vol(%d %d) Cur(%d %d) T(%d)",
info.capacity, info.status, info.health, info.online, info.present, info.freq_strength, info.power_source, info.voltage_now, info.voltage_average, info.current_now, info.current_average, info.temperature);
- if (battery_dev)
+ if (battery_dev_available)
battery_changed(&info, NULL);
snprintf(battery.status_s, sizeof(battery.status_s), "%s",
@@ -1404,8 +1402,8 @@ static GVariant *dbus_get_battery_info(GDBusConnection *conn,
if (battery_initialized)
goto out;
- if (battery_dev && battery_dev->get_current_state) {
- ret = battery_dev->get_current_state(battery_get_info, &info);
+ ret = hal_device_battery_get_current_state(battery_get_info, &info);
+ if (battery_dev_available && (ret != -ENODEV)) {
if (ret < 0)
_E("Failed to get battery info: %d", ret);
@@ -1599,37 +1597,24 @@ static int load_uevent(struct parse_result *result, void *user_data)
static int power_supply_probe(void *data)
{
- struct hw_info *info;
int ret, r;
- if (battery_dev)
+
+ if (battery_dev_available)
return 0;
- ret = hw_get_info(BATTERY_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
- if (ret < 0) { /* There is no HAL for battery */
+ ret = hal_device_battery_get_backend();
+ if (ret < 0) {
+ _E("There is no HAL for battery.");
+ battery_dev_available = false;
if (access(POWER_PATH, R_OK) == 0)
return 0; /* Just power_supply uevent is used */
- goto out;
- }
- if (!info->open) {
- _E("Failed to open battery device: open(NULL)");
- return -ENODEV;
- }
-
- ret = info->open(info, NULL, (struct hw_common**)&battery_dev);
- if (ret < 0) {
- _E("Failed to get battery device structure: %d", ret);
- return ret;
- }
-
- if (!battery_dev || !battery_dev->get_current_state) {
- _E("get_current_state() is not supported by the Battery HAL.");
- return -ENODEV;
+ goto out;
}
_I("Battery device structure load success.");
+ battery_dev_available = true;
return 0;
out:
@@ -1654,11 +1639,9 @@ static void add_power_supply_handler(void)
{
int ret;
- if (battery_dev) {
- if (battery_dev->register_changed_event)
- battery_dev->register_changed_event(battery_changed, NULL);
- if (battery_dev->get_current_state)
- battery_dev->get_current_state(battery_changed, NULL);
+ if (battery_dev_available) {
+ hal_device_battery_register_changed_event(battery_changed, NULL);
+ hal_device_battery_get_current_state(battery_changed, NULL);
} else {
ret = config_parse(POWER_SUPPLY_UEVENT, load_uevent, &battery);
if (ret < 0)
@@ -1671,8 +1654,8 @@ static void add_power_supply_handler(void)
static void remove_power_supply_handler(void)
{
- if (battery_dev && battery_dev->unregister_changed_event)
- battery_dev->unregister_changed_event(battery_changed);
+ if (battery_dev_available)
+ hal_device_battery_unregister_changed_event(battery_changed);
else
unregister_kernel_uevent_control(&uh);
}
@@ -1729,6 +1712,7 @@ static void power_supply_exit(void *data)
event_handler_state_changed((void *)&state);
battery_ops_exit(NULL);
+ battery_dev_available = false;
}
static const struct device_ops power_supply_ops = {
diff --git a/src/board/board-info.c b/src/board/board-info.c
index 73a2252d..9bafc6fd 100644
--- a/src/board/board-info.c
+++ b/src/board/board-info.c
@@ -22,8 +22,9 @@
#include "core/log.h"
#include "core/devices.h"
+#include <hal/device/hal-board.h>
-static struct hw_board *board_dev;
+static bool board_dev_available = false;
static GVariant *dbus_revision_handler(GDBusConnection *conn,
const gchar *sender, const gchar *path, const gchar *iface, const gchar *name,
@@ -32,13 +33,13 @@ static GVariant *dbus_revision_handler(GDBusConnection *conn,
int ret;
int revision;
- if (!board_dev || !board_dev->get_device_revision) {
+ ret = hal_device_board_get_device_revision(&revision);
+ if (!board_dev_available || (ret == -ENODEV)) {
_E("GetHWRev not supported.");
ret = -ENOTSUP;
goto revision_fail;
}
- ret = board_dev->get_device_revision(&revision);
if (ret < 0) {
_E("Fail to get revision.");
goto revision_fail;
@@ -60,13 +61,13 @@ static GVariant *dbus_num_handler(GDBusConnection *conn,
GVariant *result;
char *serial = NULL;
- if (!board_dev || !board_dev->get_device_serial) {
+ ret = hal_device_board_get_device_serial(&serial);
+ if (!board_dev_available || (ret == -ENODEV)) {
_E("GetSerial not supported.");
ret = -ENOTSUP;
goto num_out;
}
- ret = board_dev->get_device_serial(&serial);
if (ret < 0) {
_E("Failed to get serial.");
goto num_out;
@@ -95,13 +96,13 @@ static GVariant *dbus_serial_handler(GDBusConnection *conn,
GVariant *result;
char *num = NULL;
- if (!board_dev || !board_dev->get_device_serial) {
+ ret = hal_device_board_get_device_serial(&num);
+ if (!board_dev_available || (ret == -ENODEV)) {
_E("GetNum not supported.");
ret = -ENOTSUP;
goto seiral_out;
}
- ret = board_dev->get_device_serial(&num);
if (ret < 0) {
_E("Failed to get num.");
goto seiral_out;
@@ -140,31 +141,21 @@ static const dbus_interface_u dbus_interface = {
static int board_probe(void *data)
{
- struct hw_info *info;
int ret;
- if (board_dev)
+ if (board_dev_available)
return 0;
- ret = hw_get_info(BOARD_HARDWARE_DEVICE_ID,
- (const struct hw_info**)&info);
+ ret = hal_device_board_get_backend();
if (ret < 0) {
- _E("Failed to load board shared library: %d", ret);
- return -ENODEV;
- }
-
- if (!info->open) {
- _E("Failed to open board device: open(NULL)");
- return -ENODEV;
- }
+ _E("There is no HAL for board.");
+ board_dev_available = false;
- ret = info->open(info, NULL, (struct hw_common**)&board_dev);
- if (ret < 0) {
- _E("Failed to get board device structure: %d", ret);
return -ENODEV;
}
_I("Board device structure load success.");
+ board_dev_available = true;
return 0;
}
diff --git a/src/display/device-interface.h b/src/display/device-interface.h
index 161c5284..f9d8b696 100644
--- a/src/display/device-interface.h
+++ b/src/display/device-interface.h
@@ -25,7 +25,7 @@
#define __DEVICE_INTERFACE_H__
#include <stdbool.h>
-#include <hw/display.h>
+#include <hal/device/hal-display.h>
#include "core/devices.h"
#define FLAG_X_DPMS 0x2
@@ -103,7 +103,7 @@ enum dpms_state {
DPMS_DETACH, /* Display detached */
};
-struct display_device *display_dev_get(void);
+bool display_dev_ready(void);
bool display_dimstay_check(void);
void dpms_set_running_state(int val);
diff --git a/src/extcon/extcon.c b/src/extcon/extcon.c
index 0d6cd008..a2e3b3d7 100644
--- a/src/extcon/extcon.c
+++ b/src/extcon/extcon.c
@@ -18,7 +18,7 @@
#include <stdio.h>
-#include <hw/external_connection.h>
+#include <hal/device/hal-external_connection.h>
#include <libsyscommon/dbus-system.h>
#include "core/log.h"
@@ -38,7 +38,7 @@
#define BUF_MAX 512
static GList *extcon_list;
-static struct external_connection_device *extcon_dev;
+static bool extcon_dev_available = false;
void add_extcon(struct extcon_ops *dev)
{
@@ -381,30 +381,22 @@ static void extcon_changed(struct connection_info *info, void *data)
static int extcon_probe(void *data)
{
- struct hw_info *info;
int ret;
- if (extcon_dev)
+ if (extcon_dev_available)
return 0;
- ret = hw_get_info(EXTERNAL_CONNECTION_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ ret = hal_device_external_connection_get_backend();
if (ret == 0) {
- if (!info->open) {
- _E("Failed to open extcon device: open(NULL)");
- return -ENODEV;
- }
-
- ret = info->open(info, NULL, (struct hw_common **)&extcon_dev);
- if (ret < 0) {
- _E("Failed to get extcon device structure: %d", ret);
- return ret;
- }
-
+ extcon_dev_available = true;
_I("Extcon device structure load success.");
+
return 0;
}
+ _E("There is no HAL for extcon.");
+ extcon_dev_available = false;
+
/**
* find extcon class.
* if there is no extcon class,
@@ -412,7 +404,7 @@ static int extcon_probe(void *data)
*/
if (access(EXTCON_PATH, R_OK) != 0) {
_E("There is no extcon class.");
- return -ENODEV;
+ return ret;
}
return 0;
@@ -422,13 +414,9 @@ static void add_extcon_event_handler(void)
{
int ret;
- if (extcon_dev) { /* HAL is used */
- if (extcon_dev->register_changed_event)
- extcon_dev->register_changed_event(extcon_changed, NULL);
-
- if (extcon_dev->get_current_state)
- extcon_dev->get_current_state(extcon_changed, NULL);
-
+ if (extcon_dev_available) { /* HAL is used */
+ hal_device_external_connection_register_changed_event(extcon_changed, NULL);
+ hal_device_external_connection_get_current_state(extcon_changed, NULL);
} else {
/* register extcon uevent */
ret = register_kernel_uevent_control(&uh);
@@ -446,10 +434,9 @@ static void remove_extcon_event_handler(void)
{
int ret;
- if (extcon_dev) {
- if (extcon_dev->unregister_changed_event)
- extcon_dev->unregister_changed_event(extcon_changed);
- } else {
+ if (extcon_dev_available)
+ hal_device_external_connection_unregister_changed_event(extcon_changed);
+ else {
/* unreigster extcon uevent */
ret = unregister_kernel_uevent_control(&uh);
if (ret < 0)
@@ -520,6 +507,7 @@ static void extcon_exit(void *data)
dev->exit(data);
dev->enabled = false;
}
+ extcon_dev_available = false;
}
static const struct device_ops extcon_device_ops = {
diff --git a/src/extcon/extcon.h b/src/extcon/extcon.h
index e35bf3b0..bc16a759 100644
--- a/src/extcon/extcon.h
+++ b/src/extcon/extcon.h
@@ -22,7 +22,7 @@
#include "core/common.h"
#include <libsyscommon/list.h>
-#include <hw/external_connection.h>
+#include <hal/device/hal-external_connection.h>
#include "extcon-count.h"
/**
diff --git a/src/led/rgb.c b/src/led/rgb.c
index 0e39ae2a..ec4d96fc 100644
--- a/src/led/rgb.c
+++ b/src/led/rgb.c
@@ -23,7 +23,7 @@
#include <glib.h>
#include <vconf.h>
-#include <hw/led.h>
+#include <hal/device/hal-led.h>
#include <libsyscommon/dbus-system.h>
#include <libsyscommon/list.h>
@@ -43,7 +43,7 @@ typedef enum {
LED_CUSTOM_DEFAULT = (LED_CUSTOM_DUTY_ON), /**< Default flag */
} led_custom_flags;
-static struct led_device *rgb_dev;
+static bool rgb_dev_available = false;
static GList *rgb_list;
static struct rgb_request *top;
static guint timer;
@@ -114,20 +114,15 @@ static int rgb_play(struct led_state *state)
{
struct led_state off = { 0, };
- if (!rgb_dev) {
- _E("There is NO HAL.");
+ if (!rgb_dev_available) {
+ _E("There is no HAL for rgb.");
return -ENODEV;
}
- if (!rgb_dev->set_state) {
- _E("LED HAL does not support set_state().");
- return -ENOTSUP;
- }
-
if (state)
- return rgb_dev->set_state(state);
+ return hal_device_led_set_state(NOTIFICATION, state);
- return rgb_dev->set_state(&off);
+ return hal_device_led_set_state(NOTIFICATION, &off);
}
static gboolean remove_not_handled_req(gpointer data)
@@ -177,23 +172,23 @@ static int get_led_num(void)
if (initialized)
return num_of_leds;
- if (!rgb_dev) {
- _E("There is NO HAL.");
+ if (!rgb_dev_available) {
+ _E("There is no HAL for rgb.");
ret = -ENODEV;
goto out;
}
- // Read led num via get_max_num for multi led
- // Otherwise, read led num via get_number
- if (!rgb_dev->get_max_num) {
- if (!rgb_dev->get_number) {
+ /* Read led num via get_max_num for multi led
+ Otherwise, read led num via get_number */
+ ret = hal_device_led_get_max_num();
+ if (ret == -ENODEV) {
+ ret = hal_device_led_get_number();
+ if (ret == -ENODEV) {
_E("LED HAL does not support get LED number.");
ret = -ENOTSUP;
goto out;
- } else
- ret = rgb_dev->get_number();
- } else
- ret = rgb_dev->get_max_num();
+ }
+ }
if (ret < 0) {
_E("Failed to get LED number: %d", ret);
@@ -355,8 +350,8 @@ static GVariant *dbus_multi_led_control(GDBusConnection *conn,
state.type = LED_TYPE_MANUAL;
while (g_variant_iter_next(iter, "u", &color[i])) {
- if (rgb_dev && rgb_dev->set_num)
- rgb_dev->set_num(i);
+ if (rgb_dev_available)
+ hal_device_led_set_number(i);
state.color = color[i];
ret = rgb_play(&state);
if (ret < 0)
@@ -405,37 +400,31 @@ static void rgb_init(void *data)
static void rgb_exit(void *data)
{
int ret = rgb_play(NULL);
+
if (ret < 0)
_E("Failed to turn off rgb play during exit.");
+
+ rgb_dev_available = false;
}
static int rgb_probe(void *data)
{
- struct hw_info *info;
int ret;
- if (rgb_dev)
+ if (rgb_dev_available)
return 0;
- ret = hw_get_info(LED_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ ret = hal_device_led_get_backend();
if (ret < 0) {
- _E("There is no LED HAL.");
- return -ENOTSUP;
- }
-
- if (!info->open) {
- _E("Failed to open led device: open(NULL)");
- return -ENODEV;
- }
+ _E("There is no HAL for rgb.");
+ rgb_dev_available = false;
- ret = info->open(info, LED_ID_NOTIFICATION, (struct hw_common **)&rgb_dev);
- if (ret < 0) {
- _E("Failed to get LED NOTIFICATION device structure: %d", ret);
- return ret;
+ return -ENOTSUP;
}
_I("LED NOTIFICATION device structure load success.");
+ rgb_dev_available = true;
+
return 0;
}
diff --git a/src/led/torch.c b/src/led/torch.c
index 95d4e09c..b4db8bfe 100644
--- a/src/led/torch.c
+++ b/src/led/torch.c
@@ -21,7 +21,7 @@
#include <errno.h>
#include <assert.h>
#include <vconf.h>
-#include <hw/led.h>
+#include <hal/device/hal-led.h>
#include <libsyscommon/dbus-system.h>
#include "core/log.h"
@@ -33,7 +33,7 @@
#define SIGNAL_FLASH_STATE "ChangeFlashState"
-static struct led_device *led_dev;
+static bool torch_dev_available = false;
static struct led_state led_state = {
.type = LED_TYPE_MANUAL,
.color = 0x0,
@@ -60,8 +60,8 @@ static GVariant *dbus_get_brightness(GDBusConnection *conn,
{
int ret, alpha;
- if (!led_dev) {
- _E("There is no led device.");
+ if (!torch_dev_available) {
+ _E("There is no HAL for camera led.");
ret = -ENOENT;
goto error;
}
@@ -96,8 +96,8 @@ static GVariant *dbus_set_brightness(GDBusConnection *conn,
g_variant_get(param, "(ii)", &val, &enable);
- if (!led_dev || !led_dev->set_state) {
- _E("There is no led device.");
+ if (!torch_dev_available) {
+ _E("There is no HAL for camera led.");
ret = -ENOENT;
goto error;
}
@@ -105,7 +105,7 @@ static GVariant *dbus_set_brightness(GDBusConnection *conn,
tmp.color = (((int)(val * 255.f) / LED_MAX_BRIGHTNESS) & 0xFF) << 24;
_D("Set brightness. val=%d color=%#x", val, tmp.color);
- ret = led_dev->set_state(&tmp);
+ ret = hal_device_led_set_state(CAMERA_BACK, &tmp);
if (ret < 0)
goto error;
@@ -150,46 +150,25 @@ static const dbus_interface_u dbus_interface = {
static int led_service_load(void)
{
- struct hw_info *info;
int r;
- r = hw_get_info(LED_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ r = hal_device_led_get_backend();
if (r < 0) {
- _E("Failed to load led shared library: %d", r);
+ _E("There is no HAL for camera led.");
+ torch_dev_available = false;
return -ENOENT;
}
- if (!info->open) {
- _E("Fail to open camera led device: open(NULL)");
- return -EPERM;
- }
-
- r = info->open(info, LED_ID_CAMERA_BACK,
- (struct hw_common **)&led_dev);
- if (r < 0) {
- _E("Failed to get camera led device: %d", r);
- return -EPERM;
- }
-
_D("Camera led device structure load success.");
+ torch_dev_available = true;
+
return 0;
}
static int led_service_free(void)
{
- struct hw_info *info;
-
- if (!led_dev)
- return -ENOENT;
-
- info = led_dev->common.info;
-
- assert(info);
-
- info->close((struct hw_common *)led_dev);
-
- return 0;
+ torch_dev_available = false;
+ return hal_device_led_put_backend();
}
static int torch_probe(void *data)
diff --git a/src/led/touch-key.c b/src/led/touch-key.c
index b5a44849..a24cc6a0 100644
--- a/src/led/touch-key.c
+++ b/src/led/touch-key.c
@@ -19,7 +19,7 @@
#include <stdio.h>
#include <vconf.h>
-#include <hw/led.h>
+#include <hal/device/hal-led.h>
#include <libsyscommon/dbus-system.h>
#include "core/log.h"
@@ -46,7 +46,7 @@
#define SET_BRIGHTNESS(val) (((val) & 0xFF) << 24)
static struct display_plugin *disp_plgn;
-static struct led_device *touchled_dev;
+static bool touchkey_dev_available = false;
static guint hardkey_timeout_id;
static int hardkey_duration;
@@ -55,8 +55,8 @@ static int touchled_set_state(bool on)
struct led_state tmp = {0,};
int r;
- if (!touchled_dev || !touchled_dev->set_state) {
- _E("There is no led device.");
+ if (!touchkey_dev_available) {
+ _E("There is no HAL for touch key led.");
return -ENOENT;
}
@@ -65,7 +65,7 @@ static int touchled_set_state(bool on)
else
tmp.color = SET_BRIGHTNESS(0);
- r = touchled_dev->set_state(&tmp);
+ r = hal_device_led_set_state(TOUCH_KEY, &tmp);
if (r < 0) {
_E("Failed to set touch led state: %d", r);
return r;
@@ -212,56 +212,41 @@ static int hardkey_lcd_changed_cb(void *data)
static int touchled_service_load(void)
{
- struct hw_info *info;
int r;
- r = hw_get_info(LED_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ r = hal_device_led_get_backend();
if (r < 0) {
- _E("Failed to load led shared library: %d", r);
+ _E("Failed to load touch key led shared library: %d", r);
return -ENOENT;
}
- if (!info->open) {
- _E("Failed to open touch led device: open(NULL)");
- return -EPERM;
- }
-
- r = info->open(info, LED_ID_TOUCH_KEY,
- (struct hw_common **)&touchled_dev);
- if (r < 0) {
- _E("Failed to get touch led device: %d", r);
- return -EPERM;
- }
-
_D("Touch led device structure load success.");
return 0;
}
static int touchled_service_free(void)
{
- struct hw_info *info;
+ return hal_device_led_put_backend();
+}
- if (!touchled_dev)
- return -ENOENT;
+static int touchled_probe(void *data)
+{
+ int ret;
- info = touchled_dev->common.info;
- if (!info) {
- free(touchled_dev);
- touchled_dev = NULL;
- return -EPERM;
- }
+ if (touchkey_dev_available)
+ return 0;
- info->close((struct hw_common *)touchled_dev);
- touchled_dev = NULL;
+ /* Load touch led device */
+ ret = touchled_service_load();
+ if (ret < 0) {
+ _E("There is no HAL for touch led.");
+ touchkey_dev_available = false;
- return 0;
-}
+ return -ENODEV;
+ }
-static int touchled_probe(void *data)
-{
- /* load led device */
- return touchled_service_load();
+ touchkey_dev_available = true;
+ return ret;
}
static void touchled_init(void *data)
@@ -293,6 +278,7 @@ static void touchled_exit(void *data)
vconf_ignore_key_changed(VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION, hardkey_duration_cb);
/* free led device */
+ touchkey_dev_available = false;
touchled_service_free();
}
diff --git a/src/power/power-control.c b/src/power/power-control.c
index fbb6b9f8..2019b69b 100644
--- a/src/power/power-control.c
+++ b/src/power/power-control.c
@@ -37,7 +37,6 @@
#include "core/common.h"
#include "core/device-notifier.h"
#include "vconf.h"
-#include "device-node.h"
#include "display/display-dpms.h"
#include "display/display.h"
#include "power/boot.h"
diff --git a/src/thermal/thermal.c b/src/thermal/thermal.c
index 8b5bdea2..e3ca4f86 100644
--- a/src/thermal/thermal.c
+++ b/src/thermal/thermal.c
@@ -20,7 +20,7 @@
#include <stdio.h>
#include <stdbool.h>
-#include <hw/thermal.h>
+#include <hal/device/hal-thermal.h>
#include <libsyscommon/dbus-system.h>
#include "apps/apps.h"
@@ -30,7 +30,7 @@
#include "core/devices.h"
#include "thermal.h"
-static struct thermal_device *thermal_dev;
+static bool thermal_dev_available = false;
static int booting_done(void *data)
{
@@ -56,12 +56,12 @@ static GVariant *dbus_get_temperature(GDBusConnection *conn,
g_variant_get(param, "(i)", &index);
- if (!thermal_dev || !thermal_dev->get_info) {
+ ret = hal_device_thermal_get_info((device_thermal_e)index, &info);
+ if (!thermal_dev_available || (ret == -ENODEV)) {
ret = -ENODEV;
goto exit;
}
- ret = thermal_dev->get_info((device_thermal_e)index, &info);
if (!ret)
ret = info.temp;
@@ -101,43 +101,28 @@ static void thermal_exit(void *data)
ret = unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done);
if (ret < 0)
_E("Failed to unregister booting done notifier.");
+
+ thermal_dev_available = false;
+ hal_device_thermal_put_backend();
}
static int thermal_probe(void *data)
{
- struct hw_info *info;
int ret;
- if (thermal_dev)
+ if (thermal_dev_available)
return 0;
- ret = hw_get_info(THERMAL_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
- if (ret < 0) {
- _E("There is no HAL for Thermal.");
- return ret;
- }
-
- if (!info->open) {
- _E("Failed to open thermal device: open(NULL)");
- return -ENODEV;
- }
-
- ret = info->open(info, NULL, (struct hw_common**)&thermal_dev);
+ ret = hal_device_thermal_get_backend();
if (ret < 0) {
- _E("Failed to get thermal device structure: %d", ret);
- return ret;
- }
-
- if (!thermal_dev ||
- !thermal_dev->get_info ||
- !thermal_dev->register_changed_event ||
- !thermal_dev->unregister_changed_event) {
- _E("Thermal HAL does not support event handler.");
+ _E("There is no HAL for thermal.");
+ thermal_dev_available = false;
return -ENODEV;
}
_I("Thermal device structure load success.");
+ thermal_dev_available = true;
+
return 0;
}
diff --git a/src/touchscreen/sensitivity.c b/src/touchscreen/sensitivity.c
index 85359ea6..65d3746e 100644
--- a/src/touchscreen/sensitivity.c
+++ b/src/touchscreen/sensitivity.c
@@ -18,7 +18,7 @@
#include <stdbool.h>
#include <vconf.h>
-#include <hw/touchsensitivity.h>
+#include <hal/device/hal-touchscreen.h>
#include <libsyscommon/dbus-system.h>
#include "core/devices.h"
@@ -43,24 +43,14 @@
#endif
static guint disable_timer;
-
-static struct touchsensitivity_device *touchsensitivity_dev;
-
-static int check_dev(void)
-{
- if (!touchsensitivity_dev ||
- !touchsensitivity_dev->glove_mode_set_state ||
- !touchsensitivity_dev->glove_mode_get_state)
- return -ENODEV;
- return 0;
-}
+static bool sensitivity_dev_available = false;
static gboolean disable_sensitivity(void *data)
{
int ret;
int status;
- if (check_dev() < 0) {
+ if (!sensitivity_dev_available) {
_E("Touch sensitivity HAL does not exist.");
return G_SOURCE_REMOVE;
}
@@ -72,7 +62,7 @@ static gboolean disable_sensitivity(void *data)
return G_SOURCE_REMOVE;
}
- ret = touchsensitivity_dev->glove_mode_set_state(TOUCHSENSITIVITY_GLOVE_MODE_OFF);
+ ret = hal_device_touchscreen_glove_mode_set_state(TOUCHSENSITIVITY_GLOVE_MODE_OFF);
_I("Change auto touch sensitivity disable: %s", ret ? "fail" : "set");
return G_SOURCE_REMOVE;
}
@@ -96,11 +86,11 @@ static GVariant *get_touch_sensitivity(GDBusConnection *conn,
{
int val = -1, ret;
- if (check_dev() < 0) {
+ if (!sensitivity_dev_available) {
_E("Touch sensitivity HAL does not exist.");
goto out;
}
- ret = touchsensitivity_dev->glove_mode_get_state(&val);
+ ret = hal_device_touchscreen_glove_mode_get_state(&val);
_I("Touch sensitivity(%d): %s", val, ret ? "fail" : "get");
out:
return g_variant_new("(i)", val);
@@ -118,12 +108,12 @@ static GVariant *set_touch_sensitivity(GDBusConnection *conn,
g_source_remove(disable_timer);
disable_timer = 0;
}
- if (check_dev() < 0) {
+ if (!sensitivity_dev_available) {
_E("Touch sensitivity HAL does not exist.");
ret = -EINVAL;
goto error;
}
- ret = touchsensitivity_dev->glove_mode_set_state(val);
+ ret = hal_device_touchscreen_glove_mode_set_state(val);
error:
_I("Touch sensitivity(%d): %s", val, ret ? "fail" : "set");
@@ -162,11 +152,11 @@ static int booting_done(void *data)
goto out;
}
- if (check_dev() < 0) {
+ if (!sensitivity_dev_available) {
_E("Touch sensitivity HAL does not exist.");
goto out;
}
- ret = touchsensitivity_dev->glove_mode_set_state(TOUCHSENSITIVITY_GLOVE_MODE_ON);
+ ret = hal_device_touchscreen_glove_mode_set_state(TOUCHSENSITIVITY_GLOVE_MODE_ON);
_I("Change auto touch sensitivity enable: %s", ret ? "fail" : "set");
unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done);
out:
@@ -176,29 +166,19 @@ out:
static void sensitivity_init(void *data)
{
int ret;
- struct hw_info *info;
- if (touchsensitivity_dev)
+ if (sensitivity_dev_available)
return;
- ret = hw_get_info(TOUCHSENSITIVITY_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ ret = hal_device_touchscreen_get_backend();
if (ret < 0) {
- _E("Failed to load touch sensitivity shared library: %d", ret);
- return;
- }
+ _E("There is no HAL for touch sensitivity.");
+ sensitivity_dev_available = false;
- if (!info->open) {
- _E("Failed to open touch sensitivity device: open(NULL)");
- return;
- }
-
- ret = info->open(info, NULL, (struct hw_common **)&touchsensitivity_dev);
- if (ret < 0) {
- _E("Failed to get touch sensitivity device structure: %d", ret);
return;
}
+ sensitivity_dev_available = true;
_I("Touch sensitivity device structure load success.");
/* init dbus interface */
diff --git a/src/touchscreen/touchscreen.c b/src/touchscreen/touchscreen.c
index 5ec95d12..aefb70af 100644
--- a/src/touchscreen/touchscreen.c
+++ b/src/touchscreen/touchscreen.c
@@ -18,7 +18,7 @@
#include <assert.h>
#include <stdbool.h>
-#include <hw/touchscreen.h>
+#include <hal/device/hal-touchscreen.h>
#include <libsyscommon/dbus-system.h>
#include <vconf.h>
#include <dlfcn.h>
@@ -39,7 +39,7 @@ enum ps_mode {
static struct display_plugin *disp_plgn;
static struct battery_plugin *battery_plgn;
-static struct touchscreen_device *touchscreen_dev;
+static bool touchscreen_dev_available = false;
static int touchscreen_enable = DEVICE_OPS_STATUS_START;
static int powersaving_support = true;
@@ -92,8 +92,8 @@ static int touchscreen_powersaving(enum ps_mode mode)
else
return -EINVAL;
- if (touchscreen_dev && touchscreen_dev->set_powersaving) {
- ret = touchscreen_dev->set_powersaving(state);
+ ret = hal_device_touchscreen_set_powersaving(state);
+ if (touchscreen_dev_available && (ret != -ENODEV)) {
if (ret < 0) {
_E("Failed to set touch powersaving node.");
return -EIO;
@@ -108,45 +108,28 @@ static int touchscreen_powersaving(enum ps_mode mode)
static int touchscreen_probe(void *data)
{
int ret;
- struct hw_info *info;
- if (touchscreen_dev)
+ if (touchscreen_dev_available)
return 0;
- ret = hw_get_info(TOUCHSCREEN_HARDWARE_DEVICE_ID,
- (const struct hw_info **)&info);
+ ret = hal_device_touchscreen_get_backend();
if (ret < 0) {
- _E("Failed to load touchscreen shared library: %d", ret);
- return -ENODEV;
- }
-
- if (!info->open) {
- _E("Failed to open touchscreen device: open(NULL)");
- return -EPERM;
- }
+ _E("There is no HAL for touchscreen.");
+ touchscreen_dev_available = false;
- ret = info->open(info, NULL, (struct hw_common **)&touchscreen_dev);
- if (ret < 0) {
- _E("Failed to get touchscreen device structure: %d", ret);
- return -EPERM;
+ return -ENODEV;
}
_I("Touchscreen device structure load success.");
+ touchscreen_dev_available = true;
+
return 0;
}
static void touchscreen_exit(void *data)
{
- struct hw_info *info;
-
- if (!touchscreen_dev)
- return;
-
- info = touchscreen_dev->common.info;
- assert(info);
-
- info->close((struct hw_common *)touchscreen_dev);
- touchscreen_dev = NULL;
+ touchscreen_dev_available = false;
+ hal_device_touchscreen_put_backend();
}
static int touchscreen_set_state(enum touchscreen_state state)
@@ -154,7 +137,7 @@ static int touchscreen_set_state(enum touchscreen_state state)
int ret;
char *act;
- if (!touchscreen_dev) {
+ if (!touchscreen_dev_available) {
_E("Touchscreen device structure is not loaded.");
return -ENOENT;
}
@@ -164,18 +147,17 @@ static int touchscreen_set_state(enum touchscreen_state state)
return -EINVAL;
}
- if (!touchscreen_dev->set_state) {
- _E("Touchscreen state change is not supported.");
- return -ENOTSUP;
- }
-
act = (state == TOUCHSCREEN_ON) ? "enable" : "disable";
- ret = touchscreen_dev->set_state(state);
+ ret = hal_device_touchscreen_set_state(state);
if (ret == 0)
_I("Success to %s touchscreen.", act);
- else
- _E("Failed to %s touchscreen: %d", act, ret);
+ else {
+ if (ret == -ENODEV)
+ _E("Touchscreen set state is not supported.");
+ else
+ _E("Failed to %s touchscreen: %d", act, ret);
+ }
return ret;
}
@@ -253,13 +235,13 @@ exit:
static int touchscreen_dump(FILE *fp, int mode, void *dump_data)
{
- int ret;
enum touchscreen_state state;
+ int ret;
- if (!touchscreen_dev || !touchscreen_dev->get_state)
+ ret = hal_device_touchscreen_get_state(&state);
+ if (!touchscreen_dev_available || (ret == -ENODEV))
return 0;
- ret = touchscreen_dev->get_state(&state);
if (ret < 0)
_E("Failed to get touchscreen state: %d", ret);
@@ -351,15 +333,14 @@ static void touchscreen_init(void *data)
} else
_I("There is no battery module.");
- if (touchscreen_dev && touchscreen_dev->set_powersaving) {
- ret = touchscreen_dev->set_powersaving(0);
+ ret = hal_device_touchscreen_set_powersaving(0);
+ if (touchscreen_dev_available && (ret != -ENODEV)) {
if (ret < 0)
powersaving_support = false;
else
powersaving_support = true;
- } else {
+ } else
powersaving_support = false;
- }
vconf_notify_key_changed(VCONFKEY_SETAPPL_TOUCH_WAKEUP_ENABLE,
touchscreen_wakeup_status, NULL);
diff --git a/src/usb/usb-dbus.c b/src/usb/usb-dbus.c
index db428aa4..c6ddfd3d 100644
--- a/src/usb/usb-dbus.c
+++ b/src/usb/usb-dbus.c
@@ -20,8 +20,8 @@
#include <stdbool.h>
#include <vconf.h>
-#include <hw/usb_gadget.h>
#include <libsyscommon/dbus-system.h>
+#include <hal/device/hal-usb_gadget-interface.h>
#include "core/log.h"
diff --git a/src/usb/usb-debug.c b/src/usb/usb-debug.c
index a269af5a..74398eba 100644
--- a/src/usb/usb-debug.c
+++ b/src/usb/usb-debug.c
@@ -20,7 +20,7 @@
#include <stdbool.h>
#include <vconf.h>
-#include <hw/usb_gadget.h>
+#include <hal/device/hal-usb_gadget-interface.h>
#include "core/log.h"
#include "core/device-notifier.h"
diff --git a/src/usb/usb-state.c b/src/usb/usb-state.c
index a88b5dfe..1c6ea74d 100644
--- a/src/usb/usb-state.c
+++ b/src/usb/usb-state.c
@@ -20,7 +20,7 @@
#include <vconf.h>
#include <bundle.h>
#include <eventsystem.h>
-#include <hw/usb_gadget.h>
+#include <hal/device/hal-usb_gadget-interface.h>
#include "core/log.h"
#include "apps/apps.h"
diff --git a/src/usb/usb-tethering.c b/src/usb/usb-tethering.c
index 98c06be8..c788586f 100644
--- a/src/usb/usb-tethering.c
+++ b/src/usb/usb-tethering.c
@@ -20,7 +20,7 @@
#include <stdbool.h>
#include <vconf.h>
-#include <hw/usb_gadget.h>
+#include <hal/device/hal-usb_gadget-interface.h>
#include "core/log.h"
#include "core/device-notifier.h"
diff --git a/src/usb/usb.c b/src/usb/usb.c
index f85bba3b..7ddf8cf4 100644
--- a/src/usb/usb.c
+++ b/src/usb/usb.c
@@ -18,9 +18,9 @@
#include <vconf.h>
-#include <hw/usb_client.h>
-#include <hw/usb_gadget.h>
#include <libsyscommon/dbus-systemd.h>
+#include <hal/device/hal-usb_gadget.h>
+#include <hal/device/hal-usb_gadget-interface.h>
#include "core/log.h"
#include "core/udev.h"
@@ -35,126 +35,6 @@
static int usb_change_gadget(unsigned mode);
static struct display_plugin *disp_plgn;
-static struct usb_client *usb_client;
-static struct usb_gadget_translator *gadget_translator;
-
-static struct usb_gadget_translator *gadget_translator_probe(void)
-{
- struct hw_info *info;
- struct hw_common *common;
- struct usb_gadget_translator *gadget;
-
- if (hw_get_info(USB_GADGET_DEVICE_ID, (const struct hw_info **)&info)) {
- _E("No USB gadget translator.");
- return NULL;
- }
-
- if (!info->open) {
- _E("USB gadget does not have open() ");
- return NULL;
- }
-
- if (info->open(info, NULL, &common) < 0) {
- _E("Failed to open USB gadget translator.");
- return NULL;
- }
-
- gadget = container_of(common, struct usb_gadget_translator, common);
- if (!gadget->id_to_gadget || !gadget->cleanup_gadget) {
- _E("Invalid USB gadget translator.");
-
- if (gadget->common.info)
- gadget->common.info->close(&gadget->common);
-
- return NULL;
- }
-
- return gadget;
-}
-
-static struct usb_client *usb_client_probe(const char *id)
-{
- struct hw_info *info;
- struct hw_common *common;
- struct usb_client *client;
-
- _I("Loading USB client. id=%s", id);
-
- if (hw_get_info(id, (const struct hw_info **)&info)) {
- _I("No USB client. id=%s", id);
- return NULL;
- }
-
- if (!info->open) {
- _E("USB client does not have open(). id=%s", id);
- return NULL;
- }
-
- if (info->open(info, NULL, &common) < 0) {
- _E("Failed to open USB client. id=%s", id);
- return NULL;
- }
-
- client = container_of(common, struct usb_client, common);
- if (!client->reconfigure_gadget || !client->enable || !client->disable) {
- _E("Invalid USB client. id=%s", id);
-
- if (client->common.info->close)
- client->common.info->close(&client->common);
-
- return NULL;
- }
-
- _I("Success lodging USB client. id=%s", id);
- return client;
-}
-
-static int usb_probe(void)
-{
- /* Both the gadget and client should be valid. */
- if (gadget_translator || usb_client) {
- if (gadget_translator && usb_client)
- return 0;
- return -EINVAL;
- }
-
- /* gadget_translator */
- gadget_translator = gadget_translator_probe();
- if (!gadget_translator)
- return -ENODEV;
-
- /* usb_client */
- usb_client = usb_client_probe(USB_CLIENT_HARDWARE_DEVICE_ID);
-
- if (!usb_client)
- usb_client = usb_client_probe(USB_CFS_CLIENT_HARDWARE_DEVICE_ID);
-
- if (!usb_client) {
- if (gadget_translator->common.info)
- gadget_translator->common.info->close(&gadget_translator->common);
- gadget_translator = NULL;
-
- return -ENODEV;
- }
-
- return 0;
-}
-
-static void usb_release()
-{
- if (usb_client) {
- if (usb_client->common.info->close)
- usb_client->common.info->close(&usb_client->common);
- usb_client = NULL;
- }
-
- if (gadget_translator) {
- if (gadget_translator->common.info->close)
- gadget_translator->common.info->close(
- &gadget_translator->common);
- gadget_translator = NULL;
- }
-}
static int usb_config_init(void)
{
@@ -163,82 +43,21 @@ static int usb_config_init(void)
return usb_change_gadget(mode);
}
-static void usb_config_deinit(void)
-{
- if (!usb_client)
- goto no_hal;
-
- usb_client->disable(usb_client);
-
- return;
-
-no_hal:
- /* TODO. Maybe some default action here? */
- return;
-}
-
-static int usb_config_enable(void)
-{
- if (!usb_client)
- goto no_hal;
-
- return usb_client->enable(usb_client);
-
-no_hal:
- /* TODO. Maybe some default action here? */
- return -ENODEV;
-}
-
-static int usb_config_disable(void)
-{
- if (!usb_client)
- goto no_hal;
-
- usb_client->disable(usb_client);
-
- return 0;
-
-no_hal:
- /* TODO. Maybe some default action here? */
- return -ENODEV;
-}
-
/* Precondition: USB_FUNCTION_NONE */
static int usb_change_gadget(unsigned mode)
{
int ret;
- struct usb_gadget *gadget;
- struct usb_gadget_id gadget_id;
-
- if (!gadget_translator || !usb_client) {
- ret = -ENODEV;
- goto out;
- }
-
- memset(&gadget_id, 0, sizeof(gadget_id));
- gadget_id.function_mask = mode;
-
- ret = gadget_translator->id_to_gadget(&gadget_id, &gadget);
- if (ret) {
- _E("Unable to translate USB mode id into gadget: %d", ret);
- goto out;
- }
- ret = usb_client->reconfigure_gadget(usb_client, gadget);
- gadget_translator->cleanup_gadget(gadget);
+ ret = hal_device_usb_gadget_change_mode(mode);
if (ret) {
- _E("Unable to configure USB gadget: %d", ret);
- goto out;
+ /* because usb does not work properly */
+ (void)usb_state_set_current_mode(USB_FUNCTION_NONE);
+ return ret;
}
_I("USB gadget changed to (%#x)", mode);
- return ret;
-
-out:
- /* Although this function has a USB_FUNCTION_NONE precondition, it is to protect against coding mistakes. */
- (void)usb_state_set_current_mode(USB_FUNCTION_NONE); /* because usb does not work properly */
- return ret;
+ return 0;
}
/* Precondition: USB_CONNECTED, USB_FUNCTION_NONE */
@@ -246,7 +65,7 @@ static int usb_enable(unsigned int mode)
{
int ret;
- ret = usb_config_enable();
+ ret = hal_device_usb_gadget_enable();
if (ret < 0) {
_E("Failed to enable USB config: %d", ret);
goto out;
@@ -272,7 +91,7 @@ static int usb_disable(void)
(void)usb_state_set_current_mode(USB_FUNCTION_NONE);
change_usb_state_notification_handler(USB_FUNCTION_NONE);
- ret = usb_config_disable();
+ ret = hal_device_usb_gadget_disable();
if (ret < 0) {
_E("Failed to disable USB config: %d", ret);
return ret;
@@ -466,7 +285,7 @@ static void usb_init(void *data)
usb_state_retrieve_selected_mode();
- ret = usb_probe();
+ ret = hal_device_usb_gadget_get_backend();
if (ret < 0) {
_E("USB client cannot be used: %d", ret);
return;
@@ -499,8 +318,8 @@ static void usb_exit(void *data)
change_usb_state_notification_handler(USB_FUNCTION_NONE);
unregister_udev_uevent_control(&uh);
- usb_config_deinit();
- usb_release();
+ (void)hal_device_usb_gadget_disable();
+ hal_device_usb_gadget_put_backend();
}
static struct extcon_ops extcon_usb_ops = {
diff --git a/src/usbhost/usb-host.c b/src/usbhost/usb-host.c
index 4bb7e0b3..e144ae99 100644
--- a/src/usbhost/usb-host.c
+++ b/src/usbhost/usb-host.c
@@ -18,6 +18,7 @@
#define _GNU_SOURCE
#include <stdio.h>
+#include <stdint.h>
#include <limits.h>
#include <sys/stat.h>
#include <fcntl.h>