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