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]>

Reply via email to