diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index e6c03fc7f6c0..de15e02389a8 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -885,16 +885,17 @@ int dsi_display_check_status(struct drm_connector *connector, void *display, panel->esd_config.esd_enabled = false; } - if (rc <= 0 && te_check_override) + /* + * TE check may fail even if status read is passing. In case of + * te_check_override, check the status both from reg read and TE. + */ + if (rc > 0 && te_check_override) rc = dsi_display_status_check_te(dsi_display, te_rechecks); /* Unmask error interrupts if check passed*/ if (rc > 0) { dsi_display_set_ctrl_esd_check_flag(dsi_display, false); dsi_display_mask_ctrl_error_interrupts(dsi_display, mask, false); - if (te_check_override && panel->esd_config.esd_enabled == false) - rc = dsi_display_status_check_te(dsi_display, - te_rechecks); } dsi_display_clk_ctrl(dsi_display->dsi_clk_handle,