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:

committed by
Gerrit - the friendly Code Review server

parent
d9c2a8d3a6
commit
9ce6a2fbb3
@@ -1607,8 +1607,7 @@ static void _sde_encoder_rc_restart_delayed(struct sde_encoder_virt *sde_enc,
|
||||
static void _sde_encoder_rc_cancel_delayed(struct sde_encoder_virt *sde_enc,
|
||||
u32 sw_event)
|
||||
{
|
||||
if (kthread_cancel_delayed_work_sync(
|
||||
&sde_enc->delayed_off_work))
|
||||
if (kthread_cancel_delayed_work_sync(&sde_enc->delayed_off_work))
|
||||
SDE_DEBUG_ENC(sde_enc, "sw_event:%d, work cancelled\n",
|
||||
sw_event);
|
||||
}
|
||||
@@ -2695,8 +2694,7 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
|
||||
!(msm_is_mode_seamless_vrr(cur_mode)
|
||||
|| msm_is_mode_seamless_dms(cur_mode)
|
||||
|| msm_is_mode_seamless_dyn_clk(cur_mode)))
|
||||
kthread_init_delayed_work(&sde_enc->delayed_off_work,
|
||||
sde_encoder_off_work);
|
||||
kthread_cancel_delayed_work_sync(&sde_enc->delayed_off_work);
|
||||
|
||||
ret = sde_encoder_resource_control(drm_enc, SDE_ENC_RC_EVENT_KICKOFF);
|
||||
if (ret) {
|
||||
@@ -2856,6 +2854,7 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)
|
||||
*/
|
||||
sde_enc->crtc = NULL;
|
||||
memset(&sde_enc->mode_info, 0, sizeof(sde_enc->mode_info));
|
||||
kthread_cancel_delayed_work_sync(&sde_enc->delayed_off_work);
|
||||
|
||||
SDE_DEBUG_ENC(sde_enc, "encoder disabled\n");
|
||||
|
||||
|
Reference in New Issue
Block a user