|
@@ -6350,9 +6350,9 @@ static void cherryview_disable_rps(struct drm_i915_private *dev_priv)
|
|
|
I915_WRITE(GEN6_RC_CONTROL, 0);
|
|
|
}
|
|
|
|
|
|
-static void valleyview_disable_rps(struct drm_i915_private *dev_priv)
|
|
|
+static void valleyview_disable_rc6(struct drm_i915_private *dev_priv)
|
|
|
{
|
|
|
- /* we're doing forcewake before Disabling RC6,
|
|
|
+ /* We're doing forcewake before Disabling RC6,
|
|
|
* This what the BIOS expects when going into suspend */
|
|
|
intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
|
|
|
|
@@ -6361,6 +6361,11 @@ static void valleyview_disable_rps(struct drm_i915_private *dev_priv)
|
|
|
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
|
|
}
|
|
|
|
|
|
+static void valleyview_disable_rps(struct drm_i915_private *dev_priv)
|
|
|
+{
|
|
|
+ I915_WRITE(GEN6_RP_CONTROL, 0);
|
|
|
+}
|
|
|
+
|
|
|
static void intel_print_rc6_info(struct drm_i915_private *dev_priv, u32 mode)
|
|
|
{
|
|
|
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
|
|
@@ -7283,11 +7288,11 @@ static void cherryview_enable_rps(struct drm_i915_private *dev_priv)
|
|
|
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
|
|
}
|
|
|
|
|
|
-static void valleyview_enable_rps(struct drm_i915_private *dev_priv)
|
|
|
+static void valleyview_enable_rc6(struct drm_i915_private *dev_priv)
|
|
|
{
|
|
|
struct intel_engine_cs *engine;
|
|
|
enum intel_engine_id id;
|
|
|
- u32 gtfifodbg, val, rc6_mode = 0;
|
|
|
+ u32 gtfifodbg, rc6_mode = 0;
|
|
|
|
|
|
WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock));
|
|
|
|
|
@@ -7300,28 +7305,11 @@ static void valleyview_enable_rps(struct drm_i915_private *dev_priv)
|
|
|
I915_WRITE(GTFIFODBG, gtfifodbg);
|
|
|
}
|
|
|
|
|
|
- /* If VLV, Forcewake all wells, else re-direct to regular path */
|
|
|
intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
|
|
|
|
|
/* Disable RC states. */
|
|
|
I915_WRITE(GEN6_RC_CONTROL, 0);
|
|
|
|
|
|
- I915_WRITE(GEN6_RP_DOWN_TIMEOUT, 1000000);
|
|
|
- I915_WRITE(GEN6_RP_UP_THRESHOLD, 59400);
|
|
|
- I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 245000);
|
|
|
- I915_WRITE(GEN6_RP_UP_EI, 66000);
|
|
|
- I915_WRITE(GEN6_RP_DOWN_EI, 350000);
|
|
|
-
|
|
|
- I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10);
|
|
|
-
|
|
|
- I915_WRITE(GEN6_RP_CONTROL,
|
|
|
- GEN6_RP_MEDIA_TURBO |
|
|
|
- GEN6_RP_MEDIA_HW_NORMAL_MODE |
|
|
|
- GEN6_RP_MEDIA_IS_GFX |
|
|
|
- GEN6_RP_ENABLE |
|
|
|
- GEN6_RP_UP_BUSY_AVG |
|
|
|
- GEN6_RP_DOWN_IDLE_CONT);
|
|
|
-
|
|
|
I915_WRITE(GEN6_RC6_WAKE_RATE_LIMIT, 0x00280000);
|
|
|
I915_WRITE(GEN6_RC_EVALUATION_INTERVAL, 125000);
|
|
|
I915_WRITE(GEN6_RC_IDLE_HYSTERSIS, 25);
|
|
@@ -7331,7 +7319,7 @@ static void valleyview_enable_rps(struct drm_i915_private *dev_priv)
|
|
|
|
|
|
I915_WRITE(GEN6_RC6_THRESHOLD, 0x557);
|
|
|
|
|
|
- /* allows RC6 residency counter to work */
|
|
|
+ /* Allows RC6 residency counter to work */
|
|
|
I915_WRITE(VLV_COUNTER_CONTROL,
|
|
|
_MASKED_BIT_ENABLE(VLV_COUNT_RANGE_HIGH |
|
|
|
VLV_MEDIA_RC0_COUNT_EN |
|
|
@@ -7346,6 +7334,33 @@ static void valleyview_enable_rps(struct drm_i915_private *dev_priv)
|
|
|
|
|
|
I915_WRITE(GEN6_RC_CONTROL, rc6_mode);
|
|
|
|
|
|
+ intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
|
|
|
+}
|
|
|
+
|
|
|
+static void valleyview_enable_rps(struct drm_i915_private *dev_priv)
|
|
|
+{
|
|
|
+ u32 val;
|
|
|
+
|
|
|
+ WARN_ON(!mutex_is_locked(&dev_priv->rps.hw_lock));
|
|
|
+
|
|
|
+ intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
|
|
|
+
|
|
|
+ I915_WRITE(GEN6_RP_DOWN_TIMEOUT, 1000000);
|
|
|
+ I915_WRITE(GEN6_RP_UP_THRESHOLD, 59400);
|
|
|
+ I915_WRITE(GEN6_RP_DOWN_THRESHOLD, 245000);
|
|
|
+ I915_WRITE(GEN6_RP_UP_EI, 66000);
|
|
|
+ I915_WRITE(GEN6_RP_DOWN_EI, 350000);
|
|
|
+
|
|
|
+ I915_WRITE(GEN6_RP_IDLE_HYSTERSIS, 10);
|
|
|
+
|
|
|
+ I915_WRITE(GEN6_RP_CONTROL,
|
|
|
+ GEN6_RP_MEDIA_TURBO |
|
|
|
+ GEN6_RP_MEDIA_HW_NORMAL_MODE |
|
|
|
+ GEN6_RP_MEDIA_IS_GFX |
|
|
|
+ GEN6_RP_ENABLE |
|
|
|
+ GEN6_RP_UP_BUSY_AVG |
|
|
|
+ GEN6_RP_DOWN_IDLE_CONT);
|
|
|
+
|
|
|
/* Setting Fixed Bias */
|
|
|
val = VLV_OVERRIDE_EN |
|
|
|
VLV_SOC_TDP_EN |
|
|
@@ -7945,6 +7960,7 @@ void intel_disable_gt_powersave(struct drm_i915_private *dev_priv)
|
|
|
} else if (IS_CHERRYVIEW(dev_priv)) {
|
|
|
cherryview_disable_rps(dev_priv);
|
|
|
} else if (IS_VALLEYVIEW(dev_priv)) {
|
|
|
+ valleyview_disable_rc6(dev_priv);
|
|
|
valleyview_disable_rps(dev_priv);
|
|
|
} else if (INTEL_GEN(dev_priv) >= 6) {
|
|
|
gen6_disable_rc6(dev_priv);
|
|
@@ -7974,6 +7990,7 @@ void intel_enable_gt_powersave(struct drm_i915_private *dev_priv)
|
|
|
if (IS_CHERRYVIEW(dev_priv)) {
|
|
|
cherryview_enable_rps(dev_priv);
|
|
|
} else if (IS_VALLEYVIEW(dev_priv)) {
|
|
|
+ valleyview_enable_rc6(dev_priv);
|
|
|
valleyview_enable_rps(dev_priv);
|
|
|
} else if (INTEL_GEN(dev_priv) >= 9) {
|
|
|
gen9_enable_rc6(dev_priv);
|