From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
To: Jyri Sarha <jyri.sarha@iki.fi>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>,
Simona Vetter <simona@ffwll.ch>, Vinod Koul <vkoul@kernel.org>,
Kishon Vijay Abraham I <kishon@kernel.org>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>,
Jayesh Choudhary <j-choudhary@ti.com>,
Dmitry Baryshkov <lumag@kernel.org>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
linux-phy@lists.infradead.org,
Francesco Dolcini <francesco@dolcini.it>,
Aradhya Bhatia <aradhya.bhatia@linux.dev>,
Devarsh Thakkar <devarsht@ti.com>,
Parth Pancholi <parth.pancholi@toradex.com>,
Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Subject: [PATCH v4 13/17] drm/bridge: cdns-dsi: Fix REG_WAKEUP_TIME value
Date: Wed, 18 Jun 2025 12:59:16 +0300 [thread overview]
Message-ID: <20250618-cdns-dsi-impro-v4-13-862c841dbe02@ideasonboard.com> (raw)
In-Reply-To: <20250618-cdns-dsi-impro-v4-0-862c841dbe02@ideasonboard.com>
The driver tries to calculate the value for REG_WAKEUP_TIME. However,
the calculation itself is not correct, and to add on it, the resulting
value is almost always larger than the field's size, so the actual
result is more or less random.
According to the docs, figuring out the value for REG_WAKEUP_TIME
requires HW characterization and there's no way to have a generic
algorithm to come up with the value. That doesn't help at all...
However, we know that the value must be smaller than the line time, and,
at least in my understanding, the proper value for it is quite small.
Testing shows that setting it to 1/10 of the line time seems to work
well. All video modes from my HDMI monitor work with this algorithm.
Hopefully we'll get more information on how to calculate the value, and
we can then update this.
Tested-by: Parth Pancholi <parth.pancholi@toradex.com>
Tested-by: Jayesh Choudhary <j-choudhary@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
index d49b4789a074..6bc0a0d00d69 100644
--- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
+++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
@@ -793,7 +793,13 @@ static void cdns_dsi_bridge_atomic_pre_enable(struct drm_bridge *bridge,
tx_byte_period = DIV_ROUND_DOWN_ULL((u64)NSEC_PER_SEC * 8,
phy_cfg->hs_clk_rate);
- reg_wakeup = (phy_cfg->hs_prepare + phy_cfg->hs_zero) / tx_byte_period;
+
+ /*
+ * Estimated time [in clock cycles] to perform LP->HS on D-PHY.
+ * It is not clear how to calculate this, so for now,
+ * set it to 1/10 of the total number of clocks in a line.
+ */
+ reg_wakeup = dsi_cfg.htotal / nlanes / 10;
writel(REG_WAKEUP_TIME(reg_wakeup) | REG_LINE_DURATION(tmp),
dsi->regs + VID_DPHY_TIME);
--
2.43.0
next prev parent reply other threads:[~2025-06-18 9:59 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-18 9:59 [PATCH v4 00/17] drm/bridge: cdns-dsi: Make it work a bit better Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 01/17] drm/bridge: cdns-dsi: Fix the _atomic_check() Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 02/17] drm/tidss: Fix missing includes and struct decls Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 03/17] drm/tidss: Use the crtc_* timings when programming the HW Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 04/17] phy: cdns-dphy: Store hs_clk_rate and return it Tomi Valkeinen
2025-06-26 23:32 ` Vinod Koul
2025-06-18 9:59 ` [PATCH v4 05/17] phy: cdns-dphy: Remove leftover code Tomi Valkeinen
2025-06-26 23:32 ` Vinod Koul
[not found] ` <cd59d7b0-6b31-4cbd-93e8-df713a9210f6@ideasonboard.com>
2025-07-23 8:49 ` Tomi Valkeinen
2025-07-23 12:28 ` Vinod Koul
2025-06-18 9:59 ` [PATCH v4 06/17] drm/bridge: cdns-dsi: Remove extra line at the end of the file Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 07/17] drm/bridge: cdns-dsi: Drop crtc_* code Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 08/17] drm/bridge: cdns-dsi: Remove broken fifo emptying check Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 09/17] drm/bridge: cdns-dsi: Drop checks that shouldn't be in .mode_valid() Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 10/17] drm/bridge: cdns-dsi: Update htotal in cdns_dsi_mode2cfg() Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 11/17] drm/bridge: cdns-dsi: Drop cdns_dsi_adjust_phy_config() Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 12/17] drm/bridge: cdns-dsi: Adjust mode to negative syncs Tomi Valkeinen
2025-06-18 9:59 ` Tomi Valkeinen [this message]
2025-06-18 9:59 ` [PATCH v4 14/17] drm/bridge: cdns-dsi: Use video mode and clean up cdns_dsi_mode2cfg() Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 15/17] drm/bridge: cdns-dsi: Fix event mode Tomi Valkeinen
2025-06-24 8:57 ` Jayesh Choudhary
2025-06-18 9:59 ` [PATCH v4 16/17] drm/bridge: cdns-dsi: Tune adjusted_mode->clock according to dsi needs Tomi Valkeinen
2025-06-18 9:59 ` [PATCH v4 17/17] drm/bridge: cdns-dsi: Don't fail on MIPI_DSI_MODE_VIDEO_BURST Tomi Valkeinen
2025-07-17 9:36 ` Devarsh Thakkar
2025-07-17 10:29 ` Tomi Valkeinen
2025-07-17 13:41 ` Devarsh Thakkar
2025-06-24 9:00 ` [PATCH v4 00/17] drm/bridge: cdns-dsi: Make it work a bit better Jayesh Choudhary
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250618-cdns-dsi-impro-v4-13-862c841dbe02@ideasonboard.com \
--to=tomi.valkeinen@ideasonboard.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=aradhya.bhatia@linux.dev \
--cc=devarsht@ti.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=francesco@dolcini.it \
--cc=j-choudhary@ti.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=jyri.sarha@iki.fi \
--cc=kishon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-phy@lists.infradead.org \
--cc=lumag@kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=parth.pancholi@toradex.com \
--cc=rfoss@kernel.org \
--cc=simona@ffwll.ch \
--cc=tzimmermann@suse.de \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).