Skip to content

Commit

Permalink
[PATCH] suspend: PCI power managment reference implementation
Browse files Browse the repository at this point in the history
Added reference implementation of suspend and resume routines.

From: Shaohua Li <shaohua.li@intel.com>

  build fix

Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
pavel@ucw.cz authored and Linus Torvalds committed Jun 25, 2005
1 parent ac25575 commit 21d6b7e
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions Documentation/power/pci.txt
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,44 @@ a request to enable wake events from D3, two calls should be made to
pci_enable_wake (one for both D3hot and D3cold).


A reference implementation
-------------------------
.suspend()
{
/* driver specific operations */

/* Disable IRQ */
free_irq();
/* If using MSI */
pci_disable_msi();

pci_save_state();
pci_enable_wake();
/* Disable IO/bus master/irq router */
pci_disable_device();
pci_set_power_state(pci_choose_state());
}

.resume()
{
pci_set_power_state(PCI_D0);
pci_restore_state();
/* device's irq possibly is changed, driver should take care */
pci_enable_device();
pci_set_master();

/* if using MSI, device's vector possibly is changed */
pci_enable_msi();

request_irq();
/* driver specific operations; */
}

This is a typical implementation. Drivers can slightly change the order
of the operations in the implementation, ignore some operations or add
more deriver specific operations in it, but drivers should do something like
this on the whole.

5. Resources
~~~~~~~~~~~~

Expand Down

0 comments on commit 21d6b7e

Please sign in to comment.