summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_plane.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_plane.c b/drivers/gpu/drm/exynos/exynos_drm_plane.c
index 5c04ef87e400..020e8c9cf7de 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_plane.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_plane.c
@@ -122,23 +122,19 @@ static void exynos_plane_mode_set(struct exynos_drm_plane_state *exynos_state)
exynos_state->crtc.w, exynos_state->crtc.h);
}
-static void exynos_drm_plane_reset(struct drm_plane *plane)
+static struct drm_plane_state *exynos_drm_plane_create_state(struct drm_plane *plane)
{
struct exynos_drm_plane *exynos_plane = to_exynos_plane(plane);
struct exynos_drm_plane_state *exynos_state;
- if (plane->state) {
- exynos_state = to_exynos_plane_state(plane->state);
- __drm_atomic_helper_plane_destroy_state(plane->state);
- kfree(exynos_state);
- plane->state = NULL;
- }
-
exynos_state = kzalloc_obj(*exynos_state);
- if (exynos_state) {
- __drm_atomic_helper_plane_reset(plane, &exynos_state->base);
- plane->state->zpos = exynos_plane->config->zpos;
- }
+ if (!exynos_state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_plane_state_init(&exynos_state->base, plane);
+ exynos_state->base.zpos = exynos_plane->config->zpos;
+
+ return &exynos_state->base;
}
static struct drm_plane_state *
@@ -169,7 +165,7 @@ static struct drm_plane_funcs exynos_plane_funcs = {
.update_plane = drm_atomic_helper_update_plane,
.disable_plane = drm_atomic_helper_disable_plane,
.destroy = drm_plane_cleanup,
- .reset = exynos_drm_plane_reset,
+ .atomic_create_state = exynos_drm_plane_create_state,
.atomic_duplicate_state = exynos_drm_plane_duplicate_state,
.atomic_destroy_state = exynos_drm_plane_destroy_state,
};