[PATCH v4 07/11] drm/bridge: cdns-dsi: Reset the DCS write FIFO

Tomi Valkeinen tomi.valkeinen at ideasonboard.com
Wed Jun 26 11:03:01 UTC 2024


On 22/06/2024 14:09, Aradhya Bhatia wrote:
> If any normal DCS write command has already been transmitted prior to
> transmitting any Zero-Parameter DCS command, then it is necessary to
> clear the TX FIFO by resetting it. Otherwise, the FIFO points to another
> location, and the DCS command transmits unnecessary data causing the
> panel to not work[0].
> 
> Allow the DCS Write FIFO in the cdns-dsi controller to reset as a rule,
> before any DCS packet is transmitted to the DSI peripheral.
> 
> [0]: Section 12.6.5.7.5.2: "Command Mode Settings" in TDA4VM Technical
>       Reference Manual: https://www.ti.com/lit/zip/spruil1

Hmm so if I read the doc right, it says: if sending zero-parameter dcs 
command, clear the FIFO and write zero to direct_cmd_wrdat.

Your patch seems to always clear the FIFO, not only for zero-parameter 
commands. Is that a problem (I don't think so, but...)?

Also, is the direct_cmd_wrdat written at all when sending zero-parameter 
dcs command?

  Tomi

> 
> Signed-off-by: Aradhya Bhatia <a-bhatia1 at ti.com>
> ---
>   drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
> index 126e4bccd868..cad0c1478ef0 100644
> --- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
> +++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
> @@ -1018,6 +1018,9 @@ static ssize_t cdns_dsi_transfer(struct mipi_dsi_host *host,
>   
>   	cdns_dsi_init_link(dsi);
>   
> +	/* Reset the DCS Write FIFO */
> +	writel(0x00, dsi->regs + DIRECT_CMD_FIFO_RST);
> +
>   	ret = mipi_dsi_create_packet(&packet, msg);
>   	if (ret)
>   		goto out;



More information about the dri-devel mailing list