staging: mrst: Need to wait for overlay in set_plane_opts()
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 14 Dec 2011 22:12:09 +0000 (00:12 +0200)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Tue, 3 Jul 2012 09:29:07 +0000 (12:29 +0300)
Touching the overlay register memory while the overlay is fetching (or
primed to) the data. Do an ovl_wait() to make sure no updates are
pending.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Pauli Nieminen <pauli.nieminen@linux.intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
drivers/staging/mrst/drv/mdfld_overlay.c

index 2153ee9..74a2def 100644 (file)
@@ -1142,12 +1142,17 @@ static int
 mfld_overlay_set_plane_opts(struct drm_plane *plane, uint32_t flags, struct drm_plane_opts *opts)
 {
        struct mfld_overlay *ovl = to_mfld_overlay(plane);
+       int r;
 
        if (flags & DRM_MODE_PLANE_ZORDER) {
                if (opts->zorder < 0)
                        return -EINVAL;
        }
 
+       r = ovl_wait(ovl);
+       if (r)
+               return r;
+
        /* Constant alpha bits live in color key registers */
        if (flags & DRM_MODE_PLANE_CONST_ALPHA)
                flags |= DRM_MODE_PLANE_SRC_KEY | DRM_MODE_PLANE_DST_KEY;