diff options
| author | Padmanabhan Komanduru <pkomandu@codeaurora.org> | 2016-02-29 15:18:04 +0530 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:03:54 -0700 |
| commit | ba9fc59027ac7c74cf98025147469439b67ad55c (patch) | |
| tree | fbc34a7e8fded848e9eb7e0fb85adbb71b670caf | |
| parent | d0666f41e497c97047edf97d7688b7c770cefb24 (diff) | |
msm: mdss: avoid DSI FIFO errors during dynamic refresh operation
When dynamic refresh operation is under progress, it is sometimes
expected that the DSI h/w throws DSI FIFO underflow errors. Avoid
throwing DSI FIFO errors on console for this case. Just clear the
DSI error interrupt and do not trigger the DSI underflow recovery
process.
Change-Id: I03b8764397378104981c1a5a6e627e90f53222ee
Signed-off-by: Padmanabhan Komanduru <pkomandu@codeaurora.org>
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_dsi_host.c | 16 |
1 files changed, 14 insertions, 2 deletions
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 */ |
