2022-03-16 15:15:15

by Werner Sembach

[permalink] [raw]
Subject: [PATCH] ACPI/backlight: Force backlight native for Clevo NL5xRU and

This patch works around a bug appearing on at least two Clevo devices.
I also put some effort in finding the root cause for this bug to fix it in
general: https://bugzilla.kernel.org/show_bug.cgi?id=215683
I could pinpoint it down where it happens, but could use some ideas for
cleanly fixing it.



2022-03-17 05:44:43

by Werner Sembach

[permalink] [raw]
Subject: [PATCH] ACPI/backlight: Force backlight native for Clevo NL5xRU and NL5xNU

Clevo NL5xRU and NL5xNU/TUXEDO Aura 15 Gen1 and Gen2 have both a working
native and video interface. However the default detection mechanism first
registers the video interface before unregistering it again and switching
to the native interface during boot. This results in a dangling SBIOS
request for backlight change for some reason, causing the backlight to
switch to ~2% once per boot on the first power cord connect or disconnect
event. Setting the native interface explicitly circumvents this buggy
behaviour by avoiding the unregistering process.

Signed-off-by: Werner Sembach <[email protected]>
Cc: [email protected]
---
drivers/acpi/video_detect.c | 75 +++++++++++++++++++++++++++++++++++++
1 file changed, 75 insertions(+)

diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
index 4f64713e9917..becc198e4c22 100644
--- a/drivers/acpi/video_detect.c
+++ b/drivers/acpi/video_detect.c
@@ -415,6 +415,81 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "GA503"),
},
},
+ /*
+ * Clevo NL5xRU and NL5xNU/TUXEDO Aura 15 Gen1 and Gen2 have both a
+ * working native and video interface. However the default detection
+ * mechanism first registers the video interface before unregistering
+ * it again and switching to the native interface during boot. This
+ * results in a dangling SBIOS request for backlight change for some
+ * reason, causing the backlight to switch to ~2% once per boot on the
+ * first power cord connect or disconnect event. Setting the native
+ * interface explicitly circumvents this buggy behaviour, by avoiding
+ * the unregistering process.
+ */
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xRU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
+ DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
+ },
+ },
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xRU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "SchenkerTechnologiesGmbH"),
+ DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
+ },
+ },
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xRU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
+ DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
+ },
+ },
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xRU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
+ DMI_MATCH(DMI_BOARD_NAME, "AURA1501"),
+ },
+ },
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xRU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
+ DMI_MATCH(DMI_BOARD_NAME, "EDUBOOK1502"),
+ },
+ },
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xNU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
+ DMI_MATCH(DMI_BOARD_NAME, "NL5xNU"),
+ },
+ },
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xNU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "SchenkerTechnologiesGmbH"),
+ DMI_MATCH(DMI_BOARD_NAME, "NL5xNU"),
+ },
+ },
+ {
+ .callback = video_detect_force_native,
+ .ident = "Clevo NL5xNU",
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
+ DMI_MATCH(DMI_BOARD_NAME, "NL5xNU"),
+ },
+ },

/*
* Desktops which falsely report a backlight and which our heuristics
--
2.25.1

2022-03-17 18:01:40

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] ACPI/backlight: Force backlight native for Clevo NL5xRU and NL5xNU

On Tue, Mar 15, 2022 at 8:02 PM Werner Sembach <[email protected]> wrote:
>
> Clevo NL5xRU and NL5xNU/TUXEDO Aura 15 Gen1 and Gen2 have both a working
> native and video interface. However the default detection mechanism first
> registers the video interface before unregistering it again and switching
> to the native interface during boot. This results in a dangling SBIOS
> request for backlight change for some reason, causing the backlight to
> switch to ~2% once per boot on the first power cord connect or disconnect
> event. Setting the native interface explicitly circumvents this buggy
> behaviour by avoiding the unregistering process.
>
> Signed-off-by: Werner Sembach <[email protected]>
> Cc: [email protected]
> ---
> drivers/acpi/video_detect.c | 75 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 75 insertions(+)
>
> diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
> index 4f64713e9917..becc198e4c22 100644
> --- a/drivers/acpi/video_detect.c
> +++ b/drivers/acpi/video_detect.c
> @@ -415,6 +415,81 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
> DMI_MATCH(DMI_PRODUCT_NAME, "GA503"),
> },
> },
> + /*
> + * Clevo NL5xRU and NL5xNU/TUXEDO Aura 15 Gen1 and Gen2 have both a
> + * working native and video interface. However the default detection
> + * mechanism first registers the video interface before unregistering
> + * it again and switching to the native interface during boot. This
> + * results in a dangling SBIOS request for backlight change for some
> + * reason, causing the backlight to switch to ~2% once per boot on the
> + * first power cord connect or disconnect event. Setting the native
> + * interface explicitly circumvents this buggy behaviour, by avoiding
> + * the unregistering process.
> + */
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xRU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
> + DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
> + },
> + },
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xRU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "SchenkerTechnologiesGmbH"),
> + DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
> + },
> + },
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xRU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
> + DMI_MATCH(DMI_BOARD_NAME, "NL5xRU"),
> + },
> + },
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xRU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
> + DMI_MATCH(DMI_BOARD_NAME, "AURA1501"),
> + },
> + },
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xRU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
> + DMI_MATCH(DMI_BOARD_NAME, "EDUBOOK1502"),
> + },
> + },
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xNU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "TUXEDO"),
> + DMI_MATCH(DMI_BOARD_NAME, "NL5xNU"),
> + },
> + },
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xNU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "SchenkerTechnologiesGmbH"),
> + DMI_MATCH(DMI_BOARD_NAME, "NL5xNU"),
> + },
> + },
> + {
> + .callback = video_detect_force_native,
> + .ident = "Clevo NL5xNU",
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Notebook"),
> + DMI_MATCH(DMI_BOARD_NAME, "NL5xNU"),
> + },
> + },
>
> /*
> * Desktops which falsely report a backlight and which our heuristics
> --

Applied as 5.18 material, thanks!