ACPI / PM: Fix device power state value after transitions to D3cold

When a transition to the D3cold power state is requested,
acpi_device_set_power() first carries out a transition to D3hot and
then turns off the device's power resources.  However, it fails to
update the device's power.state field appropriately and D3hot is
stored in it as a result.

Fix this, but make sure that the device's power state will be
D3hot if its power resources cannot be turned off in the final
step.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Rafael J. Wysocki 2013-01-22 12:56:35 +01:00
parent 898fee4f6e
commit e5656271b0

View File

@ -264,8 +264,11 @@ int acpi_device_set_power(struct acpi_device *device, int state)
if (result)
goto end;
if (cut_power)
result = acpi_power_transition(device, ACPI_STATE_D3_COLD);
if (cut_power) {
device->power.state = state;
state = ACPI_STATE_D3_COLD;
result = acpi_power_transition(device, state);
}
end:
if (result) {