mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
drm/msm: mdp5: Switch private_obj initialization to atomic_create_state
The MSM mdp5 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-10-90891fa3d3b0@redhat.com Signed-off-by: Maxime Ripard <mripard@kernel.org>
This commit is contained in:
parent
8e46b1ebf3
commit
4ada3ac5ff
|
|
@ -114,6 +114,24 @@ static void mdp5_global_destroy_state(struct drm_private_obj *obj,
|
|||
kfree(mdp5_state);
|
||||
}
|
||||
|
||||
static struct drm_private_state *
|
||||
mdp5_global_create_state(struct drm_private_obj *obj)
|
||||
{
|
||||
struct drm_device *dev = obj->dev;
|
||||
struct msm_drm_private *priv = dev->dev_private;
|
||||
struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
|
||||
struct mdp5_global_state *mdp5_state;
|
||||
|
||||
mdp5_state = kzalloc(sizeof(*mdp5_state), GFP_KERNEL);
|
||||
if (!mdp5_state)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
__drm_atomic_helper_private_obj_create_state(obj, &mdp5_state->base);
|
||||
mdp5_state->mdp5_kms = mdp5_kms;
|
||||
|
||||
return &mdp5_state->base;
|
||||
}
|
||||
|
||||
static void mdp5_global_print_state(struct drm_printer *p,
|
||||
const struct drm_private_state *state)
|
||||
{
|
||||
|
|
@ -124,27 +142,12 @@ static void mdp5_global_print_state(struct drm_printer *p,
|
|||
}
|
||||
|
||||
static const struct drm_private_state_funcs mdp5_global_state_funcs = {
|
||||
.atomic_create_state = mdp5_global_create_state,
|
||||
.atomic_duplicate_state = mdp5_global_duplicate_state,
|
||||
.atomic_destroy_state = mdp5_global_destroy_state,
|
||||
.atomic_print_state = mdp5_global_print_state,
|
||||
};
|
||||
|
||||
static int mdp5_global_obj_init(struct mdp5_kms *mdp5_kms)
|
||||
{
|
||||
struct mdp5_global_state *state;
|
||||
|
||||
state = kzalloc(sizeof(*state), GFP_KERNEL);
|
||||
if (!state)
|
||||
return -ENOMEM;
|
||||
|
||||
state->mdp5_kms = mdp5_kms;
|
||||
|
||||
drm_atomic_private_obj_init(mdp5_kms->dev, &mdp5_kms->glob_state,
|
||||
&state->base,
|
||||
&mdp5_global_state_funcs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mdp5_enable_commit(struct msm_kms *kms)
|
||||
{
|
||||
struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(kms));
|
||||
|
|
@ -713,9 +716,9 @@ static int mdp5_init(struct platform_device *pdev, struct drm_device *dev)
|
|||
|
||||
mdp5_kms->dev = dev;
|
||||
|
||||
ret = mdp5_global_obj_init(mdp5_kms);
|
||||
if (ret)
|
||||
goto fail;
|
||||
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
|
||||
* rate first, then figure out hw revision, and then set a
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user