[U-Boot] [PATCH 3/4] sun8i: On H3 Use word 1 instead of word 3 from the SID
Hans de Goede
hdegoede at redhat.com
Wed Jul 27 18:10:34 CEST 2016
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 <wens at csie.org>
Cc: Corentin LABBE <clabbe.montjoie at gmail.com>
Cc: Amit Singh Tomar <amittomer25 at gmail.com>
Signed-off-by: Hans de Goede <hdegoede at 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
More information about the U-Boot
mailing list