diff options
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_plane.c | 22 |
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, }; |
