@@ -1331,6 +1331,8 @@ static int i915_load_modeset_init(struct drm_device *dev)
intel_modeset_gem_init(dev);
+ intel_enable_gt_powersave(dev);
+
/* Always safe in the mode setting case. */
/* FIXME: do pre/post-mode set stuff in core KMS code */
dev->vblank_disable_allowed = 1;
@@ -507,6 +507,8 @@ static int i915_drm_freeze(struct drm_device *dev)
i915_save_state(dev);
+ intel_disable_gt_powersave(dev);
+
intel_opregion_fini(dev);
console_lock();
@@ -604,6 +606,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings)
mutex_lock(&dev->struct_mutex);
error = i915_gem_init_hw(dev);
+ intel_enable_gt_powersave(dev);
mutex_unlock(&dev->struct_mutex);
/* We need working interrupts for modeset enabling ... */
@@ -395,8 +395,6 @@ int i915_save_state(struct drm_device *dev)
}
}
- intel_disable_gt_powersave(dev);
-
/* Cache mode state */
if (INTEL_INFO(dev)->gen < 7)
dev_priv->regfile.saveCACHE_MODE_0 = I915_READ(CACHE_MODE_0);
@@ -10403,10 +10403,6 @@ void intel_modeset_init_hw(struct drm_device *dev)
DPLL_INTEGRATED_CRI_CLK_VLV);
intel_init_dpio(dev);
-
- mutex_lock(&dev->struct_mutex);
- intel_enable_gt_powersave(dev);
- mutex_unlock(&dev->struct_mutex);
}
void intel_modeset_suspend_hw(struct drm_device *dev)
We need to do this at init and resume time, but it's not modeset related. Since we'll need the modeset functions for managing save/restore after the power well is toggled, we want to keep them separate from GT related state save/restore to keep from affecting GT activity while the display is off. Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> --- drivers/gpu/drm/i915/i915_dma.c | 2 ++ drivers/gpu/drm/i915/i915_drv.c | 3 +++ drivers/gpu/drm/i915/i915_suspend.c | 2 -- drivers/gpu/drm/i915/intel_display.c | 4 ---- 4 files changed, 5 insertions(+), 6 deletions(-)