From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A134383C7C; Sat, 28 Feb 2026 17:36:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772300182; cv=none; b=Uj5BYcIbziaO8+nTbpKa8EgsWAipia4ZMpFU2v4ODp68pst0KxeOyPcyJr0v5B3yZioXUsRE+6Sygv9gI/YLk/aUtHGkBbNtN3Kw6bM6JkwJ916DLvZ3B4678Oox4W5PKmI4LZaIlIgIV5lw8CbcD/EeUVh87PNpdUorxM7nQRA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772300182; c=relaxed/simple; bh=WHUnGgRldfIM6bif1WlpxyyS+cTfMtOobvgccwgeSaE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SiJr/Wo8Q2X3F3PPbHDgWaz5sJHy1Vp9cpjKrVTJyLd4e6d5lBeBm3wIQVhK/gtYuxORjckuNzEz/acW6GEjlDGgqaYqL2ypY9zViMx1nuHYW7Y/XnJSWvUsbutNCNiM6M7sAz6pmfjbpi6zyuOKm+iJjIoAp9A9MSlcVPtCe0k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ur5mcGcD; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ur5mcGcD" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 59BE7C19423; Sat, 28 Feb 2026 17:36:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1772300181; bh=WHUnGgRldfIM6bif1WlpxyyS+cTfMtOobvgccwgeSaE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ur5mcGcDH3l28jFg9nCUgTpgGtp13SNz6OUmwk9zg4T4wwfzBwvvon6UnPd2QrxY8 2c7++Ewp7BSixq+2tWje/QDU02jY1yOHfwRFkcg+LXeQHMCD6uDzxWr+jnD7Vdo4Ff QDCKyvD5A51LkD9arMUHWThKspJjX7TA2Vcz1sd9+bLEJpm1n5jP9zrcjLNftRMYbQ 501KOWqwmijruCcpuJQMBd4ZoYDk7IypIk+p2WVQshT9Ci5oWvxx6pfVxEDoJEjUFu pxlpsBB4B+MTxy4m3D+bbVf+LTXtoaDYrHqta5V/GhwIBrIjfkCBXvVF5LchqSEWG3 jFGcNxKEdUCMw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Ludovic Desroches , Manikandan Muralidharan , Sasha Levin Subject: [PATCH 6.19 200/844] drm/atmel-hlcdc: destroy properly the plane state in the reset callback Date: Sat, 28 Feb 2026 12:21:53 -0500 Message-ID: <20260228173244.1509663-201-sashal@kernel.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260228173244.1509663-1-sashal@kernel.org> References: <20260228173244.1509663-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit From: Ludovic Desroches [ Upstream commit 81af99cbd9e4f238011af811d544fff75641fc25 ] If there is a plane state to destroy when doing a plane reset, destroy it using the atmel_hlcdc_plane_destroy_state() function. So we call __drm_atomic_helper_plane_destroy_state() and avoid code duplication. Signed-off-by: Ludovic Desroches Reviewed-by: Manikandan Muralidharan Link: https://patch.msgid.link/20251218-lcd_cleanup_mainline-v2-8-df837aba878f@microchip.com Signed-off-by: Manikandan Muralidharan Signed-off-by: Sasha Levin --- .../gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c index 92132be9823f1..0ffec44c6d317 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_plane.c @@ -1155,32 +1155,6 @@ static int atmel_hlcdc_plane_alloc_dscrs(struct drm_plane *p, return -ENOMEM; } -static void atmel_hlcdc_plane_reset(struct drm_plane *p) -{ - struct atmel_hlcdc_plane_state *state; - - if (p->state) { - state = drm_plane_state_to_atmel_hlcdc_plane_state(p->state); - - if (state->base.fb) - drm_framebuffer_put(state->base.fb); - - kfree(state); - p->state = NULL; - } - - state = kzalloc(sizeof(*state), GFP_KERNEL); - if (state) { - if (atmel_hlcdc_plane_alloc_dscrs(p, state)) { - kfree(state); - drm_err(p->dev, - "Failed to allocate initial plane state\n"); - return; - } - __drm_atomic_helper_plane_reset(p, &state->base); - } -} - static struct drm_plane_state * atmel_hlcdc_plane_atomic_duplicate_state(struct drm_plane *p) { @@ -1222,6 +1196,32 @@ static void atmel_hlcdc_plane_atomic_destroy_state(struct drm_plane *p, kfree(state); } +static void atmel_hlcdc_plane_reset(struct drm_plane *p) +{ + struct atmel_hlcdc_plane_state *state; + struct atmel_hlcdc_dc *dc = p->dev->dev_private; + struct atmel_hlcdc_plane *plane = drm_plane_to_atmel_hlcdc_plane(p); + + if (p->state) { + atmel_hlcdc_plane_atomic_destroy_state(p, p->state); + p->state = NULL; + } + + state = kzalloc(sizeof(*state), GFP_KERNEL); + if (state) { + if (atmel_hlcdc_plane_alloc_dscrs(p, state)) { + kfree(state); + drm_err(p->dev, + "Failed to allocate initial plane state\n"); + return; + } + __drm_atomic_helper_plane_reset(p, &state->base); + } + + if (plane->layer.desc->layout.csc) + dc->desc->ops->lcdc_csc_init(plane, plane->layer.desc); +} + static const struct drm_plane_funcs layer_plane_funcs = { .update_plane = drm_atomic_helper_update_plane, .disable_plane = drm_atomic_helper_disable_plane, -- 2.51.0