diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-07 18:36:08 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-07 18:36:08 -0500 |
commit | 21d37bbc65e39a26856de6b14be371ff24e0d03f (patch) | |
tree | a04bb72e191cae13f47462c57bb1641c42b7b52b /drivers/acpi/dock.c | |
parent | bff288c19e8b6217ddd660d4fa42c29a0ab1d58c (diff) | |
parent | 57e1c5c87db512629dd44ddeb882a5aaf0e4299e (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (140 commits)
ACPICA: reduce table header messages to fit within 80 columns
asus-laptop: merge with ACPICA table update
ACPI: bay: Convert ACPI Bay driver to be compatible with sysfs update.
ACPI: bay: new driver is EXPERIMENTAL
ACPI: bay: make drive_bays static
ACPI: bay: make bay a platform driver
ACPI: bay: remove prototype procfs code
ACPI: bay: delete unused variable
ACPI: bay: new driver adding removable drive bay support
ACPI: dock: check if parent is on dock
ACPICA: fix gcc build warnings
Altix: Add ACPI SSDT PCI device support (hotplug)
Altix: ACPI SSDT PCI device support
ACPICA: reduce conflicts with Altix patch series
ACPI_NUMA: fix HP IA64 simulator issue with extended memory domain
ACPI: fix HP RX2600 IA64 boot
ACPI: build fix for IBM x440 - CONFIG_X86_SUMMIT
ACPICA: Update version to 20070126
ACPICA: Fix for incorrect parameter passed to AcpiTbDeleteTable during table load.
ACPICA: Update copyright to 2007.
...
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 90990a4b6526..688e83a16906 100644 --- a/drivers/acpi/dock.c +++ b/drivers/acpi/dock.c | |||
@@ -615,20 +615,28 @@ static acpi_status | |||
615 | find_dock_devices(acpi_handle handle, u32 lvl, void *context, void **rv) | 615 | find_dock_devices(acpi_handle handle, u32 lvl, void *context, void **rv) |
616 | { | 616 | { |
617 | acpi_status status; | 617 | acpi_status status; |
618 | acpi_handle tmp; | 618 | acpi_handle tmp, parent; |
619 | struct dock_station *ds = context; | 619 | struct dock_station *ds = context; |
620 | struct dock_dependent_device *dd; | 620 | struct dock_dependent_device *dd; |
621 | 621 | ||
622 | status = acpi_bus_get_ejd(handle, &tmp); | 622 | status = acpi_bus_get_ejd(handle, &tmp); |
623 | if (ACPI_FAILURE(status)) | 623 | if (ACPI_FAILURE(status)) { |
624 | return AE_OK; | 624 | /* try the parent device as well */ |
625 | status = acpi_get_parent(handle, &parent); | ||
626 | if (ACPI_FAILURE(status)) | ||
627 | goto fdd_out; | ||
628 | /* see if parent is dependent on dock */ | ||
629 | status = acpi_bus_get_ejd(parent, &tmp); | ||
630 | if (ACPI_FAILURE(status)) | ||
631 | goto fdd_out; | ||
632 | } | ||
625 | 633 | ||
626 | if (tmp == ds->handle) { | 634 | if (tmp == ds->handle) { |
627 | dd = alloc_dock_dependent_device(handle); | 635 | dd = alloc_dock_dependent_device(handle); |
628 | if (dd) | 636 | if (dd) |
629 | add_dock_dependent_device(ds, dd); | 637 | add_dock_dependent_device(ds, dd); |
630 | } | 638 | } |
631 | 639 | fdd_out: | |
632 | return AE_OK; | 640 | return AE_OK; |
633 | } | 641 | } |
634 | 642 | ||