aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
diff options
context:
space:
mode:
authorSylvia Tsai <sylvia.tsai@amd.com>2017-04-21 15:29:55 -0400
committerAlex Deucher <alexander.deucher@amd.com>2017-09-26 18:06:36 -0400
commit94267b3df7ee00f21fa0ff7d618ca7e0574db5ed (patch)
treeb8f8fce62e600c1e7130cc4c8a2d803705b2c3c3 /drivers/gpu/drm/amd/display/modules/freesync/freesync.c
parentd27383a2b5719be60ac86deae30e89755f868a07 (diff)
drm/amd/display: PSR Refactor
- Refacotr PSR to follow correct module pattern - fix eDP only working on sink index 0. Signed-off-by: Sylvia Tsai <sylvia.tsai@amd.com> Acked-by: Harry Wentland <Harry.Wentland@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/modules/freesync/freesync.c')
-rw-r--r--drivers/gpu/drm/amd/display/modules/freesync/freesync.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
index 5c6de723da5d..78b4f28d862c 100644
--- a/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
+++ b/drivers/gpu/drm/amd/display/modules/freesync/freesync.c
@@ -264,10 +264,10 @@ bool mod_freesync_add_stream(struct mod_freesync *mod_freesync,
264 enable_for_video = false; 264 enable_for_video = false;
265 } 265 }
266 266
267 temp = core_stream->public.timing.pix_clk_khz; 267 temp = stream->timing.pix_clk_khz;
268 temp *= 1000ULL * 1000ULL * 1000ULL; 268 temp *= 1000ULL * 1000ULL * 1000ULL;
269 temp = div_u64(temp, core_stream->public.timing.h_total); 269 temp = div_u64(temp, stream->timing.h_total);
270 temp = div_u64(temp, core_stream->public.timing.v_total); 270 temp = div_u64(temp, stream->timing.v_total);
271 271
272 nom_refresh_rate_micro_hz = (unsigned int) temp; 272 nom_refresh_rate_micro_hz = (unsigned int) temp;
273 273
@@ -657,6 +657,7 @@ void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync,
657 unsigned int min_frame_duration_in_ns, vmax, vmin = 0; 657 unsigned int min_frame_duration_in_ns, vmax, vmin = 0;
658 struct freesync_state *state; 658 struct freesync_state *state;
659 struct core_freesync *core_freesync = NULL; 659 struct core_freesync *core_freesync = NULL;
660 struct dc_static_screen_events triggers = {0};
660 661
661 if (mod_freesync == NULL) 662 if (mod_freesync == NULL)
662 return; 663 return;
@@ -749,6 +750,13 @@ void mod_freesync_handle_v_update(struct mod_freesync *mod_freesync,
749 core_freesync->dc, streams, 750 core_freesync->dc, streams,
750 num_streams, v_total, 751 num_streams, v_total,
751 v_total); 752 v_total);
753
754 triggers.overlay_update = true;
755 triggers.surface_update = true;
756
757 core_freesync->dc->stream_funcs.set_static_screen_events(
758 core_freesync->dc, streams, num_streams,
759 &triggers);
752 } 760 }
753} 761}
754 762