Commit 9ab30a65 authored by Michel Dänzer's avatar Michel Dänzer Committed by Greg Kroah-Hartman

drm/radeon: Always store CRTC relative radeon_crtc->cursor_x/y values

commit 4349bd77 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: default avatarMichel Dänzer <michel.daenzer@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5417f59c
...@@ -146,6 +146,9 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y) ...@@ -146,6 +146,9 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
int xorigin = 0, yorigin = 0; int xorigin = 0, yorigin = 0;
int w = radeon_crtc->cursor_width; int w = radeon_crtc->cursor_width;
radeon_crtc->cursor_x = x;
radeon_crtc->cursor_y = y;
if (ASIC_IS_AVIVO(rdev)) { if (ASIC_IS_AVIVO(rdev)) {
/* avivo cursor are offset into the total surface */ /* avivo cursor are offset into the total surface */
x += crtc->x; x += crtc->x;
...@@ -240,9 +243,6 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y) ...@@ -240,9 +243,6 @@ static int radeon_cursor_move_locked(struct drm_crtc *crtc, int x, int y)
yorigin * 256); yorigin * 256);
} }
radeon_crtc->cursor_x = x;
radeon_crtc->cursor_y = y;
if (radeon_crtc->cursor_out_of_bounds) { if (radeon_crtc->cursor_out_of_bounds) {
radeon_crtc->cursor_out_of_bounds = false; radeon_crtc->cursor_out_of_bounds = false;
if (radeon_crtc->cursor_bo) if (radeon_crtc->cursor_bo)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment