On Thu, Dec 8, 2022 at 2:09 AM Mario Limonciello <mario.limonciello@xxxxxxx> wrote: > > The current logic for the ACPI backlight detection will create > a backlight device if no native or vendor drivers have created > 8 seconds after the system has booted if the ACPI tables > included backlight control methods. > > If the GPU drivers have loaded, they may be able to report whether > any LCD panels were found. Allow using this information to factor > in whether to enable the fallback logic for making an acpi_video0 > backlight device. > > Suggested-by: Hans de Goede <hdegoede@xxxxxxxxxx> > Signed-off-by: Mario Limonciello <mario.limonciello@xxxxxxx> > --- > v1->v2: > * Cancel registration for backlight device instead (Hans) > * drop desktop check (Dan) > > drivers/acpi/acpi_video.c | 11 +++++++++++ > include/acpi/video.h | 1 + > 2 files changed, 12 insertions(+) > > diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c > index 32953646caeb..f64fdb029090 100644 > --- a/drivers/acpi/acpi_video.c > +++ b/drivers/acpi/acpi_video.c > @@ -2178,6 +2178,17 @@ static bool should_check_lcd_flag(void) > return false; > } > > +/* > + * At least one graphics driver has reported that no LCD is connected > + * via the native interface. cancel the registration for fallback acpi_video0. > + * If another driver still deems this necessary, it can explicitly register it. > + */ > +void acpi_video_report_nolcd(void) > +{ > + cancel_delayed_work(&video_bus_register_backlight_work); > +} > +EXPORT_SYMBOL(acpi_video_report_nolcd); > + > int acpi_video_register(void) > { > int ret = 0; > diff --git a/include/acpi/video.h b/include/acpi/video.h > index a275c35e5249..1fccb111c197 100644 > --- a/include/acpi/video.h > +++ b/include/acpi/video.h > @@ -53,6 +53,7 @@ enum acpi_backlight_type { > }; > > #if IS_ENABLED(CONFIG_ACPI_VIDEO) > +extern void acpi_video_report_nolcd(void); It looks like a stub is needed for the other case. Apparently, things fail to compile due to the lack of it. > extern int acpi_video_register(void); > extern void acpi_video_unregister(void); > extern void acpi_video_register_backlight(void); > -- > 2.34.1 >