return num_encoders;
 }
 
+static int rcar_du_properties_init(struct rcar_du_device *rcdu)
+{
+       rcdu->props.alpha =
+               drm_property_create_range(rcdu->ddev, 0, "alpha", 0, 255);
+       if (rcdu->props.alpha == NULL)
+               return -ENOMEM;
+
+       /* The color key is expressed as an RGB888 triplet stored in a 32-bit
+        * integer in XRGB8888 format. Bit 24 is used as a flag to disable (0)
+        * or enable source color keying (1).
+        */
+       rcdu->props.colorkey =
+               drm_property_create_range(rcdu->ddev, 0, "colorkey",
+                                         0, 0x01ffffff);
+       if (rcdu->props.colorkey == NULL)
+               return -ENOMEM;
+
+       rcdu->props.zpos =
+               drm_property_create_range(rcdu->ddev, 0, "zpos", 1, 7);
+       if (rcdu->props.zpos == NULL)
+               return -ENOMEM;
+
+       return 0;
+}
+
 int rcar_du_modeset_init(struct rcar_du_device *rcdu)
 {
        static const unsigned int mmio_offsets[] = {
 
        rcdu->num_crtcs = rcdu->info->num_crtcs;
 
+       ret = rcar_du_properties_init(rcdu);
+       if (ret < 0)
+               return ret;
+
        /* Initialize the groups. */
        num_groups = DIV_ROUND_UP(rcdu->num_crtcs, 2);
 
 
                                             uint64_t val)
 {
        struct rcar_du_plane_state *rstate = to_rcar_du_plane_state(state);
-       struct rcar_du_plane *rplane = to_rcar_plane(plane);
-       struct rcar_du_group *rgrp = rplane->group;
+       struct rcar_du_device *rcdu = to_rcar_plane(plane)->group->dev;
 
-       if (property == rgrp->planes.alpha)
+       if (property == rcdu->props.alpha)
                rstate->alpha = val;
-       else if (property == rgrp->planes.colorkey)
+       else if (property == rcdu->props.colorkey)
                rstate->colorkey = val;
-       else if (property == rgrp->planes.zpos)
+       else if (property == rcdu->props.zpos)
                rstate->zpos = val;
        else
                return -EINVAL;
 {
        const struct rcar_du_plane_state *rstate =
                container_of(state, const struct rcar_du_plane_state, state);
-       struct rcar_du_plane *rplane = to_rcar_plane(plane);
-       struct rcar_du_group *rgrp = rplane->group;
+       struct rcar_du_device *rcdu = to_rcar_plane(plane)->group->dev;
 
-       if (property == rgrp->planes.alpha)
+       if (property == rcdu->props.alpha)
                *val = rstate->alpha;
-       else if (property == rgrp->planes.colorkey)
+       else if (property == rcdu->props.colorkey)
                *val = rstate->colorkey;
-       else if (property == rgrp->planes.zpos)
+       else if (property == rcdu->props.zpos)
                *val = rstate->zpos;
        else
                return -EINVAL;
        unsigned int i;
        int ret;
 
-       planes->alpha =
-               drm_property_create_range(rcdu->ddev, 0, "alpha", 0, 255);
-       if (planes->alpha == NULL)
-               return -ENOMEM;
-
-       /* The color key is expressed as an RGB888 triplet stored in a 32-bit
-        * integer in XRGB8888 format. Bit 24 is used as a flag to disable (0)
-        * or enable source color keying (1).
-        */
-       planes->colorkey =
-               drm_property_create_range(rcdu->ddev, 0, "colorkey",
-                                         0, 0x01ffffff);
-       if (planes->colorkey == NULL)
-               return -ENOMEM;
-
-       planes->zpos =
-               drm_property_create_range(rcdu->ddev, 0, "zpos", 1, 7);
-       if (planes->zpos == NULL)
-               return -ENOMEM;
-
-        /* Create one primary plane per in this group CRTC and seven overlay
+        /* Create one primary plane per CRTC in this group and seven overlay
          * planes.
          */
        num_crtcs = min(rcdu->num_crtcs - 2 * rgrp->index, 2U);
                        continue;
 
                drm_object_attach_property(&plane->plane.base,
-                                          planes->alpha, 255);
+                                          rcdu->props.alpha, 255);
                drm_object_attach_property(&plane->plane.base,
-                                          planes->colorkey,
+                                          rcdu->props.colorkey,
                                           RCAR_DU_COLORKEY_NONE);
                drm_object_attach_property(&plane->plane.base,
-                                          planes->zpos, 1);
+                                          rcdu->props.zpos, 1);
        }
 
        return 0;