Merge branches 'acpi-scan', 'acpi-pm', 'acpi-power' and 'acpi-pci'
[linux-2.6-microblaze.git] / drivers / acpi / power.c
index 5dcb02e..8c4a73a 100644 (file)
@@ -81,9 +81,9 @@ struct acpi_power_resource *to_power_resource(struct acpi_device *device)
 
 static struct acpi_power_resource *acpi_power_get_context(acpi_handle handle)
 {
-       struct acpi_device *device;
+       struct acpi_device *device = acpi_fetch_acpi_dev(handle);
 
-       if (acpi_bus_get_device(handle, &device))
+       if (!device)
                return NULL;
 
        return to_power_resource(device);
@@ -716,6 +716,9 @@ int acpi_enable_wakeup_device_power(struct acpi_device *dev, int sleep_state)
 
        mutex_lock(&acpi_device_lock);
 
+       dev_dbg(&dev->dev, "Enabling wakeup power (count %d)\n",
+               dev->wakeup.prepare_count);
+
        if (dev->wakeup.prepare_count++)
                goto out;
 
@@ -734,8 +737,11 @@ int acpi_enable_wakeup_device_power(struct acpi_device *dev, int sleep_state)
        if (err) {
                acpi_power_off_list(&dev->wakeup.resources);
                dev->wakeup.prepare_count = 0;
+               goto out;
        }
 
+       dev_dbg(&dev->dev, "Wakeup power enabled\n");
+
  out:
        mutex_unlock(&acpi_device_lock);
        return err;
@@ -757,6 +763,9 @@ int acpi_disable_wakeup_device_power(struct acpi_device *dev)
 
        mutex_lock(&acpi_device_lock);
 
+       dev_dbg(&dev->dev, "Disabling wakeup power (count %d)\n",
+               dev->wakeup.prepare_count);
+
        /* Do nothing if wakeup power has not been enabled for this device. */
        if (dev->wakeup.prepare_count <= 0)
                goto out;
@@ -782,8 +791,11 @@ int acpi_disable_wakeup_device_power(struct acpi_device *dev)
        if (err) {
                dev_err(&dev->dev, "Cannot turn off wakeup power resources\n");
                dev->wakeup.flags.valid = 0;
+               goto out;
        }
 
+       dev_dbg(&dev->dev, "Wakeup power disabled\n");
+
  out:
        mutex_unlock(&acpi_device_lock);
        return err;
@@ -916,15 +928,14 @@ static void acpi_power_add_resource_to_list(struct acpi_power_resource *resource
 
 struct acpi_device *acpi_add_power_resource(acpi_handle handle)
 {
+       struct acpi_device *device = acpi_fetch_acpi_dev(handle);
        struct acpi_power_resource *resource;
-       struct acpi_device *device = NULL;
        union acpi_object acpi_object;
        struct acpi_buffer buffer = { sizeof(acpi_object), &acpi_object };
        acpi_status status;
        u8 state_dummy;
        int result;
 
-       acpi_bus_get_device(handle, &device);
        if (device)
                return device;