diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2012-05-07 09:23:27 -0600 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2012-05-07 09:23:27 -0600 |
commit | 0cbaa57d828aa0a067e06d3c6d795b12ae9fb776 (patch) | |
tree | 871e08f70566b16736ae228eddac018c77ca1144 /drivers/pci/probe.c | |
parent | 99662dd1ce05dbe6394771fcb6ca21bd2aa35987 (diff) | |
parent | 284f5f9dbac170b054c1e386ef92cbf654e91bba (diff) |
Merge branch 'topic/stratus' into next
Diffstat (limited to 'drivers/pci/probe.c')
-rw-r--r-- | drivers/pci/probe.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 4c2f22668ea..658ac977cb5 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -10,6 +10,7 @@ #include <linux/module.h> #include <linux/cpumask.h> #include <linux/pci-aspm.h> +#include <asm-generic/pci-bridge.h> #include "pci.h" #define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */ @@ -1336,10 +1337,13 @@ static unsigned no_next_fn(struct pci_dev *dev, unsigned fn) static int only_one_child(struct pci_bus *bus) { struct pci_dev *parent = bus->self; + if (!parent || !pci_is_pcie(parent)) return 0; - if (parent->pcie_type == PCI_EXP_TYPE_ROOT_PORT || - parent->pcie_type == PCI_EXP_TYPE_DOWNSTREAM) + if (parent->pcie_type == PCI_EXP_TYPE_ROOT_PORT) + return 1; + if (parent->pcie_type == PCI_EXP_TYPE_DOWNSTREAM && + !pci_has_flag(PCI_SCAN_ALL_PCIE_DEVS)) return 1; return 0; } |