diff options
author | lokilee73 <changjoo.lee@samsung.com> | 2021-01-12 09:54:42 +0900 |
---|---|---|
committer | INSUN PYO <insun.pyo@samsung.com> | 2021-01-26 08:07:16 +0900 |
commit | 02c021113393b4db2c501133eedb2e2140e77576 (patch) | |
tree | 976a9c30b39f7b8592ab0cc2baa2345dda11fbc4 | |
parent | 965cb8542001f1a03fb08407f8cf9fa33d9838b2 (diff) | |
download | deviced-submit/tizen/20210127.032903.tar.gz deviced-submit/tizen/20210127.032903.tar.bz2 deviced-submit/tizen/20210127.032903.zip |
Apply next HAL architecture (hal api + backend)submit/tizen/20210127.032903submit/tizen/20210126.081759submit/tizen/20210126.064541submit/tizen/20210126.055732accepted/tizen/unified/20210129.002257
Change-Id: I0d11e7e89a83846bbb7ab93b17cd3dc066e911e3
Signed-off-by: lokilee73 <changjoo.lee@samsung.com>
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> |