surfacepro3_button: Add a warning when switching to tablet mode
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Tue, 10 May 2016 11:49:55 +0000 (14:49 +0300)
committerDarren Hart <dvhart@linux.intel.com>
Fri, 27 May 2016 18:47:53 +0000 (11:47 -0700)
Microsoft Surface Book has a tablet mode button. Print another message
once on this event instead of repeating "Unknown event...".

Unfortunately, proper support involves the _DSM method, which is not a
discoverable interface. Just print a warning for now.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Darren Hart <dvhart@linux.intel.com>
drivers/platform/x86/surfacepro3_button.c

index 700e0fa0eec2ec75f7ebe094299a5312e01a8c8b..6505c97705e1486391088baa8728aafd3540403a 100644 (file)
@@ -24,6 +24,8 @@
 #define SURFACE_BUTTON_OBJ_NAME                "VGBI"
 #define SURFACE_BUTTON_DEVICE_NAME     "Surface Pro 3/4 Buttons"
 
+#define SURFACE_BUTTON_NOTIFY_TABLET_MODE      0xc8
+
 #define SURFACE_BUTTON_NOTIFY_PRESS_POWER      0xc6
 #define SURFACE_BUTTON_NOTIFY_RELEASE_POWER    0xc7
 
@@ -33,7 +35,7 @@
 #define SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_UP  0xc0
 #define SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_UP        0xc1
 
-#define SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN        0xc2
+#define SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN                0xc2
 #define SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN      0xc3
 
 ACPI_MODULE_NAME("surface pro 3 button");
@@ -105,9 +107,12 @@ static void surface_button_notify(struct acpi_device *device, u32 event)
        case SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN:
                key_code = KEY_VOLUMEDOWN;
                break;
+       case SURFACE_BUTTON_NOTIFY_TABLET_MODE:
+               dev_warn_once(&device->dev, "Tablet mode is not supported\n");
+               break;
        default:
                dev_info_ratelimited(&device->dev,
-                                 "Unsupported event [0x%x]\n", event);
+                                    "Unsupported event [0x%x]\n", event);
                break;
        }
        input = button->input;