[PATCH 3/4] board: freescale: t208xrdb: add Linux fdt fixups for rev D

Camelia Groza camelia.groza at oss.nxp.com
Thu Jun 10 14:39:38 CEST 2021


From: Camelia Groza <camelia.groza at nxp.com>

Edit Linux's device tree to update the PHY address for the second Aquantia
PHY on boards revisions D and up. Also rename the PHY node to reflect the
changes.

Signed-off-by: Camelia Groza <camelia.groza at nxp.com>
---
 board/freescale/t208xrdb/eth_t208xrdb.c | 33 +++++++++++++++++++++++++
 board/freescale/t208xrdb/t208xrdb.c     |  1 +
 board/freescale/t208xrdb/t208xrdb.h     |  1 +
 3 files changed, 35 insertions(+)

diff --git a/board/freescale/t208xrdb/eth_t208xrdb.c b/board/freescale/t208xrdb/eth_t208xrdb.c
index d0329a87d281..feaca9f1bdc0 100644
--- a/board/freescale/t208xrdb/eth_t208xrdb.c
+++ b/board/freescale/t208xrdb/eth_t208xrdb.c
@@ -151,6 +151,39 @@ void fdt_fixup_board_fman_ethernet(void *fdt)
 	}
 }
 
+/* Update the address of the second Aquantia PHY on boards revision D and up.
+ * Also rename the PHY node to align with the address change.
+ */
+void fdt_fixup_board_phy(void *fdt)
+{
+	const char phy_path[] =
+		"/soc at ffe000000/fman at 400000/mdio at fd000/ethernet-phy at 1";
+	int ret, offset, new_addr = AQR113C_PHY_ADDR2;
+	char new_name[] = "ethernet-phy at 00";
+
+	if (get_hw_revision() == 'C')
+		return;
+
+	offset = fdt_path_offset(fdt, phy_path);
+	if (offset < 0) {
+		printf("ethernet-phy at 1 node not found in the dts\n");
+		return;
+	}
+
+	ret = fdt_setprop(fdt, offset, "reg", &new_addr, sizeof(new_addr));
+	if (ret < 0) {
+		printf("Unable to set 'reg' for node ethernet-phy at 1: %s\n",
+		       fdt_strerror(ret));
+		return;
+	}
+
+	sprintf(new_name, "ethernet-phy@%x", new_addr);
+	ret = fdt_set_name(fdt, offset, new_name);
+	if (ret < 0)
+		printf("Unable to rename node ethernet-phy at 1: %s\n",
+		       fdt_strerror(ret));
+}
+
 void fdt_fixup_board_enet(void *fdt)
 {
 	return;
diff --git a/board/freescale/t208xrdb/t208xrdb.c b/board/freescale/t208xrdb/t208xrdb.c
index 47e20d15a7fe..09495188f2bb 100644
--- a/board/freescale/t208xrdb/t208xrdb.c
+++ b/board/freescale/t208xrdb/t208xrdb.c
@@ -157,6 +157,7 @@ int ft_board_setup(void *blob, struct bd_info *bd)
 	fdt_fixup_board_fman_ethernet(blob);
 #endif
 	fdt_fixup_board_enet(blob);
+	fdt_fixup_board_phy(blob);
 #endif
 
 	return 0;
diff --git a/board/freescale/t208xrdb/t208xrdb.h b/board/freescale/t208xrdb/t208xrdb.h
index cd0a9f44da79..edbc860c9d02 100644
--- a/board/freescale/t208xrdb/t208xrdb.h
+++ b/board/freescale/t208xrdb/t208xrdb.h
@@ -10,5 +10,6 @@
 void fdt_fixup_board_enet(void *blob);
 void pci_of_setup(void *blob, struct bd_info *bd);
 void fdt_fixup_board_fman_ethernet(void *blob);
+void fdt_fixup_board_phy(void *blob);
 
 #endif
-- 
2.17.1



More information about the U-Boot mailing list