diff --git a/msm/sde/sde_encoder.c b/msm/sde/sde_encoder.c index 4eaa5746ee..b92d767c70 100644 --- a/msm/sde/sde_encoder.c +++ b/msm/sde/sde_encoder.c @@ -1988,9 +1988,6 @@ static int _sde_encoder_rc_pre_modeset(struct drm_encoder *drm_enc, { int ret = 0; - /* cancel delayed off work, if any */ - _sde_encoder_rc_cancel_delayed(sde_enc, sw_event); - mutex_lock(&sde_enc->rc_lock); if (sde_enc->rc_state == SDE_ENC_RC_STATE_OFF) { @@ -2497,6 +2494,9 @@ static void sde_encoder_virt_mode_set(struct drm_encoder *drm_enc, return; } + /* cancel delayed off work, if any */ + kthread_cancel_delayed_work_sync(&sde_enc->delayed_off_work); + /* release resources before seamless mode change */ msm_mode = &c_state->msm_mode; ret = sde_encoder_virt_modeset_rc(drm_enc, msm_mode, true);