The plane reset implementation creates a custom state subclass, but only initializes a pristine state without resetting any hardware. This is equivalent to what atomic_create_state expects. Convert to it.
Signed-off-by: Maxime Ripard <[email protected]> --- Cc: [email protected] Cc: [email protected] Cc: [email protected] Cc: [email protected] --- drivers/gpu/drm/tegra/plane.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/tegra/plane.c b/drivers/gpu/drm/tegra/plane.c index 0cb30910773f..2148b0c59815 100644 --- a/drivers/gpu/drm/tegra/plane.c +++ b/drivers/gpu/drm/tegra/plane.c @@ -22,32 +22,28 @@ static void tegra_plane_destroy(struct drm_plane *plane) drm_plane_cleanup(plane); kfree(p); } -static void tegra_plane_reset(struct drm_plane *plane) +static struct drm_plane_state *tegra_plane_atomic_create_state(struct drm_plane *plane) { struct tegra_plane *p = to_tegra_plane(plane); struct tegra_plane_state *state; unsigned int i; - if (plane->state) - __drm_atomic_helper_plane_destroy_state(plane->state); - - kfree(plane->state); - plane->state = NULL; - state = kzalloc_obj(*state); - if (state) { - plane->state = &state->base; - plane->state->plane = plane; - plane->state->zpos = p->index; - plane->state->normalized_zpos = p->index; + if (!state) + return ERR_PTR(-ENOMEM); - for (i = 0; i < 3; i++) - state->iova[i] = DMA_MAPPING_ERROR; - } + state->base.plane = plane; + state->base.zpos = p->index; + state->base.normalized_zpos = p->index; + + for (i = 0; i < 3; i++) + state->iova[i] = DMA_MAPPING_ERROR; + + return &state->base; } static struct drm_plane_state * tegra_plane_atomic_duplicate_state(struct drm_plane *plane) { @@ -129,11 +125,11 @@ static bool tegra_plane_format_mod_supported(struct drm_plane *plane, const struct drm_plane_funcs tegra_plane_funcs = { .update_plane = drm_atomic_helper_update_plane, .disable_plane = drm_atomic_helper_disable_plane, .destroy = tegra_plane_destroy, - .reset = tegra_plane_reset, + .atomic_create_state = tegra_plane_atomic_create_state, .atomic_duplicate_state = tegra_plane_atomic_duplicate_state, .atomic_destroy_state = tegra_plane_atomic_destroy_state, .format_mod_supported = tegra_plane_format_mod_supported, }; -- 2.54.0
