From 0189eda6e853a0fc32446a8fe018bb6602eb546a Mon Sep 17 00:00:00 2001 From: Daniel Hillenbrand Date: Fri, 23 Aug 2013 22:12:45 +0200 Subject: [PATCH] exynos4x12: liblights: generic button backlight implementation http://review.cyanogenmod.org/#/c/48922/ Change-Id: I929fcb4f1c2a912e026328cb09f9be527adbaea9 --- exynos4/exynos4x12/liblights/lights.c | 40 +++++++++++++++++++-------- 1 file 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)) -- 2.20.1