diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c index 148de34af785..1c5d6cc1bdac 100644 --- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c +++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_plane.c @@ -251,20 +251,17 @@ static void shmob_drm_plane_atomic_destroy_state(struct drm_plane *plane, kfree(to_shmob_plane_state(state)); } -static void shmob_drm_plane_reset(struct drm_plane *plane) +static struct drm_plane_state *shmob_drm_plane_create_state(struct drm_plane *plane) { struct shmob_drm_plane_state *state; - if (plane->state) { - shmob_drm_plane_atomic_destroy_state(plane, plane->state); - plane->state = NULL; - } - state = kzalloc_obj(*state); - if (state == NULL) - return; + if (!state) + return ERR_PTR(-ENOMEM); - __drm_atomic_helper_plane_reset(plane, &state->base); + __drm_atomic_helper_plane_state_init(&state->base, plane); + + return &state->base; } static const struct drm_plane_helper_funcs shmob_drm_plane_helper_funcs = { @@ -283,7 +280,7 @@ static const struct drm_plane_helper_funcs shmob_drm_primary_plane_helper_funcs static const struct drm_plane_funcs shmob_drm_plane_funcs = { .update_plane = drm_atomic_helper_update_plane, .disable_plane = drm_atomic_helper_disable_plane, - .reset = shmob_drm_plane_reset, + .atomic_create_state = shmob_drm_plane_create_state, .atomic_duplicate_state = shmob_drm_plane_atomic_duplicate_state, .atomic_destroy_state = shmob_drm_plane_atomic_destroy_state, };