diff --git a/drivers/gpu/drm/mediatek/mtk_plane.c b/drivers/gpu/drm/mediatek/mtk_plane.c index 2598c8edb443..3fad7f2ff004 100644 --- a/drivers/gpu/drm/mediatek/mtk_plane.c +++ b/drivers/gpu/drm/mediatek/mtk_plane.c @@ -25,26 +25,21 @@ static const u64 modifiers[] = { DRM_FORMAT_MOD_INVALID, }; -static void mtk_plane_reset(struct drm_plane *plane) +static struct drm_plane_state *mtk_plane_create_state(struct drm_plane *plane) { struct mtk_plane_state *state; - if (plane->state) { - __drm_atomic_helper_plane_destroy_state(plane->state); + state = kzalloc_obj(*state); + if (!state) + return ERR_PTR(-ENOMEM); - state = to_mtk_plane_state(plane->state); - memset(state, 0, sizeof(*state)); - } else { - state = kzalloc_obj(*state); - if (!state) - return; - } - - __drm_atomic_helper_plane_reset(plane, &state->base); + __drm_atomic_helper_plane_state_init(&state->base, plane); state->base.plane = plane; state->pending.format = DRM_FORMAT_RGB565; state->pending.modifier = DRM_FORMAT_MOD_LINEAR; + + return &state->base; } static struct drm_plane_state *mtk_plane_duplicate_state(struct drm_plane *plane) @@ -221,7 +216,7 @@ static const struct drm_plane_funcs mtk_plane_funcs = { .update_plane = drm_atomic_helper_update_plane, .disable_plane = drm_atomic_helper_disable_plane, .destroy = drm_plane_cleanup, - .reset = mtk_plane_reset, + .atomic_create_state = mtk_plane_create_state, .atomic_duplicate_state = mtk_plane_duplicate_state, .atomic_destroy_state = mtk_plane_destroy_state, .format_mod_supported = mtk_plane_format_mod_supported,