drm: bridge: samsung-dsim: Drain command transfer FIFO before transfer
authorMarek Vasut <marex@denx.de>
Thu, 15 Jun 2023 20:15:11 +0000 (22:15 +0200)
committerMarek Vasut <marex@denx.de>
Sun, 2 Jul 2023 00:58:21 +0000 (02:58 +0200)
Wait until the command transfer FIFO is empty before loading in the next
command. The previous behavior where the code waited until command transfer
FIFO was not full suffered from transfer corruption, where the last command
in the FIFO could be overwritten in case the FIFO indicates not full, but
also does not have enough space to store another transfer yet.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
Tested-by: Jagan Teki <jagan@amarulasolutions.com> # imx8mm-icore
Link: https://patchwork.freedesktop.org/patch/msgid/20230615201511.565923-1-marex@denx.de
drivers/gpu/drm/bridge/samsung-dsim.c

index 043b8109e64aa9606fab6fe1acc04d7cd7af83e2..9b7a00bafeaaac0833c29cdd03f0a4fbc3db0a34 100644 (file)
@@ -1009,7 +1009,7 @@ static int samsung_dsim_wait_for_hdr_fifo(struct samsung_dsim *dsi)
        do {
                u32 reg = samsung_dsim_read(dsi, DSIM_FIFOCTRL_REG);
 
-               if (!(reg & DSIM_SFR_HEADER_FULL))
+               if (reg & DSIM_SFR_HEADER_EMPTY)
                        return 0;
 
                if (!cond_resched())