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>

authored by Michel Dänzer and committed by Dave Airlie 02e6859e b8aee294

Changed files
+10 -10
drivers
gpu
drm
+10 -10
drivers/gpu/drm/radeon/radeon_cursor.c
··· 215 215 } 216 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 219 xorigin = min(-x, CURSOR_WIDTH - 1); 220 - if (y < 0) 220 + x = 0; 221 + } 222 + if (y < 0) { 221 223 yorigin = min(-y, CURSOR_HEIGHT - 1); 224 + y = 0; 225 + } 222 226 223 227 if (ASIC_IS_AVIVO(rdev)) { 224 228 int i = 0; ··· 255 251 256 252 radeon_lock_cursor(crtc, true); 257 253 if (ASIC_IS_DCE4(rdev)) { 258 - WREG32(EVERGREEN_CUR_POSITION + radeon_crtc->crtc_offset, 259 - ((xorigin ? 0 : x) << 16) | 260 - (yorigin ? 0 : y)); 254 + WREG32(EVERGREEN_CUR_POSITION + radeon_crtc->crtc_offset, (x << 16) | y); 261 255 WREG32(EVERGREEN_CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); 262 256 WREG32(EVERGREEN_CUR_SIZE + radeon_crtc->crtc_offset, 263 257 ((w - 1) << 16) | (radeon_crtc->cursor_height - 1)); 264 258 } else if (ASIC_IS_AVIVO(rdev)) { 265 - WREG32(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset, 266 - ((xorigin ? 0 : x) << 16) | 267 - (yorigin ? 0 : y)); 259 + WREG32(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset, (x << 16) | y); 268 260 WREG32(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, (xorigin << 16) | yorigin); 269 261 WREG32(AVIVO_D1CUR_SIZE + radeon_crtc->crtc_offset, 270 262 ((w - 1) << 16) | (radeon_crtc->cursor_height - 1)); ··· 274 274 | yorigin)); 275 275 WREG32(RADEON_CUR_HORZ_VERT_POSN + radeon_crtc->crtc_offset, 276 276 (RADEON_CUR_LOCK 277 - | ((xorigin ? 0 : x) << 16) 278 - | (yorigin ? 0 : y))); 277 + | (x << 16) 278 + | y)); 279 279 /* offset is from DISP(2)_BASE_ADDRESS */ 280 280 WREG32(RADEON_CUR_OFFSET + radeon_crtc->crtc_offset, (radeon_crtc->legacy_cursor_offset + 281 281 (yorigin * 256)));