From 8cb4dca64006ccdad9188209aaf4ac225a6568a2 Mon Sep 17 00:00:00 2001 From: Maxime Ripard Date: Fri, 21 Aug 2026 16:39:29 +0200 Subject: [PATCH] drm/mgag200: Convert to atomic_create_state The mgag200 crtc implementation provides a custom reset hook. However, this hook only allocates the state, initializes it with __drm_atomic_helper_crtc_reset(), and frees the previous state. It does not perform any hardware reset. Since this is exactly what the atomic_create_state hook is meant to do, minus the old state cleanup which the caller handles, convert the implementation to use atomic_create_state with __drm_atomic_helper_crtc_state_init() instead. Reviewed-by: Thomas Zimmermann Link: https://patch.msgid.link/20260821-drm-no-more-crtc-reset-v1-53-fb793475c05a@kernel.org Signed-off-by: Maxime Ripard --- drivers/gpu/drm/mgag200/mgag200_drv.h | 4 ++-- drivers/gpu/drm/mgag200/mgag200_mode.c | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h index 3732c62351bb..bccc70983d28 100644 --- a/drivers/gpu/drm/mgag200/mgag200_drv.h +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h @@ -407,15 +407,15 @@ void mgag200_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct drm_atomic .atomic_enable = mgag200_crtc_helper_atomic_enable, \ .atomic_disable = mgag200_crtc_helper_atomic_disable -void mgag200_crtc_reset(struct drm_crtc *crtc); +struct drm_crtc_state *mgag200_crtc_atomic_create_state(struct drm_crtc *crtc); struct drm_crtc_state *mgag200_crtc_atomic_duplicate_state(struct drm_crtc *crtc); void mgag200_crtc_atomic_destroy_state(struct drm_crtc *crtc, struct drm_crtc_state *crtc_state); #define MGAG200_CRTC_FUNCS \ - .reset = mgag200_crtc_reset, \ .destroy = drm_crtc_cleanup, \ .set_config = drm_atomic_helper_set_config, \ .page_flip = drm_atomic_helper_page_flip, \ + .atomic_create_state = mgag200_crtc_atomic_create_state, \ .atomic_duplicate_state = mgag200_crtc_atomic_duplicate_state, \ .atomic_destroy_state = mgag200_crtc_atomic_destroy_state diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c index 7e07fc3f1a60..4e952655e4f5 100644 --- a/drivers/gpu/drm/mgag200/mgag200_mode.c +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c @@ -679,18 +679,17 @@ void mgag200_crtc_helper_atomic_disable(struct drm_crtc *crtc, struct drm_atomic mgag200_disable_display(mdev); } -void mgag200_crtc_reset(struct drm_crtc *crtc) +struct drm_crtc_state *mgag200_crtc_atomic_create_state(struct drm_crtc *crtc) { struct mgag200_crtc_state *mgag200_crtc_state; - if (crtc->state) - crtc->funcs->atomic_destroy_state(crtc, crtc->state); - mgag200_crtc_state = kzalloc_obj(*mgag200_crtc_state); - if (mgag200_crtc_state) - __drm_atomic_helper_crtc_reset(crtc, &mgag200_crtc_state->base); - else - __drm_atomic_helper_crtc_reset(crtc, NULL); + if (!mgag200_crtc_state) + return ERR_PTR(-ENOMEM); + + __drm_atomic_helper_crtc_state_init(&mgag200_crtc_state->base, crtc); + + return &mgag200_crtc_state->base; } struct drm_crtc_state *mgag200_crtc_atomic_duplicate_state(struct drm_crtc *crtc)