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 @@
     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 @@
     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 @@
     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 @@
 
     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))
