Commit c2753b24 authored by Thomas Weißschuh's avatar Thomas Weißschuh Committed by Mario Limonciello
Browse files

drm/amd/display: Add support for minimum backlight quirk



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: default avatarThomas Weißschuh <linux@weissschuh.net>
Tested-by: default avatarDustin L. Howett <dustin@howett.net>
Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241111-amdgpu-min-backlight-quirk-v7-2-f662851fda69@weissschuh.net
parent 22e5c7ae
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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(