Commit 8cdb00a5 authored by Peter Rosin's avatar Peter Rosin Committed by Boris Brezillon

drm/atmel-hlcdc: rotate planes counterclockwise

Ouch, the driver rotates planes clockwise, which is simply not correct.
Signed-off-by: default avatarPeter Rosin <peda@axentia.se>
Signed-off-by: default avatarBoris Brezillon <bbrezillon@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20190110151020.30468-2-peda@axentia.se
parent f1a2a540
...@@ -692,13 +692,14 @@ static int atmel_hlcdc_plane_atomic_check(struct drm_plane *p, ...@@ -692,13 +692,14 @@ static int atmel_hlcdc_plane_atomic_check(struct drm_plane *p,
switch (state->base.rotation & DRM_MODE_ROTATE_MASK) { switch (state->base.rotation & DRM_MODE_ROTATE_MASK) {
case DRM_MODE_ROTATE_90: case DRM_MODE_ROTATE_90:
offset = ((y_offset + state->src_y + patched_src_w - 1) / offset = ((y_offset + state->src_y) / ydiv) *
ydiv) * fb->pitches[i];
offset += ((x_offset + state->src_x) / xdiv) *
state->bpp[i];
state->xstride[i] = ((patched_src_w - 1) / ydiv) *
fb->pitches[i]; fb->pitches[i];
state->pstride[i] = -fb->pitches[i] - state->bpp[i]; offset += ((x_offset + state->src_x + patched_src_h - 1) /
xdiv) * state->bpp[i];
state->xstride[i] = -(((patched_src_w - 1) / ydiv) *
fb->pitches[i]) -
(2 * state->bpp[i]);
state->pstride[i] = fb->pitches[i] - state->bpp[i];
break; break;
case DRM_MODE_ROTATE_180: case DRM_MODE_ROTATE_180:
offset = ((y_offset + state->src_y + patched_src_h - 1) / offset = ((y_offset + state->src_y + patched_src_h - 1) /
...@@ -710,14 +711,13 @@ static int atmel_hlcdc_plane_atomic_check(struct drm_plane *p, ...@@ -710,14 +711,13 @@ static int atmel_hlcdc_plane_atomic_check(struct drm_plane *p,
state->pstride[i] = -2 * state->bpp[i]; state->pstride[i] = -2 * state->bpp[i];
break; break;
case DRM_MODE_ROTATE_270: case DRM_MODE_ROTATE_270:
offset = ((y_offset + state->src_y) / ydiv) * offset = ((y_offset + state->src_y + patched_src_w - 1) /
ydiv) * fb->pitches[i];
offset += ((x_offset + state->src_x) / xdiv) *
state->bpp[i];
state->xstride[i] = ((patched_src_w - 1) / ydiv) *
fb->pitches[i]; fb->pitches[i];
offset += ((x_offset + state->src_x + patched_src_h - 1) / state->pstride[i] = -fb->pitches[i] - state->bpp[i];
xdiv) * state->bpp[i];
state->xstride[i] = -(((patched_src_w - 1) / ydiv) *
fb->pitches[i]) -
(2 * state->bpp[i]);
state->pstride[i] = fb->pitches[i] - state->bpp[i];
break; break;
case DRM_MODE_ROTATE_0: case DRM_MODE_ROTATE_0:
default: default:
......
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