
From: Arjan van de Ven <arjanv@redhat.com>

Improves the resume functions for Intel AGP bridges by restoring config
space (the bios might not have done that).

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/char/agp/intel-agp.c     |    8 ++------
 25-akpm/drivers/char/agp/intel-mch-agp.c |    8 ++------
 2 files changed, 4 insertions(+), 12 deletions(-)

diff -puN drivers/char/agp/intel-agp.c~agp-resume-fixups drivers/char/agp/intel-agp.c
--- 25/drivers/char/agp/intel-agp.c~agp-resume-fixups	2004-05-31 16:43:11.717039936 -0700
+++ 25-akpm/drivers/char/agp/intel-agp.c	2004-05-31 16:43:11.724038872 -0700
@@ -1445,15 +1445,12 @@ static void __devexit agp_intel_remove(s
 	agp_put_bridge(bridge);
 }
 
-static int agp_intel_suspend(struct pci_dev *dev, u32 state)
-{
-	return 0;
-}
-
 static int agp_intel_resume(struct pci_dev *pdev)
 {
 	struct agp_bridge_data *bridge = pci_get_drvdata(pdev);
 
+	pci_restore_state(pdev, pdev->saved_config_space);
+
 	if (bridge->driver == &intel_generic_driver)
 		intel_configure();
 	else if (bridge->driver == &intel_845_driver)
@@ -1506,7 +1503,6 @@ static struct pci_driver agp_intel_pci_d
 	.id_table	= agp_intel_pci_table,
 	.probe		= agp_intel_probe,
 	.remove		= agp_intel_remove,
-	.suspend	= agp_intel_suspend,
 	.resume		= agp_intel_resume,
 };
 
diff -puN drivers/char/agp/intel-mch-agp.c~agp-resume-fixups drivers/char/agp/intel-mch-agp.c
--- 25/drivers/char/agp/intel-mch-agp.c~agp-resume-fixups	2004-05-31 16:43:11.719039632 -0700
+++ 25-akpm/drivers/char/agp/intel-mch-agp.c	2004-05-31 16:43:11.723039024 -0700
@@ -569,15 +569,12 @@ static void __devexit agp_intelmch_remov
 	agp_put_bridge(bridge);
 }
 
-static int agp_intelmch_suspend(struct pci_dev *dev, u32 state)
-{
-	return 0;
-}
-
 static int agp_intelmch_resume(struct pci_dev *pdev)
 {
 	struct agp_bridge_data *bridge = pci_get_drvdata(pdev);
 
+	pci_restore_state(pdev, pdev->saved_config_space);
+
 	if (bridge->driver == &intel_845_driver)
 		intel_845_configure();
 
@@ -611,7 +608,6 @@ static struct pci_driver agp_intelmch_pc
 	.id_table	= agp_intelmch_pci_table,
 	.probe		= agp_intelmch_probe,
 	.remove		= agp_intelmch_remove,
-	.suspend	= agp_intelmch_suspend,
 	.resume		= agp_intelmch_resume,
 };
 
_
