Re: [PATCH] drm/amd/display: handle range offsets in VRR ranges

2024-03-01 Thread Harry Wentland



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

2024-03-01 Thread Alex Deucher
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

2024-02-28 Thread Alex Deucher
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

2024-02-28 Thread Alex Deucher
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