aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_drv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.c')
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 658fe24961eb..fa5d0ed76378 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -428,7 +428,6 @@ static int i915_drm_freeze(struct drm_device *dev)
428 428
429 /* We do a lot of poking in a lot of registers, make sure they work 429 /* We do a lot of poking in a lot of registers, make sure they work
430 * properly. */ 430 * properly. */
431 hsw_disable_package_c8(dev_priv);
432 intel_display_set_init_power(dev_priv, true); 431 intel_display_set_init_power(dev_priv, true);
433 432
434 drm_kms_helper_poll_disable(dev); 433 drm_kms_helper_poll_disable(dev);
@@ -467,6 +466,7 @@ static int i915_drm_freeze(struct drm_device *dev)
467 i915_save_state(dev); 466 i915_save_state(dev);
468 467
469 intel_opregion_fini(dev); 468 intel_opregion_fini(dev);
469 intel_uncore_fini(dev);
470 470
471 console_lock(); 471 console_lock();
472 intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED); 472 intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED);
@@ -603,10 +603,6 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings)
603 schedule_work(&dev_priv->console_resume_work); 603 schedule_work(&dev_priv->console_resume_work);
604 } 604 }
605 605
606 /* Undo what we did at i915_drm_freeze so the refcount goes back to the
607 * expected level. */
608 hsw_enable_package_c8(dev_priv);
609
610 mutex_lock(&dev_priv->modeset_restore_lock); 606 mutex_lock(&dev_priv->modeset_restore_lock);
611 dev_priv->modeset_restore = MODESET_DONE; 607 dev_priv->modeset_restore = MODESET_DONE;
612 mutex_unlock(&dev_priv->modeset_restore_lock); 608 mutex_unlock(&dev_priv->modeset_restore_lock);
@@ -848,6 +844,9 @@ static int i915_runtime_suspend(struct device *device)
848 844
849 DRM_DEBUG_KMS("Suspending device\n"); 845 DRM_DEBUG_KMS("Suspending device\n");
850 846
847 if (HAS_PC8(dev))
848 hsw_enable_pc8(dev_priv);
849
851 i915_gem_release_all_mmaps(dev_priv); 850 i915_gem_release_all_mmaps(dev_priv);
852 851
853 del_timer_sync(&dev_priv->gpu_error.hangcheck_timer); 852 del_timer_sync(&dev_priv->gpu_error.hangcheck_timer);
@@ -862,6 +861,7 @@ static int i915_runtime_suspend(struct device *device)
862 */ 861 */
863 intel_opregion_notify_adapter(dev, PCI_D1); 862 intel_opregion_notify_adapter(dev, PCI_D1);
864 863
864 DRM_DEBUG_KMS("Device suspended\n");
865 return 0; 865 return 0;
866} 866}
867 867
@@ -878,6 +878,10 @@ static int i915_runtime_resume(struct device *device)
878 intel_opregion_notify_adapter(dev, PCI_D0); 878 intel_opregion_notify_adapter(dev, PCI_D0);
879 dev_priv->pm.suspended = false; 879 dev_priv->pm.suspended = false;
880 880
881 if (HAS_PC8(dev))
882 hsw_disable_pc8(dev_priv);
883
884 DRM_DEBUG_KMS("Device resumed\n");
881 return 0; 885 return 0;
882} 886}
883 887