diff mbox series

pci: layerscape: Fixup PCIe EP mode DT nodes for LX2160A rev2

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

Commit Message

Z.Q. Hou Sept. 13, 2020, 3:12 p.m. UTC
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(+)

Comments

Priyanka Jain Sept. 18, 2020, 1:45 p.m. UTC | #1
>-----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 mbox series

Patch

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;
 }