From: Hou Zhiqiang <zhiqiang....@nxp.com>

LX2160A rev2 uses different PCIe controller, so EP mode DT
nodes also need to be fixed up.

Signed-off-by: Hou Zhiqiang <zhiqiang....@nxp.com>
---
 drivers/pci/pcie_layerscape_fixup_common.c | 26 ++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/pci/pcie_layerscape_fixup_common.c 
b/drivers/pci/pcie_layerscape_fixup_common.c
index fef0a75f11..0a42997696 100644
--- a/drivers/pci/pcie_layerscape_fixup_common.c
+++ b/drivers/pci/pcie_layerscape_fixup_common.c
@@ -41,6 +41,8 @@ int lx2_board_fix_fdt(void *fdt)
                { "config_axi_slave", "config" }
        };
        int off = -1, i;
+       const fdt32_t *prop;
+       u32 ob_wins, ib_wins;
 
        off = fdt_node_offset_by_compatible(fdt, -1, "fsl,lx2160a-pcie");
        while (off != -FDT_ERR_NOTFOUND) {
@@ -86,6 +88,30 @@ int lx2_board_fix_fdt(void *fdt)
                off = fdt_node_offset_by_compatible(fdt, off,
                                                    "fsl,lx2160a-pcie");
        }
+
+       /* Fixup PCIe EP nodes */
+       off = -1;
+       off = fdt_node_offset_by_compatible(fdt, off, "fsl,lx2160a-pcie-ep");
+       while (off != -FDT_ERR_NOTFOUND) {
+               fdt_setprop_string(fdt, off, "compatible",
+                                  "fsl,lx2160ar2-pcie-ep");
+               prop = fdt_getprop(fdt, off, "apio-wins", NULL);
+               if (!prop) {
+                       printf("%s: Failed to fixup PCIe EP node @0x%x\n",
+                              __func__, off);
+                       continue;
+               }
+
+               ob_wins = fdt32_to_cpu(*prop);
+               ib_wins = (ob_wins == 256) ? 24 : 8;
+               fdt_setprop_u32(fdt, off, "num-ib-windows", ib_wins);
+               fdt_setprop_u32(fdt, off, "num-ob-windows", ob_wins);
+               fdt_delprop(fdt, off, "apio-wins");
+
+               off = fdt_node_offset_by_compatible(fdt, off,
+                                                   "fsl,lx2160a-pcie-ep");
+       }
+
        return 0;
 }
 
-- 
2.17.1

Reply via email to