Message ID | 20200913151250.46134-1-Zhiqiang.Hou@nxp.com |
---|---|
State | Accepted |
Commit | 8ec619f8fd847eb80d75fa0a582e1fa3c74a21a7 |
Delegated to: | Priyanka Jain |
Headers | show |
Series | pci: layerscape: Fixup PCIe EP mode DT nodes for LX2160A rev2 | expand |
>-----Original Message----- >From: Zhiqiang Hou <Zhiqiang.Hou@nxp.com> >Sent: Sunday, September 13, 2020 8:43 PM >To: u-boot@lists.denx.de; Priyanka Jain <priyanka.jain@nxp.com>; Wasim >Khan <wasim.khan@nxp.com> >Cc: Z.q. Hou <zhiqiang.hou@nxp.com> >Subject: [PATCH] pci: layerscape: Fixup PCIe EP mode DT nodes for LX2160A >rev2 > >From: Hou Zhiqiang <Zhiqiang.Hou@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.Hou@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 Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
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; }