diff options
author | Lin Ming <ming.m.lin@intel.com> | 2009-11-12 21:06:08 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-11-24 21:31:10 -0500 |
commit | 2263576cfc6e8f6ab038126c3254404b9fcb1c33 (patch) | |
tree | 1c1bd06cc5d89978a23a19d549764d3dc8c7c6c4 /drivers/pci/hotplug | |
parent | 7d5d05d0704127c9acd24090c14731c111bd0af1 (diff) |
ACPICA: Add post-order callback to acpi_walk_namespace
The existing interface only has a pre-order callback. This change
adds an additional parameter for a post-order callback which will
be more useful for bus scans. ACPICA BZ 779.
Also update the external calls to acpi_walk_namespace.
http://www.acpica.org/bugzilla/show_bug.cgi?id=779
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/pci/hotplug')
-rw-r--r-- | drivers/pci/hotplug/acpi_pcihp.c | 2 | ||||
-rw-r--r-- | drivers/pci/hotplug/acpiphp_glue.c | 22 | ||||
-rw-r--r-- | drivers/pci/hotplug/acpiphp_ibm.c | 2 |
3 files changed, 13 insertions, 13 deletions
diff --git a/drivers/pci/hotplug/acpi_pcihp.c b/drivers/pci/hotplug/acpi_pcihp.c index a73028ec52e5..0f32571b94df 100644 --- a/drivers/pci/hotplug/acpi_pcihp.c +++ b/drivers/pci/hotplug/acpi_pcihp.c | |||
@@ -471,7 +471,7 @@ int acpi_pci_detect_ejectable(acpi_handle handle) | |||
471 | return found; | 471 | return found; |
472 | 472 | ||
473 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1, | 473 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1, |
474 | check_hotplug, (void *)&found, NULL); | 474 | check_hotplug, NULL, (void *)&found, NULL); |
475 | return found; | 475 | return found; |
476 | } | 476 | } |
477 | EXPORT_SYMBOL_GPL(acpi_pci_detect_ejectable); | 477 | EXPORT_SYMBOL_GPL(acpi_pci_detect_ejectable); |
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c index 58d25a163a8b..df1b0ea089d1 100644 --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c | |||
@@ -266,7 +266,7 @@ static int detect_ejectable_slots(acpi_handle handle) | |||
266 | int found = acpi_pci_detect_ejectable(handle); | 266 | int found = acpi_pci_detect_ejectable(handle); |
267 | if (!found) { | 267 | if (!found) { |
268 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, | 268 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, |
269 | is_pci_dock_device, (void *)&found, NULL); | 269 | is_pci_dock_device, NULL, (void *)&found, NULL); |
270 | } | 270 | } |
271 | return found; | 271 | return found; |
272 | } | 272 | } |
@@ -281,7 +281,7 @@ static void init_bridge_misc(struct acpiphp_bridge *bridge) | |||
281 | 281 | ||
282 | /* register all slot objects under this bridge */ | 282 | /* register all slot objects under this bridge */ |
283 | status = acpi_walk_namespace(ACPI_TYPE_DEVICE, bridge->handle, (u32)1, | 283 | status = acpi_walk_namespace(ACPI_TYPE_DEVICE, bridge->handle, (u32)1, |
284 | register_slot, bridge, NULL); | 284 | register_slot, NULL, bridge, NULL); |
285 | if (ACPI_FAILURE(status)) { | 285 | if (ACPI_FAILURE(status)) { |
286 | list_del(&bridge->list); | 286 | list_del(&bridge->list); |
287 | return; | 287 | return; |
@@ -447,7 +447,7 @@ find_p2p_bridge(acpi_handle handle, u32 lvl, void *context, void **rv) | |||
447 | 447 | ||
448 | /* search P2P bridges under this p2p bridge */ | 448 | /* search P2P bridges under this p2p bridge */ |
449 | status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, | 449 | status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, |
450 | find_p2p_bridge, NULL, NULL); | 450 | find_p2p_bridge, NULL, NULL, NULL); |
451 | if (ACPI_FAILURE(status)) | 451 | if (ACPI_FAILURE(status)) |
452 | warn("find_p2p_bridge failed (error code = 0x%x)\n", status); | 452 | warn("find_p2p_bridge failed (error code = 0x%x)\n", status); |
453 | 453 | ||
@@ -485,7 +485,7 @@ static int add_bridge(acpi_handle handle) | |||
485 | 485 | ||
486 | /* search P2P bridges under this host bridge */ | 486 | /* search P2P bridges under this host bridge */ |
487 | status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, | 487 | status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, |
488 | find_p2p_bridge, NULL, NULL); | 488 | find_p2p_bridge, NULL, NULL, NULL); |
489 | 489 | ||
490 | if (ACPI_FAILURE(status)) | 490 | if (ACPI_FAILURE(status)) |
491 | warn("find_p2p_bridge failed (error code = 0x%x)\n", status); | 491 | warn("find_p2p_bridge failed (error code = 0x%x)\n", status); |
@@ -573,7 +573,7 @@ cleanup_p2p_bridge(acpi_handle handle, u32 lvl, void *context, void **rv) | |||
573 | /* cleanup p2p bridges under this P2P bridge | 573 | /* cleanup p2p bridges under this P2P bridge |
574 | in a depth-first manner */ | 574 | in a depth-first manner */ |
575 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, | 575 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, (u32)1, |
576 | cleanup_p2p_bridge, NULL, NULL); | 576 | cleanup_p2p_bridge, NULL, NULL, NULL); |
577 | 577 | ||
578 | bridge = acpiphp_handle_to_bridge(handle); | 578 | bridge = acpiphp_handle_to_bridge(handle); |
579 | if (bridge) | 579 | if (bridge) |
@@ -589,7 +589,7 @@ static void remove_bridge(acpi_handle handle) | |||
589 | /* cleanup p2p bridges under this host bridge | 589 | /* cleanup p2p bridges under this host bridge |
590 | in a depth-first manner */ | 590 | in a depth-first manner */ |
591 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, | 591 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, |
592 | (u32)1, cleanup_p2p_bridge, NULL, NULL); | 592 | (u32)1, cleanup_p2p_bridge, NULL, NULL, NULL); |
593 | 593 | ||
594 | /* | 594 | /* |
595 | * On root bridges with hotplug slots directly underneath (ie, | 595 | * On root bridges with hotplug slots directly underneath (ie, |
@@ -778,7 +778,7 @@ static int acpiphp_configure_ioapics(acpi_handle handle) | |||
778 | { | 778 | { |
779 | ioapic_add(handle, 0, NULL, NULL); | 779 | ioapic_add(handle, 0, NULL, NULL); |
780 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, | 780 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, |
781 | ACPI_UINT32_MAX, ioapic_add, NULL, NULL); | 781 | ACPI_UINT32_MAX, ioapic_add, NULL, NULL, NULL); |
782 | return 0; | 782 | return 0; |
783 | } | 783 | } |
784 | 784 | ||
@@ -786,7 +786,7 @@ static int acpiphp_unconfigure_ioapics(acpi_handle handle) | |||
786 | { | 786 | { |
787 | ioapic_remove(handle, 0, NULL, NULL); | 787 | ioapic_remove(handle, 0, NULL, NULL); |
788 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, | 788 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, |
789 | ACPI_UINT32_MAX, ioapic_remove, NULL, NULL); | 789 | ACPI_UINT32_MAX, ioapic_remove, NULL, NULL, NULL); |
790 | return 0; | 790 | return 0; |
791 | } | 791 | } |
792 | 792 | ||
@@ -1367,7 +1367,7 @@ static void handle_hotplug_event_bridge(acpi_handle handle, u32 type, void *cont | |||
1367 | bridge = acpiphp_handle_to_bridge(handle); | 1367 | bridge = acpiphp_handle_to_bridge(handle); |
1368 | if (type == ACPI_NOTIFY_BUS_CHECK) { | 1368 | if (type == ACPI_NOTIFY_BUS_CHECK) { |
1369 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, ACPI_UINT32_MAX, | 1369 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, ACPI_UINT32_MAX, |
1370 | count_sub_bridges, &num_sub_bridges, NULL); | 1370 | count_sub_bridges, NULL, &num_sub_bridges, NULL); |
1371 | } | 1371 | } |
1372 | 1372 | ||
1373 | if (!bridge && !num_sub_bridges) { | 1373 | if (!bridge && !num_sub_bridges) { |
@@ -1388,7 +1388,7 @@ static void handle_hotplug_event_bridge(acpi_handle handle, u32 type, void *cont | |||
1388 | } | 1388 | } |
1389 | if (num_sub_bridges) | 1389 | if (num_sub_bridges) |
1390 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, | 1390 | acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, |
1391 | ACPI_UINT32_MAX, check_sub_bridges, NULL, NULL); | 1391 | ACPI_UINT32_MAX, check_sub_bridges, NULL, NULL, NULL); |
1392 | break; | 1392 | break; |
1393 | 1393 | ||
1394 | case ACPI_NOTIFY_DEVICE_CHECK: | 1394 | case ACPI_NOTIFY_DEVICE_CHECK: |
@@ -1512,7 +1512,7 @@ int __init acpiphp_glue_init(void) | |||
1512 | int num = 0; | 1512 | int num = 0; |
1513 | 1513 | ||
1514 | acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, | 1514 | acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, |
1515 | ACPI_UINT32_MAX, find_root_bridges, &num, NULL); | 1515 | ACPI_UINT32_MAX, find_root_bridges, NULL, &num, NULL); |
1516 | 1516 | ||
1517 | if (num <= 0) | 1517 | if (num <= 0) |
1518 | return -1; | 1518 | return -1; |
diff --git a/drivers/pci/hotplug/acpiphp_ibm.c b/drivers/pci/hotplug/acpiphp_ibm.c index e7be66dbac21..aa5df485f8cf 100644 --- a/drivers/pci/hotplug/acpiphp_ibm.c +++ b/drivers/pci/hotplug/acpiphp_ibm.c | |||
@@ -434,7 +434,7 @@ static int __init ibm_acpiphp_init(void) | |||
434 | dbg("%s\n", __func__); | 434 | dbg("%s\n", __func__); |
435 | 435 | ||
436 | if (acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, | 436 | if (acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, |
437 | ACPI_UINT32_MAX, ibm_find_acpi_device, | 437 | ACPI_UINT32_MAX, ibm_find_acpi_device, NULL, |
438 | &ibm_acpi_handle, NULL) != FOUND_APCI) { | 438 | &ibm_acpi_handle, NULL) != FOUND_APCI) { |
439 | err("%s: acpi_walk_namespace failed\n", __func__); | 439 | err("%s: acpi_walk_namespace failed\n", __func__); |
440 | retval = -ENODEV; | 440 | retval = -ENODEV; |