From: Kristen Carlson Accardi Date: Sat, 3 Feb 2007 03:33:00 +0000 (-0500) Subject: ACPI: dock: check if parent is on dock X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=fe9a2f77e5ad508b18671571c0b3f6f79ea709a8;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git ACPI: dock: check if parent is on dock When determining if a device is on a dock station, we should check the parent of the device as well. Signed-off-by: Kristen Carlson Accardi Signed-off-by: Len Brown --- diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c index 90990a4b6526..688e83a16906 100644 --- a/drivers/acpi/dock.c +++ b/drivers/acpi/dock.c @@ -615,20 +615,28 @@ static acpi_status find_dock_devices(acpi_handle handle, u32 lvl, void *context, void **rv) { acpi_status status; - acpi_handle tmp; + acpi_handle tmp, parent; struct dock_station *ds = context; struct dock_dependent_device *dd; status = acpi_bus_get_ejd(handle, &tmp); - if (ACPI_FAILURE(status)) - return AE_OK; + if (ACPI_FAILURE(status)) { + /* try the parent device as well */ + status = acpi_get_parent(handle, &parent); + if (ACPI_FAILURE(status)) + goto fdd_out; + /* see if parent is dependent on dock */ + status = acpi_bus_get_ejd(parent, &tmp); + if (ACPI_FAILURE(status)) + goto fdd_out; + } if (tmp == ds->handle) { dd = alloc_dock_dependent_device(handle); if (dd) add_dock_dependent_device(ds, dd); } - +fdd_out: return AE_OK; }