summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2017-12-27 08:17:05 -0500
committerTom Rini <trini@konsulko.com>2017-12-27 08:17:05 -0500
commit8e5f0497c8a8ab9bd7314737f2edb4711733b6fe (patch)
tree7ef6e942cb4fda392bb736f728b55b6882e265bd /board
parent7e3caa81e0e9cc5e2beed4a3a1c334e2119f4498 (diff)
parent4ace304062e143da8ab7851d0c8570d61777ec06 (diff)
Merge git://git.denx.de/u-boot-dm
Diffstat (limited to 'board')
-rw-r--r--board/freescale/ls1046ardb/eth.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/board/freescale/ls1046ardb/eth.c b/board/freescale/ls1046ardb/eth.c
index ac8bbec9a3..9a07609820 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