summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/omapdrm/omap_plane.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2016-01-01 07:41:52 +1000
committerDave Airlie <airlied@redhat.com>2016-01-01 07:41:52 +1000
commitc11b8989635166c5a1e6aac1853a847bd664f8db (patch)
tree4c0ad2b74b69c42557c681241e4f8246b9ad612e /drivers/gpu/drm/omapdrm/omap_plane.c
parent54255e818ef7a5e968c0230bc75649a68932d8ca (diff)
parent9c8e566e4930a00b51bee7766a5c188f20fdb16b (diff)
Merge tag 'omapdrm-4.5-resolved' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux into drm-next
omapdrm changes for v4.5 * enable DRIVER_ATOMIC * improved TILER performance * cleanups preparing for DMAbuf import * fbdev emulation is now optional * minor fixes * tag 'omapdrm-4.5-resolved' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: drm/omap: remove obsolete manager assignment drm/omap: set DRIVER_ATOMIC for omapdrm drm/omap: remove unused plugin defines drm/omap: Use bitmaps for TILER placement drm: omapdrm: gem: Remove check for impossible condition drm: omapdrm: gem: Simplify error handling when creating GEM object drm: omapdrm: gem: Don't free mmap offset twice drm: omapdrm: gem: Fix GEM object destroy in error path drm: omapdrm: gem: Free the correct memory object drm: omapdrm: gem: Mask out private flags passed from userspace drm: omapdrm: gem: Move global usergart variable to omap_drm_private drm: omapdrm: gem: Group functions by purpose drm: omapdrm: gem: Remove forward declarations drm: omapdrm: gem: Remove unused function prototypes drm: omapdrm: Make fbdev emulation optional drm: omapdrm: Fix plane state free in plane reset handler drm: omapdrm: move omap_plane_reset() drm/omap: Use platform_register/unregister_drivers() drm: omapdrm: tiler: Remove unneded module alias for tiler
Diffstat (limited to 'drivers/gpu/drm/omapdrm/omap_plane.c')
-rw-r--r--drivers/gpu/drm/omapdrm/omap_plane.c53
1 files changed, 26 insertions, 27 deletions
diff --git a/drivers/gpu/drm/omapdrm/omap_plane.c b/drivers/gpu/drm/omapdrm/omap_plane.c
index d5ecabd6c14c..d75b197eff46 100644
--- a/drivers/gpu/drm/omapdrm/omap_plane.c
+++ b/drivers/gpu/drm/omapdrm/omap_plane.c
@@ -188,33 +188,6 @@ static const struct drm_plane_helper_funcs omap_plane_helper_funcs = {
.atomic_disable = omap_plane_atomic_disable,
};
-static void omap_plane_reset(struct drm_plane *plane)
-{
- struct omap_plane *omap_plane = to_omap_plane(plane);
- struct omap_plane_state *omap_state;
-
- if (plane->state && plane->state->fb)
- drm_framebuffer_unreference(plane->state->fb);
-
- kfree(plane->state);
- plane->state = NULL;
-
- omap_state = kzalloc(sizeof(*omap_state), GFP_KERNEL);
- if (omap_state == NULL)
- return;
-
- /*
- * Set defaults depending on whether we are a primary or overlay
- * plane.
- */
- omap_state->zorder = plane->type == DRM_PLANE_TYPE_PRIMARY
- ? 0 : omap_plane->id;
- omap_state->base.rotation = BIT(DRM_ROTATE_0);
-
- plane->state = &omap_state->base;
- plane->state->plane = plane;
-}
-
static void omap_plane_destroy(struct drm_plane *plane)
{
struct omap_plane *omap_plane = to_omap_plane(plane);
@@ -270,6 +243,32 @@ static void omap_plane_atomic_destroy_state(struct drm_plane *plane,
kfree(to_omap_plane_state(state));
}
+static void omap_plane_reset(struct drm_plane *plane)
+{
+ struct omap_plane *omap_plane = to_omap_plane(plane);
+ struct omap_plane_state *omap_state;
+
+ if (plane->state) {
+ omap_plane_atomic_destroy_state(plane, plane->state);
+ plane->state = NULL;
+ }
+
+ omap_state = kzalloc(sizeof(*omap_state), GFP_KERNEL);
+ if (omap_state == NULL)
+ return;
+
+ /*
+ * Set defaults depending on whether we are a primary or overlay
+ * plane.
+ */
+ omap_state->zorder = plane->type == DRM_PLANE_TYPE_PRIMARY
+ ? 0 : omap_plane->id;
+ omap_state->base.rotation = BIT(DRM_ROTATE_0);
+
+ plane->state = &omap_state->base;
+ plane->state->plane = plane;
+}
+
static int omap_plane_atomic_set_property(struct drm_plane *plane,
struct drm_plane_state *state,
struct drm_property *property,