Message ID | 20200701143131.841-1-yannick.fertre@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/bridge/synopsys: dsi: allow sending longer LP commands | expand |
On 7/1/20 4:31 PM, Yannick Fertre wrote: > From: Antonio Borneo <antonio.borneo@st.com> > > Current code does not properly computes the max length of LP > commands that can be send during H or V sync, and rely on static > values. > Limiting the max LP length to 4 byte during the V-sync is overly > conservative. > > Relax the limit and allows longer LP commands (16 bytes) to be > sent during V-sync. > > Signed-off-by: Antonio Borneo <antonio.borneo@st.com> > --- > drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > index d580b2aa4ce9..1a24ea648ef8 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > @@ -360,6 +360,15 @@ static void dw_mipi_message_config(struct dw_mipi_dsi *dsi, > bool lpm = msg->flags & MIPI_DSI_MSG_USE_LPM; > u32 val = 0; > > + /* > + * TODO dw drv improvements > + * largest packet sizes during hfp or during vsa/vpb/vfp > + * should be computed according to byte lane, lane number and only > + * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS) > + */ > + dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(16) > + | INVACT_LPCMD_TIME(4)); > + > if (msg->flags & MIPI_DSI_MSG_REQ_ACK) > val |= ACK_RQST_EN; > if (lpm) > @@ -611,14 +620,6 @@ static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi, > dsi_write(dsi, DSI_DPI_VCID, DPI_VCID(dsi->channel)); > dsi_write(dsi, DSI_DPI_COLOR_CODING, color); > dsi_write(dsi, DSI_DPI_CFG_POL, val); > - /* > - * TODO dw drv improvements > - * largest packet sizes during hfp or during vsa/vpb/vfp > - * should be computed according to byte lane, lane number and only > - * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS) > - */ > - dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(4) > - | INVACT_LPCMD_TIME(4)); > } > > static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi) > (+ Antonio) Hi Yannick & Antonio, Reviewed-by: Philippe Cornu <philippe.cornu@st.com> Tested-by: Philippe Cornu <philippe.cornu@st.com> (Tested with the 3 patches named drm/bridge/synopsys: dsi: allow LP commands in video mode drm/bridge/synopsys: dsi: allow sending longer LP commands drm/bridge/synopsys: dsi: add support for non-continuous HS clock on various dsi bridges + stm32mp157 disco board) Many thanks Philippe :-)
On 01/07/2020 16:31, Yannick Fertre wrote: > From: Antonio Borneo <antonio.borneo@st.com> > > Current code does not properly computes the max length of LP > commands that can be send during H or V sync, and rely on static > values. > Limiting the max LP length to 4 byte during the V-sync is overly > conservative. > > Relax the limit and allows longer LP commands (16 bytes) to be > sent during V-sync. > > Signed-off-by: Antonio Borneo <antonio.borneo@st.com> > --- > drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > index d580b2aa4ce9..1a24ea648ef8 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c > @@ -360,6 +360,15 @@ static void dw_mipi_message_config(struct dw_mipi_dsi *dsi, > bool lpm = msg->flags & MIPI_DSI_MSG_USE_LPM; > u32 val = 0; > > + /* > + * TODO dw drv improvements > + * largest packet sizes during hfp or during vsa/vpb/vfp > + * should be computed according to byte lane, lane number and only > + * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS) > + */ > + dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(16) > + | INVACT_LPCMD_TIME(4)); > + > if (msg->flags & MIPI_DSI_MSG_REQ_ACK) > val |= ACK_RQST_EN; > if (lpm) > @@ -611,14 +620,6 @@ static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi, > dsi_write(dsi, DSI_DPI_VCID, DPI_VCID(dsi->channel)); > dsi_write(dsi, DSI_DPI_COLOR_CODING, color); > dsi_write(dsi, DSI_DPI_CFG_POL, val); > - /* > - * TODO dw drv improvements > - * largest packet sizes during hfp or during vsa/vpb/vfp > - * should be computed according to byte lane, lane number and only > - * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS) > - */ > - dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(4) > - | INVACT_LPCMD_TIME(4)); > } > > static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi) > Tested on Amlogic AXG (v1.21a) Acked-by: Neil Armstrong <narmstrong@baylibre.com> Applying to drm-misc-next Thanks ! Neil
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c index d580b2aa4ce9..1a24ea648ef8 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c @@ -360,6 +360,15 @@ static void dw_mipi_message_config(struct dw_mipi_dsi *dsi, bool lpm = msg->flags & MIPI_DSI_MSG_USE_LPM; u32 val = 0; + /* + * TODO dw drv improvements + * largest packet sizes during hfp or during vsa/vpb/vfp + * should be computed according to byte lane, lane number and only + * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS) + */ + dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(16) + | INVACT_LPCMD_TIME(4)); + if (msg->flags & MIPI_DSI_MSG_REQ_ACK) val |= ACK_RQST_EN; if (lpm) @@ -611,14 +620,6 @@ static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi, dsi_write(dsi, DSI_DPI_VCID, DPI_VCID(dsi->channel)); dsi_write(dsi, DSI_DPI_COLOR_CODING, color); dsi_write(dsi, DSI_DPI_CFG_POL, val); - /* - * TODO dw drv improvements - * largest packet sizes during hfp or during vsa/vpb/vfp - * should be computed according to byte lane, lane number and only - * if sending lp cmds in high speed is enable (PHY_TXREQUESTCLKHS) - */ - dsi_write(dsi, DSI_DPI_LP_CMD_TIM, OUTVACT_LPCMD_TIME(4) - | INVACT_LPCMD_TIME(4)); } static void dw_mipi_dsi_packet_handler_config(struct dw_mipi_dsi *dsi)