[PATCH] drm: mxsfb: Enable recovery on underflow

Marek Vasut marex at denx.de
Fri Jul 2 19:12:45 UTC 2021


On 7/1/21 12:49 AM, Marek Vasut wrote:
> On 6/21/21 2:13 PM, Laurent Pinchart wrote:
>> Hi Marek,
>>
>> Thank you for the patch.
>>
>> On Mon, Jun 21, 2021 at 12:47:01AM +0200, Marek Vasut wrote:
>>> 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: 45d59d704080 ("drm: Add new driver for MXSFB controller")
>>> Signed-off-by: Marek Vasut <marex at denx.de>
>>> Cc: Daniel Abrecht <public at danielabrecht.ch>
>>> Cc: Emil Velikov <emil.l.velikov at gmail.com>
>>> Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
>>> Cc: Lucas Stach <l.stach at pengutronix.de>
>>> Cc: Stefan Agner <stefan at agner.ch>
>>> ---
>>>   drivers/gpu/drm/mxsfb/mxsfb_kms.c  | 29 +++++++++++++++++++++++++++++
>>>   drivers/gpu/drm/mxsfb/mxsfb_regs.h |  1 +
>>>   2 files changed, 30 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/mxsfb/mxsfb_kms.c 
>>> b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
>>> index 300e7bab0f43..01e0f525360f 100644
>>> --- a/drivers/gpu/drm/mxsfb/mxsfb_kms.c
>>> +++ b/drivers/gpu/drm/mxsfb/mxsfb_kms.c
>>> @@ -115,6 +115,35 @@ static void mxsfb_enable_controller(struct 
>>> mxsfb_drm_private *mxsfb)
>>>       reg |= VDCTRL4_SYNC_SIGNALS_ON;
>>>       writel(reg, mxsfb->base + LCDC_VDCTRL4);
>>> +    /*
>>> +     * Enable recovery on underflow.
>>> +     *
>>> +     * 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.
>>> +     */
>>> +    reg = readl(mxsfb->base + LCDC_CTRL1);
>>> +    reg |= CTRL1_RECOVER_ON_UNDERFLOW;
>>> +    writel(reg, mxsfb->base + LCDC_CTRL1);
>>
>> Looks good to me. Thanks for the detailed explanation.
>>
>> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> 
> So who do I CC to pick it? Robert ? There are a few more mxsfb fixes 
> which are RB'd and would be nice if they were picked too.

+CC Daniel, can those RB'd mxsfb patches be picked ?


More information about the dri-devel mailing list