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)
{
}
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));
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