[PATCH] ACPI: video: Add backlight=native DMI quirk for Asus U46E
Rafael J. Wysocki
rafael at kernel.org
Mon Jan 23 20:02:57 UTC 2023
On Thu, Jan 19, 2023 at 6:24 PM Hans de Goede <hdegoede at redhat.com> wrote:
>
> The Asus U46E backlight tables have a set of interesting problems:
>
> 1. Its ACPI tables do make _OSI ("Windows 2012") checks, so
> acpi_osi_is_win8() should return true.
>
> But the tables have 2 sets of _OSI calls, one from the usual global
> _INI method setting a global OSYS variable and a second set of _OSI
> calls from a MSOS method and the MSOS method is the only one calling
> _OSI ("Windows 2012").
>
> The MSOS method only gets called in the following cases:
> 1. From some Asus specific WMI methods
> 2. From _DOD, which only runs after acpi_video_get_backlight_type()
> has already been called by the i915 driver
> 3. From other ACPI video bus methods which never run (see below)
> 4. From some EC query callbacks
>
> So when i915 calls acpi_video_get_backlight_type() MSOS has never run
> and acpi_osi_is_win8() returns false, so acpi_video_get_backlight_type()
> returns acpi_video as the desired backlight type, which causes
> the intel_backlight device to not register.
>
> 2. _DOD effectively does this:
>
> Return (Package (0x01)
> {
> 0x0400
> })
>
> causing acpi_video_device_in_dod() to return false, which causes
> the acpi_video backlight device to not register.
>
> Leaving the user with no backlight device at all. Note that before 6.1.y
> the i915 driver would register the intel_backlight device unconditionally
> and since that then was the only backlight device userspace would use that.
>
> Add a backlight=native DMI quirk for this special laptop to restore
> the old (and working) behavior of the intel_backlight device registering.
>
> Fixes: fb1836c91317 ("ACPI: video: Prefer native over vendor")
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
> drivers/acpi/video_detect.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c
> index aa6196e5e574..64eab35037c3 100644
> --- a/drivers/acpi/video_detect.c
> +++ b/drivers/acpi/video_detect.c
> @@ -610,6 +610,14 @@ static const struct dmi_system_id video_detect_dmi_table[] = {
> DMI_MATCH(DMI_PRODUCT_NAME, "GA503"),
> },
> },
> + {
> + .callback = video_detect_force_native,
> + /* Asus U46E */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK Computer Inc."),
> + DMI_MATCH(DMI_PRODUCT_NAME, "U46E"),
> + },
> + },
> {
> .callback = video_detect_force_native,
> /* Asus UX303UB */
> --
Applied as 6.2-rcf material, thanks!
More information about the dri-devel
mailing list