Add basic PM support for Nvidia and ATI AGP bridges
PATCH 1/1 Add basic PM support for Nvidia and ATI AGP bridges
I retrieved these from the swsusp2 patchset, but they seem to be independently useful. As a result, I'm not sure who the original author is - however, they seem to be pretty obvious.
## All lines beginning with `## DP:' are a description of the patch. ## DP: Description: Add suspend/resume support to ATI and Nvidia AGP bridges ## DP: Patch author: Unknown
## DP: Upstream status: Not submitted
. $(dirname $0)/DPATCH
@DPATCH@
drivers/char/agp/ati-agp.c +31 -0
@@ -507,6 +507,33 @@ static void __devexit agp_ati_remove(stragp_put_bridge (bridge); } +#ifdef CONFIG_PM + +static int agp_ati_suspend (struct pci_dev *pdev,pm_message_t state) +{ +pci_save_state (pdev); +pci_set_power_state (pdev,3 ); + +return 0 ; +} + +static int agp_ati_resume (struct pci_dev *pdev) +{ +struct agp_bridge_data *bridge =pci_get_drvdata (pdev); + +/* set power state 0 and restore PCI space */ +pci_set_power_state (pdev,0 ); +pci_restore_state (pdev); + +/* reconfigure AGP hardware again */ +if (bridge->driver == &ati_generic_bridge) +return ati_configure (); + +return 0 ; +} + +#endif /* CONFIG_PM */ +static struct pci_device_id agp_ati_pci_table[] = { { .class = (PCI_CLASS_BRIDGE_HOST <<8 ),
@@ -526,6 +553,10 @@ static struct pci_driver agp_ati_pci_dri .id_table = agp_ati_pci_table, .probe = agp_ati_probe, .remove = agp_ati_remove, +#ifdef CONFIG_PM + .suspend = agp_ati_suspend, + .resume = agp_ati_resume, +#endif };static int __init agp_ati_init (void )
drivers/char/agp/nvidia-agp.c +29 -0
@@ -397,11 +397,40 @@ static struct pci_device_id agp_nvidia_pMODULE_DEVICE_TABLE (pci, agp_nvidia_pci_table); +#ifdef CONFIG_PM +static int agp_nvidia_suspend (struct pci_dev *pdev,pm_message_t state) +{ +pci_save_state (pdev); +pci_set_power_state (pdev,3 ); + +return 0 ; +} + +static int agp_nvidia_resume (struct pci_dev *pdev) +{ +struct agp_bridge_data *bridge =pci_get_drvdata (pdev); + +/* set power state 0 and restore PCI space */ +pci_set_power_state (pdev,0 ); +pci_restore_state (pdev); + +/* reconfigure AGP hardware again */ +if (bridge->driver == &nvidia_driver) +nvidia_configure (); + +return 0 ; +} +#endif +static struct pci_driver agp_nvidia_pci_driver = { .name ="agpgart-nvidia" , .id_table = agp_nvidia_pci_table, .probe = agp_nvidia_probe, .remove = agp_nvidia_remove, +#ifdef CONFIG_PM + .suspend = agp_nvidia_suspend, + .resume = agp_nvidia_resume, +#endif };static int __init agp_nvidia_init (void )
Signature · 1 line
Matthew Garrett | [email protected]
Quoted 15 lines · Matthew Garrett
I retrieved these from the swsusp2 patchset, but they seem to be independently useful. As a result, I'm not sure who the original author is - however, they seem to be pretty obvious.
@DPATCH@
diff -ruNp210-agp-resume-support.patch-old/drivers/char/agp/ati-agp.c210-agp-resume-support.patch-new/drivers/char/agp/ati-agp.c---210-agp-resume-support.patch-old/drivers/char/agp/ati-agp.c2005-06-20
11:46:51.000000000 +1000 +++210-agp-resume-support.patch-new/drivers/char/agp/ati-agp.c2005-07-04
23:14:18.000000000 +1000 @@ -507,6 +507,33 @@ static void__devexitagp_ati_remove(stragp_put_bridge(bridge); }
drivers/char/agp/ati-agp.c static void __devexit agp_ati_remove(str · line 515
Quoted 6 lines
drivers/char/agp/ati-agp.c +6
-0+#ifdef CONFIG_PM + +static int agp_ati_suspend (struct pci_dev *pdev,pm_message_t state) +{ +pci_save_state (pdev); +pci_set_power_state (pdev,3 );
Please remove the spaces after the function names.
Quoted 10 lines
diff -ruNp
210-agp-resume-support.patch-old/drivers/char/agp/nvidia-agp.c210-agp-resume-support.patch-new/drivers/char/agp/nvidia-agp.c---210-agp-resume-support.patch-old/drivers/char/agp/nvidia-agp.c2005-06-20
11:46:51.000000000 +1000 +++210-agp-resume-support.patch-new/drivers/char/agp/nvidia-agp.c2005-07-04
23:14:18.000000000 +1000 @@ -397,11 +397,40 @@ static structpci_device_idagp_nvidia_p
MODULE_DEVICE_TABLE(pci, agp_nvidia_pci_table);
drivers/char/agp/nvidia-agp.c static struct pci_device_id agp_nvidia_p · line 404
Quoted 5 lines
drivers/char/agp/nvidia-agp.c +5
-0+#ifdef CONFIG_PM +static int agp_nvidia_suspend (struct pci_dev *pdev,pm_message_t state) +{ +pci_save_state (pdev); +pci_set_power_state (pdev,3 );
Same here.
Eike
Hi!
Quoted 12 lines
I retrieved these from the swsusp2 patchset, but they seem to be independently useful. As a result, I'm not sure who the original author is - however, they seem to be pretty obvious.
## All lines beginning with `## DP:' are a description of the patch. ## DP: Description: Add suspend/resume support to ATI and Nvidia AGP bridges ## DP: Patch author: Unknown
## DP: Upstream status: Not submitted. $(dirname $0)/DPATCH
drivers/char/agp/ati-agp.c static void __devexit agp_ati_remove(str · line 515
Quoted 9 lines
drivers/char/agp/ati-agp.c +6
-0@@ -507,6 +507,33 @@ static void __devexit agp_ati_remove(stragp_put_bridge (bridge); } +#ifdef CONFIG_PM + +static int agp_ati_suspend (struct pci_dev *pdev,pm_message_t state) +{ +pci_save_state (pdev); +pci_set_power_state (pdev,3 );
PCI_D3hot, please.
drivers/char/agp/ati-agp.c static void __devexit agp_ati_remove(str · line 525
Quoted 6 lines
drivers/char/agp/ati-agp.c +6
-0+static int agp_ati_resume (struct pci_dev *pdev) +{ +struct agp_bridge_data *bridge =pci_get_drvdata (pdev); + +/* set power state 0 and restore PCI space */ +pci_set_power_state (pdev,0 );
PCI_D0... ....and same in other two functions. Otherwise it looks ok.
Pavel
Signature · 1 line
Thanks, Sharp!