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:

کامیت شده توسط
Gerrit - the friendly Code Review server

والد
363aadd666
کامیت
bceea4e1fe
@@ -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,
|
||||
|
مرجع در شماره جدید
Block a user