drm: mxsfb: Clear FIFO_CLEAR bit
authorMarek Vasut <marex@denx.de>
Sun, 20 Jun 2021 22:49:46 +0000 (00:49 +0200)
committerSam Ravnborg <sam@ravnborg.org>
Tue, 27 Jul 2021 19:15:24 +0000 (21:15 +0200)
Make sure the FIFO_CLEAR bit is latched in when configuring the
controller, so that the FIFO is really cleared. And then clear
the FIFO_CLEAR bit, since it is not self-clearing.

Fixes: 45d59d704080 ("drm: Add new driver for MXSFB controller")
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Daniel Abrecht <public@danielabrecht.ch>
Cc: Emil Velikov <emil.l.velikov@gmail.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Stefan Agner <stefan@agner.ch>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
Tested-by: Jagan Teki <jagan@amarulasolutions.com> # i.Core MX8MM
Acked-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20210620224946.189524-1-marex@denx.de
drivers/gpu/drm/mxsfb/mxsfb_kms.c

index 4501deb..89dd618 100644 (file)
@@ -241,6 +241,9 @@ static void mxsfb_crtc_mode_set_nofb(struct mxsfb_drm_private *mxsfb,
 
        /* Clear the FIFOs */
        writel(CTRL1_FIFO_CLEAR, mxsfb->base + LCDC_CTRL1 + REG_SET);
+       readl(mxsfb->base + LCDC_CTRL1);
+       writel(CTRL1_FIFO_CLEAR, mxsfb->base + LCDC_CTRL1 + REG_CLR);
+       readl(mxsfb->base + LCDC_CTRL1);
 
        if (mxsfb->devdata->has_overlay)
                writel(0, mxsfb->base + LCDC_AS_CTRL);