FAILED: patch "[PATCH] drm/amd/display: Scale custom brightness curve from full" failed to apply to 7.2-stable tree
[email protected]
maintainerThe patch below does not apply to the 7.2-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-7.2.y
git checkout FETCH_HEAD
git cherry-pick -x 6fd83a1c2cdea48c396f600795217fbdfb8124f6
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026090900-astrology-gallery-8428@gregkh' --subject-prefix 'PATCH 7.2.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 6fd83a1c2cdea48c396f600795217fbdfb8124f6 Mon Sep 17 00:00:00 2001
From: Akhmed Zhitaev <[email protected]>
Date: Thu, 13 Aug 2026 22:09:59 +0500
Subject: [PATCH] drm/amd/display: Scale custom brightness curve from full
range
Custom brightness curves use an 8-bit input signal. After exporting the full PWM range to userspace, the curve normalizer still divides requests by the physical PWM span. On panels with a nonzero minimum PWM level, this can produce a curve input greater than 255 and send an invalid backlight level to DC.
Scale the userspace [0..max] range to the curve's [0..255] range instead. This retains the full advertised range and keeps the reverse readback conversion unchanged.
(Move to amdgpu_dm_backlight.c)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_backlight.c +4 -4
@@ -106,10 +106,10 @@ int get_brightness_range(const struct amdgpu_dm_backlight_caps *caps, }EXPORT_IF_KUNIT (get_brightness_range); -/* Rescale from [min..max] to [0..AMDGPU_MAX_BL_LEVEL] */ -static inline u32 scale_input_to_fw (int min,int max,u64 input) +/* Rescale userspace [0..max] to the firmware curve's [0..255]. */ +static inline u32 scale_input_to_fw (int max,u64 input) { -return DIV_ROUND_CLOSEST_ULL (input *AMDGPU_MAX_BL_LEVEL , max - min); +return DIV_ROUND_CLOSEST_ULL (input *AMDGPU_MAX_BL_LEVEL , max); }/* Rescale from [0..AMDGPU_MAX_BL_LEVEL] to [min..max] */
@@ -123,7 +123,7 @@ void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *caps, unsigned int min, unsigned int max, uint32_t *user_brightness) { - u32 brightness = scale_input_to_fw(min, max, *user_brightness); + u32 brightness = scale_input_to_fw(max, *user_brightness);u8 lower_signal, upper_signal, upper_lum, lower_lum, lum;int left, right;
PATCH 1/1 drm/amd/display: Scale custom brightness curve from full range
Custom brightness curves use an 8-bit input signal. After exporting the full PWM range to userspace, the curve normalizer still divides requests by the physical PWM span. On panels with a nonzero minimum PWM level, this can produce a curve input greater than 255 and send an invalid backlight level to DC.
Scale the userspace [0..max] range to the curve's [0..255] range instead. This retains the full advertised range and keeps the reverse readback conversion unchanged.
(Move to amdgpu_dm_backlight.c)
--- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -4
@@ -5265,10 +5265,10 @@ 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) +/* Rescale userspace [0..max] to the firmware curve's [0..255]. */ +static inline u32 scale_input_to_fw (int max,u64 input) { -return DIV_ROUND_CLOSEST_ULL (input *AMDGPU_MAX_BL_LEVEL , max - min); +return DIV_ROUND_CLOSEST_ULL (input *AMDGPU_MAX_BL_LEVEL , max); }/* Rescale from [0..AMDGPU_MAX_BL_LEVEL] to [min..max] */
@@ -5281,7 +5281,7 @@ static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *cap unsigned int min, unsigned int max, uint32_t *user_brightness) { - u32 brightness = scale_input_to_fw(min, max, *user_brightness); + u32 brightness = scale_input_to_fw(max, *user_brightness);u8 lower_signal, upper_signal, upper_lum, lower_lum, lum;int left, right;
Signature · 1 line
2.55.0
Re: [PATCH 7.2.y] drm/amd/display: Scale custom brightness curve from full range
Quoted 3 lines
Custom brightness curves use an 8-bit input signal. After exporting the full PWM range to userspace, the curve normalizer still divides requests by the physical PWM span.
Queued for 7.2, thanks.
Signature · 2 lines
Thanks, Sasha