disp: msm: sde: reset ctl on autorefresh disable failure

Reset MDP ctl path and DSI ctl on autorefresh
disable failure. This will enable the hardware
to recover from the hang.

Change-Id: Ia9acc8573c22e0713179ef4f6ef604caacabfadb
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
This commit is contained in:
Veera Sundaram Sankaran
2019-11-22 15:27:32 -08:00
کامیت شده توسط Gerrit - the friendly Code Review server
والد 363aadd666
کامیت bceea4e1fe
7فایلهای تغییر یافته به همراه48 افزوده شده و 18 حذف شده

مشاهده پرونده

@@ -3891,7 +3891,7 @@ static void _sde_encoder_helper_hdr_plus_mempool_update(
}
}
void sde_encoder_helper_needs_hw_reset(struct drm_encoder *drm_enc)
void sde_encoder_needs_hw_reset(struct drm_encoder *drm_enc)
{
struct sde_encoder_virt *sde_enc = to_sde_encoder_virt(drm_enc);
struct sde_encoder_phys *phys;
@@ -3975,7 +3975,7 @@ int sde_encoder_prepare_for_kickoff(struct drm_encoder *drm_enc,
/* if any phys needs reset, reset all phys, in-order */
if (needs_hw_reset)
sde_encoder_helper_needs_hw_reset(drm_enc);
sde_encoder_needs_hw_reset(drm_enc);
_sde_encoder_update_master(drm_enc, params);
@@ -4177,16 +4177,16 @@ int sde_encoder_helper_reset_mixers(struct sde_encoder_phys *phys_enc,
return 0;
}
void sde_encoder_prepare_commit(struct drm_encoder *drm_enc)
int sde_encoder_prepare_commit(struct drm_encoder *drm_enc)
{
struct sde_encoder_virt *sde_enc;
struct sde_encoder_phys *phys;
int i, rc = 0;
int i, rc = 0, ret = 0;
struct sde_hw_ctl *ctl;
if (!drm_enc) {
SDE_ERROR("invalid encoder\n");
return;
return -EINVAL;
}
sde_enc = to_sde_encoder_virt(drm_enc);
@@ -4200,6 +4200,9 @@ void sde_encoder_prepare_commit(struct drm_encoder *drm_enc)
if (phys && phys->ops.prepare_commit)
phys->ops.prepare_commit(phys);
if (phys->enable_state == SDE_ENC_ERR_NEEDS_HW_RESET)
ret = -ETIMEDOUT;
if (phys && phys->hw_ctl) {
ctl = phys->hw_ctl;
/*
@@ -4222,6 +4225,8 @@ void sde_encoder_prepare_commit(struct drm_encoder *drm_enc)
sde_enc->cur_master->connector->base.id,
rc);
}
return ret;
}
void sde_encoder_helper_setup_misr(struct sde_encoder_phys *phys_enc,