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 3ECA076026 for ; Sat, 18 Oct 2025 13:51:58 +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=1760795518; cv=none; b=ipGkSef9NEpQtszPBQpVbDv8gd0x/1f33ebanVm/nZoJNg6PuwQAr1b9Rq2fMuerSLFXufxnu1piYUqCluCCxgL3D5rR6nuRLO2Qg0R5pt4cs3QDKEUjGfnx2Y/uVtR72WuLguWVLechbdZ10C8H3xGCokhISFcFAArBJO5CI6I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760795518; c=relaxed/simple; bh=DLtX7u7y/SesgslOdJOSDSzFE74XkAku9gKcTMx2Y9E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Kh6nmxJPA3eDE9jAAaMR/y1+83E0kqzgAiIUByfTGJR6lNJyP90gJG1HDbP5Q7Flvb7p8mwRVLApJUZQWdc5ii9huc1YPfMXpPpjMOySSpuA6VxFPpddx96ViuyAwZOvM1n+mgZnOJ8x0qxdzyRVvU165B5pFqK4xv7WlxIVt+8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WRvUblXp; 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="WRvUblXp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 56372C4CEF8; Sat, 18 Oct 2025 13:51:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1760795517; bh=DLtX7u7y/SesgslOdJOSDSzFE74XkAku9gKcTMx2Y9E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WRvUblXp3W83V53rpaAIayioLSaez5lZq4zhx4lGFWbdq4BlfUBUe6aBCoBAA3sQb rY6teGTAwV2tZ3LJjid7hPpD4XeoTBJfFhtzQGTDQz1gYsOWiD0kv1fyBi5DS7lO0c qL1p7dacBphGNbpD1kbJMjqYcqg7i5hZMXix/W1Bpfv+jNQjiPs3Ved+85DmWv3k+c TNWMkE7KBsglbdApbd1WEOOHhUyUQahDJZjR52dqVG8P6bProh5AIUi64Z1h2mbRf3 dfrNV89sEfistA9uK+9yPdfrE7U6z+kOZr7mE4V/P1p/c1ibcGwfOXVEdBM66prbef FFq511mll7zvQ== From: Sasha Levin To: stable@vger.kernel.org Cc: Kaustabh Chakraborty , Inki Dae , Sasha Levin Subject: [PATCH 5.10.y] drm/exynos: exynos7_drm_decon: remove ctx->suspended Date: Sat, 18 Oct 2025 09:51:55 -0400 Message-ID: <20251018135155.712293-1-sashal@kernel.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: <2025101641-plop-hertz-3940@gregkh> References: <2025101641-plop-hertz-3940@gregkh> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Kaustabh Chakraborty [ Upstream commit e1361a4f1be9cb69a662c6d7b5ce218007d6e82b ] Condition guards are found to be redundant, as the call flow is properly managed now, as also observed in the Exynos5433 DECON driver. Since state checking is no longer necessary, remove it. This also fixes an issue which prevented decon_commit() from decon_atomic_enable() due to an incorrect state change setting. Fixes: 96976c3d9aff ("drm/exynos: Add DECON driver") Cc: stable@vger.kernel.org Suggested-by: Inki Dae Signed-off-by: Kaustabh Chakraborty Signed-off-by: Inki Dae [ Adjust context ] Signed-off-by: Sasha Levin --- drivers/gpu/drm/exynos/exynos7_drm_decon.c | 36 ---------------------- 1 file changed, 36 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c index 81494d5938303..77ebe3ce463e0 100644 --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c @@ -51,7 +51,6 @@ struct decon_context { void __iomem *regs; unsigned long irq_flags; bool i80_if; - bool suspended; wait_queue_head_t wait_vsync_queue; atomic_t wait_vsync_event; @@ -85,9 +84,6 @@ static void decon_wait_for_vblank(struct exynos_drm_crtc *crtc) { struct decon_context *ctx = crtc->ctx; - if (ctx->suspended) - return; - atomic_set(&ctx->wait_vsync_event, 1); /* @@ -155,9 +151,6 @@ static void decon_commit(struct exynos_drm_crtc *crtc) struct drm_display_mode *mode = &crtc->base.state->adjusted_mode; u32 val, clkdiv; - if (ctx->suspended) - return; - /* nothing to do if we haven't set the mode yet */ if (mode->htotal == 0 || mode->vtotal == 0) return; @@ -219,9 +212,6 @@ static int decon_enable_vblank(struct exynos_drm_crtc *crtc) struct decon_context *ctx = crtc->ctx; u32 val; - if (ctx->suspended) - return -EPERM; - if (!test_and_set_bit(0, &ctx->irq_flags)) { val = readl(ctx->regs + VIDINTCON0); @@ -244,9 +234,6 @@ static void decon_disable_vblank(struct exynos_drm_crtc *crtc) struct decon_context *ctx = crtc->ctx; u32 val; - if (ctx->suspended) - return; - if (test_and_clear_bit(0, &ctx->irq_flags)) { val = readl(ctx->regs + VIDINTCON0); @@ -369,9 +356,6 @@ static void decon_atomic_begin(struct exynos_drm_crtc *crtc) struct decon_context *ctx = crtc->ctx; int i; - if (ctx->suspended) - return; - for (i = 0; i < WINDOWS_NR; i++) decon_shadow_protect_win(ctx, i, true); } @@ -391,9 +375,6 @@ static void decon_update_plane(struct exynos_drm_crtc *crtc, unsigned int cpp = fb->format->cpp[0]; unsigned int pitch = fb->pitches[0]; - if (ctx->suspended) - return; - /* * SHADOWCON/PRTCON register is used for enabling timing. * @@ -481,9 +462,6 @@ static void decon_disable_plane(struct exynos_drm_crtc *crtc, unsigned int win = plane->index; u32 val; - if (ctx->suspended) - return; - /* protect windows */ decon_shadow_protect_win(ctx, win, true); @@ -502,9 +480,6 @@ static void decon_atomic_flush(struct exynos_drm_crtc *crtc) struct decon_context *ctx = crtc->ctx; int i; - if (ctx->suspended) - return; - for (i = 0; i < WINDOWS_NR; i++) decon_shadow_protect_win(ctx, i, false); exynos_crtc_handle_event(crtc); @@ -531,9 +506,6 @@ static void decon_atomic_enable(struct exynos_drm_crtc *crtc) { struct decon_context *ctx = crtc->ctx; - if (!ctx->suspended) - return; - pm_runtime_get_sync(ctx->dev); decon_init(ctx); @@ -543,8 +515,6 @@ static void decon_atomic_enable(struct exynos_drm_crtc *crtc) decon_enable_vblank(ctx->crtc); decon_commit(ctx->crtc); - - ctx->suspended = false; } static void decon_atomic_disable(struct exynos_drm_crtc *crtc) @@ -552,9 +522,6 @@ static void decon_atomic_disable(struct exynos_drm_crtc *crtc) struct decon_context *ctx = crtc->ctx; int i; - if (ctx->suspended) - return; - /* * We need to make sure that all windows are disabled before we * suspend that connector. Otherwise we might try to scan from @@ -564,8 +531,6 @@ static void decon_atomic_disable(struct exynos_drm_crtc *crtc) decon_disable_plane(crtc, &ctx->planes[i]); pm_runtime_put_sync(ctx->dev); - - ctx->suspended = true; } static const struct exynos_drm_crtc_ops decon_crtc_ops = { @@ -687,7 +652,6 @@ static int decon_probe(struct platform_device *pdev) return -ENOMEM; ctx->dev = dev; - ctx->suspended = true; i80_if_timings = of_get_child_by_name(dev->of_node, "i80-if-timings"); if (i80_if_timings) -- 2.51.0