|
@@ -815,16 +815,22 @@ static void acpi_bus_set_run_wake_flags(struct acpi_device *device)
|
|
!!(event_status & ACPI_EVENT_FLAG_HANDLE);
|
|
!!(event_status & ACPI_EVENT_FLAG_HANDLE);
|
|
}
|
|
}
|
|
|
|
|
|
-static int acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
|
|
|
|
|
|
+static void acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
|
|
{
|
|
{
|
|
|
|
+ acpi_handle temp;
|
|
acpi_status status = 0;
|
|
acpi_status status = 0;
|
|
int psw_error;
|
|
int psw_error;
|
|
|
|
|
|
|
|
+ /* Presence of _PRW indicates wake capable */
|
|
|
|
+ status = acpi_get_handle(device->handle, "_PRW", &temp);
|
|
|
|
+ if (ACPI_FAILURE(status))
|
|
|
|
+ return;
|
|
|
|
+
|
|
status = acpi_bus_extract_wakeup_device_power_package(device->handle,
|
|
status = acpi_bus_extract_wakeup_device_power_package(device->handle,
|
|
&device->wakeup);
|
|
&device->wakeup);
|
|
if (ACPI_FAILURE(status)) {
|
|
if (ACPI_FAILURE(status)) {
|
|
ACPI_EXCEPTION((AE_INFO, status, "Extracting _PRW package"));
|
|
ACPI_EXCEPTION((AE_INFO, status, "Extracting _PRW package"));
|
|
- goto end;
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
device->wakeup.flags.valid = 1;
|
|
device->wakeup.flags.valid = 1;
|
|
@@ -840,11 +846,6 @@ static int acpi_bus_get_wakeup_device_flags(struct acpi_device *device)
|
|
if (psw_error)
|
|
if (psw_error)
|
|
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
|
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
|
"error in _DSW or _PSW evaluation\n"));
|
|
"error in _DSW or _PSW evaluation\n"));
|
|
-
|
|
|
|
-end:
|
|
|
|
- if (ACPI_FAILURE(status))
|
|
|
|
- device->flags.wake_capable = 0;
|
|
|
|
- return 0;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static void acpi_bus_add_power_resource(acpi_handle handle);
|
|
static void acpi_bus_add_power_resource(acpi_handle handle);
|
|
@@ -950,11 +951,6 @@ static int acpi_bus_get_flags(struct acpi_device *device)
|
|
if (ACPI_SUCCESS(status))
|
|
if (ACPI_SUCCESS(status))
|
|
device->flags.power_manageable = 1;
|
|
device->flags.power_manageable = 1;
|
|
|
|
|
|
- /* Presence of _PRW indicates wake capable */
|
|
|
|
- status = acpi_get_handle(device->handle, "_PRW", &temp);
|
|
|
|
- if (ACPI_SUCCESS(status))
|
|
|
|
- device->flags.wake_capable = 1;
|
|
|
|
-
|
|
|
|
/* TBD: Performance management */
|
|
/* TBD: Performance management */
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -1281,11 +1277,7 @@ static int acpi_add_single_object(struct acpi_device **child,
|
|
* Wakeup device management
|
|
* Wakeup device management
|
|
*-----------------------
|
|
*-----------------------
|
|
*/
|
|
*/
|
|
- if (device->flags.wake_capable) {
|
|
|
|
- result = acpi_bus_get_wakeup_device_flags(device);
|
|
|
|
- if (result)
|
|
|
|
- goto end;
|
|
|
|
- }
|
|
|
|
|
|
+ acpi_bus_get_wakeup_device_flags(device);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Performance Management
|
|
* Performance Management
|