summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index d4f7f460f2f1..6780dda503da 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -4466,10 +4466,20 @@ static void valleyview_set_rps(struct drm_device *dev, u8 val)
I915_WRITE(GEN6_PMINTRMSK, gen6_rps_pm_mask(dev_priv, val));
if (val != dev_priv->rps.cur_freq) {
+ u32 ctrl;
+
intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
+
+ ctrl = I915_READ(GEN6_RC_CONTROL);
+ I915_WRITE(GEN6_RC_CONTROL, 0);
+
vlv_punit_write(dev_priv, PUNIT_REG_GPU_FREQ_REQ, val);
if (!IS_CHERRYVIEW(dev_priv))
gen6_set_rps_thresholds(dev_priv, val);
+
+ I915_WRITE(GEN6_RC_CONTROL, ctrl);
+ POSTING_READ(GEN6_RC_CONTROL);
+
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
}