From ff946804dda0dc70b7f159fa2e375ed57e9a8d75 Mon Sep 17 00:00:00 2001 From: Mahadevan Date: Wed, 24 Apr 2024 12:57:53 +0530 Subject: [PATCH] disp: msm: sde: avoid vblank toggling for virtual displays This change avoids the enabling or disabling of vblank for virtual displays. It ensures that vblank remains disabled regardless of userspace requests. Change-Id: I104cae9b8c0c4770b5092df49bd30501b09cbbc7 Signed-off-by: Mahadevan --- msm/sde/sde_crtc.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index 63ed4533ef..e598d26549 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -4991,6 +4991,8 @@ static int _sde_crtc_vblank_enable( { struct drm_crtc *crtc; struct drm_encoder *enc; + enum sde_intf_mode intf_mode; + bool wb_intf_mode = false; if (!sde_crtc) { SDE_ERROR("invalid crtc\n"); @@ -5002,6 +5004,9 @@ static int _sde_crtc_vblank_enable( crtc->state->encoder_mask, sde_crtc->cached_encoder_mask); + intf_mode = sde_crtc_get_intf_mode(crtc, crtc->state); + wb_intf_mode = ((intf_mode == INTF_MODE_WB_BLOCK) || (intf_mode == INTF_MODE_WB_LINE)); + if (enable) { int ret; @@ -5014,7 +5019,7 @@ static int _sde_crtc_vblank_enable( mutex_lock(&sde_crtc->crtc_lock); drm_for_each_encoder_mask(enc, crtc->dev, sde_crtc->cached_encoder_mask) { - if (sde_encoder_in_clone_mode(enc)) + if (sde_encoder_in_clone_mode(enc) || wb_intf_mode) continue; sde_encoder_register_vblank_callback(enc, sde_crtc_vblank_cb, (void *)crtc); @@ -5023,7 +5028,7 @@ static int _sde_crtc_vblank_enable( } else { mutex_lock(&sde_crtc->crtc_lock); drm_for_each_encoder_mask(enc, crtc->dev, sde_crtc->cached_encoder_mask) { - if (sde_encoder_in_clone_mode(enc)) + if (sde_encoder_in_clone_mode(enc) || wb_intf_mode) continue; sde_encoder_register_vblank_callback(enc, NULL, NULL);