|
@@ -81,13 +81,15 @@ static struct acpi_bus_type *acpi_get_bus_type(struct device *dev)
|
|
static acpi_status do_acpi_find_child(acpi_handle handle, u32 lvl_not_used,
|
|
static acpi_status do_acpi_find_child(acpi_handle handle, u32 lvl_not_used,
|
|
void *addr_p, void **ret_p)
|
|
void *addr_p, void **ret_p)
|
|
{
|
|
{
|
|
- unsigned long long addr;
|
|
|
|
|
|
+ unsigned long long addr, sta;
|
|
acpi_status status;
|
|
acpi_status status;
|
|
|
|
|
|
status = acpi_evaluate_integer(handle, METHOD_NAME__ADR, NULL, &addr);
|
|
status = acpi_evaluate_integer(handle, METHOD_NAME__ADR, NULL, &addr);
|
|
if (ACPI_SUCCESS(status) && addr == *((u64 *)addr_p)) {
|
|
if (ACPI_SUCCESS(status) && addr == *((u64 *)addr_p)) {
|
|
*ret_p = handle;
|
|
*ret_p = handle;
|
|
- return AE_CTRL_TERMINATE;
|
|
|
|
|
|
+ status = acpi_bus_get_status_handle(handle, &sta);
|
|
|
|
+ if (ACPI_SUCCESS(status) && (sta & ACPI_STA_DEVICE_ENABLED))
|
|
|
|
+ return AE_CTRL_TERMINATE;
|
|
}
|
|
}
|
|
return AE_OK;
|
|
return AE_OK;
|
|
}
|
|
}
|