Skip to contentSkip to conversation

surface pro 4: Add support for Surface Pro 4 Buttons

PATCH Superseded Weng Xuetian 4 participants 17 messages Dec 24, 2015 – Jan 19, 2016 x86 platform drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 surface pro 4: Add support for Surface Pro 4 Buttons

Surface Pro 4 button is managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to Support Surface Pro 4, and rename the driver to surfacepro_button accordingly.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
 MAINTAINERS                               |   4 +-
 drivers/platform/x86/Kconfig              |   6 +-
 drivers/platform/x86/Makefile             |   2 +-
 drivers/platform/x86/surfacepro3_button.c | 216 -----------------------------
 drivers/platform/x86/surfacepro_button.c  | 218 ++++++++++++++++++++++++++++++
 5 files changed, 224 insertions(+), 222 deletions(-)
 delete mode 100644 drivers/platform/x86/surfacepro3_button.c
 create mode 100644 drivers/platform/x86/surfacepro_button.c
MAINTAINERS +2 -2
index 233f834..1c07436 100644
@@ -7019,11 +7019,11 @@ T:	git git://git.monstr.eu/linux-2.6-microblaze.git
 S:	Supported
 F:	arch/microblaze/
 
-MICROSOFT SURFACE PRO 3 BUTTON DRIVER
+MICROSOFT SURFACE PRO SERIES BUTTON DRIVER
 M:	Chen Yu <[email protected]>
 L:	[email protected]
 S:	Supported
-F:	drivers/platform/x86/surfacepro3_button.c
+F:	drivers/platform/x86/surfacepro_button.c
 
 MICROTEK X6 SCANNER
 M:	Oliver Neukum <[email protected]>
drivers/platform/x86/Kconfig +3 -3
index 1089eaa..3358fb0 100644
@@ -939,9 +939,9 @@ config INTEL_PMC_IPC
 	The PMC is an ARC processor which defines IPC commands for communication
 	with other entities in the CPU.
 
-config SURFACE_PRO3_BUTTON
-	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+config SURFACE_PRO_BUTTON
+	tristate "Power/home/volume buttons driver for Microsoft Surface Pro Series tablet"
 	depends on ACPI && INPUT
 	---help---
-	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro Series tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/Makefile +1 -1
index 3ca78a3..b4ece33 100644
@@ -61,4 +61,4 @@ obj-$(CONFIG_INTEL_SMARTCONNECT)	+= intel-smartconnect.o
 obj-$(CONFIG_PVPANIC)           += pvpanic.o
 obj-$(CONFIG_ALIENWARE_WMI)	+= alienware-wmi.o
 obj-$(CONFIG_INTEL_PMC_IPC)	+= intel_pmc_ipc.o
-obj-$(CONFIG_SURFACE_PRO3_BUTTON)	+= surfacepro3_button.o
+obj-$(CONFIG_SURFACE_PRO_BUTTON)	+= surfacepro_button.o
drivers/platform/x86/surfacepro3_button.c deleted +0 -216

216 lines not on this page · raw message

drivers/platform/x86/surfacepro_button.c new file +218 -0

218 lines not on this page · raw message

Signature · 1 line
2.6.4
#1 lore raw
Quoted 6 lines · Weng Xuetian

Surface Pro 4 button is managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to Support Surface Pro 4, and rename the driver to surfacepro_button accordingly.

No review until you resend with a properly formatted patch, i.e. with -M -C.

Quoted 511 lines

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
 MAINTAINERS                               |   4 +-
 drivers/platform/x86/Kconfig              |   6 +-
 drivers/platform/x86/Makefile             |   2 +-
 drivers/platform/x86/surfacepro3_button.c | 216 -----------------------------
 drivers/platform/x86/surfacepro_button.c  | 218 ++++++++++++++++++++++++++++++
 5 files changed, 224 insertions(+), 222 deletions(-)
 delete mode 100644 drivers/platform/x86/surfacepro3_button.c
 create mode 100644 drivers/platform/x86/surfacepro_button.c
MAINTAINERS +2 -2
index 233f834..1c07436 100644
@@ -7019,11 +7019,11 @@ T:      git git://git.monstr.eu/linux-2.6-microblaze.git
 S:     Supported
 F:     arch/microblaze/
 
-MICROSOFT SURFACE PRO 3 BUTTON DRIVER
+MICROSOFT SURFACE PRO SERIES BUTTON DRIVER
 M:     Chen Yu <[email protected]>
 L:     [email protected]
 S:     Supported
-F:     drivers/platform/x86/surfacepro3_button.c
+F:     drivers/platform/x86/surfacepro_button.c
 
 MICROTEK X6 SCANNER
 M:     Oliver Neukum <[email protected]>
drivers/platform/x86/Kconfig +3 -3
index 1089eaa..3358fb0 100644
@@ -939,9 +939,9 @@ config INTEL_PMC_IPC
        The PMC is an ARC processor which defines IPC commands for communication
        with other entities in the CPU.
 
-config SURFACE_PRO3_BUTTON
-       tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+config SURFACE_PRO_BUTTON
+       tristate "Power/home/volume buttons driver for Microsoft Surface Pro Series tablet"
        depends on ACPI && INPUT
        ---help---
-         This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+         This driver handles the power/home/volume buttons on the Microsoft Surface Pro Series tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/Makefile +1 -1
index 3ca78a3..b4ece33 100644
@@ -61,4 +61,4 @@ obj-$(CONFIG_INTEL_SMARTCONNECT)      += intel-smartconnect.o
 obj-$(CONFIG_PVPANIC)           += pvpanic.o
 obj-$(CONFIG_ALIENWARE_WMI)    += alienware-wmi.o
 obj-$(CONFIG_INTEL_PMC_IPC)    += intel_pmc_ipc.o
-obj-$(CONFIG_SURFACE_PRO3_BUTTON)      += surfacepro3_button.o
+obj-$(CONFIG_SURFACE_PRO_BUTTON)       += surfacepro_button.o
drivers/platform/x86/surfacepro3_button.c deleted +0 -216
deleted file mode 100644
index f7dade3..0000000
@@ -1,216 +0,0 @@
-/*
- * power/home/volume button support for
- * Microsoft Surface Pro 3 tablet.
- *
- * Copyright (c) 2015 Intel Corporation.
- * All rights reserved.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; version 2
- * of the License.
- */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/types.h>
-#include <linux/input.h>
-#include <linux/acpi.h>
-#include <acpi/button.h>
-
-#define SURFACE_BUTTON_HID             "MSHW0028"
-#define SURFACE_BUTTON_OBJ_NAME                "VGBI"
-#define SURFACE_BUTTON_DEVICE_NAME     "Surface Pro 3 Buttons"
-
-#define SURFACE_BUTTON_NOTIFY_PRESS_POWER      0xc6
-#define SURFACE_BUTTON_NOTIFY_RELEASE_POWER    0xc7
-
-#define SURFACE_BUTTON_NOTIFY_PRESS_HOME       0xc4
-#define SURFACE_BUTTON_NOTIFY_RELEASE_HOME     0xc5
-
-#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_RELEASE_VOLUME_DOWN      0xc3
-
-ACPI_MODULE_NAME("surface pro 3 button");
-
-MODULE_AUTHOR("Chen Yu");
-MODULE_DESCRIPTION("Surface Pro3 Button Driver");
-MODULE_LICENSE("GPL v2");
-
-/*
- * Power button, Home button, Volume buttons support is supposed to
- * be covered by drivers/input/misc/soc_button_array.c, which is implemented
- * according to "Windows ACPI Design Guide for SoC Platforms".
- * However surface pro3 seems not to obey the specs, instead it uses
- * device VGBI(MSHW0028) for dispatching the events.
- * We choose acpi_driver rather than platform_driver/i2c_driver because
- * although VGBI has an i2c resource connected to i2c controller, it
- * is not embedded in any i2c controller's scope, thus neither platform_device
- * will be created, nor i2c_client will be enumerated, we have to use
- * acpi_driver.
- */
-static const struct acpi_device_id surface_button_device_ids[] = {
-       {SURFACE_BUTTON_HID,    0},
-       {"", 0},
-};
-MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);
-
-struct surface_button {
-       unsigned int type;
-       struct input_dev *input;
-       char phys[32];                  /* for input device */
-       unsigned long pushed;
-       bool suspended;
-};
-
-static void surface_button_notify(struct acpi_device *device, u32 event)
-{
-       struct surface_button *button = acpi_driver_data(device);
-       struct input_dev *input;
-       int key_code = KEY_RESERVED;
-       bool pressed = false;
-
-       switch (event) {
-       /* Power button press,release handle */
-       case SURFACE_BUTTON_NOTIFY_PRESS_POWER:
-               pressed = true;
-               /*fall through*/
-       case SURFACE_BUTTON_NOTIFY_RELEASE_POWER:
-               key_code = KEY_POWER;
-               break;
-       /* Home button press,release handle */
-       case SURFACE_BUTTON_NOTIFY_PRESS_HOME:
-               pressed = true;
-               /*fall through*/
-       case SURFACE_BUTTON_NOTIFY_RELEASE_HOME:
-               key_code = KEY_LEFTMETA;
-               break;
-       /* Volume up button press,release handle */
-       case SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_UP:
-               pressed = true;
-               /*fall through*/
-       case SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_UP:
-               key_code = KEY_VOLUMEUP;
-               break;
-       /* Volume down button press,release handle */
-       case SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN:
-               pressed = true;
-               /*fall through*/
-       case SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN:
-               key_code = KEY_VOLUMEDOWN;
-               break;
-       default:
-               dev_info_ratelimited(&device->dev,
-                                 "Unsupported event [0x%x]\n", event);
-               break;
-       }
-       input = button->input;
-       if (KEY_RESERVED == key_code)
-               return;
-       if (pressed)
-               pm_wakeup_event(&device->dev, 0);
-       if (button->suspended)
-               return;
-       input_report_key(input, key_code, pressed?1:0);
-       input_sync(input);
-}
-
-#ifdef CONFIG_PM_SLEEP
-static int surface_button_suspend(struct device *dev)
-{
-       struct acpi_device *device = to_acpi_device(dev);
-       struct surface_button *button = acpi_driver_data(device);
-
-       button->suspended = true;
-       return 0;
-}
-
-static int surface_button_resume(struct device *dev)
-{
-       struct acpi_device *device = to_acpi_device(dev);
-       struct surface_button *button = acpi_driver_data(device);
-
-       button->suspended = false;
-       return 0;
-}
-#endif
-
-static int surface_button_add(struct acpi_device *device)
-{
-       struct surface_button *button;
-       struct input_dev *input;
-       const char *hid = acpi_device_hid(device);
-       char *name;
-       int error;
-
-       if (strncmp(acpi_device_bid(device), SURFACE_BUTTON_OBJ_NAME,
-           strlen(SURFACE_BUTTON_OBJ_NAME)))
-               return -ENODEV;
-
-       button = kzalloc(sizeof(struct surface_button), GFP_KERNEL);
-       if (!button)
-               return -ENOMEM;
-
-       device->driver_data = button;
-       button->input = input = input_allocate_device();
-       if (!input) {
-               error = -ENOMEM;
-               goto err_free_button;
-       }
-
-       name = acpi_device_name(device);
-       strcpy(name, SURFACE_BUTTON_DEVICE_NAME);
-       snprintf(button->phys, sizeof(button->phys), "%s/buttons", hid);
-
-       input->name = name;
-       input->phys = button->phys;
-       input->id.bustype = BUS_HOST;
-       input->dev.parent = &device->dev;
-       input_set_capability(input, EV_KEY, KEY_POWER);
-       input_set_capability(input, EV_KEY, KEY_LEFTMETA);
-       input_set_capability(input, EV_KEY, KEY_VOLUMEUP);
-       input_set_capability(input, EV_KEY, KEY_VOLUMEDOWN);
-
-       error = input_register_device(input);
-       if (error)
-               goto err_free_input;
-       dev_info(&device->dev,
-                       "%s [%s]\n", name, acpi_device_bid(device));
-       return 0;
-
- err_free_input:
-       input_free_device(input);
- err_free_button:
-       kfree(button);
-       return error;
-}
-
-static int surface_button_remove(struct acpi_device *device)
-{
-       struct surface_button *button = acpi_driver_data(device);
-
-       input_unregister_device(button->input);
-       kfree(button);
-       return 0;
-}
-
-static SIMPLE_DEV_PM_OPS(surface_button_pm,
-               surface_button_suspend, surface_button_resume);
-
-static struct acpi_driver surface_button_driver = {
-       .name = "surface_pro3_button",
-       .class = "SurfacePro3",
-       .ids = surface_button_device_ids,
-       .ops = {
-               .add = surface_button_add,
-               .remove = surface_button_remove,
-               .notify = surface_button_notify,
-       },
-       .drv.pm = &surface_button_pm,
-};
-
-module_acpi_driver(surface_button_driver);
drivers/platform/x86/surfacepro_button.c new file +218 -1
new file mode 100644
index 0000000..cda52b8
@@ -0,0 +1,218 @@
+/*
+ * power/home/volume button support for
+ * Microsoft Surface Pro Series tablet.
+ *
+ * Copyright (c) 2015 Intel Corporation.
+ * All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; version 2
+ * of the License.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/types.h>
+#include <linux/input.h>
+#include <linux/acpi.h>
+#include <acpi/button.h>
+
+#define SURFACE_PRO3_BUTTON_HID                "MSHW0028"
+#define SURFACE_PRO4_BUTTON_HID                "MSHW0040"
+#define SURFACE_BUTTON_OBJ_NAME                "VGBI"
+#define SURFACE_BUTTON_DEVICE_NAME     "Surface Pro Series Buttons"
+
+#define SURFACE_BUTTON_NOTIFY_PRESS_POWER      0xc6
+#define SURFACE_BUTTON_NOTIFY_RELEASE_POWER    0xc7
+
+#define SURFACE_BUTTON_NOTIFY_PRESS_HOME       0xc4
+#define SURFACE_BUTTON_NOTIFY_RELEASE_HOME     0xc5
+
+#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_RELEASE_VOLUME_DOWN      0xc3
+
+ACPI_MODULE_NAME("surface pro series button");
+
+MODULE_AUTHOR("Chen Yu");
+MODULE_DESCRIPTION("Surface Pro Series Button Driver");
+MODULE_LICENSE("GPL v2");
+
+/*
+ * Power button, Home button, Volume buttons support is supposed to
+ * be covered by drivers/input/misc/soc_button_array.c, which is implemented
+ * according to "Windows ACPI Design Guide for SoC Platforms".
+ * However surface pro3 seems not to obey the specs, instead it uses
+ * device VGBI(MSHW0028) for dispatching the events.
+ * We choose acpi_driver rather than platform_driver/i2c_driver because
+ * although VGBI has an i2c resource connected to i2c controller, it
+ * is not embedded in any i2c controller's scope, thus neither platform_device
+ * will be created, nor i2c_client will be enumerated, we have to use
+ * acpi_driver.
+ */
+static const struct acpi_device_id surface_button_device_ids[] = {
+       {SURFACE_PRO3_BUTTON_HID,    0},
+       {SURFACE_PRO4_BUTTON_HID,    0},
+       {"", 0},
+};
+MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);
+
+struct surface_button {
+       unsigned int type;
+       struct input_dev *input;
+       char phys[32];                  /* for input device */
+       unsigned long pushed;
+       bool suspended;
+};
+
+static void surface_button_notify(struct acpi_device *device, u32 event)
+{
+       struct surface_button *button = acpi_driver_data(device);
+       struct input_dev *input;
+       int key_code = KEY_RESERVED;
+       bool pressed = false;
+
+       switch (event) {
+       /* Power button press,release handle */
+       case SURFACE_BUTTON_NOTIFY_PRESS_POWER:
+               pressed = true;
+               /*fall through*/
+       case SURFACE_BUTTON_NOTIFY_RELEASE_POWER:
+               key_code = KEY_POWER;
+               break;
+       /* Home button press,release handle */
+       case SURFACE_BUTTON_NOTIFY_PRESS_HOME:
+               pressed = true;
+               /*fall through*/
+       case SURFACE_BUTTON_NOTIFY_RELEASE_HOME:
+               key_code = KEY_LEFTMETA;
+               break;
+       /* Volume up button press,release handle */
+       case SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_UP:
+               pressed = true;
+               /*fall through*/
+       case SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_UP:
+               key_code = KEY_VOLUMEUP;
+               break;
+       /* Volume down button press,release handle */
+       case SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN:
+               pressed = true;
+               /*fall through*/
+       case SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN:
+               key_code = KEY_VOLUMEDOWN;
+               break;
+       default:
+               dev_info_ratelimited(&device->dev,
+                                 "Unsupported event [0x%x]\n", event);
+               break;
+       }
+       input = button->input;
+       if (KEY_RESERVED == key_code)
+               return;
+       if (pressed)
+               pm_wakeup_event(&device->dev, 0);
+       if (button->suspended)
+               return;
+       input_report_key(input, key_code, pressed?1:0);
+       input_sync(input);
+}
+
+#ifdef CONFIG_PM_SLEEP
+static int surface_button_suspend(struct device *dev)
+{
+       struct acpi_device *device = to_acpi_device(dev);
+       struct surface_button *button = acpi_driver_data(device);
+
+       button->suspended = true;
+       return 0;
+}
+
+static int surface_button_resume(struct device *dev)
+{
+       struct acpi_device *device = to_acpi_device(dev);
+       struct surface_button *button = acpi_driver_data(device);
+
+       button->suspended = false;
+       return 0;
+}
+#endif
+
+static int surface_button_add(struct acpi_device *device)
+{
+       struct surface_button *button;
+       struct input_dev *input;
+       const char *hid = acpi_device_hid(device);
+       char *name;
+       int error;
+
+       if (strncmp(acpi_device_bid(device), SURFACE_BUTTON_OBJ_NAME,
+           strlen(SURFACE_BUTTON_OBJ_NAME)))
+               return -ENODEV;
+
+       button = kzalloc(sizeof(struct surface_button), GFP_KERNEL);
+       if (!button)
+               return -ENOMEM;
+
+       device->driver_data = button;
+       button->input = input = input_allocate_device();
+       if (!input) {
+               error = -ENOMEM;
+               goto err_free_button;
+       }
+
+       name = acpi_device_name(device);
+       strcpy(name, SURFACE_BUTTON_DEVICE_NAME);
+       snprintf(button->phys, sizeof(button->phys), "%s/buttons", hid);
+
+       input->name = name;
+       input->phys = button->phys;
+       input->id.bustype = BUS_HOST;
+       input->dev.parent = &device->dev;
+       input_set_capability(input, EV_KEY, KEY_POWER);
+       input_set_capability(input, EV_KEY, KEY_LEFTMETA);
+       input_set_capability(input, EV_KEY, KEY_VOLUMEUP);
+       input_set_capability(input, EV_KEY, KEY_VOLUMEDOWN);
+
+       error = input_register_device(input);
+       if (error)
+               goto err_free_input;
+       dev_info(&device->dev,
+                       "%s [%s]\n", name, acpi_device_bid(device));
+       return 0;
+
+ err_free_input:
+       input_free_device(input);
+ err_free_button:
+       kfree(button);
+       return error;
+}
+
+static int surface_button_remove(struct acpi_device *device)
+{
+       struct surface_button *button = acpi_driver_data(device);
+
+       input_unregister_device(button->input);
+       kfree(button);
+       return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(surface_button_pm,
+               surface_button_suspend, surface_button_resume);
+
+static struct acpi_driver surface_button_driver = {
+       .name = "surface_pro_button",
+       .class = "SurfacePro",
+       .ids = surface_button_device_ids,
+       .ops = {
+               .add = surface_button_add,
+               .remove = surface_button_remove,
+               .notify = surface_button_notify,
+       },
+       .drv.pm = &surface_button_pm,
+};
+
+module_acpi_driver(surface_button_driver);
--

2.6.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Signature · 2 lines
With Best Regards,
Andy Shevchenko
#2 lore raw

PATCH v2 1/1 surface pro 4: Add support for Surface Pro 4 Buttons

In reply to Weng Xuetian

Surface Pro 4 button is managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to Support Surface Pro 4, and rename the driver to surfacepro_button accordingly.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
v2:
- Reformat patch with -M -C

---
 MAINTAINERS                                            |  4 ++--
 drivers/platform/x86/Kconfig                           |  6 +++---
 drivers/platform/x86/Makefile                          |  2 +-
 .../x86/{surfacepro3_button.c => surfacepro_button.c}  | 18 ++++++++++--------
 4 files changed, 16 insertions(+), 14 deletions(-)
 rename drivers/platform/x86/{surfacepro3_button.c => surfacepro_button.c} (93%)
MAINTAINERS +2 -2
index 233f834..1c07436 100644
@@ -7019,11 +7019,11 @@ T:	git git://git.monstr.eu/linux-2.6-microblaze.git
 S:	Supported
 F:	arch/microblaze/
 
-MICROSOFT SURFACE PRO 3 BUTTON DRIVER
+MICROSOFT SURFACE PRO SERIES BUTTON DRIVER
 M:	Chen Yu <[email protected]>
 L:	[email protected]
 S:	Supported
-F:	drivers/platform/x86/surfacepro3_button.c
+F:	drivers/platform/x86/surfacepro_button.c
 
 MICROTEK X6 SCANNER
 M:	Oliver Neukum <[email protected]>
drivers/platform/x86/Kconfig +3 -3
index 1089eaa..3358fb0 100644
@@ -939,9 +939,9 @@ config INTEL_PMC_IPC
 	The PMC is an ARC processor which defines IPC commands for communication
 	with other entities in the CPU.
 
-config SURFACE_PRO3_BUTTON
-	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+config SURFACE_PRO_BUTTON
+	tristate "Power/home/volume buttons driver for Microsoft Surface Pro Series tablet"
 	depends on ACPI && INPUT
 	---help---
-	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro Series tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/Makefile +1 -1
index 3ca78a3..b4ece33 100644
@@ -61,4 +61,4 @@ obj-$(CONFIG_INTEL_SMARTCONNECT)	+= intel-smartconnect.o
 obj-$(CONFIG_PVPANIC)           += pvpanic.o
 obj-$(CONFIG_ALIENWARE_WMI)	+= alienware-wmi.o
 obj-$(CONFIG_INTEL_PMC_IPC)	+= intel_pmc_ipc.o
-obj-$(CONFIG_SURFACE_PRO3_BUTTON)	+= surfacepro3_button.o
+obj-$(CONFIG_SURFACE_PRO_BUTTON)	+= surfacepro_button.o
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +10 -8
similarity index 93%
rename from drivers/platform/x86/surfacepro3_button.c
rename to drivers/platform/x86/surfacepro_button.c
index f7dade3..cda52b8 100644
@@ -1,6 +1,6 @@
 /*
  * power/home/volume button support for
- * Microsoft Surface Pro 3 tablet.
+ * Microsoft Surface Pro Series tablet.
  *
  * Copyright (c) 2015 Intel Corporation.
  * All rights reserved.
@@ -19,9 +19,10 @@
 #include <linux/acpi.h>
 #include <acpi/button.h>
 
-#define SURFACE_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO3_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO4_BUTTON_HID		"MSHW0040"
 #define SURFACE_BUTTON_OBJ_NAME		"VGBI"
-#define SURFACE_BUTTON_DEVICE_NAME	"Surface Pro 3 Buttons"
+#define SURFACE_BUTTON_DEVICE_NAME	"Surface Pro Series Buttons"
 
 #define SURFACE_BUTTON_NOTIFY_PRESS_POWER	0xc6
 #define SURFACE_BUTTON_NOTIFY_RELEASE_POWER	0xc7
@@ -35,10 +36,10 @@
 #define SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN	0xc2
 #define SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN	0xc3
 
-ACPI_MODULE_NAME("surface pro 3 button");
+ACPI_MODULE_NAME("surface pro series button");
 
 MODULE_AUTHOR("Chen Yu");
-MODULE_DESCRIPTION("Surface Pro3 Button Driver");
+MODULE_DESCRIPTION("Surface Pro Series Button Driver");
 MODULE_LICENSE("GPL v2");
 
 /*
@@ -54,7 +55,8 @@ MODULE_LICENSE("GPL v2");
  * acpi_driver.
  */
 static const struct acpi_device_id surface_button_device_ids[] = {
-	{SURFACE_BUTTON_HID,    0},
+	{SURFACE_PRO3_BUTTON_HID,    0},
+	{SURFACE_PRO4_BUTTON_HID,    0},
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);
@@ -202,8 +204,8 @@ static SIMPLE_DEV_PM_OPS(surface_button_pm,
 		surface_button_suspend, surface_button_resume);
 
 static struct acpi_driver surface_button_driver = {
-	.name = "surface_pro3_button",
-	.class = "SurfacePro3",
+	.name = "surface_pro_button",
+	.class = "SurfacePro",
 	.ids = surface_button_device_ids,
 	.ops = {
 		.add = surface_button_add,
Signature · 1 line
2.6.4
#3 lore raw

Hi,

Quoted 11 lines

-----Original Message-----
From: Weng Xuetian [mailto:[email protected]]
Sent: Monday, December 28, 2015 1:30 AM
To: Chen, Yu C
Cc: Darren Hart; [email protected]; platform-driver- [email protected]; Weng Xuetian
Subject: [PATCH v2] surface pro 4: Add support for Surface Pro 4 Buttons

Surface Pro 4 button is managed by a device with _HID "MSHW0040" different from Surface Pro 3.

s/button is/buttons are

Quoted 3 lines

This commit adds MSHW0040 to id list to Support Surface Pro 4, and rename the driver to surfacepro_button accordingly.

s/Support/support the
s/rename/renames

Quoted 5 lines

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
v2:
- Reformat patch with -M -C

others look good to me,

thanks,
yu

#4 lore raw

PATCH v3 1/1 surface pro 4: Add support for Surface Pro 4 Buttons

In reply to Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4, and renames the driver to surfacepro_button accordingly.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
v3:
- Fix commit message grammar mistakes.
v2:
- Reformat patch with -M -C

---
 MAINTAINERS                                            |  4 ++--
 drivers/platform/x86/Kconfig                           |  6 +++---
 drivers/platform/x86/Makefile                          |  2 +-
 .../x86/{surfacepro3_button.c => surfacepro_button.c}  | 18 ++++++++++--------
 4 files changed, 16 insertions(+), 14 deletions(-)
 rename drivers/platform/x86/{surfacepro3_button.c => surfacepro_button.c} (93%)
MAINTAINERS +2 -2
index 233f834..1c07436 100644
@@ -7019,11 +7019,11 @@ T:	git git://git.monstr.eu/linux-2.6-microblaze.git
 S:	Supported
 F:	arch/microblaze/
 
-MICROSOFT SURFACE PRO 3 BUTTON DRIVER
+MICROSOFT SURFACE PRO SERIES BUTTON DRIVER
 M:	Chen Yu <[email protected]>
 L:	[email protected]
 S:	Supported
-F:	drivers/platform/x86/surfacepro3_button.c
+F:	drivers/platform/x86/surfacepro_button.c
 
 MICROTEK X6 SCANNER
 M:	Oliver Neukum <[email protected]>
drivers/platform/x86/Kconfig +3 -3
index 1089eaa..3358fb0 100644
@@ -939,9 +939,9 @@ config INTEL_PMC_IPC
 	The PMC is an ARC processor which defines IPC commands for communication
 	with other entities in the CPU.
 
-config SURFACE_PRO3_BUTTON
-	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+config SURFACE_PRO_BUTTON
+	tristate "Power/home/volume buttons driver for Microsoft Surface Pro Series tablet"
 	depends on ACPI && INPUT
 	---help---
-	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro Series tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/Makefile +1 -1
index 3ca78a3..b4ece33 100644
@@ -61,4 +61,4 @@ obj-$(CONFIG_INTEL_SMARTCONNECT)	+= intel-smartconnect.o
 obj-$(CONFIG_PVPANIC)           += pvpanic.o
 obj-$(CONFIG_ALIENWARE_WMI)	+= alienware-wmi.o
 obj-$(CONFIG_INTEL_PMC_IPC)	+= intel_pmc_ipc.o
-obj-$(CONFIG_SURFACE_PRO3_BUTTON)	+= surfacepro3_button.o
+obj-$(CONFIG_SURFACE_PRO_BUTTON)	+= surfacepro_button.o
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +10 -8
similarity index 93%
rename from drivers/platform/x86/surfacepro3_button.c
rename to drivers/platform/x86/surfacepro_button.c
index f7dade3..cda52b8 100644
@@ -1,6 +1,6 @@
 /*
  * power/home/volume button support for
- * Microsoft Surface Pro 3 tablet.
+ * Microsoft Surface Pro Series tablet.
  *
  * Copyright (c) 2015 Intel Corporation.
  * All rights reserved.
@@ -19,9 +19,10 @@
 #include <linux/acpi.h>
 #include <acpi/button.h>
 
-#define SURFACE_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO3_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO4_BUTTON_HID		"MSHW0040"
 #define SURFACE_BUTTON_OBJ_NAME		"VGBI"
-#define SURFACE_BUTTON_DEVICE_NAME	"Surface Pro 3 Buttons"
+#define SURFACE_BUTTON_DEVICE_NAME	"Surface Pro Series Buttons"
 
 #define SURFACE_BUTTON_NOTIFY_PRESS_POWER	0xc6
 #define SURFACE_BUTTON_NOTIFY_RELEASE_POWER	0xc7
@@ -35,10 +36,10 @@
 #define SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN	0xc2
 #define SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN	0xc3
 
-ACPI_MODULE_NAME("surface pro 3 button");
+ACPI_MODULE_NAME("surface pro series button");
 
 MODULE_AUTHOR("Chen Yu");
-MODULE_DESCRIPTION("Surface Pro3 Button Driver");
+MODULE_DESCRIPTION("Surface Pro Series Button Driver");
 MODULE_LICENSE("GPL v2");
 
 /*
@@ -54,7 +55,8 @@ MODULE_LICENSE("GPL v2");
  * acpi_driver.
  */
 static const struct acpi_device_id surface_button_device_ids[] = {
-	{SURFACE_BUTTON_HID,    0},
+	{SURFACE_PRO3_BUTTON_HID,    0},
+	{SURFACE_PRO4_BUTTON_HID,    0},
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);
@@ -202,8 +204,8 @@ static SIMPLE_DEV_PM_OPS(surface_button_pm,
 		surface_button_suspend, surface_button_resume);
 
 static struct acpi_driver surface_button_driver = {
-	.name = "surface_pro3_button",
-	.class = "SurfacePro3",
+	.name = "surface_pro_button",
+	.class = "SurfacePro",
 	.ids = surface_button_device_ids,
 	.ops = {
 		.add = surface_button_add,
Signature · 1 line
2.6.4
#5 lore raw
Quoted 8 lines · Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4, and renames the driver to surfacepro_button accordingly.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

Darren, this one looks fine for me, still couple of question up to you.

First is do we really want to rename driver? (Renaming variables and stuff like I said if fine to me)

Quoted 110 lines

---
v3:
- Fix commit message grammar mistakes.
v2:
- Reformat patch with -M -C

---
 MAINTAINERS                                            |  4 ++--
 drivers/platform/x86/Kconfig                           |  6 +++---
 drivers/platform/x86/Makefile                          |  2 +-
 .../x86/{surfacepro3_button.c => surfacepro_button.c}  | 18 ++++++++++--------
 4 files changed, 16 insertions(+), 14 deletions(-)
 rename drivers/platform/x86/{surfacepro3_button.c => surfacepro_button.c} (93%)
MAINTAINERS +2 -2
index 233f834..1c07436 100644
@@ -7019,11 +7019,11 @@ T:      git git://git.monstr.eu/linux-2.6-microblaze.git
 S:     Supported
 F:     arch/microblaze/
 
-MICROSOFT SURFACE PRO 3 BUTTON DRIVER
+MICROSOFT SURFACE PRO SERIES BUTTON DRIVER
 M:     Chen Yu <[email protected]>
 L:     [email protected]
 S:     Supported
-F:     drivers/platform/x86/surfacepro3_button.c
+F:     drivers/platform/x86/surfacepro_button.c
 
 MICROTEK X6 SCANNER
 M:     Oliver Neukum <[email protected]>
drivers/platform/x86/Kconfig +3 -3
index 1089eaa..3358fb0 100644
@@ -939,9 +939,9 @@ config INTEL_PMC_IPC
        The PMC is an ARC processor which defines IPC commands for communication
        with other entities in the CPU.
 
-config SURFACE_PRO3_BUTTON
-       tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+config SURFACE_PRO_BUTTON
+       tristate "Power/home/volume buttons driver for Microsoft Surface Pro Series tablet"
        depends on ACPI && INPUT
        ---help---
-         This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+         This driver handles the power/home/volume buttons on the Microsoft Surface Pro Series tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/Makefile +1 -1
index 3ca78a3..b4ece33 100644
@@ -61,4 +61,4 @@ obj-$(CONFIG_INTEL_SMARTCONNECT)      += intel-smartconnect.o
 obj-$(CONFIG_PVPANIC)           += pvpanic.o
 obj-$(CONFIG_ALIENWARE_WMI)    += alienware-wmi.o
 obj-$(CONFIG_INTEL_PMC_IPC)    += intel_pmc_ipc.o
-obj-$(CONFIG_SURFACE_PRO3_BUTTON)      += surfacepro3_button.o
+obj-$(CONFIG_SURFACE_PRO_BUTTON)       += surfacepro_button.o
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +8 -6
similarity index 93%
rename from drivers/platform/x86/surfacepro3_button.c
rename to drivers/platform/x86/surfacepro_button.c
index f7dade3..cda52b8 100644
@@ -1,6 +1,6 @@
 /*
  * power/home/volume button support for
- * Microsoft Surface Pro 3 tablet.
+ * Microsoft Surface Pro Series tablet.
  *
  * Copyright (c) 2015 Intel Corporation.
  * All rights reserved.
@@ -19,9 +19,10 @@
 #include <linux/acpi.h>
 #include <acpi/button.h>
 
-#define SURFACE_BUTTON_HID             "MSHW0028"
+#define SURFACE_PRO3_BUTTON_HID                "MSHW0028"
+#define SURFACE_PRO4_BUTTON_HID                "MSHW0040"
 #define SURFACE_BUTTON_OBJ_NAME                "VGBI"
-#define SURFACE_BUTTON_DEVICE_NAME     "Surface Pro 3 Buttons"
+#define SURFACE_BUTTON_DEVICE_NAME     "Surface Pro Series Buttons"
 
 #define SURFACE_BUTTON_NOTIFY_PRESS_POWER      0xc6
 #define SURFACE_BUTTON_NOTIFY_RELEASE_POWER    0xc7
@@ -35,10 +36,10 @@
 #define SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN        0xc2
 #define SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN      0xc3
 
-ACPI_MODULE_NAME("surface pro 3 button");
+ACPI_MODULE_NAME("surface pro series button");
 
 MODULE_AUTHOR("Chen Yu");
-MODULE_DESCRIPTION("Surface Pro3 Button Driver");
+MODULE_DESCRIPTION("Surface Pro Series Button Driver");
 MODULE_LICENSE("GPL v2");
 
 /*
@@ -54,7 +55,8 @@ MODULE_LICENSE("GPL v2");
  * acpi_driver.
  */
 static const struct acpi_device_id surface_button_device_ids[] = {
-       {SURFACE_BUTTON_HID,    0},
+       {SURFACE_PRO3_BUTTON_HID,    0},
+       {SURFACE_PRO4_BUTTON_HID,    0},
        {"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);

drivers/platform/x86/surfacepro_button.c static SIMPLE_DEV_PM_OPS(surface_button_pm, · line 208

Quoted 7 lines
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +2 -2
@@ -202,8 +204,8 @@ static SIMPLE_DEV_PM_OPS(surface_button_pm,
                surface_button_suspend, surface_button_resume);
 
 static struct acpi_driver surface_button_driver = {
-       .name = "surface_pro3_button",
-       .class = "SurfacePro3",
+       .name = "surface_pro_button",
+       .class = "SurfacePro",

So, beside the driver renaming I don't know the side effect of renaming .class field here.

Quoted 3 lines
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +0 -0
        .ids = surface_button_device_ids,
        .ops = {
                .add = surface_button_add,
Signature · 2 lines
With Best Regards,
Andy Shevchenko
#6 lore raw
Quoted 7 lines · Andy Shevchenko
Quoted 6 lines · Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4, and renames the driver to surfacepro_button accordingly.

Quoted 7 lines
Quoted 2 lines

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

Darren, this one looks fine for me, still couple of question up to you.

First is do we really want to rename driver? (Renaming variables and stuff like I said if fine to me)

Sorry, replied before seeing this.

I agree that renaming the file is probably not necessary (this works on v3+ as I understand it, so the name isn't really a problem, and dropping the 3 suggests it works on v1 and v2).

I'd prefer to keep the name changing to a minimum, and add some information to the Kconfig help and driver comments making it clear that this supports 3+.

--
Darren

Quoted 130 lines
Quoted 111 lines

---
v3:
- Fix commit message grammar mistakes.
v2:
- Reformat patch with -M -C

---
 MAINTAINERS                                            |  4 ++--
 drivers/platform/x86/Kconfig                           |  6 +++---
 drivers/platform/x86/Makefile                          |  2 +-
 .../x86/{surfacepro3_button.c => surfacepro_button.c}  | 18 ++++++++++--------
 4 files changed, 16 insertions(+), 14 deletions(-)
 rename drivers/platform/x86/{surfacepro3_button.c => surfacepro_button.c} (93%)
MAINTAINERS +2 -2
index 233f834..1c07436 100644
@@ -7019,11 +7019,11 @@ T:      git git://git.monstr.eu/linux-2.6-microblaze.git
 S:     Supported
 F:     arch/microblaze/
 
-MICROSOFT SURFACE PRO 3 BUTTON DRIVER
+MICROSOFT SURFACE PRO SERIES BUTTON DRIVER
 M:     Chen Yu <[email protected]>
 L:     [email protected]
 S:     Supported
-F:     drivers/platform/x86/surfacepro3_button.c
+F:     drivers/platform/x86/surfacepro_button.c
 
 MICROTEK X6 SCANNER
 M:     Oliver Neukum <[email protected]>
drivers/platform/x86/Kconfig +3 -3
index 1089eaa..3358fb0 100644
@@ -939,9 +939,9 @@ config INTEL_PMC_IPC
        The PMC is an ARC processor which defines IPC commands for communication
        with other entities in the CPU.
 
-config SURFACE_PRO3_BUTTON
-       tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+config SURFACE_PRO_BUTTON
+       tristate "Power/home/volume buttons driver for Microsoft Surface Pro Series tablet"
        depends on ACPI && INPUT
        ---help---
-         This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+         This driver handles the power/home/volume buttons on the Microsoft Surface Pro Series tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/Makefile +1 -1
index 3ca78a3..b4ece33 100644
@@ -61,4 +61,4 @@ obj-$(CONFIG_INTEL_SMARTCONNECT)      += intel-smartconnect.o
 obj-$(CONFIG_PVPANIC)           += pvpanic.o
 obj-$(CONFIG_ALIENWARE_WMI)    += alienware-wmi.o
 obj-$(CONFIG_INTEL_PMC_IPC)    += intel_pmc_ipc.o
-obj-$(CONFIG_SURFACE_PRO3_BUTTON)      += surfacepro3_button.o
+obj-$(CONFIG_SURFACE_PRO_BUTTON)       += surfacepro_button.o
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +8 -6
similarity index 93%
rename from drivers/platform/x86/surfacepro3_button.c
rename to drivers/platform/x86/surfacepro_button.c
index f7dade3..cda52b8 100644
@@ -1,6 +1,6 @@
 /*
  * power/home/volume button support for
- * Microsoft Surface Pro 3 tablet.
+ * Microsoft Surface Pro Series tablet.
  *
  * Copyright (c) 2015 Intel Corporation.
  * All rights reserved.
@@ -19,9 +19,10 @@
 #include <linux/acpi.h>
 #include <acpi/button.h>
 
-#define SURFACE_BUTTON_HID             "MSHW0028"
+#define SURFACE_PRO3_BUTTON_HID                "MSHW0028"
+#define SURFACE_PRO4_BUTTON_HID                "MSHW0040"
 #define SURFACE_BUTTON_OBJ_NAME                "VGBI"
-#define SURFACE_BUTTON_DEVICE_NAME     "Surface Pro 3 Buttons"
+#define SURFACE_BUTTON_DEVICE_NAME     "Surface Pro Series Buttons"
 
 #define SURFACE_BUTTON_NOTIFY_PRESS_POWER      0xc6
 #define SURFACE_BUTTON_NOTIFY_RELEASE_POWER    0xc7
@@ -35,10 +36,10 @@
 #define SURFACE_BUTTON_NOTIFY_PRESS_VOLUME_DOWN        0xc2
 #define SURFACE_BUTTON_NOTIFY_RELEASE_VOLUME_DOWN      0xc3
 
-ACPI_MODULE_NAME("surface pro 3 button");
+ACPI_MODULE_NAME("surface pro series button");
 
 MODULE_AUTHOR("Chen Yu");
-MODULE_DESCRIPTION("Surface Pro3 Button Driver");
+MODULE_DESCRIPTION("Surface Pro Series Button Driver");
 MODULE_LICENSE("GPL v2");
 
 /*
@@ -54,7 +55,8 @@ MODULE_LICENSE("GPL v2");
  * acpi_driver.
  */
 static const struct acpi_device_id surface_button_device_ids[] = {
-       {SURFACE_BUTTON_HID,    0},
+       {SURFACE_PRO3_BUTTON_HID,    0},
+       {SURFACE_PRO4_BUTTON_HID,    0},
        {"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);

drivers/platform/x86/surfacepro_button.c static SIMPLE_DEV_PM_OPS(surface_button_pm, · line 208

Quoted 7 lines
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +2 -2
@@ -202,8 +204,8 @@ static SIMPLE_DEV_PM_OPS(surface_button_pm,
                surface_button_suspend, surface_button_resume);
 
 static struct acpi_driver surface_button_driver = {
-       .name = "surface_pro3_button",
-       .class = "SurfacePro3",
+       .name = "surface_pro_button",
+       .class = "SurfacePro",

So, beside the driver renaming I don't know the side effect of renaming .class field here.

Quoted 3 lines
drivers/platform/x86/surfacepro_button.c renamed from drivers/platform/x86/surfacepro3_button.c +0 -0
        .ids = surface_button_device_ids,
        .ops = {
                .add = surface_button_add,
Signature · 2 lines
With Best Regards,
Andy Shevchenko
Signature · 2 lines
Darren Hart
Intel Open Source Technology Center
#7 lore raw

Hi Darren,

Quoted 27 lines

-----Original Message-----
From: Darren Hart [mailto:[email protected]]
Sent: Tuesday, January 05, 2016 4:36 AM
To: Andy Shevchenko
Cc: Weng Xuetian; Chen, Yu C; [email protected]; platform- [email protected]
Subject: Re: [PATCH v3] surface pro 4: Add support for Surface Pro 4 Buttons

Quoted 1 line · Andy Shevchenko

On Sun, Dec 27, 2015 at 9:21 PM, Weng Xuetian <[email protected]>

Quoted 6 lines · wrote:
Quoted 6 lines

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4, and renames the driver to surfacepro_button accordingly.

Quoted 7 lines
Quoted 2 lines

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

Darren, this one looks fine for me, still couple of question up to you.

First is do we really want to rename driver? (Renaming variables and stuff like I said if fine to me)

Sorry, replied before seeing this.

Quoted 8 lines

I agree that renaming the file is probably not necessary (this works on v3+ as I understand it, so the name isn't really a problem, and dropping the 3 suggests it works on v1 and v2).

I'd prefer to keep the name changing to a minimum, and add some information to the Kconfig help and driver comments making it clear that this supports 3+.

[Yu] I agree, since I don't have a surface pro < 3 tested, there is no need to rename it.

thanks,
yu

#8 lore raw
In reply to Weng Xuetian
Quoted 7 lines · Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4, and renames the driver to surfacepro_button accordingly.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

Is there a Surface Pro v1 and v2? If so, and they are not supported, then the 3 makes sense to keep. Or, at the very least, the Kconfig help and the comments in the driver should make it clear that it supports v3 and later.

Chen, any concerns?

Signature · 2 lines
Darren Hart
Intel Open Source Technology Center
#9 lore raw
In reply to Weng Xuetian
Quoted 8 lines · Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4, and renames the driver to surfacepro_button accordingly.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

Weng,

Given the feedback on renaming from Andy, Yu, and myself, I'm dropping this patch and waiting for a v4 without the rename.

Signature · 2 lines
Darren Hart
Intel Open Source Technology Center
#10 lore raw

PATCH v4 1/1 surface pro 4: Add support for Surface Pro 4 Buttons

In reply to Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
v4:
- Do not rename the driver.
v3:
- Fix commit message grammar mistakes.
v2:
- Reformat patch with -M -C

---
 drivers/platform/x86/Kconfig              | 4 ++--
 drivers/platform/x86/surfacepro3_button.c | 8 +++++---
 2 files changed, 7 insertions(+), 5 deletions(-)
drivers/platform/x86/Kconfig +2 -2
index 1089eaa..ea76d67 100644
@@ -940,8 +940,8 @@ config INTEL_PMC_IPC
 	with other entities in the CPU.
 
 config SURFACE_PRO3_BUTTON
-	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
 	depends on ACPI && INPUT
 	---help---
-	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/surfacepro3_button.c +5 -3
index f7dade3..2c0e7d7 100644
@@ -1,6 +1,6 @@
 /*
  * power/home/volume button support for
- * Microsoft Surface Pro 3 tablet.
+ * Microsoft Surface Pro 3/4 tablet.
  *
  * Copyright (c) 2015 Intel Corporation.
  * All rights reserved.
@@ -19,7 +19,8 @@
 #include <linux/acpi.h>
 #include <acpi/button.h>
 
-#define SURFACE_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO3_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO4_BUTTON_HID		"MSHW0040"
 #define SURFACE_BUTTON_OBJ_NAME		"VGBI"
 #define SURFACE_BUTTON_DEVICE_NAME	"Surface Pro 3 Buttons"
 
@@ -54,7 +55,8 @@ MODULE_LICENSE("GPL v2");
  * acpi_driver.
  */
 static const struct acpi_device_id surface_button_device_ids[] = {
-	{SURFACE_BUTTON_HID,    0},
+	{SURFACE_PRO3_BUTTON_HID,    0},
+	{SURFACE_PRO4_BUTTON_HID,    0},
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);
Signature · 1 line
2.6.4
Acked-by
#12 lore raw

Hi Darren,

Quoted 12 lines

-----Original Message-----
From: Darren Hart [mailto:[email protected]]
Sent: Friday, January 15, 2016 7:01 AM
To: Weng Xuetian
Cc: Chen, Yu C; [email protected]; platform-driver- [email protected]
Subject: Re: [PATCH v4] surface pro 4: Add support for Surface Pro 4 Buttons

Quoted 3 lines · Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

Quoted 9 lines
Quoted 4 lines

This commit adds MSHW0040 to id list to support the Surface Pro 4.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

This is so much better, thank you Weng.

Yu, are you happy with this version?

Looks good to me.

thanks,
Yu

Acked-by
#13 lore raw
In reply to Darren Hart

Hi Darren, Xuetian

Quoted 12 lines

-----Original Message-----
From: Darren Hart [mailto:[email protected]]
Sent: Friday, January 15, 2016 7:01 AM
To: Weng Xuetian
Cc: Chen, Yu C; [email protected]; platform-driver- [email protected]
Subject: Re: [PATCH v4] surface pro 4: Add support for Surface Pro 4 Buttons

Quoted 3 lines · Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

Quoted 9 lines
Quoted 4 lines

This commit adds MSHW0040 to id list to support the Surface Pro 4.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

This is so much better, thank you Weng.

Yu, are you happy with this version?

One minor nit below, other than that,

-- #define SURFACE_BUTTON_DEVICE_NAME "Surface Pro 3 Buttons"
++ #define SURFACE_BUTTON_DEVICE_NAME "Surface Pro 3/4 Buttons"

And

#14 lore raw

PATCH v5 1/1 surface pro 4: Add support for Surface Pro 4 Buttons

In reply to Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
v5:
- rename device name macro as required by Chen Yu
v4:
- Do not rename the driver.
v3:
- Fix commit message grammar mistakes.
v2:
- Reformat patch with -M -C

---
 drivers/platform/x86/Kconfig              |  4 ++--
 drivers/platform/x86/surfacepro3_button.c | 10 ++++++----
 2 files changed, 8 insertions(+), 6 deletions(-)
drivers/platform/x86/Kconfig +2 -2
index 1089eaa..ea76d67 100644
@@ -940,8 +940,8 @@ config INTEL_PMC_IPC
 	with other entities in the CPU.
 
 config SURFACE_PRO3_BUTTON
-	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3 tablet"
+	tristate "Power/home/volume buttons driver for Microsoft Surface Pro 3/4 tablet"
 	depends on ACPI && INPUT
 	---help---
-	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3 tablet.
+	  This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.
 endif # X86_PLATFORM_DEVICES
drivers/platform/x86/surfacepro3_button.c +6 -4
index f7dade3..b9c38f6 100644
@@ -1,6 +1,6 @@
 /*
  * power/home/volume button support for
- * Microsoft Surface Pro 3 tablet.
+ * Microsoft Surface Pro 3/4 tablet.
  *
  * Copyright (c) 2015 Intel Corporation.
  * All rights reserved.
@@ -19,9 +19,10 @@
 #include <linux/acpi.h>
 #include <acpi/button.h>
 
-#define SURFACE_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO3_BUTTON_HID		"MSHW0028"
+#define SURFACE_PRO4_BUTTON_HID		"MSHW0040"
 #define SURFACE_BUTTON_OBJ_NAME		"VGBI"
-#define SURFACE_BUTTON_DEVICE_NAME	"Surface Pro 3 Buttons"
+#define SURFACE_BUTTON_DEVICE_NAME	"Surface Pro 3/4 Buttons"
 
 #define SURFACE_BUTTON_NOTIFY_PRESS_POWER	0xc6
 #define SURFACE_BUTTON_NOTIFY_RELEASE_POWER	0xc7
@@ -54,7 +55,8 @@ MODULE_LICENSE("GPL v2");
  * acpi_driver.
  */
 static const struct acpi_device_id surface_button_device_ids[] = {
-	{SURFACE_BUTTON_HID,    0},
+	{SURFACE_PRO3_BUTTON_HID,    0},
+	{SURFACE_PRO4_BUTTON_HID,    0},
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, surface_button_device_ids);
Signature · 1 line
2.7.0
Acked-by on v5 1/1
#15 lore raw
Quoted 8 lines

-----Original Message-----
From: Weng Xuetian [mailto:[email protected]]
Sent: Monday, January 18, 2016 7:11 AM
To: Chen, Yu C
Cc: Darren Hart; [email protected]; platform-driver- [email protected]; Weng Xuetian
Subject: [PATCH v5] surface pro 4: Add support for Surface Pro 4 Buttons

Quoted 7 lines

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

Applied
#16 lore raw
In reply to Weng Xuetian
Quoted 10 lines · Weng Xuetian

Surface Pro 4 buttons are managed by a device with _HID "MSHW0040" different from Surface Pro 3.

This commit adds MSHW0040 to id list to support the Surface Pro 4.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=109871

---
v5:
- rename device name macro as required by Chen Yu

Queued up, thanks!

Signature · 2 lines
Darren Hart
Intel Open Source Technology Center