diff options
| author | Maxime Ripard <mripard@kernel.org> | 2026-01-28 13:43:55 +0100 |
|---|---|---|
| committer | Maxime Ripard <mripard@kernel.org> | 2026-02-10 10:07:17 +0100 |
| commit | 9bf5b4dfe1ea7af0bc7846bec2c46da68a6f03e6 (patch) | |
| tree | a7414bea9cb6d1193012d1e0a469ba1dfb6d73dc | |
| parent | 4ada3ac5ffbc5279ab4bb16a7e038c027c0fa19a (diff) | |
| download | linux-9bf5b4dfe1ea7af0bc7846bec2c46da68a6f03e6.tar.gz linux-9bf5b4dfe1ea7af0bc7846bec2c46da68a6f03e6.zip | |
drm/msm: dpu1: Switch private_obj initialization to atomic_create_state
The MSM dpu1 driver relies on a drm_private_obj, that is initialized by
allocating and initializing a state, and then passing it to
drm_private_obj_init.
Since we're gradually moving away from that pattern to the more
established one relying on a atomic_create_state implementation, let's
migrate this instance to the new pattern.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://patch.msgid.link/20260128-drm-private-obj-reset-v4-11-90891fa3d3b0@redhat.com
Signed-off-by: Maxime Ripard <mripard@kernel.org>
| -rw-r--r-- | drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c index 0623f1dbed97..3ae0987cfffe 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c @@ -367,6 +367,24 @@ static void dpu_kms_global_destroy_state(struct drm_private_obj *obj, kfree(dpu_state); } +static struct drm_private_state * +dpu_kms_global_create_state(struct drm_private_obj *obj) +{ + struct drm_device *dev = obj->dev; + struct msm_drm_private *priv = dev->dev_private; + struct dpu_kms *dpu_kms = to_dpu_kms(priv->kms); + struct dpu_global_state *dpu_state; + + dpu_state = kzalloc(sizeof(*dpu_state), GFP_KERNEL); + if (!dpu_state) + return ERR_PTR(-ENOMEM); + + __drm_atomic_helper_private_obj_create_state(obj, &dpu_state->base); + dpu_state->rm = &dpu_kms->rm; + + return &dpu_state->base; +} + static void dpu_kms_global_print_state(struct drm_printer *p, const struct drm_private_state *state) { @@ -376,28 +394,12 @@ static void dpu_kms_global_print_state(struct drm_printer *p, } static const struct drm_private_state_funcs dpu_kms_global_state_funcs = { + .atomic_create_state = dpu_kms_global_create_state, .atomic_duplicate_state = dpu_kms_global_duplicate_state, .atomic_destroy_state = dpu_kms_global_destroy_state, .atomic_print_state = dpu_kms_global_print_state, }; -static int dpu_kms_global_obj_init(struct dpu_kms *dpu_kms) -{ - struct dpu_global_state *state; - - state = kzalloc(sizeof(*state), GFP_KERNEL); - if (!state) - return -ENOMEM; - - drm_atomic_private_obj_init(dpu_kms->dev, &dpu_kms->global_state, - &state->base, - &dpu_kms_global_state_funcs); - - state->rm = &dpu_kms->rm; - - return 0; -} - static void dpu_kms_global_obj_fini(struct dpu_kms *dpu_kms) { drm_atomic_private_obj_fini(&dpu_kms->global_state); @@ -1158,9 +1160,9 @@ static int dpu_kms_hw_init(struct msm_kms *kms) dev->mode_config.cursor_width = 512; dev->mode_config.cursor_height = 512; - rc = dpu_kms_global_obj_init(dpu_kms); - if (rc) - return rc; + drm_atomic_private_obj_init(dpu_kms->dev, &dpu_kms->global_state, + NULL, + &dpu_kms_global_state_funcs); atomic_set(&dpu_kms->bandwidth_ref, 0); |
