]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Add support for minimum backlight quirk
authorThomas Weißschuh <linux@weissschuh.net>
Mon, 11 Nov 2024 18:09:36 +0000 (19:09 +0100)
committerMario Limonciello <mario.limonciello@amd.com>
Thu, 21 Nov 2024 15:28:13 +0000 (09:28 -0600)
Not all platforms provide the full range of PWM backlight capabilities
supported by the hardware through ATIF.
Use the generic drm panel minimum backlight quirk infrastructure to
override the capabilities where necessary.

Testing the backlight quirk together with the "panel_power_savings"
sysfs file has not shown any negative impact.
One quirk seems to be that 0% at panel_power_savings=0 seems to be
slightly darker than at panel_power_savings=4.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Tested-by: Dustin L. Howett <dustin@howett.net>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241111-amdgpu-min-backlight-quirk-v7-2-f662851fda69@weissschuh.net
drivers/gpu/drm/amd/amdgpu/Kconfig
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 41fa3377d9cf566294c6f86eedd8b31a22c77510..1a11cab741aca4483673f8e7794b4d3022d269e6 100644 (file)
@@ -26,6 +26,7 @@ config DRM_AMDGPU
        select DRM_BUDDY
        select DRM_SUBALLOC_HELPER
        select DRM_EXEC
+       select DRM_PANEL_BACKLIGHT_QUIRKS
        # amdgpu depends on ACPI_VIDEO when ACPI is enabled, for select to work
        # ACPI_VIDEO's dependencies must also be selected.
        select INPUT if ACPI
index 75d6b90104f8fe196df06383b20ee88196a700bf..a0bcc62f280f8e80f5d174cd2f567a8ec616e54f 100644 (file)
@@ -93,6 +93,7 @@
 #include <drm/drm_fourcc.h>
 #include <drm/drm_edid.h>
 #include <drm/drm_eld.h>
+#include <drm/drm_utils.h>
 #include <drm/drm_vblank.h>
 #include <drm/drm_audio_component.h>
 #include <drm/drm_gem_atomic_helper.h>
@@ -3442,6 +3443,7 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
        struct drm_connector *conn_base;
        struct amdgpu_device *adev;
        struct drm_luminance_range_info *luminance_range;
+       int min_input_signal_override;
 
        if (aconnector->bl_idx == -1 ||
            aconnector->dc_link->connector_signal != SIGNAL_TYPE_EDP)
@@ -3476,6 +3478,10 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
                caps->aux_min_input_signal = 0;
                caps->aux_max_input_signal = 512;
        }
+
+       min_input_signal_override = drm_get_panel_min_brightness_quirk(aconnector->drm_edid);
+       if (min_input_signal_override >= 0)
+               caps->min_input_signal = min_input_signal_override;
 }
 
 void amdgpu_dm_update_connector_after_detect(