drm/i915: HSW PM Frequency bits fix
[deliverable/linux.git] / drivers / gpu / drm / i915 / intel_pm.c
index 6fa9b79a943596a1863c453375733ad606f014c4..27f94cd19ee2fabfb7673991bb76ec5a5f46a889 100644 (file)
@@ -2460,10 +2460,14 @@ void gen6_set_rps(struct drm_device *dev, u8 val)
        if (val == dev_priv->rps.cur_delay)
                return;
 
-       I915_WRITE(GEN6_RPNSWREQ,
-                  GEN6_FREQUENCY(val) |
-                  GEN6_OFFSET(0) |
-                  GEN6_AGGRESSIVE_TURBO);
+       if (IS_HASWELL(dev))
+               I915_WRITE(GEN6_RPNSWREQ,
+                          HSW_FREQUENCY(val));
+       else
+               I915_WRITE(GEN6_RPNSWREQ,
+                          GEN6_FREQUENCY(val) |
+                          GEN6_OFFSET(0) |
+                          GEN6_AGGRESSIVE_TURBO);
 
        /* Make sure we continue to get interrupts
         * until we hit the minimum or maximum frequencies.
@@ -2601,12 +2605,19 @@ static void gen6_enable_rps(struct drm_device *dev)
                   GEN6_RC_CTL_EI_MODE(1) |
                   GEN6_RC_CTL_HW_ENABLE);
 
-       I915_WRITE(GEN6_RPNSWREQ,
-                  GEN6_FREQUENCY(10) |
-                  GEN6_OFFSET(0) |
-                  GEN6_AGGRESSIVE_TURBO);
-       I915_WRITE(GEN6_RC_VIDEO_FREQ,
-                  GEN6_FREQUENCY(12));
+       if (IS_HASWELL(dev)) {
+               I915_WRITE(GEN6_RPNSWREQ,
+                          HSW_FREQUENCY(10));
+               I915_WRITE(GEN6_RC_VIDEO_FREQ,
+                          HSW_FREQUENCY(12));
+       } else {
+               I915_WRITE(GEN6_RPNSWREQ,
+                          GEN6_FREQUENCY(10) |
+                          GEN6_OFFSET(0) |
+                          GEN6_AGGRESSIVE_TURBO);
+               I915_WRITE(GEN6_RC_VIDEO_FREQ,
+                          GEN6_FREQUENCY(12));
+       }
 
        I915_WRITE(GEN6_RP_DOWN_TIMEOUT, 1000000);
        I915_WRITE(GEN6_RP_INTERRUPT_LIMITS,
This page took 0.025108 seconds and 5 git commands to generate.