It seems that bytes 13-14 of the SID / bytes 1-2 from word 3 of the SID are always 0 on H3 making it a poor candidate to use as source for the serialnr / mac-address, switch to word1 which seems to be more random.
Cc: Chen-Yu Tsai <w...@csie.org> Cc: Corentin LABBE <clabbe.montj...@gmail.com> Cc: Amit Singh Tomar <amittome...@gmail.com> Signed-off-by: Hans de Goede <hdego...@redhat.com> --- board/sunxi/board.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/board/sunxi/board.c b/board/sunxi/board.c index ef3fe26..bbe5340 100644 --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -620,12 +620,17 @@ static void setup_environment(const void *fdt) uint8_t mac_addr[6]; char ethaddr[16]; int i, ret; +#ifdef CONFIG_MACH_SUN8I_H3 + const int idx0 = 0, idx1 = 1; +#else + const int idx0 = 0, idx1 = 3; +#endif ret = sunxi_get_sid(sid); - if (ret == 0 && sid[0] != 0 && sid[3] != 0) { + if (ret == 0 && sid[idx0] != 0 && sid[idx1] != 0) { /* Ensure the NIC specific bytes of the mac are not all 0 */ - if ((sid[3] & 0xffffff) == 0) - sid[3] |= 0x800000; + if ((sid[idx1] & 0xffffff) == 0) + sid[idx1] |= 0x800000; for (i = 0; i < 4; i++) { sprintf(ethaddr, "ethernet%d", i); @@ -642,18 +647,18 @@ static void setup_environment(const void *fdt) /* Non OUI / registered MAC address */ mac_addr[0] = (i << 4) | 0x02; - mac_addr[1] = (sid[0] >> 0) & 0xff; - mac_addr[2] = (sid[3] >> 24) & 0xff; - mac_addr[3] = (sid[3] >> 16) & 0xff; - mac_addr[4] = (sid[3] >> 8) & 0xff; - mac_addr[5] = (sid[3] >> 0) & 0xff; + mac_addr[1] = (sid[idx0] >> 0) & 0xff; + mac_addr[2] = (sid[idx1] >> 24) & 0xff; + mac_addr[3] = (sid[idx1] >> 16) & 0xff; + mac_addr[4] = (sid[idx1] >> 8) & 0xff; + mac_addr[5] = (sid[idx1] >> 0) & 0xff; eth_setenv_enetaddr(ethaddr, mac_addr); } if (!getenv("serial#")) { snprintf(serial_string, sizeof(serial_string), - "%08x%08x", sid[0], sid[3]); + "%08x%08x", sid[idx0], sid[idx1]); setenv("serial#", serial_string); } -- 2.7.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot