summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Nowicki <tn@semihalf.com>2016-06-10 22:36:26 +0200
committerBjorn Helgaas <bhelgaas@google.com>2016-06-11 01:28:39 +0200
commit2ab51ddeca2fc32a7040d8560415be3366fa9ba7 (patch)
tree4db4d6e2af8dcdbce19338ae78f3ce84806fbd7c
parentPCI: Factor DT-specific pci_bus_find_domain_nr() code out (diff)
downloadlinux-2ab51ddeca2fc32a7040d8560415be3366fa9ba7.tar.xz
linux-2ab51ddeca2fc32a7040d8560415be3366fa9ba7.zip
ARM64: PCI: Add acpi_pci_bus_find_domain_nr()
Extend pci_bus_find_domain_nr() so it can find the domain from either: - ACPI, via the new acpi_pci_bus_find_domain_nr() interface, or - DT, via of_pci_bus_find_domain_nr() Note that this is only used for CONFIG_PCI_DOMAINS_GENERIC=y, so it does not affect x86 or ia64. [bhelgaas: changelog] Signed-off-by: Tomasz Nowicki <tn@semihalf.com> Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-rw-r--r--arch/arm64/kernel/pci.c7
-rw-r--r--drivers/pci/pci.c4
-rw-r--r--include/linux/pci.h6
3 files changed, 16 insertions, 1 deletions
diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c
index 3c4e308b40a0..d5d3d26834cf 100644
--- a/arch/arm64/kernel/pci.c
+++ b/arch/arm64/kernel/pci.c
@@ -17,6 +17,7 @@
#include <linux/mm.h>
#include <linux/of_pci.h>
#include <linux/of_platform.h>
+#include <linux/pci.h>
#include <linux/slab.h>
/*
@@ -85,6 +86,12 @@ EXPORT_SYMBOL(pcibus_to_node);
#endif
#ifdef CONFIG_ACPI
+
+int acpi_pci_bus_find_domain_nr(struct pci_bus *bus)
+{
+ return 0;
+}
+
/* Root bridge scanning */
struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
{
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 97f7cd4a7e86..4834ceeca0d2 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -7,6 +7,7 @@
* Copyright 1997 -- 2000 Martin Mares <mj@ucw.cz>
*/
+#include <linux/acpi.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/init.h>
@@ -4990,7 +4991,8 @@ static int of_pci_bus_find_domain_nr(struct device *parent)
int pci_bus_find_domain_nr(struct pci_bus *bus, struct device *parent)
{
- return of_pci_bus_find_domain_nr(parent);
+ return acpi_disabled ? of_pci_bus_find_domain_nr(parent) :
+ acpi_pci_bus_find_domain_nr(bus);
}
#endif
#endif
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 48839e817ef2..0671e9a840cb 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1390,6 +1390,12 @@ static inline int pci_domain_nr(struct pci_bus *bus)
{
return bus->domain_nr;
}
+#ifdef CONFIG_ACPI
+int acpi_pci_bus_find_domain_nr(struct pci_bus *bus);
+#else
+static inline int acpi_pci_bus_find_domain_nr(struct pci_bus *bus)
+{ return 0; }
+#endif
int pci_bus_find_domain_nr(struct pci_bus *bus, struct device *parent);
#endif