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

Robin Everaars posted 1 patch 1 month, 1 week ago
There is a newer version of this series
drivers/acpi/button.c | 11 +++++++++++
1 file changed, 11 insertions(+)
[PATCH] ACPI: button: Add DMI quirk for Razer Blade Pro 17 early 2020 lid switch
Posted by Robin Everaars 1 month, 1 week ago
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@pm.me>
---
 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 @@ sta
tic 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

[PATCH v2] ACPI: button: Add DMI quirk for Razer Blade Pro 17 early 2020 lid switch
Posted by Robin Everaars 1 month, 1 week ago
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@pm.me>
---
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

Re: [PATCH v2] ACPI: button: Add DMI quirk for Razer Blade Pro 17 early 2020 lid switch
Posted by Rafael J. Wysocki (Intel) 1 month, 1 week ago
On Mon, Aug 17, 2026 at 4:14 PM Robin Everaars <robineveraars@pm.me> wrote:
>
> 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@pm.me>
> ---
> 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
> --

Applied as 7.3-rc material, thanks!