Commit 68e05b93 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amd/display: handle range offsets in VRR ranges



Need to check the offset bits for values greater than 255.

v2: also update amdgpu_dm_connector values.

Suggested-by: default avatarMano Ségransan <mano.segransan@protonmail.com>
Tested-by: default avatarMano Ségransan <mano.segransan@protonmail.com>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3203


Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 10740e47
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -11303,14 +11303,23 @@ void amdgpu_dm_update_freesync_caps(struct drm_connector *connector,
				if (range->flags != 1)
					continue;

				amdgpu_dm_connector->min_vfreq = range->min_vfreq;
				amdgpu_dm_connector->max_vfreq = range->max_vfreq;
				amdgpu_dm_connector->pixel_clock_mhz =
					range->pixel_clock_mhz * 10;

				connector->display_info.monitor_range.min_vfreq = range->min_vfreq;
				connector->display_info.monitor_range.max_vfreq = range->max_vfreq;

				if (edid->revision >= 4) {
					if (data->pad2 & DRM_EDID_RANGE_OFFSET_MIN_VFREQ)
						connector->display_info.monitor_range.min_vfreq += 255;
					if (data->pad2 & DRM_EDID_RANGE_OFFSET_MAX_VFREQ)
						connector->display_info.monitor_range.max_vfreq += 255;
				}

				amdgpu_dm_connector->min_vfreq =
					connector->display_info.monitor_range.min_vfreq;
				amdgpu_dm_connector->max_vfreq =
					connector->display_info.monitor_range.max_vfreq;
				amdgpu_dm_connector->pixel_clock_mhz =
					range->pixel_clock_mhz * 10;

				break;
			}