On Thu, Jun 8, 2023 at 11:13 AM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > There have been 2 separate reports now about a non working > "dell_backlight" device getting registered under /sys/class/backlight > 1 report for a Raptor Lake based Dell and 1 report for a Meteor Lake > (development) platform. > > On hw from the last 10 years dell-laptop will not register "dell_backlight" > because acpi_video_get_backlight_type() will return acpi_backlight_video > there if called before the GPU/kms driver loads. So it does not matter if > the GPU driver's native backlight is registered after dell-laptop loads. > > But it seems that on the latest generation laptops the ACPI tables > no longer contain acpi_video backlight control support which causes > acpi_video_get_backlight_type() to return acpi_backlight_vendor causing > "dell_backlight" to get registered if the dell-laptop module is loaded > before the GPU/kms driver. > > Vendor specific backlight control like the "dell_backlight" device is > only necessary on quite old hw (from before acpi_video backlight control > was introduced). Work around "dell_backlight" registering on very new > hw (where acpi_video backlight control seems to be no more) by making > acpi_video_get_backlight_type() return acpi_backlight_none instead > of acpi_backlight_vendor as final fallback when the ACPI tables have > support for Windows 8 or later (laptops from after ~2012). > > Suggested-by: Matthew Garrett <mjg59@xxxxxxxxxxxxx> > Reported-by: AceLan Kao <acelan.kao@xxxxxxxxxxxxx> > Closes: https://lore.kernel.org/platform-driver-x86/20230607034331.576623-1-acelan.kao@xxxxxxxxxxxxx/ > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- > drivers/acpi/video_detect.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/acpi/video_detect.c b/drivers/acpi/video_detect.c > index b87783c5872d..eb014c0eba42 100644 > --- a/drivers/acpi/video_detect.c > +++ b/drivers/acpi/video_detect.c > @@ -844,6 +844,27 @@ enum acpi_backlight_type __acpi_video_get_backlight_type(bool native, bool *auto > if (native_available) > return acpi_backlight_native; > > + /* > + * The vendor specific BIOS interfaces are only necessary for > + * laptops from before ~2008. > + * > + * For laptops from ~2008 till ~2023 this point is never reached > + * because on those (video_caps & ACPI_VIDEO_BACKLIGHT) above is true. > + * > + * Laptops from after ~2023 no longer support ACPI_VIDEO_BACKLIGHT, > + * if this point is reached on those, this likely means that > + * the GPU kms driver which sets native_available has not loaded yet. > + * > + * Returning acpi_backlight_vendor in this case is known to sometimes > + * cause a non working vendor specific /sys/class/backlight device to > + * get registered. > + * > + * Return acpi_backlight_none on laptops with ACPI tables written > + * for Windows 8 (laptops from after ~2012) to avoid this problem. > + */ > + if (acpi_osi_is_win8()) > + return acpi_backlight_none; > + > /* No ACPI video/native (old hw), use vendor specific fw methods. */ > return acpi_backlight_vendor; > } > -- Applied as 6.5 material, thanks!