public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/1] drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output
@ 2026-04-12  5:38 Sudarshan Shetty
  2026-04-12  5:38 ` [PATCH v3 1/1] " Sudarshan Shetty
  0 siblings, 1 reply; 5+ messages in thread
From: Sudarshan Shetty @ 2026-04-12  5:38 UTC (permalink / raw)
  To: andrzej.hajda, neil.armstrong, rfoss
  Cc: Laurent.pinchart, jonas, jernej.skrabec, maarten.lankhorst,
	mripard, tzimmermann, airlied, simona, marex, valentin,
	luca.ceresoli, philippe.schenker, alexander.stein, dri-devel,
	linux-kernel, Sudarshan Shetty

Hi all,
 
This patch refines dual-link LVDS support in the SN65DSI83/84
DSI-to-LVDS bridge driver.
 
Recent upstream changes added support for dual-link LVDS timing
adjustments and related fixes:
 - Halving horizontal timing parameters
 - Test pattern handling adjustments
 - DSI clock range correction
 
However, during validation on our platform, LVDS output remained
unstable for certain panels due to the DSI mode configuration.
 
Specifically, the following flags were found to cause issues:
 
 - MIPI_DSI_MODE_VIDEO_NO_HFP
 - MIPI_DSI_MODE_VIDEO_NO_HBP
 
These disable transmission of horizontal front porch (HFP) and
back porch (HBP) timings over the DSI link. The SN65DSI bridge
relies on complete horizontal timing information to reconstruct
LVDS timings, and omitting these parameters results in incorrect
or unstable output.
 
Additionally:
 
 - MIPI_DSI_MODE_VIDEO_BURST
 
While supported by the hardware, burst mode operation depends on
continuous clocking from the DSI host. In practice, this may lead
to instability depending on the host controller implementation,
as the link may transition to LP mode between bursts.
 
Removing these flags ensures that:
 - Full timing information is transmitted
 - The bridge can correctly reconstruct LVDS timings
 - Output remains stable across tested panels
 
This patch updates the DSI mode configuration accordingly.
 
This patch is based on recent SN65DSI83 dual-link LVDS fixes:
 - https://lore.kernel.org/lkml/20260309-ti-sn65dsi83-dual-lvds-fixes-and-test-pattern-v2-1-e6aaa7e1d181@bootlin.com/ 

Changes in v3:
 - Rebased on top of latest upstream changes
 - Dropped previously proposed dual-link DT property and related handling
   as equivalent functionality is now available upstream
 - Refined DSI mode flag configuration to ensure stable LVDS output
 - Added detailed justification for removing NO_HFP/NO_HBP and BURST mode
 
Changes in v2:
 - Introduced ti,dual-link-video-mode DT property
 - Added DT binding documentation for the new property
 - Update driver to read the DT property and apply dual-link
   configuration conditionally
 - Adjust DSI mode flags when dual-link video mode is enabled
 - Update commit messages 

Thanks,
Anusha

Sudarshan Shetty (1):
  drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output

 drivers/gpu/drm/bridge/ti-sn65dsi83.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/1] drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output
  2026-04-12  5:38 [PATCH v3 0/1] drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output Sudarshan Shetty
@ 2026-04-12  5:38 ` Sudarshan Shetty
  2026-04-15  7:13   ` Luca Ceresoli
  2026-04-15 13:51   ` Alexander Stein
  0 siblings, 2 replies; 5+ messages in thread
From: Sudarshan Shetty @ 2026-04-12  5:38 UTC (permalink / raw)
  To: andrzej.hajda, neil.armstrong, rfoss
  Cc: Laurent.pinchart, jonas, jernej.skrabec, maarten.lankhorst,
	mripard, tzimmermann, airlied, simona, marex, valentin,
	luca.ceresoli, philippe.schenker, alexander.stein, dri-devel,
	linux-kernel, Sudarshan Shetty

The current DSI mode configuration enables VIDEO_BURST and disables
horizontal front porch (HFP) and back porch (HBP) transmission using
MIPI_DSI_MODE_VIDEO_NO_HFP and MIPI_DSI_MODE_VIDEO_NO_HBP.

However, the SN65DSI83/84 bridge relies on receiving full horizontal
timing information over DSI in order to correctly reconstruct the LVDS
output timings. When HFP and HBP are not transmitted, the bridge cannot
recreate the required timing parameters, resulting in unstable or
missing display output on some panels.

Additionally, while burst mode is supported by the hardware, its use
depends on continuous clock behavior from the DSI host. In practice,
burst mode may introduce instability depending on the host controller
implementation, as the DSI link may transition to low-power state
between bursts.

In testing, removing burst mode and ensuring full horizontal timing
transmission results in stable LVDS output across affected panels.

Update the DSI mode flags to:
  - Drop MIPI_DSI_MODE_VIDEO_BURST
  - Drop MIPI_DSI_MODE_VIDEO_NO_HFP
  - Drop MIPI_DSI_MODE_VIDEO_NO_HBP

This aligns with common system configurations where non-burst mode is
preferred and full timing information is transmitted over DSI.

Signed-off-by: Sudarshan Shetty <tessolveupstream@gmail.com>
---
 drivers/gpu/drm/bridge/ti-sn65dsi83.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
index fef6bca3273f..9d51dc2b75bc 100644
--- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c
+++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
@@ -976,9 +976,8 @@ static int sn65dsi83_host_attach(struct sn65dsi83 *ctx)
 
 	dsi->lanes = dsi_lanes;
 	dsi->format = MIPI_DSI_FMT_RGB888;
-	dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
-			  MIPI_DSI_MODE_VIDEO_NO_HFP | MIPI_DSI_MODE_VIDEO_NO_HBP |
-			  MIPI_DSI_MODE_VIDEO_NO_HSA | MIPI_DSI_MODE_NO_EOT_PACKET;
+	dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_NO_HSA |
+			  MIPI_DSI_MODE_NO_EOT_PACKET;
 
 	ret = devm_mipi_dsi_attach(dev, dsi);
 	if (ret < 0) {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/1] drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output
  2026-04-12  5:38 ` [PATCH v3 1/1] " Sudarshan Shetty
@ 2026-04-15  7:13   ` Luca Ceresoli
  2026-04-15  8:07     ` Luca Ceresoli
  2026-04-15 13:51   ` Alexander Stein
  1 sibling, 1 reply; 5+ messages in thread
From: Luca Ceresoli @ 2026-04-15  7:13 UTC (permalink / raw)
  To: Sudarshan Shetty, andrzej.hajda, neil.armstrong, rfoss
  Cc: Laurent.pinchart, jonas, jernej.skrabec, maarten.lankhorst,
	mripard, tzimmermann, airlied, simona, marex, valentin,
	philippe.schenker, alexander.stein, dri-devel, linux-kernel

Hello Sudarshan,

On Sun Apr 12, 2026 at 7:38 AM CEST, Sudarshan Shetty wrote:
> The current DSI mode configuration enables VIDEO_BURST and disables
> horizontal front porch (HFP) and back porch (HBP) transmission using
> MIPI_DSI_MODE_VIDEO_NO_HFP and MIPI_DSI_MODE_VIDEO_NO_HBP.
>
> However, the SN65DSI83/84 bridge relies on receiving full horizontal
> timing information over DSI in order to correctly reconstruct the LVDS
> output timings. When HFP and HBP are not transmitted, the bridge cannot
> recreate the required timing parameters, resulting in unstable or
> missing display output on some panels.
>
> Additionally, while burst mode is supported by the hardware, its use
> depends on continuous clock behavior from the DSI host. In practice,
> burst mode may introduce instability depending on the host controller
> implementation, as the DSI link may transition to low-power state
> between bursts.
>
> In testing, removing burst mode and ensuring full horizontal timing
> transmission results in stable LVDS output across affected panels.
>
> Update the DSI mode flags to:
>   - Drop MIPI_DSI_MODE_VIDEO_BURST
>   - Drop MIPI_DSI_MODE_VIDEO_NO_HFP
>   - Drop MIPI_DSI_MODE_VIDEO_NO_HBP
>
> This aligns with common system configurations where non-burst mode is
> preferred and full timing information is transmitted over DSI.
>
> Signed-off-by: Sudarshan Shetty <tessolveupstream@gmail.com>

Thanks for having gone into the details and provide a good explanation for
the removal of these three flags.

It would be still great to have authoritative info from TI, possibly as an
update to the documentation.

I managed to test on a board with i.MX93, a TI SN65DSI84 and a 1920x1080p60
panel, and:

 - no image shown with the current mainline driver
 - it works by removing only MIPI_DSI_MODE_VIDEO_BURST (my current setup)
 - it works with this patch applied

Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # imx93 1920x1080p60

Luca

--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/1] drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output
  2026-04-15  7:13   ` Luca Ceresoli
@ 2026-04-15  8:07     ` Luca Ceresoli
  0 siblings, 0 replies; 5+ messages in thread
From: Luca Ceresoli @ 2026-04-15  8:07 UTC (permalink / raw)
  To: Luca Ceresoli, Sudarshan Shetty, andrzej.hajda, neil.armstrong,
	rfoss
  Cc: Laurent.pinchart, jonas, jernej.skrabec, maarten.lankhorst,
	mripard, tzimmermann, airlied, simona, marex, valentin,
	philippe.schenker, alexander.stein, dri-devel, linux-kernel

On Wed Apr 15, 2026 at 9:13 AM CEST, Luca Ceresoli wrote:
> Hello Sudarshan,
>
> On Sun Apr 12, 2026 at 7:38 AM CEST, Sudarshan Shetty wrote:
>> The current DSI mode configuration enables VIDEO_BURST and disables
>> horizontal front porch (HFP) and back porch (HBP) transmission using
>> MIPI_DSI_MODE_VIDEO_NO_HFP and MIPI_DSI_MODE_VIDEO_NO_HBP.
>>
>> However, the SN65DSI83/84 bridge relies on receiving full horizontal
>> timing information over DSI in order to correctly reconstruct the LVDS
>> output timings. When HFP and HBP are not transmitted, the bridge cannot
>> recreate the required timing parameters, resulting in unstable or
>> missing display output on some panels.
>>
>> Additionally, while burst mode is supported by the hardware, its use
>> depends on continuous clock behavior from the DSI host. In practice,
>> burst mode may introduce instability depending on the host controller
>> implementation, as the DSI link may transition to low-power state
>> between bursts.
>>
>> In testing, removing burst mode and ensuring full horizontal timing
>> transmission results in stable LVDS output across affected panels.
>>
>> Update the DSI mode flags to:
>>   - Drop MIPI_DSI_MODE_VIDEO_BURST
>>   - Drop MIPI_DSI_MODE_VIDEO_NO_HFP
>>   - Drop MIPI_DSI_MODE_VIDEO_NO_HBP
>>
>> This aligns with common system configurations where non-burst mode is
>> preferred and full timing information is transmitted over DSI.
>>
>> Signed-off-by: Sudarshan Shetty <tessolveupstream@gmail.com>
>
> Thanks for having gone into the details and provide a good explanation for
> the removal of these three flags.
>
> It would be still great to have authoritative info from TI, possibly as an
> update to the documentation.
>
> I managed to test on a board with i.MX93, a TI SN65DSI84 and a 1920x1080p60
> panel, and:
>
>  - no image shown with the current mainline driver
>  - it works by removing only MIPI_DSI_MODE_VIDEO_BURST (my current setup)
>  - it works with this patch applied
>
> Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # imx93 1920x1080p60

And tested on a i.MX8MP board too, with a different 1920x1080p60
panel. This one was working without the patch and is equally working with
the patch applied.

Tested-by: Luca Ceresoli <luca.ceresoli@bootlin.com> # imx8mp 1920x1080p60

Luca

--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/1] drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output
  2026-04-12  5:38 ` [PATCH v3 1/1] " Sudarshan Shetty
  2026-04-15  7:13   ` Luca Ceresoli
@ 2026-04-15 13:51   ` Alexander Stein
  1 sibling, 0 replies; 5+ messages in thread
From: Alexander Stein @ 2026-04-15 13:51 UTC (permalink / raw)
  To: andrzej.hajda, neil.armstrong, rfoss, Sudarshan Shetty
  Cc: Laurent.pinchart, jonas, jernej.skrabec, maarten.lankhorst,
	mripard, tzimmermann, airlied, simona, marex, valentin,
	luca.ceresoli, philippe.schenker, dri-devel, linux-kernel,
	Sudarshan Shetty

Am Sonntag, 12. April 2026, 07:38:11 CEST schrieb Sudarshan Shetty:
> The current DSI mode configuration enables VIDEO_BURST and disables
> horizontal front porch (HFP) and back porch (HBP) transmission using
> MIPI_DSI_MODE_VIDEO_NO_HFP and MIPI_DSI_MODE_VIDEO_NO_HBP.
> 
> However, the SN65DSI83/84 bridge relies on receiving full horizontal
> timing information over DSI in order to correctly reconstruct the LVDS
> output timings. When HFP and HBP are not transmitted, the bridge cannot
> recreate the required timing parameters, resulting in unstable or
> missing display output on some panels.
> 
> Additionally, while burst mode is supported by the hardware, its use
> depends on continuous clock behavior from the DSI host. In practice,
> burst mode may introduce instability depending on the host controller
> implementation, as the DSI link may transition to low-power state
> between bursts.
> 
> In testing, removing burst mode and ensuring full horizontal timing
> transmission results in stable LVDS output across affected panels.
> 
> Update the DSI mode flags to:
>   - Drop MIPI_DSI_MODE_VIDEO_BURST
>   - Drop MIPI_DSI_MODE_VIDEO_NO_HFP
>   - Drop MIPI_DSI_MODE_VIDEO_NO_HBP
> 
> This aligns with common system configurations where non-burst mode is
> preferred and full timing information is transmitted over DSI.
> 
> Signed-off-by: Sudarshan Shetty <tessolveupstream@gmail.com>

Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com># imx8mq, imx8mm, imx8mm

on both tm070jvhg33 and g133han01 displays.

Best regards
Alexander

> ---
>  drivers/gpu/drm/bridge/ti-sn65dsi83.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi83.c b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> index fef6bca3273f..9d51dc2b75bc 100644
> --- a/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> +++ b/drivers/gpu/drm/bridge/ti-sn65dsi83.c
> @@ -976,9 +976,8 @@ static int sn65dsi83_host_attach(struct sn65dsi83 *ctx)
>  
>  	dsi->lanes = dsi_lanes;
>  	dsi->format = MIPI_DSI_FMT_RGB888;
> -	dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST |
> -			  MIPI_DSI_MODE_VIDEO_NO_HFP | MIPI_DSI_MODE_VIDEO_NO_HBP |
> -			  MIPI_DSI_MODE_VIDEO_NO_HSA | MIPI_DSI_MODE_NO_EOT_PACKET;
> +	dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_NO_HSA |
> +			  MIPI_DSI_MODE_NO_EOT_PACKET;
>  
>  	ret = devm_mipi_dsi_attach(dev, dsi);
>  	if (ret < 0) {
> 


-- 
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
http://www.tq-group.com/



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-04-15 13:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-12  5:38 [PATCH v3 0/1] drm: bridge: ti-sn65dsi83: Fix DSI mode flags for stable LVDS output Sudarshan Shetty
2026-04-12  5:38 ` [PATCH v3 1/1] " Sudarshan Shetty
2026-04-15  7:13   ` Luca Ceresoli
2026-04-15  8:07     ` Luca Ceresoli
2026-04-15 13:51   ` Alexander Stein

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox