From: Ville Syrjälä <ville.syrj...@linux.intel.com>

Bspec asks us to unmask "vblank to registers" in the DPRS unit.

Note that I was unable to observe any change in hardware
behviour due to this bit on HSW. But let's do this anyway
in case it matters in some cases, and the corresponding bit
on BDW is abolutely critical as without it the hardware
won't generate any vblanks whatsoever after PSR exit.

Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/intel_clock_gating.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_clock_gating.c 
b/drivers/gpu/drm/i915/intel_clock_gating.c
index 9682323510cd..d9600cd1ab06 100644
--- a/drivers/gpu/drm/i915/intel_clock_gating.c
+++ b/drivers/gpu/drm/i915/intel_clock_gating.c
@@ -559,12 +559,20 @@ static void bdw_init_clock_gating(struct drm_i915_private 
*i915)
 
 static void hsw_init_clock_gating(struct drm_i915_private *i915)
 {
+       enum pipe pipe;
+
        /* WaFbcAsynchFlipDisableFbcQueue:hsw,bdw */
        intel_uncore_rmw(&i915->uncore, CHICKEN_PIPESL_1(PIPE_A), 0, 
HSW_FBCQ_DIS);
 
        /* WaPsrDPAMaskVBlankInSRD:hsw */
        intel_uncore_rmw(&i915->uncore, CHICKEN_PAR1_1, 0, 
HSW_MASK_VBL_TO_PIPE_IN_SRD);
 
+       for_each_pipe(i915, pipe) {
+               /* WaPsrDPRSUnmaskVBlankInSRD:hsw */
+               intel_uncore_rmw(&i915->uncore, CHICKEN_PIPESL_1(pipe),
+                                0, HSW_UNMASK_VBL_TO_REGS_IN_SRD);
+       }
+
        /* This is required by WaCatErrorRejectionIssue:hsw */
        intel_uncore_rmw(&i915->uncore, GEN7_SQ_CHICKEN_MBCUNIT_CONFIG,
                         0, GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB);
-- 
2.39.3

Reply via email to