diff mbox series

[1/2] drm: bridge: dw-mipi-dsi: Handle NO_EOT_PACKET mode

Message ID 20230123184647.437965-1-jagan@edgeble.ai (mailing list archive)
State New, archived
Headers show
Series [1/2] drm: bridge: dw-mipi-dsi: Handle NO_EOT_PACKET mode | expand

Commit Message

Jagan Teki Jan. 23, 2023, 6:46 p.m. UTC
Many downstream bridges or panels followed by dw-mipi-dsi were
using MIPI_DSI_MODE_NO_EOT_PACKET.

So, handle the EOTP bits accordingly in the dw-mipi-dsi host.

Signed-off-by: Jagan Teki <jagan@edgeble.ai>
---
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Sam Ravnborg Jan. 23, 2023, 8:19 p.m. UTC | #1
Hi Jagan.

One small drive-by comment.

On Tue, Jan 24, 2023 at 12:16:46AM +0530, Jagan Teki wrote:
> Many downstream bridges or panels followed by dw-mipi-dsi were
> using MIPI_DSI_MODE_NO_EOT_PACKET.
> 
> So, handle the EOTP bits accordingly in the dw-mipi-dsi host.
> 
> Signed-off-by: Jagan Teki <jagan@edgeble.ai>
> ---
>  drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> index b2efecf7d160..47bd69d5ac99 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> @@ -664,7 +664,13 @@ static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi,
>  
>  static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi)
>  {
> -	dsi_write(dsi, DSI_PCKHDL_CFG, CRC_RX_EN | ECC_RX_EN | BTA_EN);
> +	u32 val;
> +
> +	val = CRC_RX_EN | ECC_RX_EN | BTA_EN | EOTP_TX_EN;
> +	if (dsi->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET)
> +		val &= ~EOTP_TX_EN;

I had to look twice because the bit is set, and then maybe cleared.

	val = CRC_RX_EN | ECC_RX_EN | BTA_EN | EOTP_TX_EN;
	if (!(dsi->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET))
		val |= EOTP_TX_EN;
?

	Sam
Jagan Teki Jan. 24, 2023, 6:31 a.m. UTC | #2
On Tue, 24 Jan 2023 at 01:49, Sam Ravnborg <sam@ravnborg.org> wrote:
>
> Hi Jagan.
>
> One small drive-by comment.
>
> On Tue, Jan 24, 2023 at 12:16:46AM +0530, Jagan Teki wrote:
> > Many downstream bridges or panels followed by dw-mipi-dsi were
> > using MIPI_DSI_MODE_NO_EOT_PACKET.
> >
> > So, handle the EOTP bits accordingly in the dw-mipi-dsi host.
> >
> > Signed-off-by: Jagan Teki <jagan@edgeble.ai>
> > ---
> >  drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 8 +++++++-
> >  1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> > index b2efecf7d160..47bd69d5ac99 100644
> > --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> > +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> > @@ -664,7 +664,13 @@ static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi,
> >
> >  static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi)
> >  {
> > -     dsi_write(dsi, DSI_PCKHDL_CFG, CRC_RX_EN | ECC_RX_EN | BTA_EN);
> > +     u32 val;
> > +
> > +     val = CRC_RX_EN | ECC_RX_EN | BTA_EN | EOTP_TX_EN;
> > +     if (dsi->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET)
> > +             val &= ~EOTP_TX_EN;
>
> I had to look twice because the bit is set, and then maybe cleared.
>
>         val = CRC_RX_EN | ECC_RX_EN | BTA_EN | EOTP_TX_EN;
>         if (!(dsi->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET))
>                 val |= EOTP_TX_EN;
> ?

What I understand is if NO_EOT means we need to disable EOTP_TX_EN bit
so the logic in the patch does the same. Enable the EOTP_TX_EN by
default and disable it if NO_EOT mode set.

Jagan.
diff mbox series

Patch

diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
index b2efecf7d160..47bd69d5ac99 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
@@ -664,7 +664,13 @@  static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi,
 
 static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi)
 {
-	dsi_write(dsi, DSI_PCKHDL_CFG, CRC_RX_EN | ECC_RX_EN | BTA_EN);
+	u32 val;
+
+	val = CRC_RX_EN | ECC_RX_EN | BTA_EN | EOTP_TX_EN;
+	if (dsi->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET)
+		val &= ~EOTP_TX_EN;
+
+	dsi_write(dsi, DSI_PCKHDL_CFG, val);
 }
 
 static void dw_mipi_dsi_video_packet_config(struct dw_mipi_dsi *dsi,