static int i915_pm_suspend_late(struct device *dev) { struct pci_dev *pdev = to_pci_dev(dev); struct drm_device *drm_dev = pci_get_drvdata(pdev); struct drm_i915_private *dev_priv = drm_dev->dev_private; /* * We have a suspedn ordering issue with the snd-hda driver also * requiring our device to be power up. Due to the lack of a * parent/child relationship we currently solve this with an late * suspend hook. * * FIXME: This should be solved with a special hdmi sink device or * similar so that power domains can be employed. */ if (drm_dev->switch_power_state == DRM_SWITCH_POWER_OFF) return 0; if (IS_HASWELL(drm_dev) || IS_BROADWELL(drm_dev)) hsw_enable_pc8(dev_priv); pci_disable_device(pdev); pci_set_power_state(pdev, PCI_D3hot); return 0; }
static int hsw_suspend_complete(struct drm_i915_private *dev_priv) { hsw_enable_pc8(dev_priv); return 0; }
static int hsw_runtime_suspend(struct drm_i915_private *dev_priv) { hsw_enable_pc8(dev_priv); return 0; }