diff options
author | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2013-08-23 22:12:45 +0200 |
---|---|---|
committer | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2013-08-23 22:12:45 +0200 |
commit | 0189eda6e853a0fc32446a8fe018bb6602eb546a (patch) | |
tree | e9d5dc2ad9a7f1eec2fcaaedf1427f6e7e32ea3c | |
parent | ebc06142fd19d23b06ed726f0291c565fce487da (diff) | |
download | android_hardware_samsung-0189eda6e853a0fc32446a8fe018bb6602eb546a.tar.gz android_hardware_samsung-0189eda6e853a0fc32446a8fe018bb6602eb546a.tar.bz2 android_hardware_samsung-0189eda6e853a0fc32446a8fe018bb6602eb546a.zip |
exynos4x12: liblights: generic button backlight implementation
http://review.cyanogenmod.org/#/c/48922/
Change-Id: I929fcb4f1c2a912e026328cb09f9be527adbaea9
-rw-r--r-- | exynos4/exynos4x12/liblights/lights.c | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/exynos4/exynos4x12/liblights/lights.c b/exynos4/exynos4x12/liblights/lights.c index ec917c1..87fa134 100644 --- a/exynos4/exynos4x12/liblights/lights.c +++ b/exynos4/exynos4x12/liblights/lights.c @@ -148,6 +148,7 @@ static int get_dimmed_color(struct light_state_t const *state, int brightness) return (((red * brightness) / 255) << 16) + (((green * brightness) / 255) << 8) + ((blue * brightness) / 255); } +/* Panel backlight */ static int set_light_backlight(struct light_device_t *dev, struct light_state_t const *state) { @@ -156,26 +157,30 @@ static int set_light_backlight(struct light_device_t *dev, int previous_brightness = read_int(PANEL_FILE); pthread_mutex_lock(&g_lock); - err = write_int(PANEL_FILE, brightness); - -#ifndef EXYNOS4X12_TABLET - if (!previous_brightness && (brightness > 0)) { - err = write_int(BUTTON_FILE, brightness > 0 ? 1 : 2); - } -#endif pthread_mutex_unlock(&g_lock); return err; } -static int close_lights(struct light_device_t *dev) +/* Touchkey backlight */ +static int +set_light_buttons(struct light_device_t* dev, + struct light_state_t const* state) { - ALOGV("close_light is called"); - if (dev) - free(dev); - +#ifdef EXYNOS4X12_TABLET return 0; +#else + int err = 0; + int brightness = rgb_to_brightness(state); + + pthread_mutex_lock(&g_lock); + ALOGD("set_light_buttons: %d\n", brightness > 0 ? 1 : 2); + err = write_int(BUTTON_FILE, brightness > 0 ? 1 : 2); + pthread_mutex_unlock(&g_lock); + + return err; +#endif } /* LEDs */ @@ -273,6 +278,15 @@ static int set_light_leds_attention(struct light_device_t *dev, return set_light_leds(state, 1); } +static int close_lights(struct light_device_t *dev) +{ + ALOGV("close_light is called"); + if (dev) + free(dev); + + return 0; +} + static int open_lights(const struct hw_module_t *module, char const *name, struct hw_device_t **device) { @@ -281,6 +295,8 @@ static int open_lights(const struct hw_module_t *module, char const *name, if (0 == strcmp(LIGHT_ID_BACKLIGHT, name)) set_light = set_light_backlight; + else if (0 == strcmp(LIGHT_ID_BUTTONS, name)) + set_light = set_light_buttons; else if (0 == strcmp(LIGHT_ID_NOTIFICATIONS, name)) set_light = set_light_leds_notifications; else if (0 == strcmp(LIGHT_ID_ATTENTION, name)) |