drm/radeon: Also call cursor_move_locked when the cursor size changes
authorMichel Dänzer <michel.daenzer@amd.com>
Thu, 27 Oct 2016 04:03:23 +0000 (13:03 +0900)
committerSasha Levin <alexander.levin@verizon.com>
Fri, 13 Jan 2017 01:56:56 +0000 (20:56 -0500)
[ Upstream commit dcab0fa64e300afa18f39cd98d05e0950f652adf ]

The cursor size also affects the register programming.

Cc: stable@vger.kernel.org
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
drivers/gpu/drm/radeon/radeon_cursor.c

index fa661744a1f57a7326c782f1b392beaf37c787a6..c28e3e1e534463b57a2b619fc0195276e258b3a3 100644 (file)
@@ -306,12 +306,11 @@ int radeon_crtc_cursor_set2(struct drm_crtc *crtc,
                return ret;
        }
 
-       radeon_crtc->cursor_width = width;
-       radeon_crtc->cursor_height = height;
-
        radeon_lock_cursor(crtc, true);
 
-       if (hot_x != radeon_crtc->cursor_hot_x ||
+       if (width != radeon_crtc->cursor_width ||
+           height != radeon_crtc->cursor_height ||
+           hot_x != radeon_crtc->cursor_hot_x ||
            hot_y != radeon_crtc->cursor_hot_y) {
                int x, y;
 
@@ -320,6 +319,8 @@ int radeon_crtc_cursor_set2(struct drm_crtc *crtc,
 
                radeon_cursor_move_locked(crtc, x, y);
 
+               radeon_crtc->cursor_width = width;
+               radeon_crtc->cursor_height = height;
                radeon_crtc->cursor_hot_x = hot_x;
                radeon_crtc->cursor_hot_y = hot_y;
        }