From: Bhawanpreet Lakha Date: Mon, 16 Oct 2017 19:51:00 +0000 (-0400) Subject: drm/amd/display: Atomic freesync ASSERT fix X-Git-Tag: v4.16-rc1~96^2~29^2~247 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=bfe1708c80d5d7cf08b7907b1850d2d3bf688db2;p=linux.git drm/amd/display: Atomic freesync ASSERT fix Changes to atomic set property for freesync. Now In set property, just set the freesync variables and return 0. Based on the variables call mod_freesync_set_user_enable() inside commit_tail Signed-off-by: Bhawanpreet Lakha Reviewed-by: Tony Cheng Acked-by: Harry Wentland Signed-off-by: Alex Deucher --- 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 b2359bc4900d..e99ba554f5b9 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4154,6 +4154,33 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) mod_freesync_add_stream(adev->dm.freesync_module, new_stream, &aconnector->caps); } + + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + + struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc); + struct amdgpu_dm_connector *aconnector = NULL; + struct dm_connector_state *conn_state = NULL; + struct dm_crtc_state *acrtc_state = NULL; + + acrtc_state = to_dm_crtc_state(acrtc->base.state); + + + aconnector = + amdgpu_dm_find_first_crtc_matching_connector( + state, + crtc, + false); + if (aconnector) { + conn_state = to_dm_connector_state(aconnector->base.state); + + if (new_stream) { + mod_freesync_set_user_enable(adev->dm.freesync_module, + &acrtc_state->stream, + 1, + &conn_state->user_enable); + } + } + } } if (dm_state->context)