Re: [PATCH v2] drm: lcdif: Set and enable FIFO Panic threshold

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2022-11-01 at 16:26 +0100, Marek Vasut wrote:
> In case the LCDIFv3 is used to drive a 4k panel via i.MX8MP HDMI
> bridge,
> the LCDIFv3 becomes susceptible to FIFO underflows, these lead to
> nasty
> flicker of the image on the panel, or image being shifted by half
> frame
> horizontally every second frame. The flicker can be easily triggered
> by
> running 3D application on top of weston compositor, like neverball or
> chromium. Surprisingly glmark2-es2-wayland or glmark2-es2-drm does
> not
> trigger this effect so easily.
> 
> Configure the FIFO Panic threshold register and enable the FIFO Panic
> mode, which internally boosts the NoC interconnect priority for
> LCDIFv3
> transactions in case of possible underflow. This mitigates the
> flicker
> effect on 4k panels as well.
> 
> Fixes: 9db35bb349a0 ("drm: lcdif: Add support for i.MX8MP LCDIF
> variant")
> Signed-off-by: Marek Vasut <marex@xxxxxxx>
> ---
> Cc: Kieran Bingham <kieran.bingham@xxxxxxxxxxxxxxxx>
> Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
> Cc: Liu Ying <victor.liu@xxxxxxx>
> Cc: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
> Cc: Marco Felsch <m.felsch@xxxxxxxxxxxxxx>
> Cc: Martyn Welch <martyn.welch@xxxxxxxxxxxxx>
> Cc: Peng Fan <peng.fan@xxxxxxx>
> Cc: Sam Ravnborg <sam@xxxxxxxxxxxx>
> ---
> V2: - Include bitfield.h to always obtain FIELD_PREP definition
>     - Rename PANIC0_THRES_RANGE to PANIC0_THRES_MAX and set to 511
>     - Move threshold configuration and enable before FIFO and
>       scanout enable and vice versa for disable
> ---
>  drivers/gpu/drm/mxsfb/lcdif_kms.c  | 16 ++++++++++++++++
>  drivers/gpu/drm/mxsfb/lcdif_regs.h |  1 +
>  2 files changed, 17 insertions(+)
> 
> diff --git a/drivers/gpu/drm/mxsfb/lcdif_kms.c
> b/drivers/gpu/drm/mxsfb/lcdif_kms.c
> index a5302006c02cd..09280c6c3bbc1 100644
> --- a/drivers/gpu/drm/mxsfb/lcdif_kms.c
> +++ b/drivers/gpu/drm/mxsfb/lcdif_kms.c
> @@ -5,6 +5,7 @@
>   * This code is based on drivers/gpu/drm/mxsfb/mxsfb*
>   */
>  
> +#include <linux/bitfield.h>
>  #include <linux/clk.h>
>  #include <linux/io.h>
>  #include <linux/iopoll.h>
> @@ -334,6 +335,18 @@ static void lcdif_enable_controller(struct
> lcdif_drm_private *lcdif)
>  {
>  	u32 reg;
>  
> +	/* Set FIFO Panic watermarks, low 1/3, high 2/3 . */
> +	writel(FIELD_PREP(PANIC0_THRES_LOW_MASK, 1 * PANIC0_THRES_MAX /
> 3) |
> +	       FIELD_PREP(PANIC0_THRES_HIGH_MASK, 2 * PANIC0_THRES_MAX
> / 3),

Like I mentioned in v1 review cycle, I still think it's better to
define PANIC0_THRES_{LOW,HIGH}(n) macros in lcdif_regs.h instead of
using FIELD_PREP here directly.  Otherwise,

Tested-by: Liu Ying <victor.liu@xxxxxxx> # i.MX8mp EVK
"koe,tx26d202vm0bwa" LVDS panel fb console
Reviewed-by: Liu Ying <victor.liu@xxxxxxx>

[...]

Regards,
Liu Ying




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux