From: Rafael J. Wysocki Date: Tue, 22 Jan 2013 11:56:35 +0000 (+0100) Subject: ACPI / PM: Fix device power state value after transitions to D3cold X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=e5656271b0221a53e9f74856385112fdcec0dd60;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 --- diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c index 61ae99b09f1c..4cbc9505b365 100644 --- a/drivers/acpi/device_pm.c +++ b/drivers/acpi/device_pm.c @@ -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) {