diff mbox series

ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3

Message ID 20220213154920.142816-1-luzmaximilian@gmail.com (mailing list archive)
State Mainlined, archived
Headers show
Series ACPI: battery: Add device HID and quirk for Microsoft Surface Go 3 | expand

Commit Message

Maximilian Luz Feb. 13, 2022, 3:49 p.m. UTC
For some reason, the Microsoft Surface Go 3 uses the standard ACPI
interface for battery information, but does not use the standard PNP0C0A
HID. Instead it uses MSHW0146 as identifier. Add that ID to the driver
as this seems to work well.

Additionally, the power state is not updated immediately after the AC
has been (un-)plugged, so add the respective quirk for that.

Cc: <stable@vger.kernel.org>
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
---
 drivers/acpi/battery.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

Comments

Maximilian Luz March 11, 2022, 12:56 a.m. UTC | #1
On 2/13/22 16:49, Maximilian Luz wrote:
> For some reason, the Microsoft Surface Go 3 uses the standard ACPI
> interface for battery information, but does not use the standard PNP0C0A
> HID. Instead it uses MSHW0146 as identifier. Add that ID to the driver
> as this seems to work well.
> 
> Additionally, the power state is not updated immediately after the AC
> has been (un-)plugged, so add the respective quirk for that.
> 
> Cc: <stable@vger.kernel.org>
> Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>

Hi, any comments/status on this?
diff mbox series

Patch

diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index ea31ae01458b..dc208f5f5a1f 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -59,6 +59,10 @@  MODULE_PARM_DESC(cache_time, "cache time in milliseconds");
 
 static const struct acpi_device_id battery_device_ids[] = {
 	{"PNP0C0A", 0},
+
+	/* Microsoft Surface Go 3 */
+	{"MSHW0146", 0},
+
 	{"", 0},
 };
 
@@ -1148,6 +1152,14 @@  static const struct dmi_system_id bat_dmi_table[] __initconst = {
 			DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad"),
 		},
 	},
+	{
+		/* Microsoft Surface Go 3 */
+		.callback = battery_notification_delay_quirk,
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Microsoft Corporation"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Surface Go 3"),
+		},
+	},
 	{},
 };