|
@@ -233,45 +233,20 @@ out:
|
|
|
|
|
|
/*
|
|
|
* 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;
|
|
@@ -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);
|
|
|
|