summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKetut Putu Kumajaya <ketut.kumajaya@gmail.com>2014-01-07 12:36:26 +0700
committersbrissen <sbrissen@hotmail.com>2014-01-15 15:30:32 -0500
commite1b1ffd5fceb0c67b8fda417032fb5bfb19f0951 (patch)
tree9e8e1acc53d34c712fc1acb8b01df29e58f9670e
parente2f7ac211d72d81364376847373ed79947062f7b (diff)
downloadandroid_hardware_samsung-e1b1ffd5fceb0c67b8fda417032fb5bfb19f0951.tar.gz
android_hardware_samsung-e1b1ffd5fceb0c67b8fda417032fb5bfb19f0951.tar.bz2
android_hardware_samsung-e1b1ffd5fceb0c67b8fda417032fb5bfb19f0951.zip
exynos4x12: liblights: Fix tablets with button backlight
Also, respect the lights API and return errors when attempting to configure an absent light ID. Change-Id: Ida430fba2fbfaf646f7e02ce2bd7d9134ae8d917
-rw-r--r--exynos4/exynos4x12/liblights/Android.mk5
-rw-r--r--exynos4/exynos4x12/liblights/lights.c22
2 files changed, 9 insertions, 18 deletions
diff --git a/exynos4/exynos4x12/liblights/Android.mk b/exynos4/exynos4x12/liblights/Android.mk
index a16bab5..5392476 100644
--- a/exynos4/exynos4x12/liblights/Android.mk
+++ b/exynos4/exynos4x12/liblights/Android.mk
@@ -33,6 +33,11 @@ ifeq ($(BOARD_EXYNOS4X12_TABLET),true)
LOCAL_CFLAGS += -DEXYNOS4X12_TABLET
endif
+ifeq ($(BOARD_EXYNOS4X12_TABLET_HAS_LED_BUTTONS),true)
+ LOCAL_CFLAGS += -DEXYNOS4X12_TABLET
+ LOCAL_CFLAGS += -DEXYNOS4X12_TABLET_HAS_LED_BUTTONS
+endif
+
LOCAL_MODULE := lights.$(TARGET_BOARD_PLATFORM)
LOCAL_MODULE_TAGS := optional
diff --git a/exynos4/exynos4x12/liblights/lights.c b/exynos4/exynos4x12/liblights/lights.c
index 87fa134..c8073d5 100644
--- a/exynos4/exynos4x12/liblights/lights.c
+++ b/exynos4/exynos4x12/liblights/lights.c
@@ -40,7 +40,6 @@ static pthread_once_t g_init = PTHREAD_ONCE_INIT;
static pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;
char const*const PANEL_FILE = "/sys/class/backlight/panel/brightness";
-#ifndef EXYNOS4X12_TABLET
char const*const BUTTON_FILE = "/sys/class/sec/sec_touchkey/brightness";
char const*const LED_RED = "/sys/class/sec/led/led_r";
@@ -48,7 +47,6 @@ char const*const LED_GREEN = "/sys/class/sec/led/led_g";
char const*const LED_BLUE = "/sys/class/sec/led/led_b";
char const*const LED_BLINK = "/sys/class/sec/led/led_blink";
char const*const LED_BRIGHTNESS = "/sys/class/sec/led/led_br_lev";
-#endif
#define MAX_WRITE_CMD 25
@@ -154,7 +152,6 @@ static int set_light_backlight(struct light_device_t *dev,
{
int err = 0;
int brightness = rgb_to_brightness(state);
- int previous_brightness = read_int(PANEL_FILE);
pthread_mutex_lock(&g_lock);
err = write_int(PANEL_FILE, brightness);
@@ -168,9 +165,6 @@ static int
set_light_buttons(struct light_device_t* dev,
struct light_state_t const* state)
{
-#ifdef EXYNOS4X12_TABLET
- return 0;
-#else
int err = 0;
int brightness = rgb_to_brightness(state);
@@ -180,30 +174,23 @@ set_light_buttons(struct light_device_t* dev,
pthread_mutex_unlock(&g_lock);
return err;
-#endif
}
/* LEDs */
static int write_leds(struct led_config led)
{
int err = 0;
-#ifndef EXYNOS4X12_TABLET
pthread_mutex_lock(&g_lock);
err = write_int(LED_RED, led.red);
err = write_int(LED_GREEN, led.green);
err = write_int(LED_BLUE, led.blue);
err = write_str(LED_BLINK, led.blink);
pthread_mutex_unlock(&g_lock);
-#endif
return err;
}
static int set_light_leds(struct light_state_t const *state, int type)
{
-#ifdef EXYNOS4X12_TABLET
- return 0;
-#else
-
struct led_config led;
unsigned int colorRGB;
@@ -233,7 +220,6 @@ static int set_light_leds(struct light_state_t const *state, int type)
}
return write_leds(led);
-#endif
}
static int set_light_leds_notifications(struct light_device_t *dev,
@@ -245,9 +231,6 @@ static int set_light_leds_notifications(struct light_device_t *dev,
static int set_light_battery(struct light_device_t *dev,
struct light_state_t const *state)
{
-#ifdef EXYNOS4X12_TABLET
- return 0;
-#else
struct led_config led;
int brightness = rgb_to_brightness(state);
unsigned int colorRGB;
@@ -269,7 +252,6 @@ static int set_light_battery(struct light_device_t *dev,
g_BatteryStore = led;
return write_leds(led);
-#endif
}
static int set_light_leds_attention(struct light_device_t *dev,
@@ -295,14 +277,18 @@ 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;
+#if !defined(EXYNOS4X12_TABLET) || defined(EXYNOS4X12_TABLET_HAS_LED_BUTTONS)
else if (0 == strcmp(LIGHT_ID_BUTTONS, name))
set_light = set_light_buttons;
+#endif
+#ifndef EXYNOS4X12_TABLET
else if (0 == strcmp(LIGHT_ID_NOTIFICATIONS, name))
set_light = set_light_leds_notifications;
else if (0 == strcmp(LIGHT_ID_ATTENTION, name))
set_light = set_light_leds_attention;
else if (0 == strcmp(LIGHT_ID_BATTERY, name))
set_light = set_light_battery;
+#endif
else
return -EINVAL;