Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 324268
b: refs/heads/master
c: 0f2bdfe
h: refs/heads/master
v: v3
  • Loading branch information
Taku Izumi authored and Bjorn Helgaas committed Sep 24, 2012
1 parent 8d48af8 commit 54c6134
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 31 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 55bfe3c0c561783655a8ff2f6f3f19ac1362b132
refs/heads/master: 0f2bdfedcb8f1aaf54a0ab4934f33b3710692a19
35 changes: 5 additions & 30 deletions trunk/drivers/acpi/pci_slot.c
Original file line number Diff line number Diff line change
Expand Up @@ -233,45 +233,20 @@ walk_p2p_bridge(acpi_handle handle, u32 lvl, void *context, void **rv)

/*
* walk_root_bridge - generic root bridge walker
* @handle: points to an acpi_pci_root
* @root: poiner of an acpi_pci_root
* @user_function: user callback for slot objects
*
* Call user_function for all objects underneath this root bridge.
* Walk p2p bridges underneath us and call user_function on those too.
*/
static int
walk_root_bridge(acpi_handle handle, acpi_walk_callback user_function)
walk_root_bridge(struct acpi_pci_root *root, acpi_walk_callback user_function)
{
int seg, bus;
unsigned long long tmp;
acpi_status status;
acpi_handle dummy_handle;
struct pci_bus *pci_bus;
acpi_handle handle = root->device->handle;
struct pci_bus *pci_bus = root->bus;
struct callback_args context;

/* If the bridge doesn't have _STA, we assume it is always there */
status = acpi_get_handle(handle, "_STA", &dummy_handle);
if (ACPI_SUCCESS(status)) {
status = acpi_evaluate_integer(handle, "_STA", NULL, &tmp);
if (ACPI_FAILURE(status)) {
info("%s: _STA evaluation failure\n", __func__);
return 0;
}
if ((tmp & ACPI_STA_DEVICE_FUNCTIONING) == 0)
/* don't register this object */
return 0;
}

status = acpi_evaluate_integer(handle, "_SEG", NULL, &tmp);
seg = ACPI_SUCCESS(status) ? tmp : 0;

status = acpi_evaluate_integer(handle, "_BBN", NULL, &tmp);
bus = ACPI_SUCCESS(status) ? tmp : 0;

pci_bus = pci_find_bus(seg, bus);
if (!pci_bus)
return 0;

context.pci_bus = pci_bus;
context.user_function = user_function;
context.root_handle = handle;
Expand Down Expand Up @@ -299,7 +274,7 @@ acpi_pci_slot_add(struct acpi_pci_root *root)
{
acpi_status status;

status = walk_root_bridge(root->device->handle, register_slot);
status = walk_root_bridge(root, register_slot);
if (ACPI_FAILURE(status))
err("%s: register_slot failure - %d\n", __func__, status);

Expand Down

0 comments on commit 54c6134

Please sign in to comment.