• Marek Vasut's avatar
    drm: mxsfb: Enable recovery on underflow · 0c9856e4
    Marek Vasut authored
    There is some sort of corner case behavior of the controller,
    which could rarely be triggered at least on i.MX6SX connected
    to 800x480 DPI panel and i.MX8MM connected to DPI->DSI->LVDS
    bridged 1920x1080 panel (and likely on other setups too), where
    the image on the panel shifts to the right and wraps around.
    This happens either when the controller is enabled on boot or
    even later during run time. The condition does not correct
    itself automatically, i.e. the display image remains shifted.
    
    It seems this problem is known and is due to sporadic underflows
    of the LCDIF FIFO. While the LCDIF IP does have underflow/overflow
    IRQs, neither of the IRQs trigger and neither IRQ status bit is
    asserted when this condition occurs.
    
    All known revisions of the LCDIF IP have CTRL1 RECOVER_ON_UNDERFLOW
    bit, which is described in the reference manual since i.MX23 as
    "
      Set this bit to enable the LCDIF block to recover in the next
      field/frame if there was an underflow in the current field/frame.
    "
    Enable this bit to mitigate the sporadic underflows.
    
    Fixes: 45d59d70
    
     ("drm: Add new driver for MXSFB controller")
    Signed-off-by: default avatarMarek 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: default avatarLucas Stach <l.stach@pengutronix.de>
    Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Reviewed-by: default avatarJagan Teki <jagan@amarulasolutions.com>
    Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20210620224701.189289-1-marex@denx.de
    0c9856e4
mxsfb_kms.c 18 KB