drm/i915: Switch plane properties to full atomic helper.
authorMatt Roper <matthew.d.roper@intel.com>
Thu, 22 Jan 2015 00:35:48 +0000 (16:35 -0800)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 27 Jan 2015 08:57:25 +0000 (09:57 +0100)
This will exercise our atomic pipeline for legacy property updates.

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/intel_atomic_plane.c
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_sprite.c

index 4a3914f1cdee088337181dc06ed0508892cfb298..9e6f727dfd19d2fa5a536626db3abd81dbeaa3a9 100644 (file)
@@ -117,6 +117,15 @@ static int intel_plane_atomic_check(struct drm_plane *plane,
        crtc = crtc ? crtc : plane->crtc;
        intel_crtc = to_intel_crtc(crtc);
 
+       /*
+        * Both crtc and plane->crtc could be NULL if we're updating a
+        * property while the plane is disabled.  We don't actually have
+        * anything driver-specific we need to test in that case, so
+        * just return success.
+        */
+       if (!crtc)
+               return 0;
+
        /*
         * The original src/dest coordinates are stored in state->base, but
         * we want to keep another copy internal to our driver that we can
index 2dc6d64d9234d6b7841832eb62162a919aaa5322..423ef959264d402e5981e61694dc42dccd912cd5 100644 (file)
@@ -37,6 +37,7 @@
 #include <drm/i915_drm.h>
 #include "i915_drv.h"
 #include "i915_trace.h"
+#include <drm/drm_atomic_helper.h>
 #include <drm/drm_dp_helper.h>
 #include <drm/drm_crtc_helper.h>
 #include <drm/drm_plane_helper.h>
@@ -12055,7 +12056,7 @@ const struct drm_plane_funcs intel_plane_funcs = {
        .update_plane = drm_plane_helper_update,
        .disable_plane = drm_plane_helper_disable,
        .destroy = intel_plane_destroy,
-       .set_property = intel_plane_set_property,
+       .set_property = drm_atomic_helper_plane_set_property,
        .atomic_get_property = intel_plane_atomic_get_property,
        .atomic_set_property = intel_plane_atomic_set_property,
        .atomic_duplicate_state = intel_plane_duplicate_state,
index 50683d4b9bad29c5006ff8bfee64b3f509c99307..0a52c44ad03d6b21078fe7482ddc3b84813ac9c4 100644 (file)
@@ -1362,32 +1362,6 @@ out_unlock:
        return ret;
 }
 
-int intel_plane_set_property(struct drm_plane *plane,
-                            struct drm_property *prop,
-                            uint64_t val)
-{
-       struct drm_device *dev = plane->dev;
-       uint64_t old_val;
-       int ret = -ENOENT;
-
-       if (prop == dev->mode_config.rotation_property) {
-               /* exactly one rotation angle please */
-               if (hweight32(val & 0xf) != 1)
-                       return -EINVAL;
-
-               if (plane->state->rotation == val)
-                       return 0;
-
-               old_val = plane->state->rotation;
-               plane->state->rotation = val;
-               ret = intel_plane_restore(plane);
-               if (ret)
-                       plane->state->rotation = old_val;
-       }
-
-       return ret;
-}
-
 int intel_plane_restore(struct drm_plane *plane)
 {
        if (!plane->crtc || !plane->fb)