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 <benjamin.gaignard@linaro.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>

+1 -1
drivers/gpu/drm/rcar-du/rcar_du_crtc.c
··· 196 196 197 197 static unsigned int plane_zpos(struct rcar_du_plane *plane) 198 198 { 199 - return to_rcar_plane_state(plane->plane.state)->zpos; 199 + return plane->plane.state->normalized_zpos; 200 200 } 201 201 202 202 static const struct rcar_du_format_info *
-1
drivers/gpu/drm/rcar-du/rcar_du_drv.h
··· 92 92 struct { 93 93 struct drm_property *alpha; 94 94 struct drm_property *colorkey; 95 - struct drm_property *zpos; 96 95 } props; 97 96 98 97 unsigned int dpad0_source;
-5
drivers/gpu/drm/rcar-du/rcar_du_kms.c
··· 527 527 if (rcdu->props.colorkey == NULL) 528 528 return -ENOMEM; 529 529 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 - 535 530 return 0; 536 531 } 537 532
+2 -7
drivers/gpu/drm/rcar-du/rcar_du_plane.c
··· 652 652 state->source = RCAR_DU_PLANE_MEMORY; 653 653 state->alpha = 255; 654 654 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; 656 656 657 657 plane->state = &state->state; 658 658 plane->state->plane = plane; ··· 670 670 rstate->alpha = val; 671 671 else if (property == rcdu->props.colorkey) 672 672 rstate->colorkey = val; 673 - else if (property == rcdu->props.zpos) 674 - rstate->zpos = val; 675 673 else 676 674 return -EINVAL; 677 675 ··· 688 690 *val = rstate->alpha; 689 691 else if (property == rcdu->props.colorkey) 690 692 *val = rstate->colorkey; 691 - else if (property == rcdu->props.zpos) 692 - *val = rstate->zpos; 693 693 else 694 694 return -EINVAL; 695 695 ··· 759 763 drm_object_attach_property(&plane->plane.base, 760 764 rcdu->props.colorkey, 761 765 RCAR_DU_COLORKEY_NONE); 762 - drm_object_attach_property(&plane->plane.base, 763 - rcdu->props.zpos, 1); 766 + drm_plane_create_zpos_property(&plane->plane, 1, 1, 7); 764 767 } 765 768 766 769 return 0;
-2
drivers/gpu/drm/rcar-du/rcar_du_plane.h
··· 51 51 * @hwindex: 0-based hardware plane index, -1 means unused 52 52 * @alpha: value of the plane alpha property 53 53 * @colorkey: value of the plane colorkey property 54 - * @zpos: value of the plane zpos property 55 54 */ 56 55 struct rcar_du_plane_state { 57 56 struct drm_plane_state state; ··· 61 62 62 63 unsigned int alpha; 63 64 unsigned int colorkey; 64 - unsigned int zpos; 65 65 }; 66 66 67 67 static inline struct rcar_du_plane_state *
+5 -9
drivers/gpu/drm/rcar-du/rcar_du_vsp.c
··· 43 43 .src_y = 0, 44 44 .src_w = mode->hdisplay << 16, 45 45 .src_h = mode->vdisplay << 16, 46 + .zpos = 0, 46 47 }, 47 48 .format = rcar_du_format_info(DRM_FORMAT_ARGB8888), 48 49 .source = RCAR_DU_PLANE_VSPD1, 49 50 .alpha = 255, 50 51 .colorkey = 0, 51 - .zpos = 0, 52 52 }; 53 53 54 54 if (rcdu->info->gen >= 3) ··· 152 152 .pixelformat = 0, 153 153 .pitch = fb->pitches[0], 154 154 .alpha = state->alpha, 155 - .zpos = state->zpos, 155 + .zpos = state->state.zpos, 156 156 }; 157 157 unsigned int i; 158 158 ··· 267 267 return; 268 268 269 269 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; 271 271 272 272 plane->state = &state->state; 273 273 plane->state->plane = plane; ··· 282 282 283 283 if (property == rcdu->props.alpha) 284 284 rstate->alpha = val; 285 - else if (property == rcdu->props.zpos) 286 - rstate->zpos = val; 287 285 else 288 286 return -EINVAL; 289 287 ··· 298 300 299 301 if (property == rcdu->props.alpha) 300 302 *val = rstate->alpha; 301 - else if (property == rcdu->props.zpos) 302 - *val = rstate->zpos; 303 303 else 304 304 return -EINVAL; 305 305 ··· 377 381 378 382 drm_object_attach_property(&plane->plane.base, 379 383 rcdu->props.alpha, 255); 380 - drm_object_attach_property(&plane->plane.base, 381 - rcdu->props.zpos, 1); 384 + drm_plane_create_zpos_property(&plane->plane, 1, 1, 385 + vsp->num_planes - 1); 382 386 } 383 387 384 388 return 0;