diff --git a/drivers/char/drm/i915_drv.c b/drivers/char/drm/i915_drv.c index 4048f39..d8aa2c9 100644 --- a/drivers/char/drm/i915_drv.c +++ b/drivers/char/drm/i915_drv.c @@ -366,11 +366,11 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state) i915_save_vga(dev); - if (state.event == PM_EVENT_SUSPEND) { - /* Shut down the device */ - pci_disable_device(dev->pdev); - pci_set_power_state(dev->pdev, PCI_D3hot); - } + /* Ask ACPI which state the device should be put in */ + pci_disable_device(dev->pdev); + printk("calling pci_set_power_state with %d\n", + acpi_pci_choose_state(dev, state)); + pci_set_power_state(dev->pdev, acpi_pci_choose_state(dev, state)); return 0; } @@ -380,7 +380,7 @@ static int i915_resume(struct drm_device *dev) struct drm_i915_private *dev_priv = dev->dev_private; int i; - pci_set_power_state(dev->pdev, PCI_D0); + pci_set_power_state(dev->pdev, acpi_pci_choose_state(dev, state)); pci_restore_state(dev->pdev); if (pci_enable_device(dev->pdev)) return -1;