msm: mdss: mask DSI FIFO overflow errors during BTA operation
For some DSI panels where porch values are less, if BTA operation does not finish in BLLP period, then fake overflow errors are expected. So disable DSI FIFO overflow errors before triggering BTA and enable it back once BTA acknowledgment is received for video mode panels. Change-Id: If63ac6435f5786c834fe797478c38a9a2f51076b Signed-off-by: Sandeep Panda <spanda@codeaurora.org>
This commit is contained in:
parent
88fee0f381
commit
73ab4eae31
1 changed files with 14 additions and 0 deletions
|
@ -1437,6 +1437,7 @@ int mdss_dsi_bta_status_check(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
|
|||
{
|
||||
int ret = 0;
|
||||
unsigned long flag;
|
||||
int ignore_underflow = 0;
|
||||
|
||||
if (ctrl_pdata == NULL) {
|
||||
pr_err("%s: Invalid input data\n", __func__);
|
||||
|
@ -1451,6 +1452,9 @@ int mdss_dsi_bta_status_check(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
|
|||
|
||||
mutex_lock(&ctrl_pdata->cmd_mutex);
|
||||
|
||||
if (ctrl_pdata->panel_mode == DSI_VIDEO_MODE)
|
||||
ignore_underflow = 1;
|
||||
|
||||
pr_debug("%s: Checking BTA status\n", __func__);
|
||||
|
||||
mdss_dsi_clk_ctrl(ctrl_pdata, ctrl_pdata->dsi_clk_handle,
|
||||
|
@ -1459,6 +1463,9 @@ int mdss_dsi_bta_status_check(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
|
|||
reinit_completion(&ctrl_pdata->bta_comp);
|
||||
mdss_dsi_enable_irq(ctrl_pdata, DSI_BTA_TERM);
|
||||
spin_unlock_irqrestore(&ctrl_pdata->mdp_lock, flag);
|
||||
/* mask out overflow errors */
|
||||
if (ignore_underflow)
|
||||
mdss_dsi_set_reg(ctrl_pdata, 0x10c, 0x0f0000, 0x0f0000);
|
||||
MIPI_OUTP(ctrl_pdata->ctrl_base + 0x098, 0x01); /* trigger */
|
||||
wmb();
|
||||
|
||||
|
@ -1469,6 +1476,13 @@ int mdss_dsi_bta_status_check(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
|
|||
pr_err("%s: DSI BTA error: %i\n", __func__, ret);
|
||||
}
|
||||
|
||||
if (ignore_underflow) {
|
||||
/* clear pending overflow status */
|
||||
mdss_dsi_set_reg(ctrl_pdata, 0xc, 0xffffffff, 0x44440000);
|
||||
/* restore overflow isr */
|
||||
mdss_dsi_set_reg(ctrl_pdata, 0x10c, 0x0f0000, 0);
|
||||
}
|
||||
|
||||
mdss_dsi_clk_ctrl(ctrl_pdata, ctrl_pdata->dsi_clk_handle,
|
||||
MDSS_DSI_ALL_CLKS, MDSS_DSI_CLK_OFF);
|
||||
pr_debug("%s: BTA done with ret: %d\n", __func__, ret);
|
||||
|
|
Loading…
Add table
Reference in a new issue