Merge tag 'v5.9' into next
[platform/kernel/linux-rpi.git] / drivers / platform / x86 / thinkpad_acpi.c
index 9c4df41..e381067 100644 (file)
@@ -1913,6 +1913,10 @@ enum {   /* hot key scan codes (derived from ACPI DSDT) */
        TP_ACPI_HOTKEYSCAN_CALCULATOR,
        TP_ACPI_HOTKEYSCAN_BLUETOOTH,
        TP_ACPI_HOTKEYSCAN_KEYBOARD,
+       TP_ACPI_HOTKEYSCAN_FN_RIGHT_SHIFT, /* Used by "Lenovo Quick Clean" */
+       TP_ACPI_HOTKEYSCAN_NOTIFICATION_CENTER,
+       TP_ACPI_HOTKEYSCAN_PICKUP_PHONE,
+       TP_ACPI_HOTKEYSCAN_HANGUP_PHONE,
 
        /* Hotkey keymap size */
        TPACPI_HOTKEY_MAP_LEN
@@ -2569,7 +2573,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,
  */
 static int hotkey_kthread(void *data)
 {
-       struct tp_nvram_state s[2];
+       struct tp_nvram_state s[2] = { 0 };
        u32 poll_mask, event_mask;
        unsigned int si, so;
        unsigned long t;
@@ -3429,11 +3433,15 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)
                KEY_UNKNOWN, KEY_UNKNOWN, KEY_UNKNOWN, KEY_UNKNOWN,
                KEY_UNKNOWN,
 
-               KEY_BOOKMARKS,       /* Favorite app, 0x311 */
-               KEY_RESERVED,        /* Clipping tool */
-               KEY_CALC,            /* Calculator (above numpad, P52) */
-               KEY_BLUETOOTH,       /* Bluetooth */
-               KEY_KEYBOARD         /* Keyboard, 0x315 */
+               KEY_BOOKMARKS,                  /* Favorite app, 0x311 */
+               KEY_SELECTIVE_SCREENSHOT,       /* Clipping tool */
+               KEY_CALC,                       /* Calculator (above numpad, P52) */
+               KEY_BLUETOOTH,                  /* Bluetooth */
+               KEY_KEYBOARD,                   /* Keyboard, 0x315 */
+               KEY_FN_RIGHT_SHIFT,             /* Fn + right Shift */
+               KEY_NOTIFICATION_CENTER,        /* Notification Center */
+               KEY_PICKUP_PHONE,               /* Answer incoming call */
+               KEY_HANGUP_PHONE,               /* Decline incoming call */
                },
        };
 
@@ -6829,8 +6837,10 @@ static int __init tpacpi_query_bcl_levels(acpi_handle handle)
        list_for_each_entry(child, &device->children, node) {
                acpi_status status = acpi_evaluate_object(child->handle, "_BCL",
                                                          NULL, &buffer);
-               if (ACPI_FAILURE(status))
+               if (ACPI_FAILURE(status)) {
+                       buffer.length = ACPI_ALLOCATE_BUFFER;
                        continue;
+               }
 
                obj = (union acpi_object *)buffer.pointer;
                if (!obj || (obj->type != ACPI_TYPE_PACKAGE)) {