From: Eric Cook <[email protected]>

-check for min/max range in freesync calculation and handle it accordingly

Signed-off-by: Eric <[email protected]>
Acked-by: Harry Wentland <[email protected]>
Reviewed-by: Anthony Koo <[email protected]>
---
 drivers/gpu/drm/amd/display/modules/freesync/freesync.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c 
b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
index d3d57008271b..009cb797bcfa 100644
--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
@@ -363,6 +363,21 @@ static void calc_freesync_range(struct core_freesync 
*core_freesync,
        unsigned int index = map_index_from_stream(core_freesync, stream);
        uint32_t vtotal = stream->timing.v_total;
 
+       if ((min_refresh_in_uhz == 0) || (max_refresh_in_uhz == 0)) {
+               state->freesync_range.min_refresh =
+                               state->nominal_refresh_rate_in_micro_hz;
+               state->freesync_range.max_refresh =
+                               state->nominal_refresh_rate_in_micro_hz;
+
+               state->freesync_range.max_frame_duration = 0;
+               state->freesync_range.min_frame_duration = 0;
+
+               state->freesync_range.vmax = vtotal;
+               state->freesync_range.vmin = vtotal;
+
+               return;
+       }
+
        min_frame_duration_in_ns = ((unsigned int) (div64_u64(
                                        (1000000000ULL * 1000000),
                                        max_refresh_in_uhz)));
-- 
2.11.0

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to