Skip to content

Commit

Permalink
platform/x86: surface3_power: MSHW0011 rev-eng implementation
Browse files Browse the repository at this point in the history
Patch was rebased on top of for-next. Thanks for your patience!

Blaž

I'm resubmitting this patch with review feedback addressed:

https://patchwork.kernel.org/patch/10584079/

The patch was previously not resubmitted because it required a change
that was reverted in the ACPICA. That has since been corrected:

https://github.com/acpica/acpica/commit/9159c09a2a5897a43f78c95cdffc160d399722c3

We've been using this patch for a while and user reports confirm that it
works:

https://github.com/linux-surface/linux-surface

Previous description follows.

>8------------------------------------------------------8<

The MSHW0011 device is a chip that replaces the battery firmware
by using ACPI operation regions on the Surface 3.
It is unclear whether or not the chip will be reused somewhere else
(under Windows, the chip is called "Surface Platform Power Driver"
and the driver is provided by Microsoft).

The values have been obtained by reverse engineering, and are subject to
errors. Looks like it works on overall pretty well.

I couldn't manage to get the IRQ correctly triggered, so I am using a
good old polling thread to check for changes. This is something
to be fixed in a later version.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=106231

Signed-off-by: Blaž Hrastnik <blaz@mxxn.io>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Stephen Just <stephenjust@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
  • Loading branch information
Blaž Hrastnik authored and Andy Shevchenko committed Mar 26, 2020
1 parent c61b693 commit b1f81b4
Show file tree
Hide file tree
Showing 3 changed files with 606 additions and 0 deletions.
7 changes: 7 additions & 0 deletions drivers/platform/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -861,6 +861,13 @@ config SURFACE_PRO3_BUTTON
---help---
This driver handles the power/home/volume buttons on the Microsoft Surface Pro 3/4 tablet.

config SURFACE_3_POWER_OPREGION
tristate "Surface 3 battery platform operation region support"
depends on ACPI && I2C
help
This driver provides support for ACPI operation
region of the Surface 3 battery platform driver.

config MSI_LAPTOP
tristate "MSI Laptop Extras"
depends on ACPI
Expand Down
1 change: 1 addition & 0 deletions drivers/platform/x86/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ obj-$(CONFIG_INTEL_VBTN) += intel-vbtn.o
# Microsoft
obj-$(CONFIG_SURFACE3_WMI) += surface3-wmi.o
obj-$(CONFIG_SURFACE_3_BUTTON) += surface3_button.o
obj-$(CONFIG_SURFACE_3_POWER_OPREGION) += surface3_power.o
obj-$(CONFIG_SURFACE_PRO3_BUTTON) += surfacepro3_button.o

# MSI
Expand Down
Loading

0 comments on commit b1f81b4

Please sign in to comment.