diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c index 1b407b61f683..0b470809661c 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c @@ -206,32 +206,24 @@ vmw_du_crtc_duplicate_state(struct drm_crtc *crtc) /** - * vmw_du_crtc_reset - creates a blank vmw crtc state + * vmw_du_crtc_create_state - creates a blank vmw crtc state * @crtc: DRM crtc * - * Resets the atomic state for @crtc by freeing the state pointer (which - * might be NULL, e.g. at driver load time) and allocating a new empty state - * object. + * Allocates a new empty state object for @crtc. */ -void vmw_du_crtc_reset(struct drm_crtc *crtc) +struct drm_crtc_state *vmw_du_crtc_create_state(struct drm_crtc *crtc) { struct vmw_crtc_state *vcs; - - if (crtc->state) { - __drm_atomic_helper_crtc_destroy_state(crtc->state); - - kfree(vmw_crtc_state_to_vcs(crtc->state)); - } - vcs = kzalloc_obj(*vcs); - if (!vcs) { DRM_ERROR("Cannot allocate vmw_crtc_state\n"); - return; + return ERR_PTR(-ENOMEM); } - __drm_atomic_helper_crtc_reset(crtc, &vcs->base); + __drm_atomic_helper_crtc_state_init(&vcs->base, crtc); + + return &vcs->base; } diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h index 2224d7d91d1b..e641f33341e6 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.h @@ -421,7 +421,7 @@ int vmw_du_crtc_atomic_check(struct drm_crtc *crtc, struct drm_atomic_commit *state); void vmw_du_crtc_atomic_begin(struct drm_crtc *crtc, struct drm_atomic_commit *state); -void vmw_du_crtc_reset(struct drm_crtc *crtc); +struct drm_crtc_state *vmw_du_crtc_create_state(struct drm_crtc *crtc); struct drm_crtc_state *vmw_du_crtc_duplicate_state(struct drm_crtc *crtc); void vmw_du_crtc_destroy_state(struct drm_crtc *crtc, struct drm_crtc_state *state); diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c index af3e32174563..a4b28341f622 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c @@ -249,7 +249,7 @@ static void vmw_ldu_crtc_mode_set_nofb(struct drm_crtc *crtc) static const struct drm_crtc_funcs vmw_legacy_crtc_funcs = { .gamma_set = vmw_du_crtc_gamma_set, .destroy = vmw_ldu_crtc_destroy, - .reset = vmw_du_crtc_reset, + .atomic_create_state = vmw_du_crtc_create_state, .atomic_duplicate_state = vmw_du_crtc_duplicate_state, .atomic_destroy_state = vmw_du_crtc_destroy_state, .set_config = drm_atomic_helper_set_config, diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c index c83061cf7455..a05f935f1841 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c @@ -305,7 +305,7 @@ static void vmw_sou_crtc_atomic_disable(struct drm_crtc *crtc, static const struct drm_crtc_funcs vmw_screen_object_crtc_funcs = { .gamma_set = vmw_du_crtc_gamma_set, .destroy = vmw_sou_crtc_destroy, - .reset = vmw_du_crtc_reset, + .atomic_create_state = vmw_du_crtc_create_state, .atomic_duplicate_state = vmw_du_crtc_duplicate_state, .atomic_destroy_state = vmw_du_crtc_destroy_state, .set_config = drm_atomic_helper_set_config, diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c index 4139837f4caf..939da0e11dbb 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c @@ -778,7 +778,7 @@ out_unref: static const struct drm_crtc_funcs vmw_stdu_crtc_funcs = { .gamma_set = vmw_du_crtc_gamma_set, .destroy = vmw_stdu_crtc_destroy, - .reset = vmw_du_crtc_reset, + .atomic_create_state = vmw_du_crtc_create_state, .atomic_duplicate_state = vmw_du_crtc_duplicate_state, .atomic_destroy_state = vmw_du_crtc_destroy_state, .set_config = drm_atomic_helper_set_config,