disp: msm: sde: trigger esd recovery before event notification

ESD recovery schedules KICKOFF event on event_thread,
switches the vsync source to wd_timer and waits for
pending frame. This work is triggered from workthread
and it must be finished before panel dead event
notification to avoid race condition with power off
sequence. This change also cancels the delayed work
after encoder is disabled.

Change-Id: Iadc5753238a54e6dad3ff57a9b8ae3bd9644c0dc
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
This commit is contained in:
Dhaval Patel
2020-09-16 16:18:43 -07:00
committad av Gerrit - the friendly Code Review server
förälder d9c2a8d3a6
incheckning 9ce6a2fbb3
2 ändrade filer med 7 tillägg och 7 borttagningar

Visa fil

@@ -2392,14 +2392,15 @@ static void _sde_connector_report_panel_dead(struct sde_connector *conn,
if (conn->panel_dead)
return;
SDE_EVT32(SDE_EVTLOG_ERROR);
sde_encoder_display_failure_notification(conn->encoder,
skip_pre_kickoff);
conn->panel_dead = true;
event.type = DRM_EVENT_PANEL_DEAD;
event.length = sizeof(bool);
msm_mode_object_event_notify(&conn->base.base,
conn->base.dev, &event, (u8 *)&conn->panel_dead);
sde_encoder_display_failure_notification(conn->encoder,
skip_pre_kickoff);
SDE_EVT32(SDE_EVTLOG_ERROR);
SDE_ERROR("esd check failed report PANEL_DEAD conn_id: %d enc_id: %d\n",
conn->base.base.id, conn->encoder->base.id);
}