aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch')
-rw-r--r--target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch b/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
new file mode 100644
index 0000000000..21c7716846
--- /dev/null
+++ b/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
@@ -0,0 +1,51 @@
+From patchwork Wed Jan 20 22:55:10 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: PCI: iproc: Fix BCMA PCIe bus scanning regression
+From: Ray Jui <rjui@broadcom.com>
+X-Patchwork-Id: 570953
+Message-Id: <1453330510-21926-1-git-send-email-rjui@broadcom.com>
+To: Bjorn Helgaas <bhelgaas@google.com>
+Cc: Rafal Milecki <zajec5@gmail.com>, Hante Meuleman <meuleman@broadcom.com>,
+ Hauke Mehrtens <hauke@hauke-m.de>, <linux-kernel@vger.kernel.org>,
+ <bcm-kernel-feedback-list@broadcom.com>,
+ <linux-pci@vger.kernel.org>, Ray Jui <rjui@broadcom.com>
+Date: Wed, 20 Jan 2016 14:55:10 -0800
+
+Commit 943ebae781f5 ("PCI: iproc: Add PAXC interface support") causes
+regression on EP device detection on BCMA based platforms. This patch
+fixes the issue by allowing multiple devices to be configured on the
+same bus, for all PAXB based child buses
+
+Reported-by: Rafal Milecki <zajec5@gmail.com>
+Fixes: 943ebae781f5 ("PCI: iproc: Add PAXC interface support")
+Signed-off-by: Ray Jui <rjui@broadcom.com>
+---
+ drivers/pci/host/pcie-iproc.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/drivers/pci/host/pcie-iproc.c
++++ b/drivers/pci/host/pcie-iproc.c
+@@ -171,10 +171,11 @@ static inline void iproc_pcie_ob_write(s
+ }
+
+ static inline bool iproc_pcie_device_is_valid(struct iproc_pcie *pcie,
++ unsigned int busnum,
+ unsigned int slot,
+ unsigned int fn)
+ {
+- if (slot > 0)
++ if ((pcie->type == IPROC_PCIE_PAXC || busnum == 0) && slot > 0)
+ return false;
+
+ /* PAXC can only support limited number of functions */
+@@ -199,7 +200,7 @@ static void __iomem *iproc_pcie_map_cfg_
+ u32 val;
+ u16 offset;
+
+- if (!iproc_pcie_device_is_valid(pcie, slot, fn))
++ if (!iproc_pcie_device_is_valid(pcie, busno, slot, fn))
+ return NULL;
+
+ /* root complex access */