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>
This commit is contained in:
Padmanabhan Komanduru 2016-02-29 15:18:04 +05:30 committed by David Keitel
parent d0666f41e4
commit ba9fc59027

View file

@ -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 */