summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Ripard <mripard@kernel.org>2026-02-24 19:10:28 +0300
committerMaxime Ripard <mripard@kernel.org>2026-03-20 12:03:10 +0300
commit2d38301c2f29265a73499dd909b603e93fb5ca90 (patch)
treef7ba21718f221227a16265a2086caa7a6183e618
parentaf95bb0092fa6b76608133f13f8e09c79082c91a (diff)
downloadlinux-2d38301c2f29265a73499dd909b603e93fb5ca90.tar.xz
drm/tegra: Switch private_obj initialization to atomic_create_state
The tegra 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: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Link: https://patch.msgid.link/20260224-drm-private-obj-reset-v5-3-5a72f8ec9934@kernel.org Signed-off-by: Maxime Ripard <mripard@kernel.org>
-rw-r--r--drivers/gpu/drm/tegra/hub.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/drivers/gpu/drm/tegra/hub.c b/drivers/gpu/drm/tegra/hub.c
index a6fa196c2813..73190a4b4d05 100644
--- a/drivers/gpu/drm/tegra/hub.c
+++ b/drivers/gpu/drm/tegra/hub.c
@@ -825,7 +825,22 @@ static void tegra_display_hub_destroy_state(struct drm_private_obj *obj,
kfree(hub_state);
}
+static struct drm_private_state *
+tegra_display_hub_create_state(struct drm_private_obj *obj)
+{
+ struct tegra_display_hub_state *hub_state;
+
+ hub_state = kzalloc_obj(*hub_state);
+ if (!hub_state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_private_obj_create_state(obj, &hub_state->base);
+
+ return &hub_state->base;
+}
+
static const struct drm_private_state_funcs tegra_display_hub_state_funcs = {
+ .atomic_create_state = tegra_display_hub_create_state,
.atomic_duplicate_state = tegra_display_hub_duplicate_state,
.atomic_destroy_state = tegra_display_hub_destroy_state,
};
@@ -941,13 +956,8 @@ static int tegra_display_hub_init(struct host1x_client *client)
struct tegra_display_hub *hub = to_tegra_display_hub(client);
struct drm_device *drm = dev_get_drvdata(client->host);
struct tegra_drm *tegra = drm->dev_private;
- struct tegra_display_hub_state *state;
-
- state = kzalloc_obj(*state);
- if (!state)
- return -ENOMEM;
- drm_atomic_private_obj_init(drm, &hub->base, &state->base,
+ drm_atomic_private_obj_init(drm, &hub->base, NULL,
&tegra_display_hub_state_funcs);
tegra->hub = hub;