diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c index 1ef3385..866c8e7 100644 --- a/drivers/acpi/power.c +++ b/drivers/acpi/power.c @@ -436,8 +436,6 @@ int acpi_power_transition(struct acpi_device *device, int state) cl = &device->power.states[device->power.state].resources; tl = &device->power.states[state].resources; - device->power.state = ACPI_STATE_UNKNOWN; - if (!cl->count && !tl->count) { result = -ENODEV; goto end; @@ -468,12 +466,15 @@ int acpi_power_transition(struct acpi_device *device, int state) goto end; } - /* We shouldn't change the state till all above operations succeed */ - device->power.state = state; - end: - if (result) + end: + if (result) { + device->power.state = ACPI_STATE_UNKNOWN; printk(KERN_WARNING PREFIX "Transitioning device [%s] to D%d\n", device->pnp.bus_id, state); + } else { + /* We shouldn't change the state till all above operations succeed */ + device->power.state = state; + } return result; } @@ -690,7 +691,8 @@ static int acpi_power_resume(struct acpi_device *device) if ((resource->state == ACPI_POWER_RESOURCE_STATE_ON) && list_empty(&resource->reference)) { mutex_unlock(&resource->resource_lock); - result = acpi_power_off_device(device->handle, NULL); +// result = acpi_power_off_device(device->handle, NULL); +printk("RESUME: power resource %s found to be OFF\n", device->pnp.bus_id); return result; }