|
@@ -4854,7 +4854,13 @@ static void gen9_enable_rc6(struct drm_device *dev)
|
|
I915_WRITE(GEN6_RC_CONTROL, 0);
|
|
I915_WRITE(GEN6_RC_CONTROL, 0);
|
|
|
|
|
|
/* 2b: Program RC6 thresholds.*/
|
|
/* 2b: Program RC6 thresholds.*/
|
|
- I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 54 << 16);
|
|
|
|
|
|
+
|
|
|
|
+ /* WaRsDoubleRc6WrlWithCoarsePowerGating: Doubling WRL only when CPG is enabled */
|
|
|
|
+ if (IS_SKYLAKE(dev) && !((IS_SKL_GT3(dev) || IS_SKL_GT4(dev)) &&
|
|
|
|
+ (INTEL_REVID(dev) <= SKL_REVID_E0)))
|
|
|
|
+ I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 108 << 16);
|
|
|
|
+ else
|
|
|
|
+ I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 54 << 16);
|
|
I915_WRITE(GEN6_RC_EVALUATION_INTERVAL, 125000); /* 12500 * 1280ns */
|
|
I915_WRITE(GEN6_RC_EVALUATION_INTERVAL, 125000); /* 12500 * 1280ns */
|
|
I915_WRITE(GEN6_RC_IDLE_HYSTERSIS, 25); /* 25 * 1280ns */
|
|
I915_WRITE(GEN6_RC_IDLE_HYSTERSIS, 25); /* 25 * 1280ns */
|
|
for_each_ring(ring, dev_priv, unused)
|
|
for_each_ring(ring, dev_priv, unused)
|