@@ -212,7 +212,7 @@ static void rcar_du_crtc_update_planes(struct drm_crtc *crtc)
struct rcar_du_plane *plane = &rcrtc->group->planes.planes[i];
unsigned int j;
- if (plane->crtc != &rcrtc->crtc || !plane->enabled)
+ if (plane->plane.state->crtc != &rcrtc->crtc)
continue;
/* Insert the plane in the sorted planes array. */
@@ -379,7 +379,7 @@ static void rcar_du_crtc_start(struct rcar_du_crtc *rcrtc)
for (i = 0; i < ARRAY_SIZE(rcrtc->group->planes.planes); ++i) {
struct rcar_du_plane *plane = &rcrtc->group->planes.planes[i];
- if (plane->crtc != crtc || !plane->enabled)
+ if (plane->plane.state->crtc != crtc)
continue;
rcar_du_plane_setup(plane);
@@ -608,8 +608,6 @@ int rcar_du_crtc_create(struct rcar_du_group *rgrp, unsigned int index)
rcrtc->enabled = false;
rcrtc->plane = &rgrp->planes.planes[index % 2];
- rcrtc->plane->crtc = crtc;
-
ret = drm_crtc_init_with_planes(rcdu->ddev, crtc, &rcrtc->plane->plane,
NULL, &crtc_funcs);
if (ret < 0)
@@ -140,7 +140,8 @@ static void rcar_du_plane_setup_fb(struct rcar_du_plane *plane)
bool interlaced;
u32 mwr;
- interlaced = plane->crtc->mode.flags & DRM_MODE_FLAG_INTERLACE;
+ interlaced = plane->plane.state->crtc->state->adjusted_mode.flags
+ & DRM_MODE_FLAG_INTERLACE;
/* Memory pitch (expressed in pixels). Must be doubled for interlaced
* operation with 32bpp formats.
@@ -354,16 +355,11 @@ static int rcar_du_plane_atomic_check(struct drm_plane *plane,
static void rcar_du_plane_disable(struct rcar_du_plane *rplane)
{
- if (!rplane->enabled)
+ if (!rplane->plane.state->crtc)
return;
- mutex_lock(&rplane->group->planes.lock);
- rplane->enabled = false;
- mutex_unlock(&rplane->group->planes.lock);
-
rcar_du_plane_release(rplane);
- rplane->crtc = NULL;
rplane->format = NULL;
}
@@ -391,14 +387,9 @@ static void rcar_du_plane_atomic_update(struct drm_plane *plane,
rcar_du_plane_reserve(rplane, format);
}
- rplane->crtc = state->crtc;
rplane->format = format;
rcar_du_plane_setup(rplane);
-
- mutex_lock(&rplane->group->planes.lock);
- rplane->enabled = true;
- mutex_unlock(&rplane->group->planes.lock);
}
static const struct drm_plane_helper_funcs rcar_du_plane_helper_funcs = {
@@ -34,9 +34,6 @@ struct rcar_du_plane {
struct drm_plane plane;
struct rcar_du_group *group;
- struct drm_crtc *crtc;
-
- bool enabled;
int hwindex; /* 0-based, -1 means unused */
The crtc and enabled fields duplicates information stored in the plane state. Use the plane state instead and remove the fields. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> --- drivers/gpu/drm/rcar-du/rcar_du_crtc.c | 6 ++---- drivers/gpu/drm/rcar-du/rcar_du_plane.c | 15 +++------------ drivers/gpu/drm/rcar-du/rcar_du_plane.h | 3 --- 3 files changed, 5 insertions(+), 19 deletions(-)