|
@@ -6604,12 +6604,19 @@ static void gen9_enable_rc6(struct drm_i915_private *dev_priv)
|
|
|
I915_WRITE(GEN6_RC_CONTROL, 0);
|
|
|
|
|
|
/* 2b: Program RC6 thresholds.*/
|
|
|
-
|
|
|
- /* WaRsDoubleRc6WrlWithCoarsePowerGating: Doubling WRL only when CPG is enabled */
|
|
|
- if (IS_SKYLAKE(dev_priv))
|
|
|
+ if (INTEL_GEN(dev_priv) >= 10) {
|
|
|
+ I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 54 << 16 | 85);
|
|
|
+ I915_WRITE(GEN10_MEDIA_WAKE_RATE_LIMIT, 150);
|
|
|
+ } else if (IS_SKYLAKE(dev_priv)) {
|
|
|
+ /*
|
|
|
+ * WaRsDoubleRc6WrlWithCoarsePowerGating:skl Doubling WRL only
|
|
|
+ * when CPG is enabled
|
|
|
+ */
|
|
|
I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 108 << 16);
|
|
|
- else
|
|
|
+ } else {
|
|
|
I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 54 << 16);
|
|
|
+ }
|
|
|
+
|
|
|
I915_WRITE(GEN6_RC_EVALUATION_INTERVAL, 125000); /* 12500 * 1280ns */
|
|
|
I915_WRITE(GEN6_RC_IDLE_HYSTERSIS, 25); /* 25 * 1280ns */
|
|
|
for_each_engine(engine, dev_priv, id)
|