Re: [PATCH] drm/amd/display: handle range offsets in VRR ranges
On 2024-03-01 08:55, Alex Deucher wrote: > Ping? > > On Wed, Feb 28, 2024 at 4:12 PM Alex Deucher > wrote: >> >> Need to check the offset bits for values greater than 255. >> >> v2: also update amdgpu_dm_connector values. >> >> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3203 >> Signed-off-by: Alex Deucher Reviewed-by: Harry Wentland Harry >> --- >> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 19 ++- >> 1 file changed, 14 insertions(+), 5 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 32efce81a5a74..4e4cbf2e33dd2 100644 >> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c >> @@ -11292,14 +11292,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; >> } >> >> -- >> 2.44.0 >>
Re: [PATCH] drm/amd/display: handle range offsets in VRR ranges
Ping? On Wed, Feb 28, 2024 at 4:12 PM Alex Deucher wrote: > > Need to check the offset bits for values greater than 255. > > v2: also update amdgpu_dm_connector values. > > Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3203 > Signed-off-by: Alex Deucher > --- > .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 19 ++- > 1 file changed, 14 insertions(+), 5 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 32efce81a5a74..4e4cbf2e33dd2 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -11292,14 +11292,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; > } > > -- > 2.44.0 >
[PATCH] 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. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3203 Signed-off-by: Alex Deucher --- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 19 ++- 1 file changed, 14 insertions(+), 5 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 32efce81a5a74..4e4cbf2e33dd2 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -11292,14 +11292,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; } -- 2.44.0
[PATCH] drm/amd/display: handle range offsets in VRR ranges
Need to check the offset bits for values greater than 255. Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3203 Signed-off-by: Alex Deucher --- Can we just drop this code (at least for DP)? drm_edid.c already handles this properly in get_monitor_range(). drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 +++ 1 file changed, 7 insertions(+) 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 32efce81a5a74..c4fc65ba6b29b 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -11300,6 +11300,13 @@ void amdgpu_dm_update_freesync_caps(struct drm_connector *connector, 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; + } + break; } -- 2.44.0