diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c index 224f729f700e2e6b75f307de2b02c1af76ba70f2..2b61719d680bde1e697fdd7c23e07177a77c36bc 100644 --- a/drivers/acpi/power.c +++ b/drivers/acpi/power.c @@ -71,6 +71,7 @@ static struct acpi_driver acpi_power_driver = { struct acpi_power_resource { acpi_handle handle; + struct acpi_device * device; acpi_bus_id name; u32 system_level; u32 order; @@ -203,10 +204,8 @@ static int acpi_power_on(acpi_handle handle) return -ENOEXEC; /* Update the power resource's _device_ power state */ - result = acpi_bus_get_device(resource->handle, &device); - if (result) - return result; - device->power.state = ACPI_STATE_D0; + device = resource->device; + resource->device->power.state = ACPI_STATE_D0; ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resource [%s] turned on\n", resource->name)); @@ -253,9 +252,7 @@ static int acpi_power_off_device(acpi_handle handle) return -ENOEXEC; /* Update the power resource's _device_ power state */ - result = acpi_bus_get_device(resource->handle, &device); - if (result) - return result; + device = resource->device; device->power.state = ACPI_STATE_D3; ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Resource [%s] turned off\n", @@ -545,6 +542,7 @@ static int acpi_power_add(struct acpi_device *device) memset(resource, 0, sizeof(struct acpi_power_resource)); resource->handle = device->handle; + resource->device = device; strcpy(resource->name, device->pnp.bus_id); strcpy(acpi_device_name(device), ACPI_POWER_DEVICE_NAME); strcpy(acpi_device_class(device), ACPI_POWER_CLASS);