diff options
author | Len Brown <len.brown@intel.com> | 2007-02-03 01:12:39 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-02-03 01:12:39 -0500 |
commit | 1fcb71b84b05ff3bfd5b5b2eca9a9b3d13a76e3a (patch) | |
tree | dc38e6c01154a3f19f92f9c114ba4b956c5a80a2 /drivers/acpi/dock.c | |
parent | e8bdc5a9c56c140c732246a298922c3cf3777460 (diff) | |
parent | 0ed1e38d513ea683ce125e698dd41d31441e0e8c (diff) |
Pull bay into test branch
Diffstat (limited to 'drivers/acpi/dock.c')
-rw-r--r-- | drivers/acpi/dock.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c index 90990a4b652..688e83a1690 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; } |