bcm53xx: use the final fix for iproc bcma regression
[openwrt/svn-archive/archive.git] / target / linux / bcm53xx / patches-4.4 / 088-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
diff --git a/target/linux/bcm53xx/patches-4.4/088-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch b/target/linux/bcm53xx/patches-4.4/088-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
deleted file mode 100644 (file)
index d35287f..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-From c43e4b52cbf2267047f67c9f65de18ee1ab8bfa2 Mon Sep 17 00:00:00 2001
-From: Ray Jui <rjui@broadcom.com>
-Date: Wed, 27 Jan 2016 16:52:24 -0600
-Subject: [PATCH] PCI: iproc: Fix BCMA PCIe bus scanning regression
-
-Commit 943ebae781f5 ("PCI: iproc: Add PAXC interface support") causes
-regression on EP device detection on BCMA based platforms.
-
-Fix the issue by allowing multiple devices to be configured on the same
-bus, for all PAXB based child buses.  In addition, add a check to prevent
-non-zero function from being used on bus 0 (root bus).
-
-Fixes: 943ebae781f5 ("PCI: iproc: Add PAXC interface support")
-Reported-by: Rafal Milecki <zajec5@gmail.com>
-Signed-off-by: Ray Jui <rjui@broadcom.com>
-Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
----
- drivers/pci/host/pcie-iproc.c | 28 +++++++++++-----------------
- 1 file changed, 11 insertions(+), 17 deletions(-)
-
---- a/drivers/pci/host/pcie-iproc.c
-+++ b/drivers/pci/host/pcie-iproc.c
-@@ -170,20 +170,6 @@ static inline void iproc_pcie_ob_write(s
-       writel(val, pcie->base + offset + (window * 8));
- }
--static inline bool iproc_pcie_device_is_valid(struct iproc_pcie *pcie,
--                                            unsigned int slot,
--                                            unsigned int fn)
--{
--      if (slot > 0)
--              return false;
--
--      /* PAXC can only support limited number of functions */
--      if (pcie->type == IPROC_PCIE_PAXC && fn >= MAX_NUM_PAXC_PF)
--              return false;
--
--      return true;
--}
--
- /**
-  * Note access to the configuration registers are protected at the higher layer
-  * by 'pci_lock' in drivers/pci/access.c
-@@ -199,11 +185,11 @@ static void __iomem *iproc_pcie_map_cfg_
-       u32 val;
-       u16 offset;
--      if (!iproc_pcie_device_is_valid(pcie, slot, fn))
--              return NULL;
--
-       /* root complex access */
-       if (busno == 0) {
-+              if (slot > 0 || fn > 0)
-+                      return NULL;
-+
-               iproc_pcie_write_reg(pcie, IPROC_PCIE_CFG_IND_ADDR,
-                                    where & CFG_IND_ADDR_MASK);
-               offset = iproc_pcie_reg_offset(pcie, IPROC_PCIE_CFG_IND_DATA);
-@@ -213,6 +199,14 @@ static void __iomem *iproc_pcie_map_cfg_
-                       return (pcie->base + offset);
-       }
-+      /*
-+       * PAXC is connected to an internally emulated EP within the SoC.  It
-+       * allows only one device and supports a limited number of functions.
-+       */
-+      if (pcie->type == IPROC_PCIE_PAXC)
-+              if (slot > 0 || fn >= MAX_NUM_PAXC_PF)
-+                      return NULL;
-+
-       /* EP device access */
-       val = (busno << CFG_ADDR_BUS_NUM_SHIFT) |
-               (slot << CFG_ADDR_DEV_NUM_SHIFT) |