[PATCH]: via-agp.c resume/suspend support

From: Arkadiusz Miskiewicz
Date: Tue Aug 03 2004 - 09:42:16 EST


Hi,

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).

Please comment and send upstream if it's ok with you. Thanks!


PATCH: resume/suspend support for via-agp driver.

Signed-off-by: Arkadiusz Miskiewicz <arekm@xxxxxxxxxxxxx>

--- linux-2.6.8-rc2.org/drivers/char/agp/via-agp.c 2004-07-30 19:19:16.000000000 +0200
+++ linux-2.6.8-rc2/drivers/char/agp/via-agp.c 2004-08-03 16:21:41.000000000 +0200
@@ -438,6 +423,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 +496,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
};

--
Arkadiusz Miśkiewicz CS at FoE, Wroclaw University of Technology
arekm.pld-linux.org, 1024/3DB19BBD, JID: arekm.jabber.org, PLD/Linux
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/