aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristen Carlson Accardi <kristen@linux.intel.com>2014-06-12 11:35:48 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-06-12 12:24:27 -0400
commit8abdc17941c71b37311bb93876ac83dce58160c8 (patch)
tree42d7112a38ba96e2266b06082480c30f8274e9e2
parente5747e3adcd67ae27105003ec99fb58cba180105 (diff)
drm/i915: make sure PC8 is enabled on suspend and disabled on resume v4
This matches the runtime suspend paths and allows the system to enter the lowest power mode at freeze time. v2: move disable_pc8 call to thaw_early (Imre) move enable_pc8 to freeze_late (Imre/Jesse) v3: drop spurious hunk from _freeze now that we have freeze_late (Jesse) v4: move back to suspend_late (Imre was right) 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>
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 43b804357bcf..3536bfe537dd 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -616,6 +616,9 @@ static int i915_drm_thaw_early(struct drm_device *dev)
616{ 616{
617 struct drm_i915_private *dev_priv = dev->dev_private; 617 struct drm_i915_private *dev_priv = dev->dev_private;
618 618
619 if (IS_HASWELL(dev) || IS_BROADWELL(dev))
620 hsw_disable_pc8(dev_priv);
621
619 intel_uncore_early_sanitize(dev); 622 intel_uncore_early_sanitize(dev);
620 intel_uncore_sanitize(dev); 623 intel_uncore_sanitize(dev);
621 intel_power_domains_init_hw(dev_priv); 624 intel_power_domains_init_hw(dev_priv);
@@ -899,6 +902,7 @@ static int i915_pm_suspend_late(struct device *dev)
899{ 902{
900 struct pci_dev *pdev = to_pci_dev(dev); 903 struct pci_dev *pdev = to_pci_dev(dev);
901 struct drm_device *drm_dev = pci_get_drvdata(pdev); 904 struct drm_device *drm_dev = pci_get_drvdata(pdev);
905 struct drm_i915_private *dev_priv = drm_dev->dev_private;
902 906
903 /* 907 /*
904 * We have a suspedn ordering issue with the snd-hda driver also 908 * We have a suspedn ordering issue with the snd-hda driver also
@@ -912,6 +916,9 @@ static int i915_pm_suspend_late(struct device *dev)
912 if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF) 916 if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF)
913 return 0; 917 return 0;
914 918
919 if (IS_HASWELL(drm_dev) || IS_BROADWELL(drm_dev))
920 hsw_enable_pc8(dev_priv);
921
915 pci_disable_device(pdev); 922 pci_disable_device(pdev);
916 pci_set_power_state(pdev, PCI_D3hot); 923 pci_set_power_state(pdev, PCI_D3hot);
917 924