Commit 6cec25f5 authored by Mario Limonciello's avatar Mario Limonciello Committed by Alex Deucher
Browse files

drm/amd/display: Handle interpolation for first data point



[Why]
If the first data point for a custom brightness curve is not 0% luminance
then the first few luminance values will be ignored.

[How]
Check signal is below first data point and if so do linear interpolation to
0 instead.

Reviewed-by: default avatarAlex Hung <alex.hung@amd.com>
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarIvan Lipski <ivan.lipski@amd.com>
Tested-by: default avatarDan Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 74d70e30
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -4828,6 +4828,16 @@ static void convert_custom_brightness(const struct amdgpu_dm_backlight_caps *cap
	if (!caps->data_points)
		return;

	/*
	 * Handle the case where brightness is below the first data point
	 * Interpolate between (0,0) and (first_signal, first_lum)
	 */
	if (brightness < caps->luminance_data[0].input_signal) {
		lum = DIV_ROUND_CLOSEST(caps->luminance_data[0].luminance * brightness,
					caps->luminance_data[0].input_signal);
		goto scale;
	}

	left = 0;
	right = caps->data_points - 1;
	while (left <= right) {