mirror of https://gitee.com/openkylin/linux.git
[PATCH] suspend: PCI power managment reference implementation
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>
This commit is contained in:
parent
ac25575203
commit
21d6b7e18f
|
@ -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
|
||||
~~~~~~~~~~~~
|
||||
|
||||
|
|
Loading…
Reference in New Issue