From: Anthony Koo Date: Sat, 16 Jan 2021 02:45:43 +0000 (-0500) Subject: drm/amd/display: fix calculation for the pwl backlight curve X-Git-Tag: Ubuntu-5.13.0-19.19~3909^2~5^2~19 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=4fa6a75128ae8b12cdfe41938d9d2ab301285a22;p=mirror_ubuntu-jammy-kernel.git drm/amd/display: fix calculation for the pwl backlight curve [Why] The PWL backlight curve is used by the firmware to convert between brightness and linear PWM value. Driver has a backlight LUT, but the firmware holds a PWL curve and interpolates between points. The calculations are incorrect leading to slightly off backlight values being programmed. [How] Fix the PWL backlight curve threshold/offset calculations Signed-off-by: Anthony Koo Reviewed-by: Josip Pavic Acked-by: Anson Jacob Tested-by: Daniel Wheeler Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/display/modules/power/power_helpers.c b/drivers/gpu/drm/amd/display/modules/power/power_helpers.c index 3d4c66933f51..6270ecbd2438 100644 --- a/drivers/gpu/drm/amd/display/modules/power/power_helpers.c +++ b/drivers/gpu/drm/amd/display/modules/power/power_helpers.c @@ -266,7 +266,7 @@ static void fill_backlight_transform_table_v_2_2(struct dmcu_iram_parameters par * format U4.10. */ for (i = 1; i+1 < num_entries; i++) { - lut_index = (params.backlight_lut_array_size - 1) * i / (num_entries - 1); + lut_index = DIV_ROUNDUP((i * params.backlight_lut_array_size), num_entries); ASSERT(lut_index < params.backlight_lut_array_size); table->backlight_thresholds[i] = (big_endian) ?