Merge "disp: msm: sde: avoid idle pc during ESD recovery"

This commit is contained in:
qctecmdr
2021-05-16 02:38:21 -07:00
committed by Gerrit - the friendly Code Review server
2 changed files with 10 additions and 6 deletions

View File

@@ -2494,10 +2494,10 @@ static void _sde_connector_report_panel_dead(struct sde_connector *conn,
return;
SDE_EVT32(SDE_EVTLOG_ERROR);
conn->panel_dead = true;
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,

View File

@@ -2074,23 +2074,27 @@ static int _sde_encoder_rc_idle(struct drm_encoder *drm_enc,
struct sde_kms *sde_kms;
struct drm_crtc *crtc = drm_enc->crtc;
struct sde_crtc *sde_crtc = to_sde_crtc(crtc);
struct sde_connector *sde_conn;
priv = drm_enc->dev->dev_private;
sde_kms = to_sde_kms(priv->kms);
sde_conn = to_sde_connector(sde_enc->cur_master->connector);
mutex_lock(&sde_enc->rc_lock);
if (sde_enc->rc_state != SDE_ENC_RC_STATE_ON) {
if (sde_conn->panel_dead) {
SDE_DEBUG_ENC(sde_enc, "skip idle. Panel in dead state\n");
SDE_EVT32(DRMID(drm_enc), sw_event, sde_enc->rc_state, SDE_EVTLOG_ERROR);
goto end;
} else if (sde_enc->rc_state != SDE_ENC_RC_STATE_ON) {
SDE_DEBUG_ENC(sde_enc, "sw_event:%d, rc:%d !ON state\n",
sw_event, sde_enc->rc_state);
SDE_EVT32(DRMID(drm_enc), sw_event, sde_enc->rc_state,
SDE_EVTLOG_ERROR);
SDE_EVT32(DRMID(drm_enc), sw_event, sde_enc->rc_state, SDE_EVTLOG_ERROR);
goto end;
} else if (sde_crtc_frame_pending(sde_enc->crtc)) {
SDE_DEBUG_ENC(sde_enc, "skip idle entry");
SDE_EVT32(DRMID(drm_enc), sw_event, sde_enc->rc_state,
sde_crtc_frame_pending(sde_enc->crtc),
SDE_EVTLOG_ERROR);
sde_crtc_frame_pending(sde_enc->crtc), SDE_EVTLOG_ERROR);
_sde_encoder_rc_kickoff_delayed(sde_enc, sw_event);
goto end;
}