summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2013-08-15 17:09:24 -0700
committerBen Widawsky <benjamin.widawsky@intel.com>2013-08-15 17:41:36 -0700
commitddba20c201c41043e7f8ef439ec4fda5e2c0b38a (patch)
tree45397a364bb70c176f5e8712642c1465d2e96345
parent2887f221b47d7ad1d7a1ce5c7f9209e04bac387d (diff)
drm/i915/ilk: Apply a long lost rc6 w/ailk_contexts
This is a random w/a in a never published doc that was actually deleted. Given our history, I say we just throw it at the wall and see if it sticks. Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index ad647430ded3..261f3bcbec71 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3659,6 +3659,7 @@ static int ironlake_setup_rc6(struct drm_device *dev)
static void ironlake_enable_rc6(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
+ u32 vid_start;
int ret;
/* rc6 disabled by default due to repeated reports of hanging during
@@ -3673,6 +3674,11 @@ static void ironlake_enable_rc6(struct drm_device *dev)
if (ret)
return;
+ vid_start = (I915_READ(MEMSTAT_ILK) & MEMSTAT_VID_MASK) >> MEMSTAT_VID_SHIFT;
+ vid_start |= I915_READ(VIDSTART & ~0x7f);
+ I915_WRITE(VIDSTART, vid_start);
+ POSTING_READ(VIDSTART);
+
I915_WRITE(PWRCTXA, i915_gem_obj_ggtt_offset(dev_priv->ips.pwrctx) | PWRCTX_EN);
if (!dev_priv->ips.rstdbyctl)
dev_priv->ips.rstdbyctl = I915_READ(RSTDBYCTL);