[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20260124-exynos-dsim-fixes-v1-1-122d047a23d1@disroot.org>
Date: Sat, 24 Jan 2026 22:50:46 +0530
From: Kaustabh Chakraborty <kauschluss@...root.org>
To: Inki Dae <inki.dae@...sung.com>,
Jagan Teki <jagan@...rulasolutions.com>,
Marek Szyprowski <m.szyprowski@...sung.com>,
Andrzej Hajda <andrzej.hajda@...el.com>,
Neil Armstrong <neil.armstrong@...aro.org>, Robert Foss <rfoss@...nel.org>,
Laurent Pinchart <Laurent.pinchart@...asonboard.com>,
Jonas Karlman <jonas@...boo.se>, Jernej Skrabec <jernej.skrabec@...il.com>,
Maarten Lankhorst <maarten.lankhorst@...ux.intel.com>,
Maxime Ripard <mripard@...nel.org>, Thomas Zimmermann <tzimmermann@...e.de>,
David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>
Cc: dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org,
Kaustabh Chakraborty <kauschluss@...root.org>, stable@...r.kernel.org
Subject: [PATCH 1/3] drm/bridge: samsung-dsim: move bridge init sequence to
atomic_enable
Since commit c9b1150a68d9 ("drm/atomic-helper: Re-order bridge chain
pre-enable and post-disable"), pre-enable sequence is called before the
CRTC is enabled.
This causes unintended side-effects (abberation among potentially other
things) in the display when samsung_dsim_init() is called in the
pre-enable part of the sequence. Call it in samsung_dsim_atomic_enable()
instead.
Cc: stable@...r.kernel.org # v6.17 and later
Signed-off-by: Kaustabh Chakraborty <kauschluss@...root.org>
---
drivers/gpu/drm/bridge/samsung-dsim.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c
index 1d85e706c74b9..975f8b50ae660 100644
--- a/drivers/gpu/drm/bridge/samsung-dsim.c
+++ b/drivers/gpu/drm/bridge/samsung-dsim.c
@@ -1655,6 +1655,13 @@ static void samsung_dsim_atomic_pre_enable(struct drm_bridge *bridge,
}
dsi->state |= DSIM_STATE_ENABLED;
+}
+
+static void samsung_dsim_atomic_enable(struct drm_bridge *bridge,
+ struct drm_atomic_state *state)
+{
+ struct samsung_dsim *dsi = bridge_to_dsi(bridge);
+ int ret;
/*
* For Exynos-DSIM the downstream bridge, or panel are expecting
@@ -1665,12 +1672,6 @@ static void samsung_dsim_atomic_pre_enable(struct drm_bridge *bridge,
if (ret)
return;
}
-}
-
-static void samsung_dsim_atomic_enable(struct drm_bridge *bridge,
- struct drm_atomic_state *state)
-{
- struct samsung_dsim *dsi = bridge_to_dsi(bridge);
samsung_dsim_set_display_mode(dsi);
samsung_dsim_set_display_enable(dsi, true);
--
2.52.0
Powered by blists - more mailing lists