diff options
Diffstat (limited to 'drivers/acpi/container.c')
| -rw-r--r-- | drivers/acpi/container.c | 31 | 
1 files changed, 6 insertions, 25 deletions
diff --git a/drivers/acpi/container.c b/drivers/acpi/container.c index 811910b50b7..cc79d3e53a3 100644 --- a/drivers/acpi/container.c +++ b/drivers/acpi/container.c @@ -135,30 +135,6 @@ static int acpi_container_remove(struct acpi_device *device, int type)  	return status;  } -static int container_device_add(struct acpi_device **device, acpi_handle handle) -{ -	acpi_handle phandle; -	struct acpi_device *pdev; -	int result; - - -	if (acpi_get_parent(handle, &phandle)) { -		return -ENODEV; -	} - -	if (acpi_bus_get_device(phandle, &pdev)) { -		return -ENODEV; -	} - -	if (acpi_bus_add(device, pdev, handle, ACPI_BUS_TYPE_DEVICE)) { -		return -ENODEV; -	} - -	result = acpi_bus_start(*device); - -	return result; -} -  static void container_notify_cb(acpi_handle handle, u32 type, void *context)  {  	struct acpi_device *device = NULL; @@ -190,11 +166,16 @@ static void container_notify_cb(acpi_handle handle, u32 type, void *context)  		if (!ACPI_FAILURE(status) || device)  			break; -		result = container_device_add(&device, handle); +		result = acpi_bus_scan(handle);  		if (result) {  			acpi_handle_warn(handle, "Failed to add container\n");  			break;  		} +		result = acpi_bus_get_device(handle, &device); +		if (result) { +			acpi_handle_warn(handle, "Missing device object\n"); +			break; +		}  		kobject_uevent(&device->dev.kobj, KOBJ_ONLINE);  		ost_code = ACPI_OST_SC_SUCCESS;  |