summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/armada/armada_overlay.c39
-rw-r--r--drivers/gpu/drm/armada/armada_plane.c15
-rw-r--r--drivers/gpu/drm/armada/armada_plane.h2
3 files changed, 27 insertions, 29 deletions
diff --git a/drivers/gpu/drm/armada/armada_overlay.c b/drivers/gpu/drm/armada/armada_overlay.c
index 3da0b857ef95..e75706b85dd1 100644
--- a/drivers/gpu/drm/armada/armada_overlay.c
+++ b/drivers/gpu/drm/armada/armada_overlay.c
@@ -301,30 +301,27 @@ fail:
return ret;
}
-static void armada_overlay_reset(struct drm_plane *plane)
+static struct drm_plane_state *armada_overlay_create_state(struct drm_plane *plane)
{
struct armada_overlay_state *state;
- if (plane->state)
- __drm_atomic_helper_plane_destroy_state(plane->state);
- kfree(plane->state);
- plane->state = NULL;
-
state = kzalloc_obj(*state);
- if (state) {
- state->colorkey_yr = 0xfefefe00;
- state->colorkey_ug = 0x01010100;
- state->colorkey_vb = 0x01010100;
- state->colorkey_mode = CFG_CKMODE(CKMODE_RGB) |
- CFG_ALPHAM_GRA | CFG_ALPHA(0);
- state->colorkey_enable = ADV_GRACOLORKEY;
- state->brightness = DEFAULT_BRIGHTNESS;
- state->contrast = DEFAULT_CONTRAST;
- state->saturation = DEFAULT_SATURATION;
- __drm_atomic_helper_plane_reset(plane, &state->base.base);
- state->base.base.color_encoding = DEFAULT_ENCODING;
- state->base.base.color_range = DRM_COLOR_YCBCR_LIMITED_RANGE;
- }
+ if (!state)
+ return ERR_PTR(-ENOMEM);
+
+ state->colorkey_yr = 0xfefefe00;
+ state->colorkey_ug = 0x01010100;
+ state->colorkey_vb = 0x01010100;
+ state->colorkey_mode = CFG_CKMODE(CKMODE_RGB) | CFG_ALPHAM_GRA | CFG_ALPHA(0);
+ state->colorkey_enable = ADV_GRACOLORKEY;
+ state->brightness = DEFAULT_BRIGHTNESS;
+ state->contrast = DEFAULT_CONTRAST;
+ state->saturation = DEFAULT_SATURATION;
+ __drm_atomic_helper_plane_state_init(&state->base.base, plane);
+ state->base.base.color_encoding = DEFAULT_ENCODING;
+ state->base.base.color_range = DRM_COLOR_YCBCR_LIMITED_RANGE;
+
+ return &state->base.base;
}
static struct drm_plane_state *
@@ -466,7 +463,7 @@ static const struct drm_plane_funcs armada_ovl_plane_funcs = {
.update_plane = armada_overlay_plane_update,
.disable_plane = drm_atomic_helper_disable_plane,
.destroy = drm_plane_helper_destroy,
- .reset = armada_overlay_reset,
+ .atomic_create_state = armada_overlay_create_state,
.atomic_duplicate_state = armada_overlay_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
.atomic_set_property = armada_overlay_set_property,
diff --git a/drivers/gpu/drm/armada/armada_plane.c b/drivers/gpu/drm/armada/armada_plane.c
index fe46a8e4508a..1f5172d6816b 100644
--- a/drivers/gpu/drm/armada/armada_plane.c
+++ b/drivers/gpu/drm/armada/armada_plane.c
@@ -256,15 +256,16 @@ static const struct drm_plane_helper_funcs armada_primary_plane_helper_funcs = {
.atomic_disable = armada_drm_primary_plane_atomic_disable,
};
-void armada_plane_reset(struct drm_plane *plane)
+struct drm_plane_state *armada_plane_create_state(struct drm_plane *plane)
{
struct armada_plane_state *st;
- if (plane->state)
- __drm_atomic_helper_plane_destroy_state(plane->state);
- kfree(plane->state);
st = kzalloc_obj(*st);
- if (st)
- __drm_atomic_helper_plane_reset(plane, &st->base);
+ if (!st)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_plane_state_init(&st->base, plane);
+
+ return &st->base;
}
struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane)
@@ -285,7 +286,7 @@ static const struct drm_plane_funcs armada_primary_plane_funcs = {
.update_plane = drm_atomic_helper_update_plane,
.disable_plane = drm_atomic_helper_disable_plane,
.destroy = drm_plane_helper_destroy,
- .reset = armada_plane_reset,
+ .atomic_create_state = armada_plane_create_state,
.atomic_duplicate_state = armada_plane_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
};
diff --git a/drivers/gpu/drm/armada/armada_plane.h b/drivers/gpu/drm/armada/armada_plane.h
index 69bef09ea028..be2b1eaafad7 100644
--- a/drivers/gpu/drm/armada/armada_plane.h
+++ b/drivers/gpu/drm/armada/armada_plane.h
@@ -25,7 +25,7 @@ void armada_drm_plane_cleanup_fb(struct drm_plane *plane,
struct drm_plane_state *old_state);
int armada_drm_plane_atomic_check(struct drm_plane *plane,
struct drm_atomic_commit *state);
-void armada_plane_reset(struct drm_plane *plane);
+struct drm_plane_state *armada_plane_create_state(struct drm_plane *plane);
struct drm_plane_state *armada_plane_duplicate_state(struct drm_plane *plane);
void armada_plane_destroy_state(struct drm_plane *plane,
struct drm_plane_state *state);