Skip to content

Commit 2fc4d83

Browse files
drm: rcar: use generic code for managing zpos plane property
version 6: rebased patch on top rcar-du changes for zpos version 4: fix null pointer issue while setting zpos in plane reset function This patch replaces zpos property handling custom code in rcar DRM driver with calls to generic DRM code. Signed-off-by: Benjamin Gaignard <[email protected]> Reviewed-by: Laurent Pinchart <[email protected]> Tested-by: Laurent Pinchart <[email protected]> Cc: Daniel Vetter <[email protected]> Cc: Ville Syrjala <[email protected]> Cc: Marek Szyprowski <[email protected]>
1 parent e47726a commit 2fc4d83

File tree

6 files changed

+8
-25
lines changed

6 files changed

+8
-25
lines changed

drivers/gpu/drm/rcar-du/rcar_du_crtc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ void rcar_du_crtc_route_output(struct drm_crtc *crtc,
196196

197197
static unsigned int plane_zpos(struct rcar_du_plane *plane)
198198
{
199-
return to_rcar_plane_state(plane->plane.state)->zpos;
199+
return plane->plane.state->normalized_zpos;
200200
}
201201

202202
static const struct rcar_du_format_info *

drivers/gpu/drm/rcar-du/rcar_du_drv.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@ struct rcar_du_device {
9292
struct {
9393
struct drm_property *alpha;
9494
struct drm_property *colorkey;
95-
struct drm_property *zpos;
9695
} props;
9796

9897
unsigned int dpad0_source;

drivers/gpu/drm/rcar-du/rcar_du_kms.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -527,11 +527,6 @@ static int rcar_du_properties_init(struct rcar_du_device *rcdu)
527527
if (rcdu->props.colorkey == NULL)
528528
return -ENOMEM;
529529

530-
rcdu->props.zpos =
531-
drm_property_create_range(rcdu->ddev, 0, "zpos", 1, 7);
532-
if (rcdu->props.zpos == NULL)
533-
return -ENOMEM;
534-
535530
return 0;
536531
}
537532

drivers/gpu/drm/rcar-du/rcar_du_plane.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -652,7 +652,7 @@ static void rcar_du_plane_reset(struct drm_plane *plane)
652652
state->source = RCAR_DU_PLANE_MEMORY;
653653
state->alpha = 255;
654654
state->colorkey = RCAR_DU_COLORKEY_NONE;
655-
state->zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
655+
state->state.zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
656656

657657
plane->state = &state->state;
658658
plane->state->plane = plane;
@@ -670,8 +670,6 @@ static int rcar_du_plane_atomic_set_property(struct drm_plane *plane,
670670
rstate->alpha = val;
671671
else if (property == rcdu->props.colorkey)
672672
rstate->colorkey = val;
673-
else if (property == rcdu->props.zpos)
674-
rstate->zpos = val;
675673
else
676674
return -EINVAL;
677675

@@ -690,8 +688,6 @@ static int rcar_du_plane_atomic_get_property(struct drm_plane *plane,
690688
*val = rstate->alpha;
691689
else if (property == rcdu->props.colorkey)
692690
*val = rstate->colorkey;
693-
else if (property == rcdu->props.zpos)
694-
*val = rstate->zpos;
695691
else
696692
return -EINVAL;
697693

@@ -763,8 +759,7 @@ int rcar_du_planes_init(struct rcar_du_group *rgrp)
763759
drm_object_attach_property(&plane->plane.base,
764760
rcdu->props.colorkey,
765761
RCAR_DU_COLORKEY_NONE);
766-
drm_object_attach_property(&plane->plane.base,
767-
rcdu->props.zpos, 1);
762+
drm_plane_create_zpos_property(&plane->plane, 1, 1, 7);
768763
}
769764

770765
return 0;

drivers/gpu/drm/rcar-du/rcar_du_plane.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ static inline struct rcar_du_plane *to_rcar_plane(struct drm_plane *plane)
5151
* @hwindex: 0-based hardware plane index, -1 means unused
5252
* @alpha: value of the plane alpha property
5353
* @colorkey: value of the plane colorkey property
54-
* @zpos: value of the plane zpos property
5554
*/
5655
struct rcar_du_plane_state {
5756
struct drm_plane_state state;
@@ -62,7 +61,6 @@ struct rcar_du_plane_state {
6261

6362
unsigned int alpha;
6463
unsigned int colorkey;
65-
unsigned int zpos;
6664
};
6765

6866
static inline struct rcar_du_plane_state *

drivers/gpu/drm/rcar-du/rcar_du_vsp.c

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ void rcar_du_vsp_enable(struct rcar_du_crtc *crtc)
4343
.src_y = 0,
4444
.src_w = mode->hdisplay << 16,
4545
.src_h = mode->vdisplay << 16,
46+
.zpos = 0,
4647
},
4748
.format = rcar_du_format_info(DRM_FORMAT_ARGB8888),
4849
.source = RCAR_DU_PLANE_VSPD1,
4950
.alpha = 255,
5051
.colorkey = 0,
51-
.zpos = 0,
5252
};
5353

5454
if (rcdu->info->gen >= 3)
@@ -152,7 +152,7 @@ static void rcar_du_vsp_plane_setup(struct rcar_du_vsp_plane *plane)
152152
.pixelformat = 0,
153153
.pitch = fb->pitches[0],
154154
.alpha = state->alpha,
155-
.zpos = state->zpos,
155+
.zpos = state->state.zpos,
156156
};
157157
unsigned int i;
158158

@@ -267,7 +267,7 @@ static void rcar_du_vsp_plane_reset(struct drm_plane *plane)
267267
return;
268268

269269
state->alpha = 255;
270-
state->zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
270+
state->state.zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
271271

272272
plane->state = &state->state;
273273
plane->state->plane = plane;
@@ -282,8 +282,6 @@ static int rcar_du_vsp_plane_atomic_set_property(struct drm_plane *plane,
282282

283283
if (property == rcdu->props.alpha)
284284
rstate->alpha = val;
285-
else if (property == rcdu->props.zpos)
286-
rstate->zpos = val;
287285
else
288286
return -EINVAL;
289287

@@ -300,8 +298,6 @@ static int rcar_du_vsp_plane_atomic_get_property(struct drm_plane *plane,
300298

301299
if (property == rcdu->props.alpha)
302300
*val = rstate->alpha;
303-
else if (property == rcdu->props.zpos)
304-
*val = rstate->zpos;
305301
else
306302
return -EINVAL;
307303

@@ -381,8 +377,8 @@ int rcar_du_vsp_init(struct rcar_du_vsp *vsp)
381377

382378
drm_object_attach_property(&plane->plane.base,
383379
rcdu->props.alpha, 255);
384-
drm_object_attach_property(&plane->plane.base,
385-
rcdu->props.zpos, 1);
380+
drm_plane_create_zpos_property(&plane->plane, 1, 1,
381+
vsp->num_planes - 1);
386382
}
387383

388384
return 0;

0 commit comments

Comments
 (0)