[PATCH v2] ACPI: button: Add DMI quirk for Razer Blade Pro 17 early 2020 lid switch

From: Robin Everaars

Date: Mon Aug 17 2026 - 10:41:14 EST


The lid switch reports "close" but can miss the matching "open", leaving
_LID closed after resume. systemd-logind then suspends the system again
roughly every 35 seconds.

Reading the embedded controller's PSTA byte while _LID is stale shows that
bit 0x04 is set, which the DSDT treats as open. The DSDT returns the cached
LIDS byte from _LID. Its wake path aborts in RTEC on an unhandled
SystemCMOS region before copying PSTA to LIDS.

Initialize the lid state to open on resume, matching the existing quirk
for the Razer Blade Stealth 13 late 2019. With
button.lid_init_state=open, a physical close suspended once and resume
reported open without another suspend.

Signed-off-by: Robin Everaars <robineveraars@xxxxx>
---
Changes in v2:
- Sorry for the noise. Proton's external OpenPGP/MIME signing inserted line
breaks into v1, so its diff could not be applied.
- No code changes compared with v1.

drivers/acpi/button.c | 11 +++++++++++
1 file changed, 11 insertions(+)


diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
index 3836ee75dd66..cdbb1023a8ee 100644
--- a/drivers/acpi/button.c
+++ b/drivers/acpi/button.c
@@ -133,6 +133,17 @@ static const struct dmi_system_id dmi_lid_quirks[] = {
},
.driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN,
},
+ {
+ /*
+ * Razer Blade Pro 17 early 2020, notification of the LID device
+ * only happens on close, not on open and _LID keeps returning closed.
+ */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Razer"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Blade Pro 17 (Early 2020) - RZ09-0329"),
+ },
+ .driver_data = (void *)(long)ACPI_BUTTON_LID_INIT_OPEN,
+ },
{
/*
* Samsung galaxybook2 ,initial _LID device notification returns
--
2.55.0

Attachment: publickey - robineveraars@pm.me - 0x8B6BA132.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature