ACPI: video: Remove register_backlight_delay module option and code
authorHans de Goede <hdegoede@redhat.com>
Tue, 4 Apr 2023 11:02:50 +0000 (13:02 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 11 Apr 2023 18:55:46 +0000 (20:55 +0200)
Since commit 5aa9d943e9b6 ("ACPI: video: Don't enable fallback path for
creating ACPI backlight by default"), the delayed registering of
acpi_video# backlight devices has been disabled by default.

The few bugreports where this option was used as a workaround were all
cases where the GPU driver did not call acpi_video_register_backlight()
and the workaround was to pass video.register_backlight_delay=1.

With the recent "ACPI: video: Make acpi_backlight=video work independent
from GPU driver" changes acpi_backlight=video can be used to achieve
the same result. So there is no need for the register_backlight_delay
option + code anymore.

Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpi_video.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
include/acpi/video.h

index c7a6d0b..62f4364 100644 (file)
@@ -70,12 +70,6 @@ module_param(device_id_scheme, bool, 0444);
 static int only_lcd = -1;
 module_param(only_lcd, int, 0444);
 
-static int register_backlight_delay;
-module_param(register_backlight_delay, int, 0444);
-MODULE_PARM_DESC(register_backlight_delay,
-       "Delay in seconds before doing fallback (non GPU driver triggered) "
-       "backlight registration, set to 0 to disable.");
-
 static bool may_report_brightness_keys;
 static int register_count;
 static DEFINE_MUTEX(register_count_mutex);
@@ -84,9 +78,6 @@ static LIST_HEAD(video_bus_head);
 static int acpi_video_bus_add(struct acpi_device *device);
 static void acpi_video_bus_remove(struct acpi_device *device);
 static void acpi_video_bus_notify(struct acpi_device *device, u32 event);
-static void acpi_video_bus_register_backlight_work(struct work_struct *ignored);
-static DECLARE_DELAYED_WORK(video_bus_register_backlight_work,
-                           acpi_video_bus_register_backlight_work);
 
 /*
  * Indices in the _BCL method response: the first two items are special,
@@ -2096,11 +2087,6 @@ static void acpi_video_bus_remove(struct acpi_device *device)
        kfree(video);
 }
 
-static void acpi_video_bus_register_backlight_work(struct work_struct *ignored)
-{
-       acpi_video_register_backlight();
-}
-
 static int __init is_i740(struct pci_dev *dev)
 {
        if (dev->device == 0x00D1)
@@ -2183,17 +2169,6 @@ 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;
@@ -2222,18 +2197,6 @@ int acpi_video_register(void)
         */
        register_count = 1;
 
-       /*
-        * acpi_video_bus_add() skips registering the userspace visible
-        * backlight_device. The intend is for this to be registered by the
-        * drm/kms driver calling acpi_video_register_backlight() *after* it is
-        * done setting up its own native backlight device. The delayed work
-        * ensures that acpi_video_register_backlight() always gets called
-        * eventually, in case there is no drm/kms driver or it is disabled.
-        */
-       if (register_backlight_delay)
-               schedule_delayed_work(&video_bus_register_backlight_work,
-                                     register_backlight_delay * HZ);
-
 leave:
        mutex_unlock(&register_count_mutex);
        return ret;
@@ -2244,7 +2207,6 @@ void acpi_video_unregister(void)
 {
        mutex_lock(&register_count_mutex);
        if (register_count) {
-               cancel_delayed_work_sync(&video_bus_register_backlight_work);
                acpi_bus_unregister_driver(&acpi_video_bus);
                register_count = 0;
                may_report_brightness_keys = false;
index a01fd41..d8b3e12 100644 (file)
@@ -4445,10 +4445,6 @@ static int amdgpu_dm_initialize_drm_device(struct amdgpu_device *adev)
                amdgpu_set_panel_orientation(&aconnector->base);
        }
 
-       /* If we didn't find a panel, notify the acpi video detection */
-       if (dm->adev->flags & AMD_IS_APU && dm->num_of_edps == 0)
-               acpi_video_report_nolcd();
-
        /* Software is initialized. Now we can register interrupt handlers. */
        switch (adev->asic_type) {
 #if defined(CONFIG_DRM_AMD_DC_SI)
index ff5a8da..4230392 100644 (file)
@@ -53,7 +53,6 @@ enum acpi_backlight_type {
 };
 
 #if IS_ENABLED(CONFIG_ACPI_VIDEO)
-extern void acpi_video_report_nolcd(void);
 extern int acpi_video_register(void);
 extern void acpi_video_unregister(void);
 extern void acpi_video_register_backlight(void);
@@ -81,7 +80,6 @@ static inline bool acpi_video_backlight_use_native(void)
        return __acpi_video_get_backlight_type(true, NULL) == acpi_backlight_native;
 }
 #else
-static inline void acpi_video_report_nolcd(void) { return; };
 static inline int acpi_video_register(void) { return -ENODEV; }
 static inline void acpi_video_unregister(void) { return; }
 static inline void acpi_video_register_backlight(void) { return; }