aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Wunner <lukas@wunner.de>2016-07-27 20:25:41 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-08-30 18:25:54 -0400
commitdaae45caf5a042a0c7d147749ed1e4c970fc86d8 (patch)
tree59adc0be40b0864b766815d11fe51d7ebaaa77d9
parent3eab887a55424fc2c27553b7bfe32330df83f7b8 (diff)
ACPI / bus: Make acpi_get_first_physical_node() public
Following the fwnode of a device is currently a one-way road: We provide ACPI_COMPANION() to obtain the fwnode but there's no (public) method to do the reverse. Granted, there may be multiple physical_nodes, but often the first one in the list is sufficient. A handy function to obtain it was introduced with commit 3b95bd160547 ("ACPI: introduce a function to find the first physical device"), but currently it's only available internally. We're about to add an EFI Device Path parser which needs this function. Consider the following device path: ACPI(PNP0A03,0)/PCI(28,2)/PCI(0,0) The PCI root is encoded as an ACPI device in the path, so the parser has to find the corresponding ACPI device, then find its physical node, find the PCI bridge in slot 1c (decimal 28), function 2 below it and finally find the PCI device in slot 0, function 0. To this end, make acpi_get_first_physical_node() public. Signed-off-by: Lukas Wunner <lukas@wunner.de> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--drivers/acpi/internal.h1
-rw-r--r--include/linux/acpi.h7
2 files changed, 7 insertions, 1 deletions
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index 940218ff0193..bd7c52dd883a 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -116,7 +116,6 @@ bool acpi_device_is_present(struct acpi_device *adev);
116bool acpi_device_is_battery(struct acpi_device *adev); 116bool acpi_device_is_battery(struct acpi_device *adev);
117bool acpi_device_is_first_physical_node(struct acpi_device *adev, 117bool acpi_device_is_first_physical_node(struct acpi_device *adev,
118 const struct device *dev); 118 const struct device *dev);
119struct device *acpi_get_first_physical_node(struct acpi_device *adev);
120 119
121/* -------------------------------------------------------------------------- 120/* --------------------------------------------------------------------------
122 Device Matching and Notification 121 Device Matching and Notification
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 4d8452c2384b..536c12ed2669 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -85,6 +85,8 @@ static inline const char *acpi_dev_name(struct acpi_device *adev)
85 return dev_name(&adev->dev); 85 return dev_name(&adev->dev);
86} 86}
87 87
88struct device *acpi_get_first_physical_node(struct acpi_device *adev);
89
88enum acpi_irq_model_id { 90enum acpi_irq_model_id {
89 ACPI_IRQ_MODEL_PIC = 0, 91 ACPI_IRQ_MODEL_PIC = 0,
90 ACPI_IRQ_MODEL_IOAPIC, 92 ACPI_IRQ_MODEL_IOAPIC,
@@ -634,6 +636,11 @@ static inline const char *acpi_dev_name(struct acpi_device *adev)
634 return NULL; 636 return NULL;
635} 637}
636 638
639static inline struct device *acpi_get_first_physical_node(struct acpi_device *adev)
640{
641 return NULL;
642}
643
637static inline void acpi_early_init(void) { } 644static inline void acpi_early_init(void) { }
638static inline void acpi_subsystem_init(void) { } 645static inline void acpi_subsystem_init(void) { }
639 646