diff options
author | Jesse Barnes <jbarnes@virtuousgeek.org> | 2014-06-12 11:35:45 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-06-12 11:47:05 -0400 |
commit | 156c7ca08185886329113f20249446af4fb07f60 (patch) | |
tree | 07cc0ae6e33b7786f9a70ce8a9bec2dd0138c9c2 /drivers/gpu/drm/i915/intel_pm.c | |
parent | 85e90679335f56d162f4a0ff525573818e17ce44 (diff) |
drm/i915: leave rc6 enabled at suspend time v4
This allows the system to enter the lowest power mode during system freeze.
v2: delete force wake timer at suspend (Imre)
v3: add GT work suspend function (Imre)
v4: use uncore forcewake reset (Daniel)
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Kristen Carlson Accardi <kristen@linux.intel.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_pm.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c index d1e53abec1b5..685b4910eb93 100644 --- a/drivers/gpu/drm/i915/intel_pm.c +++ b/drivers/gpu/drm/i915/intel_pm.c | |||
@@ -4675,6 +4675,26 @@ void intel_cleanup_gt_powersave(struct drm_device *dev) | |||
4675 | valleyview_cleanup_gt_powersave(dev); | 4675 | valleyview_cleanup_gt_powersave(dev); |
4676 | } | 4676 | } |
4677 | 4677 | ||
4678 | /** | ||
4679 | * intel_suspend_gt_powersave - suspend PM work and helper threads | ||
4680 | * @dev: drm device | ||
4681 | * | ||
4682 | * We don't want to disable RC6 or other features here, we just want | ||
4683 | * to make sure any work we've queued has finished and won't bother | ||
4684 | * us while we're suspended. | ||
4685 | */ | ||
4686 | void intel_suspend_gt_powersave(struct drm_device *dev) | ||
4687 | { | ||
4688 | struct drm_i915_private *dev_priv = dev->dev_private; | ||
4689 | |||
4690 | /* Interrupts should be disabled already to avoid re-arming. */ | ||
4691 | WARN_ON(dev->irq_enabled); | ||
4692 | |||
4693 | flush_delayed_work(&dev_priv->rps.delayed_resume_work); | ||
4694 | |||
4695 | cancel_work_sync(&dev_priv->rps.work); | ||
4696 | } | ||
4697 | |||
4678 | void intel_disable_gt_powersave(struct drm_device *dev) | 4698 | void intel_disable_gt_powersave(struct drm_device *dev) |
4679 | { | 4699 | { |
4680 | struct drm_i915_private *dev_priv = dev->dev_private; | 4700 | struct drm_i915_private *dev_priv = dev->dev_private; |