diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2011-09-30 11:16:53 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-10-03 13:37:37 -0400 |
commit | 02e6859eae4a8e511fa1a2c9a689ea25cdc6166a (patch) | |
tree | 45ca3c2cb1328057d4e3b9f661fcb3659ad64932 /drivers | |
parent | b8aee294d89502469f2d80ae6afb93398d8227e0 (diff) |
drm/radeon: Set cursor x/y to 0 when x/yorigin > 0.
Apart from the obvious cleanup, this should make the line
cursor_end = x - xorigin + w;
correct now.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_cursor.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_cursor.c b/drivers/gpu/drm/radeon/radeon_cursor.c index f1d871db0399..fde25c0d65a0 100644 --- a/drivers/gpu/drm/radeon/radeon_cursor.c +++ b/drivers/gpu/drm/radeon/radeon_cursor.c | |||
@@ -215,10 +215,14 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc, | |||
215 | } | 215 | } |
216 | DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y); | 216 | DRM_DEBUG("x %d y %d c->x %d c->y %d\n", x, y, crtc->x, crtc->y); |
217 | 217 | ||
218 | if (x < 0) | 218 | if (x < 0) { |
219 | xorigin = min(-x, CURSOR_WIDTH - 1); | 219 | xorigin = min(-x, CURSOR_WIDTH - 1); |
220 | if (y < 0) | 220 | x = 0; |
221 | } | ||
222 | if (y < 0) { | ||
221 | yorigin = min(-y, CURSOR_HEIGHT - 1); | 223 | yorigin = min(-y, CURSOR_HEIGHT - 1); |
224 | y = 0; | ||
225 | } | ||
222 | 226 | ||
223 | if (ASIC_IS_AVIVO(rdev)) { | 227 | if (ASIC_IS_AVIVO(rdev)) { |
224 | int i = 0; | 228 | int i = 0; |
@@ -251,16 +255,12 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc, | |||
251 | 255 | ||
252 | radeon_lock_cursor(crtc, true); | 256 | radeon_lock_cursor(crtc, true); |
253 | if (ASIC_IS_DCE4(rdev)) { | 257 | if (ASIC_IS_DCE4(rdev)) { |
254 | WREG32(EVERGREEN_CUR_POSITION + radeon_crtc->crtc_offset, | 258 | WREG32(EVERGREEN_CUR_POSITION + radeon_crtc->crtc_offset, (x << 16) | y); |
255 | ((xorigin ? 0 : x) << 16) | | ||
256 | (yorigin ? 0 : y)); | ||
257 | WREG32(EVERGREEN_CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); | 259 | WREG32(EVERGREEN_CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); |
258 | WREG32(EVERGREEN_CUR_SIZE + radeon_crtc->crtc_offset, | 260 | WREG32(EVERGREEN_CUR_SIZE + radeon_crtc->crtc_offset, |
259 | ((w - 1) << 16) | (radeon_crtc->cursor_height - 1)); | 261 | ((w - 1) << 16) | (radeon_crtc->cursor_height - 1)); |
260 | } else if (ASIC_IS_AVIVO(rdev)) { | 262 | } else if (ASIC_IS_AVIVO(rdev)) { |
261 | WREG32(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset, | 263 | WREG32(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset, (x << 16) | y); |
262 | ((xorigin ? 0 : x) << 16) | | ||
263 | (yorigin ? 0 : y)); | ||
264 | WREG32(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); | 264 | WREG32(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); |
265 | WREG32(AVIVO_D1CUR_SIZE + radeon_crtc->crtc_offset, | 265 | WREG32(AVIVO_D1CUR_SIZE + radeon_crtc->crtc_offset, |
266 | ((w - 1) << 16) | (radeon_crtc->cursor_height - 1)); | 266 | ((w - 1) << 16) | (radeon_crtc->cursor_height - 1)); |
@@ -274,8 +274,8 @@ int radeon_crtc_cursor_move(struct drm_crtc *crtc, | |||
274 | | yorigin)); | 274 | | yorigin)); |
275 | WREG32(RADEON_CUR_HORZ_VERT_POSN + radeon_crtc->crtc_offset, | 275 | WREG32(RADEON_CUR_HORZ_VERT_POSN + radeon_crtc->crtc_offset, |
276 | (RADEON_CUR_LOCK | 276 | (RADEON_CUR_LOCK |
277 | | ((xorigin ? 0 : x) << 16) | 277 | | (x << 16) |
278 | | (yorigin ? 0 : y))); | 278 | | y)); |
279 | /* offset is from DISP(2)_BASE_ADDRESS */ | 279 | /* offset is from DISP(2)_BASE_ADDRESS */ |
280 | WREG32(RADEON_CUR_OFFSET + radeon_crtc->crtc_offset, (radeon_crtc->legacy_cursor_offset + | 280 | WREG32(RADEON_CUR_OFFSET + radeon_crtc->crtc_offset, (radeon_crtc->legacy_cursor_offset + |
281 | (yorigin * 256))); | 281 | (yorigin * 256))); |