disp: msm: sde: turn off/on vblank callbacks as per crtc
Current sde driver allows vblank enable and wait requests even after crtc is disabled which would eventually lead to enable of irq and timeouts in caller context. This change fixes it by updating vblank callback status as 'on' during crtc enable and shutdowns vblank callbacks before crtc disable is complete. Change-Id: I9085103ced06e5fad51219f26bd8dd655fa36fea Signed-off-by: Prabhanjan Kandula <pkandula@codeaurora.org> Signed-off-by: Lakshmi Narayana Kalavala <lkalaval@codeaurora.org>
This commit is contained in:
@@ -3841,6 +3841,7 @@ static void sde_crtc_reset(struct drm_crtc *crtc)
|
||||
|
||||
cstate->base.crtc = crtc;
|
||||
crtc->state = &cstate->base;
|
||||
drm_crtc_vblank_reset(crtc);
|
||||
}
|
||||
|
||||
static void sde_crtc_handle_power_event(u32 event_type, void *arg)
|
||||
@@ -4001,6 +4002,8 @@ static void sde_crtc_disable(struct drm_crtc *crtc)
|
||||
|
||||
SDE_DEBUG("crtc%d\n", crtc->base.id);
|
||||
|
||||
drm_crtc_vblank_off(crtc);
|
||||
|
||||
if (sde_kms_is_suspend_state(crtc->dev))
|
||||
_sde_crtc_set_suspend(crtc, true);
|
||||
|
||||
@@ -4139,6 +4142,8 @@ static void sde_crtc_enable(struct drm_crtc *crtc,
|
||||
SDE_EVT32_VERBOSE(DRMID(crtc));
|
||||
sde_crtc = to_sde_crtc(crtc);
|
||||
|
||||
drm_crtc_vblank_on(crtc);
|
||||
|
||||
mutex_lock(&sde_crtc->crtc_lock);
|
||||
SDE_EVT32(DRMID(crtc), sde_crtc->enabled, sde_crtc->suspend,
|
||||
sde_crtc->vblank_requested);
|
||||
|
Reference in New Issue
Block a user