Skip to content

Commit

Permalink
drm/i915/display: Fix Panel Replay vblank enable workaround
Browse files Browse the repository at this point in the history
Currently workaround is not applied when vblank is enabled on crtc that
needs the workaround if vblank is already enabled for another crtc that
doesn't need the workaround. Fix this by increasing counter only if crtc
needs the workaround.

Fixes: aa451ab ("drm/i915/display: Prevent DC6 while vblank is enabled for Panel Replay")
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241009134225.1322820-2-jouni.hogander@intel.com
  • Loading branch information
Jouni Högander committed Oct 15, 2024
1 parent 54ab6d1 commit 9038011
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions drivers/gpu/drm/i915/display/intel_display_irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -1447,7 +1447,7 @@ int bdw_enable_vblank(struct drm_crtc *_crtc)
if (gen11_dsi_configure_te(crtc, true))
return 0;

if (display->irq.vblank_wa_num_pipes++ == 0 && crtc->block_dc_for_vblank)
if (crtc->block_dc_for_vblank && display->irq.vblank_wa_num_pipes++ == 0)
schedule_work(&display->irq.vblank_dc_work);

spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
Expand Down Expand Up @@ -1478,7 +1478,7 @@ void bdw_disable_vblank(struct drm_crtc *_crtc)
bdw_disable_pipe_irq(dev_priv, pipe, GEN8_PIPE_VBLANK);
spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);

if (--display->irq.vblank_wa_num_pipes == 0 && crtc->block_dc_for_vblank)
if (crtc->block_dc_for_vblank && --display->irq.vblank_wa_num_pipes == 0)
schedule_work(&display->irq.vblank_dc_work);
}

Expand Down

0 comments on commit 9038011

Please sign in to comment.