| From 134dbb814956d36d60b331e4a3783da693b62cb4 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com> |
| Date: Thu, 27 Oct 2016 15:37:44 +0900 |
| Subject: [PATCH] drm/radeon: Always store CRTC relative |
| radeon_crtc->cursor_x/y values |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 4349bd775cc8fd75cb648e3a2036a690f497de5c upstream. |
| |
| 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: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c |
| index 87a72476d313..fb16070b266e 100644 |
| --- a/drivers/gpu/drm/radeon/radeon_cursor.c |
| +++ b/drivers/gpu/drm/radeon/radeon_cursor.c |
| @@ -146,6 +146,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; |
| @@ -240,9 +243,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; |
| - |
| if (radeon_crtc->cursor_out_of_bounds) { |
| radeon_crtc->cursor_out_of_bounds = false; |
| if (radeon_crtc->cursor_bo) |
| -- |
| 2.10.1 |
| |