aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_display.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r--drivers/gpu/drm/i915/intel_display.c35
1 files changed, 20 insertions, 15 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 902cc5386f19..279dc96e3eb2 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4584,28 +4584,33 @@ void intel_init_clock_gating(struct drm_device *dev)
4584 struct drm_i915_gem_object *obj_priv; 4584 struct drm_i915_gem_object *obj_priv;
4585 int ret; 4585 int ret;
4586 4586
4587 pwrctx = drm_gem_object_alloc(dev, 4096); 4587 if (dev_priv->pwrctx) {
4588 if (!pwrctx) { 4588 obj_priv = dev_priv->pwrctx->driver_private;
4589 DRM_DEBUG("failed to alloc power context, RC6 disabled\n"); 4589 } else {
4590 goto out; 4590 pwrctx = drm_gem_object_alloc(dev, 4096);
4591 } 4591 if (!pwrctx) {
4592 DRM_DEBUG("failed to alloc power context, "
4593 "RC6 disabled\n");
4594 goto out;
4595 }
4592 4596
4593 ret = i915_gem_object_pin(pwrctx, 4096); 4597 ret = i915_gem_object_pin(pwrctx, 4096);
4594 if (ret) { 4598 if (ret) {
4595 DRM_ERROR("failed to pin power context: %d\n", ret); 4599 DRM_ERROR("failed to pin power context: %d\n",
4596 drm_gem_object_unreference(pwrctx); 4600 ret);
4597 goto out; 4601 drm_gem_object_unreference(pwrctx);
4598 } 4602 goto out;
4603 }
4599 4604
4600 i915_gem_object_set_to_gtt_domain(pwrctx, 1); 4605 i915_gem_object_set_to_gtt_domain(pwrctx, 1);
4601 4606
4602 obj_priv = pwrctx->driver_private; 4607 dev_priv->pwrctx = pwrctx;
4608 obj_priv = pwrctx->driver_private;
4609 }
4603 4610
4604 I915_WRITE(PWRCTXA, obj_priv->gtt_offset | PWRCTX_EN); 4611 I915_WRITE(PWRCTXA, obj_priv->gtt_offset | PWRCTX_EN);
4605 I915_WRITE(MCHBAR_RENDER_STANDBY, 4612 I915_WRITE(MCHBAR_RENDER_STANDBY,
4606 I915_READ(MCHBAR_RENDER_STANDBY) & ~RCX_SW_EXIT); 4613 I915_READ(MCHBAR_RENDER_STANDBY) & ~RCX_SW_EXIT);
4607
4608 dev_priv->pwrctx = pwrctx;
4609 } 4614 }
4610 4615
4611out: 4616out: