drm/amd/display: Explicitly disable cursor when disabling CRTC
authorVictor Lu <victorchengchi.lu@amd.com>
Fri, 23 Oct 2020 17:38:58 +0000 (13:38 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 10 Nov 2020 19:25:45 +0000 (14:25 -0500)
[why]
On DCE, the cursor is not being disabled on commits where there is no
CRTC or FB enabled.

[how]
Explicitly disable the cursor in the commit tail only if the pending
commit disables the CRTC.

Signed-off-by: Victor Lu <victorchengchi.lu@amd.com>
Acked-by: Bindu Ramamurthy <bindu.r@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 152b1b1..16e7eb4 100644 (file)
@@ -8049,6 +8049,16 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
                        new_crtc_state->active_changed,
                        new_crtc_state->connectors_changed);
 
+               /* Disable cursor if disabling crtc */
+               if (old_crtc_state->active && !new_crtc_state->active) {
+                       struct dc_cursor_position position;
+
+                       memset(&position, 0, sizeof(position));
+                       mutex_lock(&dm->dc_lock);
+                       dc_stream_set_cursor_position(dm_old_crtc_state->stream, &position);
+                       mutex_unlock(&dm->dc_lock);
+               }
+
                /* Copy all transient state flags into dc state */
                if (dm_new_crtc_state->stream) {
                        amdgpu_dm_crtc_copy_transient_flags(&dm_new_crtc_state->base,