From: Greg Kroah-Hartman Date: Fri, 4 Jul 2025 09:06:56 +0000 (+0200) Subject: drop some drm patches that were not right X-Git-Tag: v6.1.143~9 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9ad2f711981874b90cc52f5688cbf03d926fe5c6;p=thirdparty%2Fkernel%2Fstable-queue.git drop some drm patches that were not right --- diff --git a/queue-6.15/drm-amd-display-export-full-brightness-range-to-user.patch b/queue-6.15/drm-amd-display-export-full-brightness-range-to-user.patch deleted file mode 100644 index 1beeff8df8..0000000000 --- a/queue-6.15/drm-amd-display-export-full-brightness-range-to-user.patch +++ /dev/null @@ -1,133 +0,0 @@ -From 7808a569951cb4f078d5a423ba56d1779a9f89e1 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 29 May 2025 09:46:32 -0500 -Subject: drm/amd/display: Export full brightness range to userspace - -From: Mario Limonciello - -[WHY] -Userspace currently is offered a range from 0-0xFF but the PWM is -programmed from 0-0xFFFF. This can be limiting to some software -that wants to apply greater granularity. - -[HOW] -Convert internally to firmware values only when mapping custom -brightness curves because these are in 0-0xFF range. Advertise full -PWM range to userspace. - -Cc: Mario Limonciello -Cc: Alex Deucher -Reviewed-by: Roman Li -Signed-off-by: Mario Limonciello -Signed-off-by: Alex Hung -Tested-by: Daniel Wheeler -Signed-off-by: Alex Deucher -(cherry picked from commit 8dbd72cb790058ce52279af38a43c2b302fdd3e5) -Cc: stable@vger.kernel.org ---- - .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 41 ++++++++++++------- - 1 file changed, 27 insertions(+), 14 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index a9a719f051f90..c5c2f82448f21 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -4655,9 +4655,23 @@ static int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps, - return 1; - } - -+/* Rescale from [min..max] to [0..AMDGPU_MAX_BL_LEVEL] */ -+static inline u32 scale_input_to_fw(int min, int max, u64 input) -+{ -+ return DIV_ROUND_CLOSEST_ULL(input * AMDGPU_MAX_BL_LEVEL, max - min); -+} -+ -+/* Rescale from [0..AMDGPU_MAX_BL_LEVEL] to [min..max] */ -+static inline u32 scale_fw_to_input(int min, int max, u64 input) -+{ -+ return min + DIV_ROUND_CLOSEST_ULL(input * (max - min), AMDGPU_MAX_BL_LEVEL); -+} -+ - static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *caps, -- uint32_t *brightness) -+ unsigned int min, unsigned int max, -+ uint32_t *user_brightness) - { -+ u32 brightness = scale_input_to_fw(min, max, *user_brightness); - u8 prev_signal = 0, prev_lum = 0; - int i = 0; - -@@ -4668,7 +4682,7 @@ static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *cap - return; - - /* choose start to run less interpolation steps */ -- if (caps->luminance_data[caps->data_points/2].input_signal > *brightness) -+ if (caps->luminance_data[caps->data_points/2].input_signal > brightness) - i = caps->data_points/2; - do { - u8 signal = caps->luminance_data[i].input_signal; -@@ -4679,17 +4693,18 @@ static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *cap - * brightness < signal: interpolate between previous and current luminance numerator - * brightness > signal: find next data point - */ -- if (*brightness > signal) { -+ if (brightness > signal) { - prev_signal = signal; - prev_lum = lum; - i++; - continue; - } -- if (*brightness < signal) -+ if (brightness < signal) - lum = prev_lum + DIV_ROUND_CLOSEST((lum - prev_lum) * -- (*brightness - prev_signal), -+ (brightness - prev_signal), - signal - prev_signal); -- *brightness = DIV_ROUND_CLOSEST(lum * *brightness, 101); -+ *user_brightness = scale_fw_to_input(min, max, -+ DIV_ROUND_CLOSEST(lum * brightness, 101)); - return; - } while (i < caps->data_points); - } -@@ -4702,11 +4717,10 @@ static u32 convert_brightness_from_user(const struct amdgpu_dm_backlight_caps *c - if (!get_brightness_range(caps, &min, &max)) - return brightness; - -- convert_custom_brightness(caps, &brightness); -+ convert_custom_brightness(caps, min, max, &brightness); - -- // Rescale 0..255 to min..max -- return min + DIV_ROUND_CLOSEST((max - min) * brightness, -- AMDGPU_MAX_BL_LEVEL); -+ // Rescale 0..max to min..max -+ return min + DIV_ROUND_CLOSEST_ULL((u64)(max - min) * brightness, max); - } - - static u32 convert_brightness_to_user(const struct amdgpu_dm_backlight_caps *caps, -@@ -4719,8 +4733,8 @@ static u32 convert_brightness_to_user(const struct amdgpu_dm_backlight_caps *cap - - if (brightness < min) - return 0; -- // Rescale min..max to 0..255 -- return DIV_ROUND_CLOSEST(AMDGPU_MAX_BL_LEVEL * (brightness - min), -+ // Rescale min..max to 0..max -+ return DIV_ROUND_CLOSEST_ULL((u64)max * (brightness - min), - max - min); - } - -@@ -4870,11 +4884,10 @@ amdgpu_dm_register_backlight_device(struct amdgpu_dm_connector *aconnector) - drm_dbg(drm, "Backlight caps: min: %d, max: %d, ac %d, dc %d\n", min, max, - caps->ac_level, caps->dc_level); - } else -- props.brightness = AMDGPU_MAX_BL_LEVEL; -+ props.brightness = props.max_brightness = AMDGPU_MAX_BL_LEVEL; - - if (caps->data_points && !(amdgpu_dc_debug_mask & DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE)) - drm_info(drm, "Using custom brightness curve\n"); -- props.max_brightness = AMDGPU_MAX_BL_LEVEL; - props.type = BACKLIGHT_RAW; - - snprintf(bl_name, sizeof(bl_name), "amdgpu_bl%d", --- -2.39.5 - diff --git a/queue-6.15/drm-amd-display-fix-default-dc-and-ac-levels.patch b/queue-6.15/drm-amd-display-fix-default-dc-and-ac-levels.patch deleted file mode 100644 index bced5d551b..0000000000 --- a/queue-6.15/drm-amd-display-fix-default-dc-and-ac-levels.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 6eed9003aecde2bcc4d5078961778db891d70d20 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 14 May 2025 16:06:40 -0500 -Subject: drm/amd/display: Fix default DC and AC levels - -From: Mario Limonciello - -[ Upstream commit 8b5f3a229a70d242322b78c8e13744ca00212def ] - -[Why] -DC and AC levels are advertised in a percentage, not a luminance. - -[How] -Scale DC and AC levels to supported values. - -Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4221 -Reviewed-by: Alex Hung -Signed-off-by: Mario Limonciello -Signed-off-by: Wayne Lin -Tested-by: Daniel Wheeler -Signed-off-by: Alex Deucher -Signed-off-by: Sasha Levin ---- - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index 96118a0e1ffeb..389748c420b02 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -4834,6 +4834,7 @@ amdgpu_dm_register_backlight_device(struct amdgpu_dm_connector *aconnector) - struct backlight_properties props = { 0 }; - struct amdgpu_dm_backlight_caps caps = { 0 }; - char bl_name[16]; -+ int min, max; - - if (aconnector->bl_idx == -1) - return; -@@ -4846,11 +4847,15 @@ amdgpu_dm_register_backlight_device(struct amdgpu_dm_connector *aconnector) - } - - amdgpu_acpi_get_backlight_caps(&caps); -- if (caps.caps_valid) { -+ if (caps.caps_valid && get_brightness_range(&caps, &min, &max)) { - if (power_supply_is_system_supplied() > 0) -- props.brightness = caps.ac_level; -+ props.brightness = (max - min) * DIV_ROUND_CLOSEST(caps.ac_level, 100); - else -- props.brightness = caps.dc_level; -+ props.brightness = (max - min) * DIV_ROUND_CLOSEST(caps.dc_level, 100); -+ /* min is zero, so max needs to be adjusted */ -+ props.max_brightness = max - min; -+ drm_dbg(drm, "Backlight caps: min: %d, max: %d, ac %d, dc %d\n", min, max, -+ caps.ac_level, caps.dc_level); - } else - props.brightness = AMDGPU_MAX_BL_LEVEL; - --- -2.39.5 - diff --git a/queue-6.15/drm-amd-display-only-read-acpi-backlight-caps-once.patch b/queue-6.15/drm-amd-display-only-read-acpi-backlight-caps-once.patch deleted file mode 100644 index b888802515..0000000000 --- a/queue-6.15/drm-amd-display-only-read-acpi-backlight-caps-once.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 6db7dead46f8560af4845a305669a34d0af7e8e9 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 29 May 2025 11:33:44 -0500 -Subject: drm/amd/display: Only read ACPI backlight caps once - -From: Mario Limonciello - -[ Upstream commit ffcaed1d7ecef31198000dfbbea791f30f7ca437 ] - -[WHY] -Backlight caps are read already in amdgpu_dm_update_backlight_caps(). -They may be updated by update_connector_ext_caps(). Reading again when -registering backlight device may cause wrong values to be used. - -[HOW] -Use backlight caps already registered to the dm. - -Cc: Mario Limonciello -Cc: Alex Deucher -Reviewed-by: Roman Li -Signed-off-by: Mario Limonciello -Signed-off-by: Alex Hung -Tested-by: Daniel Wheeler -Signed-off-by: Alex Deucher -(cherry picked from commit 148144f6d2f14b02eaaa39b86bbe023cbff350bd) -Cc: stable@vger.kernel.org -Signed-off-by: Sasha Levin ---- - drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index 389748c420b02..e61166a8230b6 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -4832,7 +4832,7 @@ amdgpu_dm_register_backlight_device(struct amdgpu_dm_connector *aconnector) - struct drm_device *drm = aconnector->base.dev; - struct amdgpu_display_manager *dm = &drm_to_adev(drm)->dm; - struct backlight_properties props = { 0 }; -- struct amdgpu_dm_backlight_caps caps = { 0 }; -+ struct amdgpu_dm_backlight_caps *caps; - char bl_name[16]; - int min, max; - -@@ -4846,20 +4846,20 @@ amdgpu_dm_register_backlight_device(struct amdgpu_dm_connector *aconnector) - return; - } - -- amdgpu_acpi_get_backlight_caps(&caps); -- if (caps.caps_valid && get_brightness_range(&caps, &min, &max)) { -+ caps = &dm->backlight_caps[aconnector->bl_idx]; -+ if (get_brightness_range(caps, &min, &max)) { - if (power_supply_is_system_supplied() > 0) -- props.brightness = (max - min) * DIV_ROUND_CLOSEST(caps.ac_level, 100); -+ props.brightness = (max - min) * DIV_ROUND_CLOSEST(caps->ac_level, 100); - else -- props.brightness = (max - min) * DIV_ROUND_CLOSEST(caps.dc_level, 100); -+ props.brightness = (max - min) * DIV_ROUND_CLOSEST(caps->dc_level, 100); - /* min is zero, so max needs to be adjusted */ - props.max_brightness = max - min; - drm_dbg(drm, "Backlight caps: min: %d, max: %d, ac %d, dc %d\n", min, max, -- caps.ac_level, caps.dc_level); -+ caps->ac_level, caps->dc_level); - } else - props.brightness = AMDGPU_MAX_BL_LEVEL; - -- if (caps.data_points && !(amdgpu_dc_debug_mask & DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE)) -+ if (caps->data_points && !(amdgpu_dc_debug_mask & DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE)) - drm_info(drm, "Using custom brightness curve\n"); - props.max_brightness = AMDGPU_MAX_BL_LEVEL; - props.type = BACKLIGHT_RAW; --- -2.39.5 - diff --git a/queue-6.15/drm-amd-display-optimize-custom-brightness-curve.patch b/queue-6.15/drm-amd-display-optimize-custom-brightness-curve.patch deleted file mode 100644 index 146411a9db..0000000000 --- a/queue-6.15/drm-amd-display-optimize-custom-brightness-curve.patch +++ /dev/null @@ -1,110 +0,0 @@ -From 6e1e126b02f71ac44a77136dcc8f208dc63aadba Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 24 Mar 2025 12:57:25 -0500 -Subject: drm/amd/display: Optimize custom brightness curve - -From: Mario Limonciello - -[Why] -When BIOS includes a lot of custom brightness data points, walking -the entire list can be time consuming. This is most noticed when -dragging a power slider. The "higher" values are "slower" to drag -around. - -[How] -Move custom brightness calculation loop into a static function. Before -starting the loop check the "half way" data point to see how it compares -to the input. If greater than the half way data point use that as the -starting point instead. - -Reviewed-by: Alex Hung -Signed-off-by: Mario Limonciello -Signed-off-by: Roman Li -Tested-by: Daniel Wheeler -Signed-off-by: Alex Deucher ---- - .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 53 ++++++++++++------- - 1 file changed, 33 insertions(+), 20 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index e61166a8230b6..a9a719f051f90 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -4655,41 +4655,54 @@ static int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps, - return 1; - } - --static u32 convert_brightness_from_user(const struct amdgpu_dm_backlight_caps *caps, -- uint32_t brightness) -+static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *caps, -+ uint32_t *brightness) - { -- unsigned int min, max; - u8 prev_signal = 0, prev_lum = 0; -+ int i = 0; - -- if (!get_brightness_range(caps, &min, &max)) -- return brightness; -- -- for (int i = 0; i < caps->data_points; i++) { -- u8 signal, lum; -+ if (amdgpu_dc_debug_mask & DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE) -+ return; - -- if (amdgpu_dc_debug_mask & DC_DISABLE_CUSTOM_BRIGHTNESS_CURVE) -- break; -+ if (!caps->data_points) -+ return; - -- signal = caps->luminance_data[i].input_signal; -- lum = caps->luminance_data[i].luminance; -+ /* choose start to run less interpolation steps */ -+ if (caps->luminance_data[caps->data_points/2].input_signal > *brightness) -+ i = caps->data_points/2; -+ do { -+ u8 signal = caps->luminance_data[i].input_signal; -+ u8 lum = caps->luminance_data[i].luminance; - - /* - * brightness == signal: luminance is percent numerator - * brightness < signal: interpolate between previous and current luminance numerator - * brightness > signal: find next data point - */ -- if (brightness < signal) -- lum = prev_lum + DIV_ROUND_CLOSEST((lum - prev_lum) * -- (brightness - prev_signal), -- signal - prev_signal); -- else if (brightness > signal) { -+ if (*brightness > signal) { - prev_signal = signal; - prev_lum = lum; -+ i++; - continue; - } -- brightness = DIV_ROUND_CLOSEST(lum * brightness, 101); -- break; -- } -+ if (*brightness < signal) -+ lum = prev_lum + DIV_ROUND_CLOSEST((lum - prev_lum) * -+ (*brightness - prev_signal), -+ signal - prev_signal); -+ *brightness = DIV_ROUND_CLOSEST(lum * *brightness, 101); -+ return; -+ } while (i < caps->data_points); -+} -+ -+static u32 convert_brightness_from_user(const struct amdgpu_dm_backlight_caps *caps, -+ uint32_t brightness) -+{ -+ unsigned int min, max; -+ -+ if (!get_brightness_range(caps, &min, &max)) -+ return brightness; -+ -+ convert_custom_brightness(caps, &brightness); - - // Rescale 0..255 to min..max - return min + DIV_ROUND_CLOSEST((max - min) * brightness, --- -2.39.5 - diff --git a/queue-6.15/series b/queue-6.15/series index 8cfe28fd9c..243f3b004e 100644 --- a/queue-6.15/series +++ b/queue-6.15/series @@ -246,10 +246,6 @@ arm64-dts-qcom-x1e78100-t14s-fix-missing-hid-supplie.patch sched_ext-make-scx_group_set_weight-always-update-tg.patch drm-amd-display-add-early-8b-10b-channel-equalization-test-pattern-sequence.patch drm-amd-display-get-lttpr-ieee-oui-device-id-from-closest-lttpr-to-host.patch -drm-amd-display-fix-default-dc-and-ac-levels.patch -drm-amd-display-only-read-acpi-backlight-caps-once.patch -drm-amd-display-optimize-custom-brightness-curve.patch -drm-amd-display-export-full-brightness-range-to-user.patch rust-completion-implement-initial-abstraction.patch rust-revocable-indicate-whether-data-has-been-revoked-already.patch rust-devres-fix-race-in-devres-drop.patch