}
}
- dev_err(&adev->dev, "Failed to evaluate _DEP.\n");
++static void acpi_device_dep_initialize(struct acpi_device *adev)
++{
++ struct acpi_dep_data *dep;
++ struct acpi_handle_list dep_devices;
++ acpi_status status;
++ int i;
++
++ if (!acpi_has_method(adev->handle, "_DEP"))
++ return;
++
++ status = acpi_evaluate_reference(adev->handle, "_DEP", NULL,
++ &dep_devices);
++ if (ACPI_FAILURE(status)) {
- dev_err(&adev->dev, "Error reading device info\n");
+ ++ dev_dbg(&adev->dev, "Failed to evaluate _DEP.\n");
++ return;
++ }
++
++ for (i = 0; i < dep_devices.count; i++) {
++ struct acpi_device_info *info;
++ int skip;
++
++ status = acpi_get_object_info(dep_devices.handles[i], &info);
++ if (ACPI_FAILURE(status)) {
+ ++ dev_dbg(&adev->dev, "Error reading _DEP device info\n");
++ continue;
++ }
++
++ /*
++ * Skip the dependency of Windows System Power
++ * Management Controller
++ */
++ skip = info->valid & ACPI_VALID_HID &&
++ !strcmp(info->hardware_id.string, "INT3396");
++
++ kfree(info);
++
++ if (skip)
++ continue;
++
++ dep = kzalloc(sizeof(struct acpi_dep_data), GFP_KERNEL);
++ if (!dep)
++ return;
++
++ dep->master = dep_devices.handles[i];
++ dep->slave = adev->handle;
++ adev->dep_unmet++;
++
++ mutex_lock(&acpi_dep_list_lock);
++ list_add_tail(&dep->node , &acpi_dep_list);
++ mutex_unlock(&acpi_dep_list_lock);
++ }
++}
++
static acpi_status acpi_bus_check_add(acpi_handle handle, u32 lvl_not_used,
void *not_used, void **return_value)
{