11.03.2026 10:48, Tomi Valkeinen пишет:
> The driver prints a warning if MIPI_DSI_CLOCK_NON_CONTINUOUS is set, and
> falls back to continuous clock mode. This was added in commit
> fbc5a90e82c1 ("drm/bridge: tc358768: Disable non-continuous clock mode").
>
> However, there have been multiple changes to the driver since then, and
> at least in my setup, non-continuous clock mode works: I can see an
> image on the panel, and I can see the clock lanes being non-continuous
> with an oscilloscope.
>
> So, let's enable MIPI_DSI_CLOCK_NON_CONTINUOUS support.
>
> Cc: Dmitry Osipenko <[email protected]>
> Tested-by: João Paulo Gonçalves <[email protected]> # Toradex Verdin
> AM62
> Reviewed-by: Francesco Dolcini <[email protected]>
> Signed-off-by: Tomi Valkeinen <[email protected]>
> ---
> drivers/gpu/drm/bridge/tc358768.c | 10 ++--------
> 1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/tc358768.c
> b/drivers/gpu/drm/bridge/tc358768.c
> index 755ed6483b2e..a276fbc75dde 100644
> --- a/drivers/gpu/drm/bridge/tc358768.c
> +++ b/drivers/gpu/drm/bridge/tc358768.c
> @@ -722,7 +722,6 @@ static void tc358768_bridge_atomic_pre_enable(struct
> drm_bridge *bridge,
> {
> struct tc358768_priv *priv = bridge_to_tc358768(bridge);
> struct mipi_dsi_device *dsi_dev = priv->output.dev;
> - unsigned long mode_flags = dsi_dev->mode_flags;
> u32 val, mask, val2, lptxcnt, hact, data_type;
> s32 raw_val;
> struct drm_crtc_state *crtc_state;
> @@ -744,11 +743,6 @@ static void tc358768_bridge_atomic_pre_enable(struct
> drm_bridge *bridge,
> u32 dsi_vsdly;
> const u32 internal_dly = 40;
>
> - if (mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS) {
> - dev_warn_once(dev, "Non-continuous mode unimplemented, falling
> back to continuous\n");
> - mode_flags &= ~MIPI_DSI_CLOCK_NON_CONTINUOUS;
> - }
> -
> tc358768_hw_enable(priv);
>
> ret = tc358768_sw_reset(priv);
> @@ -1032,7 +1026,7 @@ static void tc358768_bridge_atomic_pre_enable(struct
> drm_bridge *bridge,
> tc358768_write(priv, TC358768_HSTXVREGEN, val);
>
> tc358768_write(priv, TC358768_TXOPTIONCNTRL,
> - (mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS) ? 0 :
> BIT(0));
> + (dsi_dev->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS) ?
> 0 : BIT(0));
>
> /* TXTAGOCNT[26:16] RXTASURECNT[10:0] */
> val = tc358768_ps_to_ns((lptxcnt + 1) * hsbyteclk_ps * 4);
> @@ -1099,7 +1093,7 @@ static void tc358768_bridge_atomic_pre_enable(struct
> drm_bridge *bridge,
>
> val |= TC358768_DSI_CONTROL_TXMD;
>
> - if (!(mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS))
> + if (!(dsi_dev->mode_flags & MIPI_DSI_CLOCK_NON_CONTINUOUS))
> val |= TC358768_DSI_CONTROL_HSCKMD;
>
> if (dsi_dev->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET)
>
Acked-by: Dmitry Osipenko <[email protected]>