]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
asus-laptop: always report brightness key events
authorCorentin Chary <corentin.chary@gmail.com>
Thu, 29 Nov 2012 08:12:39 +0000 (09:12 +0100)
committerMatthew Garrett <matthew.garrett@nebula.com>
Fri, 28 Dec 2012 15:53:37 +0000 (10:53 -0500)
Signed-off-by: Corentin Chary <corentin.chary@gmail.com>
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
drivers/platform/x86/asus-laptop.c

index 11e0110e1c6b134d2f0c87fd0f3afb237e6b7633..61a9150e56e42e8a5cd2de0dde3506e9475cd26d 100644 (file)
@@ -128,10 +128,12 @@ MODULE_PARM_DESC(als_status, "Set the ALS status on boot "
 /*
  * Some events we use, same for all Asus
  */
-#define ATKD_BR_UP     0x10    /* (event & ~ATKD_BR_UP) = brightness level */
-#define ATKD_BR_DOWN   0x20    /* (event & ~ATKD_BR_DOWN) = britghness level */
-#define ATKD_BR_MIN    ATKD_BR_UP
-#define ATKD_BR_MAX    (ATKD_BR_DOWN | 0xF)    /* 0x2f */
+#define ATKD_BRNUP_MIN         0x10
+#define ATKD_BRNUP_MAX         0x1f
+#define ATKD_BRNDOWN_MIN       0x20
+#define ATKD_BRNDOWN_MAX       0x2f
+#define ATKD_BRNDOWN           0x20
+#define ATKD_BRNUP             0x2f
 #define ATKD_LCD_ON    0x33
 #define ATKD_LCD_OFF   0x34
 
@@ -301,6 +303,8 @@ static const struct key_entry asus_keymap[] = {
        {KE_KEY, 0x17, { KEY_ZOOM } },
        {KE_KEY, 0x1f, { KEY_BATTERY } },
        /* End of Lenovo SL Specific keycodes */
+       {KE_KEY, ATKD_BRNDOWN, { KEY_BRIGHTNESSDOWN } },
+       {KE_KEY, ATKD_BRNUP, { KEY_BRIGHTNESSUP } },
        {KE_KEY, 0x30, { KEY_VOLUMEUP } },
        {KE_KEY, 0x31, { KEY_VOLUMEDOWN } },
        {KE_KEY, 0x32, { KEY_MUTE } },
@@ -1544,15 +1548,19 @@ static void asus_acpi_notify(struct acpi_device *device, u32 event)
                                        dev_name(&asus->device->dev), event,
                                        count);
 
-       /* Brightness events are special */
-       if (event >= ATKD_BR_MIN && event <= ATKD_BR_MAX) {
+       if (event >= ATKD_BRNUP_MIN && event <= ATKD_BRNUP_MAX)
+               event = ATKD_BRNUP;
+       else if (event >= ATKD_BRNDOWN_MIN &&
+                event <= ATKD_BRNDOWN_MAX)
+               event = ATKD_BRNDOWN;
 
-               /* Ignore them completely if the acpi video driver is used */
+       /* Brightness events are special */
+       if (event == ATKD_BRNDOWN || event == ATKD_BRNUP) {
                if (asus->backlight_device != NULL) {
                        /* Update the backlight device. */
                        asus_backlight_notify(asus);
+                       return ;
                }
-               return ;
        }
 
        /* Accelerometer "coarse orientation change" event */