.pixelformat = 0,
                .pitch = fb->pitches[0],
                .alpha = state->alpha,
-               .zpos = 0,
+               .zpos = state->zpos,
        };
        unsigned int i;
 
                }
        }
 
-       WARN_ON(!cfg.pixelformat);
-
        vsp1_du_atomic_update(plane->vsp->vsp, plane->index, &cfg);
 }
 
                return;
 
        state->alpha = 255;
+       state->zpos = plane->type == DRM_PLANE_TYPE_PRIMARY ? 0 : 1;
 
        plane->state = &state->state;
        plane->state->plane = plane;
 
        if (property == rcdu->props.alpha)
                rstate->alpha = val;
+       else if (property == rcdu->props.zpos)
+               rstate->zpos = val;
        else
                return -EINVAL;
 
 
        if (property == rcdu->props.alpha)
                *val = rstate->alpha;
+       else if (property == rcdu->props.zpos)
+               *val = rstate->zpos;
        else
                return -EINVAL;
 
 
                drm_object_attach_property(&plane->plane.base,
                                           rcdu->props.alpha, 255);
+               drm_object_attach_property(&plane->plane.base,
+                                          rcdu->props.zpos, 1);
        }
 
        return 0;
 
  * @state: base DRM plane state
  * @format: information about the pixel format used by the plane
  * @alpha: value of the plane alpha property
+ * @zpos: value of the plane zpos property
  */
 struct rcar_du_vsp_plane_state {
        struct drm_plane_state state;
        const struct rcar_du_format_info *format;
 
        unsigned int alpha;
+       unsigned int zpos;
 };
 
 static inline struct rcar_du_vsp_plane_state *