diff options
author | Alexander Chiang <achiang@hp.com> | 2009-06-10 19:55:14 +0000 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2009-06-17 23:22:15 -0400 |
commit | 275582031f9b3597a1b973f3ff617adfe639faa2 (patch) | |
tree | 7f4e2c43709758108042e5dcf9b89d756e5bf8e5 /drivers/acpi/pci_root.c | |
parent | ce597bb42aa84bc73db80509b7c37e7fbc0b75c4 (diff) | |
download | linux-275582031f9b3597a1b973f3ff617adfe639faa2.tar.gz linux-275582031f9b3597a1b973f3ff617adfe639faa2.tar.bz2 linux-275582031f9b3597a1b973f3ff617adfe639faa2.zip |
ACPI: Introduce acpi_is_root_bridge()
Returns whether an ACPI CA node is a PCI root bridge or not.
This API is generically useful, and shouldn't just be a hotplug function.
The implementation becomes much simpler as well.
Signed-off-by: Alex Chiang <achiang@hp.com>
Acked-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi/pci_root.c')
-rw-r--r-- | drivers/acpi/pci_root.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index ca8dba3b40b9..888cb9f5c5fb 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@ -142,6 +142,30 @@ acpi_handle acpi_get_pci_rootbridge_handle(unsigned int seg, unsigned int bus) EXPORT_SYMBOL_GPL(acpi_get_pci_rootbridge_handle); +/** + * acpi_is_root_bridge - determine whether an ACPI CA node is a PCI root bridge + * @handle - the ACPI CA node in question. + * + * Note: we could make this API take a struct acpi_device * instead, but + * for now, it's more convenient to operate on an acpi_handle. + */ +int acpi_is_root_bridge(acpi_handle handle) +{ + int ret; + struct acpi_device *device; + + ret = acpi_bus_get_device(handle, &device); + if (ret) + return 0; + + ret = acpi_match_device_ids(device, root_device_ids); + if (ret) + return 0; + else + return 1; +} +EXPORT_SYMBOL_GPL(acpi_is_root_bridge); + static acpi_status get_root_bridge_busnr_callback(struct acpi_resource *resource, void *data) { |