From: Michal Schmidt This adds support for suspend/resume to the amd64-agp driver. Without it, X displays garbage after resume from swsusp. Signed-off-by: Michal Schmidt Cc: Dave Jones Acked-by: Andi Kleen Signed-off-by: Andrew Morton --- drivers/char/agp/amd64-agp.c | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+) diff -puN drivers/char/agp/amd64-agp.c~amd64-agp-suspend-support drivers/char/agp/amd64-agp.c --- 25/drivers/char/agp/amd64-agp.c~amd64-agp-suspend-support Fri Jan 6 15:59:53 2006 +++ 25-akpm/drivers/char/agp/amd64-agp.c Fri Jan 6 15:59:53 2006 @@ -600,6 +600,26 @@ static void __devexit agp_amd64_remove(s agp_put_bridge(bridge); } +#ifdef CONFIG_PM + +static int agp_amd64_suspend(struct pci_dev *pdev, pm_message_t state) +{ + pci_save_state(pdev); + pci_set_power_state(pdev, pci_choose_state(pdev, state)); + + return 0; +} + +static int agp_amd64_resume(struct pci_dev *pdev) +{ + pci_set_power_state(pdev, PCI_D0); + pci_restore_state(pdev); + + return amd_8151_configure(); +} + +#endif /* CONFIG_PM */ + static struct pci_device_id agp_amd64_pci_table[] = { { .class = (PCI_CLASS_BRIDGE_HOST << 8), @@ -718,6 +738,10 @@ static struct pci_driver agp_amd64_pci_d .id_table = agp_amd64_pci_table, .probe = agp_amd64_probe, .remove = agp_amd64_remove, +#ifdef CONFIG_PM + .suspend = agp_amd64_suspend, + .resume = agp_amd64_resume, +#endif }; _