[AGPGART] Suspend/Resume improvements for ATI AGP
Based on patches in the Ubuntu kernel.
Signed-off-by: Ben Collins <bcollins@ubuntu.com>
Signed-off-by: Dave Jones <davej@redhat.com>
diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c
index 6db9b7f..34bbd41 100644
--- a/drivers/char/agp/ati-agp.c
+++ b/drivers/char/agp/ati-agp.c
@@ -245,19 +245,21 @@
#ifdef CONFIG_PM
-static int agp_ati_resume(struct pci_dev *dev)
-{
- pci_restore_state(dev);
-
- return ati_configure();
-}
-
static int agp_ati_suspend(struct pci_dev *dev, pm_message_t state)
{
pci_save_state(dev);
+ pci_set_power_state (pdev, 3);
return 0;
}
+
+static int agp_ati_resume(struct pci_dev *dev)
+{
+ pci_set_power_state (pdev, 0);
+ pci_restore_state(dev);
+
+ return ati_configure();
+}
#endif
/*
@@ -545,8 +547,8 @@
.probe = agp_ati_probe,
.remove = agp_ati_remove,
#ifdef CONFIG_PM
- .resume = agp_ati_resume,
.suspend = agp_ati_suspend,
+ .resume = agp_ati_resume,
#endif
};