Author: rmilecki
Date: 2016-01-28 08:01:17 +0100 (Thu, 28 Jan 2016)
New Revision: 48518

Added:
   
trunk/target/linux/bcm53xx/patches-4.4/088-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
Removed:
   
trunk/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
Log:
bcm53xx: replace iproc regression fix with the final one

Signed-off-by: Rafa?\197?\130 Mi?\197?\130ecki <[email protected]>

Added: 
trunk/target/linux/bcm53xx/patches-4.4/088-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
===================================================================
--- 
trunk/target/linux/bcm53xx/patches-4.4/088-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
                            (rev 0)
+++ 
trunk/target/linux/bcm53xx/patches-4.4/088-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
    2016-01-28 07:01:17 UTC (rev 48518)
@@ -0,0 +1,73 @@
+From c43e4b52cbf2267047f67c9f65de18ee1ab8bfa2 Mon Sep 17 00:00:00 2001
+From: Ray Jui <[email protected]>
+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 <[email protected]>
+Signed-off-by: Ray Jui <[email protected]>
+Signed-off-by: Bjorn Helgaas <[email protected]>
+---
+ 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) |

Deleted: 
trunk/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
===================================================================
--- 
trunk/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
    2016-01-28 07:01:09 UTC (rev 48517)
+++ 
trunk/target/linux/bcm53xx/patches-4.4/180-PCI-iproc-Fix-BCMA-PCIe-bus-scanning-regression.patch
    2016-01-28 07:01:17 UTC (rev 48518)
@@ -1,51 +0,0 @@
-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 <[email protected]>
-X-Patchwork-Id: 570953
-Message-Id: <[email protected]>
-To: Bjorn Helgaas <[email protected]>
-Cc: Rafal Milecki <[email protected]>, Hante Meuleman <[email protected]>, 
- Hauke Mehrtens <[email protected]>, <[email protected]>,
- <[email protected]>,
- <[email protected]>, Ray Jui <[email protected]>
-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 <[email protected]>
-Fixes: 943ebae781f5 ("PCI: iproc: Add PAXC interface support")
-Signed-off-by: Ray Jui <[email protected]>
----
- 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 */
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to