PCI PM: Make pci_set_power_state() handle devices with no PM support
authorRafael J. Wysocki <rjw@sisk.pl>
Mon, 16 Mar 2009 21:40:36 +0000 (22:40 +0100)
committerRafael J. Wysocki <rjw@sisk.pl>
Mon, 30 Mar 2009 19:46:56 +0000 (21:46 +0200)
commit4a865905f685eaefaedf6ade362323dc52aa703b
tree4b0b38ffe0e4f00a13af03ac55957aa32dc9c8ac
parent46939f8b15e44f065d052e89ea4f2adc81fdc740
PCI PM: Make pci_set_power_state() handle devices with no PM support

There is a problem with PCI devices without any PM support (either
native or through the platform) that pci_set_power_state() always
returns error code for them, even if they are being put into D0.
However, such devices are always in D0, so pci_set_power_state()
should return success when attempting to put such a device into D0.
It also should update the current_state field for these devices as
appropriate.  This modification is necessary so that the standard
configuration registers of these devices are successfully restored by
pci_restore_standard_config() during the "early" phase of resume.

In addition, pci_set_power_state() should check the value of
current_state before calling the platform to change the power state
of the device to avoid doing that unnecessarily.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/pci.c