diff --git a/drivers/gpu/drm/rcar-du/rcar_du_plane.c b/drivers/gpu/drm/rcar-du/rcar_du_plane.c index c4e4fd293eee04f5b77a4fa890c1a3adbe996c47..f247b1fcf791d626ca4581e99fb71f08b386dce7 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_plane.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_plane.c @@ -132,6 +132,8 @@ static void rcar_du_plane_release(struct rcar_du_plane *plane) void rcar_du_plane_update_base(struct rcar_du_plane *plane) { struct rcar_du_group *rgrp = plane->group; + unsigned int src_x = plane->plane.state->src_x >> 16; + unsigned int src_y = plane->plane.state->src_y >> 16; unsigned int index = plane->hwindex; bool interlaced; u32 mwr; @@ -163,8 +165,8 @@ void rcar_du_plane_update_base(struct rcar_du_plane *plane) * require a halved Y position value, in both progressive and interlaced * modes. */ - rcar_du_plane_write(rgrp, index, PnSPXR, plane->src_x); - rcar_du_plane_write(rgrp, index, PnSPYR, plane->src_y * + rcar_du_plane_write(rgrp, index, PnSPXR, src_x); + rcar_du_plane_write(rgrp, index, PnSPYR, src_y * (!interlaced && plane->format->bpp == 32 ? 2 : 1)); rcar_du_plane_write(rgrp, index, PnDSA0R, plane->dma[0]); @@ -173,8 +175,8 @@ void rcar_du_plane_update_base(struct rcar_du_plane *plane) rcar_du_plane_write(rgrp, index, PnMWR, plane->pitch); - rcar_du_plane_write(rgrp, index, PnSPXR, plane->src_x); - rcar_du_plane_write(rgrp, index, PnSPYR, plane->src_y * + rcar_du_plane_write(rgrp, index, PnSPXR, src_x); + rcar_du_plane_write(rgrp, index, PnSPYR, src_y * (plane->format->bpp == 16 ? 2 : 1) / 2); rcar_du_plane_write(rgrp, index, PnDSA0R, plane->dma[1]); } @@ -294,10 +296,10 @@ static void __rcar_du_plane_setup(struct rcar_du_plane *plane, rcar_du_plane_write(rgrp, index, PnDDCR4, ddcr4); /* Destination position and size */ - rcar_du_plane_write(rgrp, index, PnDSXR, plane->width); - rcar_du_plane_write(rgrp, index, PnDSYR, plane->height); - rcar_du_plane_write(rgrp, index, PnDPXR, plane->dst_x); - rcar_du_plane_write(rgrp, index, PnDPYR, plane->dst_y); + rcar_du_plane_write(rgrp, index, PnDSXR, plane->plane.state->crtc_w); + rcar_du_plane_write(rgrp, index, PnDSYR, plane->plane.state->crtc_h); + rcar_du_plane_write(rgrp, index, PnDPXR, plane->plane.state->crtc_x); + rcar_du_plane_write(rgrp, index, PnDPYR, plane->plane.state->crtc_y); /* Wrap-around and blinking, disabled */ rcar_du_plane_write(rgrp, index, PnWASPR, 0); @@ -399,13 +401,6 @@ static void rcar_du_plane_atomic_update(struct drm_plane *plane, rplane->crtc = state->crtc; rplane->format = format; - rplane->src_x = state->src_x >> 16; - rplane->src_y = state->src_y >> 16; - rplane->dst_x = state->crtc_x; - rplane->dst_y = state->crtc_y; - rplane->width = state->crtc_w; - rplane->height = state->crtc_h; - rcar_du_plane_compute_base(rplane, state->fb); rcar_du_plane_setup(rplane); diff --git a/drivers/gpu/drm/rcar-du/rcar_du_plane.h b/drivers/gpu/drm/rcar-du/rcar_du_plane.h index 55d2f55faecef378918d9608909789794f19960e..3420ff07f2c699755c1b7a24b81ba6da60023021 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_plane.h +++ b/drivers/gpu/drm/rcar-du/rcar_du_plane.h @@ -47,14 +47,6 @@ struct rcar_du_plane { unsigned long dma[2]; unsigned int pitch; - - unsigned int width; - unsigned int height; - - unsigned int src_x; - unsigned int src_y; - unsigned int dst_x; - unsigned int dst_y; }; struct rcar_du_planes {