Commit 2286d2f9 authored by Roman Li's avatar Roman Li Committed by Alex Deucher

drm/amd/display: Fix psr static frames calculation

[Why]
Driver crash with psr feature enabled due to divide-by-zero error.
This is a regression after rework to calculate static screen frame
number entry time.

[How]
Correct order of operations to avoid divide-by-zero.
Signed-off-by: default avatarRoman Li <roman.li@amd.com>
Reviewed-by: default avatarZhan Liu <Zhan.Liu@amd.com>
Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent e2d533ec
...@@ -8408,7 +8408,6 @@ bool amdgpu_dm_psr_enable(struct dc_stream_state *stream) ...@@ -8408,7 +8408,6 @@ bool amdgpu_dm_psr_enable(struct dc_stream_state *stream)
/* Calculate number of static frames before generating interrupt to /* Calculate number of static frames before generating interrupt to
* enter PSR. * enter PSR.
*/ */
unsigned int frame_time_microsec = 1000000 / vsync_rate_hz;
// Init fail safe of 2 frames static // Init fail safe of 2 frames static
unsigned int num_frames_static = 2; unsigned int num_frames_static = 2;
...@@ -8423,8 +8422,10 @@ bool amdgpu_dm_psr_enable(struct dc_stream_state *stream) ...@@ -8423,8 +8422,10 @@ bool amdgpu_dm_psr_enable(struct dc_stream_state *stream)
* Calculate number of frames such that at least 30 ms of time has * Calculate number of frames such that at least 30 ms of time has
* passed. * passed.
*/ */
if (vsync_rate_hz != 0) if (vsync_rate_hz != 0) {
unsigned int frame_time_microsec = 1000000 / vsync_rate_hz;
num_frames_static = (30000 / frame_time_microsec) + 1; num_frames_static = (30000 / frame_time_microsec) + 1;
}
params.triggers.cursor_update = true; params.triggers.cursor_update = true;
params.triggers.overlay_update = true; params.triggers.overlay_update = true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment