On Wed, Apr 27, 2016 at 8:06 AM, Bin Meng <bmeng...@gmail.com> wrote: > Hi Lev, > > On Fri, Jan 8, 2016 at 7:04 AM, Lev Iserovich > <lev.iserov...@deshawresearch.com> wrote: >> For multiple ethernet interfaces the FDT offset of '/aliases' will change as >> we >> are adding MAC addresses to the FDT. >> Therefore only the first interface ('ethernet0') will get properly updated >> in >> the FDT, with the rest getting FDT errors when we try to set their MAC >> address. >> >> Signed-off-by: Lev Iserovich<isero...@deshawresearch.com> >> --- >> >> Changes in v2: >> - Rebase on u-boot-net patches: >> http://patchwork.ozlabs.org/patch/539373/ >> http://patchwork.ozlabs.org/patch/539374/ >> - Recompute offset based on property index >> >> --- >> >> common/fdt_support.c | 21 ++++++++++++++------- >> 1 file changed, 14 insertions(+), 7 deletions(-) >> >> diff --git a/common/fdt_support.c b/common/fdt_support.c >> index 48faba9..713d2a4 100644 >> --- a/common/fdt_support.c >> +++ b/common/fdt_support.c >> @@ -481,23 +481,30 @@ int fdt_fixup_memory(void *blob, u64 start, u64 size) >> >> void fdt_fixup_ethernet(void *fdt) >> { >> - int node, i, j; >> + int i, j, prop; >> char *tmp, *end; >> char mac[16]; >> const char *path; >> unsigned char mac_addr[6]; >> int offset; >> >> - node = fdt_path_offset(fdt, "/aliases"); >> - if (node < 0) >> + if (fdt_path_offset(fdt, "/aliases") < 0) >> return; >> - >> - for (offset = fdt_first_property_offset(fdt, node); >> - offset > 0; >> - offset = fdt_next_property_offset(fdt, offset)) { >> + >> + // Cycle through all aliases > > Please do not use C++ comment style.
+Joe > >> + for (prop = 0; ; prop++) { >> const char *name; >> int len = strlen("ethernet"); >> >> + // FDT might have been edited, recompute the offset > > ditto. > >> + offset = fdt_first_property_offset(fdt, fdt_path_offset(fdt, >> "/aliases")); >> + // Select property number 'prop' > > ditto. > >> + for (i = 0; i < prop; i++) { >> + offset = fdt_next_property_offset(fdt, offset); >> + } >> + if (offset < 0) >> + break; >> + >> path = fdt_getprop_by_offset(fdt, offset, &name, NULL); >> if (!strncmp(name, "ethernet", len)) { >> i = trailing_strtol(name); >> > Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot