]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y values
authorMichel Dänzer <michel.daenzer@amd.com>
Thu, 27 Oct 2016 06:37:44 +0000 (15:37 +0900)
committerSasha Levin <alexander.levin@verizon.com>
Fri, 13 Jan 2017 01:56:56 +0000 (20:56 -0500)
[ Upstream commit 4349bd775cc8fd75cb648e3a2036a690f497de5c ]

We were storing viewport relative coordinates for AVIVO/DCE display
engines. However, radeon_crtc_cursor_set2 and radeon_cursor_reset pass
radeon_crtc->cursor_x/y as the x/y parameters of
radeon_cursor_move_locked, which would break if the CRTC isn't located
at (0, 0).

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 c28e3e1e534463b57a2b619fc0195276e258b3a3..954087f5ebf5deca40e8e153edebbd11836b7702 100644 (file)
@@ -124,6 +124,9 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
        int xorigin = 0, yorigin = 0;
        int w = radeon_crtc->cursor_width;
 
+       radeon_crtc->cursor_x = x;
+       radeon_crtc->cursor_y = y;
+
        if (ASIC_IS_AVIVO(rdev)) {
                /* avivo cursor are offset into the total surface */
                x += crtc->x;
@@ -210,9 +213,6 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
                       yorigin * 256);
        }
 
-       radeon_crtc->cursor_x = x;
-       radeon_crtc->cursor_y = y;
-
        return 0;
 }