diff options
author | Tom Rini <trini@konsulko.com> | 2017-12-27 08:17:05 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2017-12-27 08:17:05 -0500 |
commit | 8e5f0497c8a8ab9bd7314737f2edb4711733b6fe (patch) | |
tree | 7ef6e942cb4fda392bb736f728b55b6882e265bd /board | |
parent | 7e3caa81e0e9cc5e2beed4a3a1c334e2119f4498 (diff) | |
parent | 4ace304062e143da8ab7851d0c8570d61777ec06 (diff) |
Merge git://git.denx.de/u-boot-dm
Diffstat (limited to 'board')
-rw-r--r-- | board/freescale/ls1046ardb/eth.c | 51 |
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 |