From fe9857b511f3a6ccd68f9a112886d7d6019e5e28 Mon Sep 17 00:00:00 2001 From: Camus Wong Date: Thu, 8 Feb 2018 14:03:37 -0500 Subject: [PATCH] DRM: SDE: Avoid vblank request to the same state This change add check to existing vblank request state. It will avoid enable vblank multiple times. It will also avoid disable vblank multiple times. Change-Id: I10781c33e51b1032b72fcbc1a01a7d01be8be510 Signed-off-by: Camus Wong --- drivers/gpu/drm/msm/sde/sde_crtc.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.c b/drivers/gpu/drm/msm/sde/sde_crtc.c index 2a31bc7fedc7..3f5aa4d276c9 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.c +++ b/drivers/gpu/drm/msm/sde/sde_crtc.c @@ -1190,7 +1190,7 @@ static void sde_crtc_disable(struct drm_crtc *crtc) sde_crtc->vblank_requested) { ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, false); if (ret) - SDE_ERROR("%s vblank enable failed: %d\n", + SDE_ERROR("%s vblank disable failed: %d\n", sde_crtc->name, ret); } @@ -1491,16 +1491,18 @@ int sde_crtc_vblank(struct drm_crtc *crtc, bool en) sde_crtc = to_sde_crtc(crtc); mutex_lock(&sde_crtc->crtc_lock); - SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled, - sde_crtc->suspend, sde_crtc->vblank_requested); - if (sde_crtc->enabled && !sde_crtc->suspend) { - ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en); - if (ret) - SDE_ERROR("%s vblank enable failed: %d\n", - sde_crtc->name, ret); - } + if (sde_crtc->vblank_requested != en) { + SDE_EVT32(DRMID(&sde_crtc->base), en, sde_crtc->enabled, + sde_crtc->suspend, sde_crtc->vblank_requested); + if (sde_crtc->enabled && !sde_crtc->suspend) { + ret = _sde_crtc_vblank_enable_no_lock(sde_crtc, en); + if (ret) + SDE_ERROR("%s vblank enable failed: %d\n", + sde_crtc->name, ret); + } - sde_crtc->vblank_requested = en; + sde_crtc->vblank_requested = en; + } mutex_unlock(&sde_crtc->crtc_lock); return 0;