diff --git a/drivers/video/fbdev/msm/mdss_dsi_host.c b/drivers/video/fbdev/msm/mdss_dsi_host.c index 16207d7524f8..940b4b9db95e 100644 --- a/drivers/video/fbdev/msm/mdss_dsi_host.c +++ b/drivers/video/fbdev/msm/mdss_dsi_host.c @@ -2858,7 +2858,7 @@ void mdss_dsi_dln0_phy_err(struct mdss_dsi_ctrl_pdata *ctrl, bool print_en) void mdss_dsi_fifo_status(struct mdss_dsi_ctrl_pdata *ctrl) { - u32 status; + u32 status, isr; unsigned char *base; base = ctrl->ctrl_base; @@ -2868,7 +2868,19 @@ void mdss_dsi_fifo_status(struct mdss_dsi_ctrl_pdata *ctrl) /* fifo underflow, overflow and empty*/ if (status & 0xcccc4409) { MIPI_OUTP(base + 0x000c, status); - pr_err("%s: status=%x\n", __func__, status); + + /* + * When dynamic refresh operation is under progress, it is + * expected to have FIFO underflow error sometimes. In such + * cases, do not trigger the underflow recovery process and + * avoid printing the error status on console. + */ + isr = MIPI_INP(ctrl->ctrl_base + 0x0110); + if (isr & DSI_INTR_DYNAMIC_REFRESH_MASK) + status &= ~(0x88880000); + else + pr_err("%s: status=%x\n", __func__, status); + if (status & 0x44440000) {/* DLNx_HS_FIFO_OVERFLOW */ dsi_send_events(ctrl, DSI_EV_DLNx_FIFO_OVERFLOW, 0); /* Ignore FIFO EMPTY when overflow happens */