diff options
| author | Ben Widawsky <benjamin.widawsky@intel.com> | 2013-08-15 17:09:24 -0700 |
|---|---|---|
| committer | Ben Widawsky <benjamin.widawsky@intel.com> | 2013-08-15 17:41:36 -0700 |
| commit | ddba20c201c41043e7f8ef439ec4fda5e2c0b38a (patch) | |
| tree | 45397a364bb70c176f5e8712642c1465d2e96345 | |
| parent | 2887f221b47d7ad1d7a1ce5c7f9209e04bac387d (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.c | 6 |
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); |
