summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrabhakar Kushwaha <prabhakar.kushwaha@nxp.com>2017-11-23 11:21:48 (GMT)
committerPrabhakar Kushwaha <prabhakar.kushwaha@nxp.com>2017-12-26 13:35:59 (GMT)
commit03a397cf8bd9045baddb30271246eb23afb997d7 (patch)
tree47de2f2820faf4520b09612ecccedd262a8156fb
parent9159734223b19e8d2068e13388e9d14fee986620 (diff)
downloadu-boot-03a397cf8bd9045baddb30271246eb23afb997d7.tar.xz
boards: ls1046ardb: disable unavailable "ethernet" node in dts
Linux device tree contains "ethernet" node for all possible interface supported by SoC i.e. LS1046A. It is not necessary for a SerDes protocol to support all possible interface. So disable unavailable "ethernet" node in device tree. Also, enable FDT_SEQ_MACADDR_FROM_ENV to fetch MAC address sequentially from environment variables Signed-off-by: Prabhakar Kushwaha <prabhakar.kushwaha@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
-rw-r--r--board/freescale/ls1046ardb/eth.c51
-rw-r--r--include/configs/ls1046ardb.h2
2 files changed, 53 insertions, 0 deletions
diff --git a/board/freescale/ls1046ardb/eth.c b/board/freescale/ls1046ardb/eth.c
index ac8bbec..9a07609 100644
--- a/board/freescale/ls1046ardb/eth.c
+++ b/board/freescale/ls1046ardb/eth.c
@@ -75,3 +75,54 @@ int board_eth_init(bd_t *bis)
return pci_eth_init(bis);
}
+
+#ifdef CONFIG_FMAN_ENET
+int fdt_update_ethernet_dt(void *blob)
+{
+ u32 srds_s1;
+ int i, prop;
+ int offset, nodeoff;
+ const char *path;
+ struct ccsr_gur *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
+
+ srds_s1 = in_be32(&gur->rcwsr[4]) &
+ FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_MASK;
+ srds_s1 >>= FSL_CHASSIS2_RCWSR4_SRDS1_PRTCL_SHIFT;
+
+ /* Cycle through all aliases */
+ for (prop = 0; ; prop++) {
+ const char *name;
+
+ /* FDT might have been edited, recompute the offset */
+ offset = fdt_first_property_offset(blob,
+ fdt_path_offset(blob,
+ "/aliases")
+ );
+ /* Select property number 'prop' */
+ for (i = 0; i < prop; i++)
+ offset = fdt_next_property_offset(blob, offset);
+
+ if (offset < 0)
+ break;
+
+ path = fdt_getprop_by_offset(blob, offset, &name, NULL);
+ nodeoff = fdt_path_offset(blob, path);
+
+ switch (srds_s1) {
+ case 0x1133:
+ if (!strcmp(name, "ethernet0"))
+ fdt_status_disabled(blob, nodeoff);
+
+ if (!strcmp(name, "ethernet1"))
+ fdt_status_disabled(blob, nodeoff);
+ break;
+ default:
+ printf("%s: Invalid SerDes prtcl 0x%x for LS1046ARDB\n",
+ __func__, srds_s1);
+ break;
+ }
+ }
+
+ return 0;
+}
+#endif
diff --git a/include/configs/ls1046ardb.h b/include/configs/ls1046ardb.h
index 5afd5c6..42c126f 100644
--- a/include/configs/ls1046ardb.h
+++ b/include/configs/ls1046ardb.h
@@ -195,6 +195,8 @@
#define FM1_10GEC1_PHY_ADDR 0x0
+#define FDT_SEQ_MACADDR_FROM_ENV
+
#define CONFIG_ETHPRIME "FM1@DTSEC3"
#endif