disp: msm: sde: add esd check during wr_ptr wait

Move esd check to write pointer wait instead of during
write pointer timeout. With this change display will avoid
improperly signaling a retire fence and allowing two flushes
to happen within a single vsync in cases where ESD failure
is happening.

Change-Id: I6fbd76a2f6b47d3237039f66a3b1edd1f72a0a1d
Signed-off-by: Samantha Tran <samtran@codeaurora.org>
This commit is contained in:
Samantha Tran
2021-06-14 12:53:26 -07:00
parent eacfafbaed
commit dc56d01f20
2 changed files with 17 additions and 3 deletions

View File

@@ -1449,7 +1449,7 @@ static int _sde_encoder_phys_cmd_wait_for_wr_ptr(
if (ctl && ctl->ops.get_start_state)
frame_pending = ctl->ops.get_start_state(ctl);
ret = frame_pending ? ret : 0;
ret = (frame_pending || sde_connector_esd_status(phys_enc->connector)) ? ret : 0;
/*
* There can be few cases of ESD where CTL_START is cleared but
@@ -1521,8 +1521,7 @@ static int _sde_encoder_phys_cmd_handle_wr_ptr_timeout(
SDE_EVT32(DRMID(phys_enc->parent), switch_te, SDE_EVTLOG_FUNC_ENTRY);
if (sde_connector_esd_status(phys_enc->connector)) {
/* watchdog TE already set on esd status check failure */
if (sde_connector_panel_dead(phys_enc->connector)) {
ret = _sde_encoder_phys_cmd_wait_for_wr_ptr(phys_enc);
} else if (switch_te) {
SDE_DEBUG_CMDENC(cmd_enc,