[U-Boot] change fdt_fixup_ethernet to use env instead of bd_t

Does anyone see any issue with moving to using the environment instead of the bd_t to get the mac address for a given ethernet controller. This has the benefit of having this bit of code scales easier w/the # of controllers.
Right now I've set the max to 10, but we can easily make it configurable.
- k
void fdt_fixup_ethernet(void *fdt) { int i, j; int node; const char *path;
node = fdt_path_offset(fdt, "/aliases"); if (node >= 0) { char enet[12], mac[10], *tmp, *end; unsigned char mac_addr[6];
for (i = 0; i < 10; i++) { sprintf(enet, "ethernet%d", i); sprintf(mac, "eth%daddr",i);
sprintf(mac, i ? "eth%daddr" : "ethaddr", i); tmp = getenv(mac); path = fdt_getprop(fdt, node, enet, NULL);
if (!path) { continue; } if (!tmp) { continue; }
for (j = 0; j < 6; j++) { mac_addr[j] = tmp ? simple_strtoul(tmp, &end, 16) : 0; if (tmp) tmp = (*end) ? end+1 : end; }
do_fixup_by_path(fdt, path, "mac-address", &mac_addr, 6, 0); do_fixup_by_path(fdt, path, "local-mac-address", &mac_addr, 6, 1); } } }
participants (1)
-
Kumar Gala