bk://linux-dj.bkbits.net/agpgart davej@redhat.com|ChangeSet|20040824170428|24315 davej # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/08/28 16:13:58-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/08/28 16:13:54-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/27 14:50:58-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/08/27 14:50:54-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/27 13:06:31-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/08/27 13:06:28-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/24 18:04:28+01:00 davej@redhat.com # [AGPGART] via-agp.c resume/suspend support # # From: Arkadiusz Miskiewicz # # With this patch I'm able to suspend to disk (well, works even without # patch) and resume (without it my laptop hangs (even sysrq is not working) # while resuming). # # Signed-off-by: Arkadiusz Miskiewicz # Signed-off-by: Andrew Morton # Signed-off-by: Dave Jones # # drivers/char/agp/via-agp.c # 2004/08/24 18:04:15+01:00 davej@redhat.com +31 -0 # [AGPGART] via-agp.c resume/suspend support # # From: Arkadiusz Miskiewicz # # With this patch I'm able to suspend to disk (well, works even without # patch) and resume (without it my laptop hangs (even sysrq is not working) # while resuming). # # Signed-off-by: Arkadiusz Miskiewicz # Signed-off-by: Andrew Morton # Signed-off-by: Dave Jones # # ChangeSet # 2004/08/23 21:23:08-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # ChangeSet # 2004/08/23 16:27:14-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # drivers/char/agp/intel-mch-agp.c # 2004/08/23 21:23:03-07:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/char/agp/intel-agp.c # 2004/08/23 21:23:03-07:00 akpm@bix.(none) +0 -0 # Auto merged # # include/linux/pci_ids.h # 2004/08/23 16:27:09-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/23 13:42:56-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/08/23 13:42:52-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/22 21:03:23-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/08/22 21:03:19-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/05 12:39:41-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/agpgart # into bix.(none):/usr/src/bk-agpgart # # drivers/char/agp/intel-agp.c # 2004/08/05 12:39:37-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/08/04 02:37:29-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/agpgart # into bix.(none):/usr/src/bk-agpgart # # drivers/char/agp/intel-mch-agp.c # 2004/08/04 02:37:25-07:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/char/agp/intel-agp.c # 2004/08/04 02:37:25-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/07/31 23:52:37-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/07/31 23:52:34-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/07/30 22:16:17-07:00 akpm@bix.(none) # Merge bix.(none):/usr/src/bk25 into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/07/30 22:16:14-07:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/char/agp/intel-agp.c # 2004/07/30 22:16:14-07:00 akpm@bix.(none) +0 -0 # Auto merged # # ChangeSet # 2004/07/27 13:18:37-07:00 akpm@bix.(none) # Merge bk://linux-dj.bkbits.net/agpgart # into bix.(none):/usr/src/bk-agpgart # # include/linux/pci_ids.h # 2004/07/27 13:18:32-07:00 akpm@bix.(none) +0 -0 # Auto merged # # drivers/char/agp/intel-agp.c # 2004/07/27 13:18:32-07:00 akpm@bix.(none) +0 -0 # Auto merged # diff -Nru a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c --- a/drivers/char/agp/via-agp.c 2004-09-06 17:11:57 -07:00 +++ b/drivers/char/agp/via-agp.c 2004-09-06 17:11:57 -07:00 @@ -438,6 +438,33 @@ agp_put_bridge(bridge); } +#ifdef CONFIG_PM + +static int agp_via_suspend(struct pci_dev *pdev, u32 state) +{ + pci_save_state (pdev, pdev->saved_config_space); + pci_set_power_state (pdev, 3); + + return 0; +} + +static int agp_via_resume(struct pci_dev *pdev) +{ + struct agp_bridge_data *bridge = pci_get_drvdata(pdev); + + pci_set_power_state (pdev, 0); + pci_restore_state(pdev, pdev->saved_config_space); + + if (bridge->driver == &via_agp3_driver) + return via_configure_agp3(); + else if (bridge->driver == &via_driver) + return via_configure(); + + return 0; +} + +#endif /* CONFIG_PM */ + /* must be the same order as name table above */ static struct pci_device_id agp_via_pci_table[] = { #define ID(x) \ @@ -487,6 +514,10 @@ .id_table = agp_via_pci_table, .probe = agp_via_probe, .remove = agp_via_remove, +#ifdef CONFIG_PM + .suspend = agp_via_suspend, + .resume = agp_via_resume, +#endif };