diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c index 7b92082d35a6..1a471cdf767b 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c @@ -1728,32 +1728,28 @@ static void dpu_plane_atomic_print_state(struct drm_printer *p, } } -static void dpu_plane_reset(struct drm_plane *plane) +static struct drm_plane_state *dpu_plane_create_state(struct drm_plane *plane) { struct dpu_plane *pdpu; struct dpu_plane_state *pstate; if (!plane) { DPU_ERROR("invalid plane\n"); - return; + return ERR_PTR(-EINVAL); } pdpu = to_dpu_plane(plane); DPU_DEBUG_PLANE(pdpu, "\n"); - /* remove previous state, if present */ - if (plane->state) { - dpu_plane_destroy_state(plane, plane->state); - plane->state = NULL; - } - pstate = kzalloc_obj(*pstate); if (!pstate) { DPU_ERROR_PLANE(pdpu, "failed to allocate state\n"); - return; + return ERR_PTR(-ENOMEM); } - __drm_atomic_helper_plane_reset(plane, &pstate->base); + __drm_atomic_helper_plane_state_init(&pstate->base, plane); + + return &pstate->base; } #ifdef CONFIG_DEBUG_FS @@ -1796,7 +1792,7 @@ static bool dpu_plane_format_mod_supported(struct drm_plane *plane, static const struct drm_plane_funcs dpu_plane_funcs = { .update_plane = drm_atomic_helper_update_plane, .disable_plane = drm_atomic_helper_disable_plane, - .reset = dpu_plane_reset, + .atomic_create_state = dpu_plane_create_state, .atomic_duplicate_state = dpu_plane_duplicate_state, .atomic_destroy_state = dpu_plane_destroy_state, .atomic_print_state = dpu_plane_atomic_print_state,