[PATCH v3 0/2] Support for buttons on newer MS Surface devices

From: Maximilian Luz
Date: Sat Jul 20 2019 - 11:05:54 EST


This series adds support for power and volume buttons on 5th and 6th
generation Microsoft Surface devices. Specifically, it adds support for
the power-button on the Surface Laptop 1 and Laptop 2, as well as
support for power- and (on-device) volume-buttons on the Surface Pro 5
(2017), Pro 6, and Book 2.

These devices use the same MSHW0040 device as on the Surface Pro 4,
however, whereas the Pro 4 uses an ACPI notify handler, the newer
devices use GPIO interrupts to signal these events.

The first patch of this series ensures that the surfacepro3_button
driver, used for MSHW0040 on the Pro 4, does not probe for the newer
devices. The second patch adapts soc_button_array to implement the
actual button support.

Changes in v3:
- [PATCH 1/2] platform/x86: surfacepro3_button: Fix device check
- Changed subject line to fit conventions.
- Added comments to clarify ACPI/DSM specific behavior.
- Change return type of introduced device check function to bool.

- [PATCH 1/2] Input: soc_button_array - Add support for newer
surface devices
- Changed subject line to fit conventions.
- Explicitly require CONFIG_ACPI via Kconfig instead of guarding
with #ifdef CONFIG_ACPI in code.
- Add supported Surface devices to module description in Kconfig.
- Allow -EPROBE_DEFER and other errors to be propagated from
gpiod_get.
- Fix deferral process in case GPIO subsystem is not initialized.

Changes in v2:
- [PATCH 1/2] platform: Fix device check for surfacepro3_button
No changes.

- [PATCH 2/2] input: soc_button_array for newer surface devices
Ensure the patch compiles without CONFIG_ACPI.

Maximilian Luz (2):
platform/x86: surfacepro3_button: Fix device check
Input: soc_button_array - Add support for newer surface devices

drivers/input/misc/Kconfig | 6 +-
drivers/input/misc/soc_button_array.c | 141 ++++++++++++++++++++--
drivers/platform/x86/surfacepro3_button.c | 47 ++++++++
3 files changed, 178 insertions(+), 16 deletions(-)

--
2.22.0