]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/atomic: Remove state argument to drm_atomic_private_obj_init
authorMaxime Ripard <mripard@kernel.org>
Tue, 24 Feb 2026 16:10:29 +0000 (17:10 +0100)
committerMaxime Ripard <mripard@kernel.org>
Fri, 20 Mar 2026 09:03:11 +0000 (10:03 +0100)
Now that all drm_private_objs users have been converted to use
atomic_create_state instead of the old ad-hoc initialization, we can
remove the state parameter from drm_private_obj_init and the fallback
code.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Reviewed-by: MaĆ­ra Canal <mcanal@igalia.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patch.msgid.link/20260224-drm-private-obj-reset-v5-4-5a72f8ec9934@kernel.org
Signed-off-by: Maxime Ripard <mripard@kernel.org>
14 files changed:
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/arm/display/komeda/komeda_private_obj.c
drivers/gpu/drm/display/drm_dp_mst_topology.c
drivers/gpu/drm/display/drm_dp_tunnel.c
drivers/gpu/drm/drm_atomic.c
drivers/gpu/drm/drm_bridge.c
drivers/gpu/drm/ingenic/ingenic-drm-drv.c
drivers/gpu/drm/ingenic/ingenic-ipu.c
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
drivers/gpu/drm/omapdrm/omap_drv.c
drivers/gpu/drm/tegra/hub.c
drivers/gpu/drm/vc4/vc4_kms.c
include/drm/drm_atomic.h

index d44701cbde6d406bb6ec82afe8c754f00745038a..fc5e0bf121d223adb4015af2fd08f2d1e2c0ae34 100644 (file)
@@ -4896,7 +4896,6 @@ static int amdgpu_dm_mode_config_init(struct amdgpu_device *adev)
 
        drm_atomic_private_obj_init(adev_to_drm(adev),
                                    &adev->dm.atomic_obj,
-                                   NULL,
                                    &dm_atomic_state_funcs);
 
        r = amdgpu_display_modeset_create_props(adev);
index 49b934c6dbdf0fdbf1dfa10bf74536481350a381..77b3f361091fc3e07d30cee4a74f69c7ea1f6e90 100644 (file)
@@ -65,7 +65,7 @@ static const struct drm_private_state_funcs komeda_layer_obj_funcs = {
 static int komeda_layer_obj_add(struct komeda_kms_dev *kms,
                                struct komeda_layer *layer)
 {
-       drm_atomic_private_obj_init(&kms->base, &layer->base.obj, NULL,
+       drm_atomic_private_obj_init(&kms->base, &layer->base.obj,
                                    &komeda_layer_obj_funcs);
        return 0;
 }
@@ -118,7 +118,7 @@ static int komeda_scaler_obj_add(struct komeda_kms_dev *kms,
                                 struct komeda_scaler *scaler)
 {
        drm_atomic_private_obj_init(&kms->base,
-                                   &scaler->base.obj, NULL,
+                                   &scaler->base.obj,
                                    &komeda_scaler_obj_funcs);
        return 0;
 }
@@ -170,7 +170,7 @@ static const struct drm_private_state_funcs komeda_compiz_obj_funcs = {
 static int komeda_compiz_obj_add(struct komeda_kms_dev *kms,
                                 struct komeda_compiz *compiz)
 {
-       drm_atomic_private_obj_init(&kms->base, &compiz->base.obj, NULL,
+       drm_atomic_private_obj_init(&kms->base, &compiz->base.obj,
                                    &komeda_compiz_obj_funcs);
 
        return 0;
@@ -224,7 +224,7 @@ static int komeda_splitter_obj_add(struct komeda_kms_dev *kms,
                                   struct komeda_splitter *splitter)
 {
        drm_atomic_private_obj_init(&kms->base,
-                                   &splitter->base.obj, NULL,
+                                   &splitter->base.obj,
                                    &komeda_splitter_obj_funcs);
 
        return 0;
@@ -277,7 +277,7 @@ static int komeda_merger_obj_add(struct komeda_kms_dev *kms,
                                 struct komeda_merger *merger)
 {
        drm_atomic_private_obj_init(&kms->base,
-                                   &merger->base.obj, NULL,
+                                   &merger->base.obj,
                                    &komeda_merger_obj_funcs);
 
        return 0;
@@ -330,7 +330,7 @@ static const struct drm_private_state_funcs komeda_improc_obj_funcs = {
 static int komeda_improc_obj_add(struct komeda_kms_dev *kms,
                                 struct komeda_improc *improc)
 {
-       drm_atomic_private_obj_init(&kms->base, &improc->base.obj, NULL,
+       drm_atomic_private_obj_init(&kms->base, &improc->base.obj,
                                    &komeda_improc_obj_funcs);
 
        return 0;
@@ -383,7 +383,7 @@ static const struct drm_private_state_funcs komeda_timing_ctrlr_obj_funcs = {
 static int komeda_timing_ctrlr_obj_add(struct komeda_kms_dev *kms,
                                       struct komeda_timing_ctrlr *ctrlr)
 {
-       drm_atomic_private_obj_init(&kms->base, &ctrlr->base.obj, NULL,
+       drm_atomic_private_obj_init(&kms->base, &ctrlr->base.obj,
                                    &komeda_timing_ctrlr_obj_funcs);
 
        return 0;
@@ -437,7 +437,7 @@ static const struct drm_private_state_funcs komeda_pipeline_obj_funcs = {
 static int komeda_pipeline_obj_add(struct komeda_kms_dev *kms,
                                   struct komeda_pipeline *pipe)
 {
-       drm_atomic_private_obj_init(&kms->base, &pipe->obj, NULL,
+       drm_atomic_private_obj_init(&kms->base, &pipe->obj,
                                    &komeda_pipeline_obj_funcs);
 
        return 0;
index d8a732f21d3c04eaeefa64d5fe34d156369787ac..8757972e8e2427cbbab2e90d1c9c291d97e96c0a 100644 (file)
@@ -5765,7 +5765,6 @@ int drm_dp_mst_topology_mgr_init(struct drm_dp_mst_topology_mgr *mgr,
        mgr->conn_base_id = conn_base_id;
 
        drm_atomic_private_obj_init(dev, &mgr->base,
-                                   NULL,
                                    &drm_dp_mst_topology_state_funcs);
 
        return 0;
index f442430d8de78221ec88d0567dc68f2fa8d2b82a..6519b42447285b58892ac07a3570cf6c457e4c27 100644 (file)
@@ -1600,7 +1600,7 @@ static bool init_group(struct drm_dp_tunnel_mgr *mgr, struct drm_dp_tunnel_group
        group->available_bw = -1;
        INIT_LIST_HEAD(&group->tunnels);
 
-       drm_atomic_private_obj_init(mgr->dev, &group->base, NULL,
+       drm_atomic_private_obj_init(mgr->dev, &group->base,
                                    &tunnel_group_funcs);
 
        return true;
index 6a395e5e38851e630752f61075a089e09fccb64b..41c57063f3b4d6d6e61a274d818844fa9bd582bf 100644 (file)
@@ -921,7 +921,6 @@ static void drm_atomic_plane_print_state(struct drm_printer *p,
  * drm_atomic_private_obj_init - initialize private object
  * @dev: DRM device this object will be attached to
  * @obj: private object
- * @state: initial private object state
  * @funcs: pointer to the struct of function pointers that identify the object
  * type
  *
@@ -933,9 +932,9 @@ static void drm_atomic_plane_print_state(struct drm_printer *p,
  */
 int drm_atomic_private_obj_init(struct drm_device *dev,
                                struct drm_private_obj *obj,
-                               struct drm_private_state *state,
                                const struct drm_private_state_funcs *funcs)
 {
+       struct drm_private_state *state;
        memset(obj, 0, sizeof(*obj));
 
        drm_modeset_lock_init(&obj->lock);
@@ -944,22 +943,11 @@ int drm_atomic_private_obj_init(struct drm_device *dev,
        obj->funcs = funcs;
        list_add_tail(&obj->head, &dev->mode_config.privobj_list);
 
-       /*
-        * Not all users of drm_atomic_private_obj_init have been
-        * converted to using &drm_private_obj_funcs.atomic_create_state yet.
-        * For the time being, let's only call reset if the passed state is
-        * NULL. Otherwise, we will fallback to the previous behaviour.
-        */
-       if (!state) {
-               state = obj->funcs->atomic_create_state(obj);
-               if (IS_ERR(state))
-                       return PTR_ERR(state);
+       state = obj->funcs->atomic_create_state(obj);
+       if (IS_ERR(state))
+               return PTR_ERR(state);
 
-               obj->state = state;
-       } else {
-               obj->state = state;
-               state->obj = obj;
-       }
+       obj->state = state;
 
        return 0;
 }
index f8b0333a0a3bf5bdf4036d2f7ca5565934e44b4c..1868d512ffa1fabc8adab97bc7cb96fd32a78997 100644 (file)
@@ -553,7 +553,6 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
 
        if (drm_bridge_is_atomic(bridge))
                drm_atomic_private_obj_init(bridge->dev, &bridge->base,
-                                           NULL,
                                            &drm_bridge_priv_state_funcs);
 
        return 0;
index 9522a2e6ecd4166efc648a24e237b8166e426d48..4068114adf8c2068a94a3aaa308cf91847712acb 100644 (file)
@@ -1401,7 +1401,7 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
                goto err_devclk_disable;
        }
 
-       drm_atomic_private_obj_init(drm, &priv->private_obj, NULL,
+       drm_atomic_private_obj_init(drm, &priv->private_obj,
                                    &ingenic_drm_private_state_funcs);
 
        ret = drmm_add_action_or_reset(drm, ingenic_drm_atomic_private_obj_fini,
index 4fec37c63e7cb7c96b32191d680c89e20837b155..34545b9c8c33833c3cc65f3d111b3f3bf9a60137 100644 (file)
@@ -901,7 +901,7 @@ static int ingenic_ipu_bind(struct device *dev, struct device *master, void *d)
                return err;
        }
 
-       drm_atomic_private_obj_init(drm, &ipu->private_obj, NULL,
+       drm_atomic_private_obj_init(drm, &ipu->private_obj,
                                    &ingenic_ipu_private_state_funcs);
 
        return 0;
index 4495525139978e64e0c650aae0cdc1a57e0c8398..31743699d05f6667e37fe70d79549cfe736474fe 100644 (file)
@@ -1161,7 +1161,6 @@ static int dpu_kms_hw_init(struct msm_kms *kms)
        dev->mode_config.cursor_height = 512;
 
        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);
index 1e3dc9bf9494c2b06ad5acaca74f7b17221b7833..2d26b07b06f54bbe8e26e538c155b8de994a4543 100644 (file)
@@ -717,7 +717,6 @@ static int mdp5_init(struct platform_device *pdev, struct drm_device *dev)
        mdp5_kms->dev = dev;
 
        drm_atomic_private_obj_init(mdp5_kms->dev, &mdp5_kms->glob_state,
-                                   NULL,
                                    &mdp5_global_state_funcs);
 
        /* we need to set a default rate before enabling.  Set a safe
index 90832b4b8c9dd540c8778cb39de7cf80e8796857..ae678696fbacb0572869c7152a484fc5736ac44a 100644 (file)
@@ -299,7 +299,7 @@ static int omap_global_obj_init(struct drm_device *dev)
 {
        struct omap_drm_private *priv = dev->dev_private;
 
-       drm_atomic_private_obj_init(dev, &priv->glob_obj, NULL,
+       drm_atomic_private_obj_init(dev, &priv->glob_obj,
                                    &omap_global_state_funcs);
        return 0;
 }
index 73190a4b4d0546be6d6cae746ba5d03ab8e98b92..10d993b8d043ab08ee65ab4db1e31624c953d0f3 100644 (file)
@@ -957,7 +957,7 @@ static int tegra_display_hub_init(struct host1x_client *client)
        struct drm_device *drm = dev_get_drvdata(client->host);
        struct tegra_drm *tegra = drm->dev_private;
 
-       drm_atomic_private_obj_init(drm, &hub->base, NULL,
+       drm_atomic_private_obj_init(drm, &hub->base,
                                    &tegra_display_hub_state_funcs);
 
        tegra->hub = hub;
index 0507f24adcdd05660b9ef349dd609b095d52a9f8..264b5e80c24d67f59dea8085f7d02d218db25697 100644 (file)
@@ -116,7 +116,7 @@ static int vc4_ctm_obj_init(struct vc4_dev *vc4)
 {
        drm_modeset_lock_init(&vc4->ctm_state_lock);
 
-       drm_atomic_private_obj_init(&vc4->base, &vc4->ctm_manager, NULL,
+       drm_atomic_private_obj_init(&vc4->base, &vc4->ctm_manager,
                                    &vc4_ctm_state_funcs);
 
        return drmm_add_action_or_reset(&vc4->base, vc4_ctm_obj_fini, NULL);
@@ -757,7 +757,6 @@ static void vc4_load_tracker_obj_fini(struct drm_device *dev, void *unused)
 static int vc4_load_tracker_obj_init(struct vc4_dev *vc4)
 {
        drm_atomic_private_obj_init(&vc4->base, &vc4->load_tracker,
-                                   NULL,
                                    &vc4_load_tracker_state_funcs);
 
        return drmm_add_action_or_reset(&vc4->base, vc4_load_tracker_obj_fini, NULL);
@@ -849,7 +848,6 @@ static void vc4_hvs_channels_obj_fini(struct drm_device *dev, void *unused)
 static int vc4_hvs_channels_obj_init(struct vc4_dev *vc4)
 {
        drm_atomic_private_obj_init(&vc4->base, &vc4->hvs_channels,
-                                   NULL,
                                    &vc4_hvs_state_funcs);
 
        return drmm_add_action_or_reset(&vc4->base, vc4_hvs_channels_obj_fini, NULL);
index 0b1b32bcd2bda1b92299fd369ba7c23b1c2d3dfa..f03cd199aee73fa8e15b2d9e16a53d134fc7de7d 100644 (file)
@@ -738,7 +738,6 @@ drm_atomic_get_connector_state(struct drm_atomic_state *state,
 
 int drm_atomic_private_obj_init(struct drm_device *dev,
                                struct drm_private_obj *obj,
-                               struct drm_private_state *state,
                                const struct drm_private_state_funcs *funcs);
 void drm_atomic_private_obj_fini(struct drm_private_obj *obj);