Commit ab544633abdd14f4dd5d92e500b73eb59ef57e67
1 parent
dbaf07ce62
Exists in
master
and in
54 other branches
Add fdt_fixup_ethernet helper to set mac addresses
Added a fixup helper that uses aliases to set mac addresses in the device tree based on the bd_t Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Showing 2 changed files with 47 additions and 0 deletions Side-by-side Diff
common/fdt_support.c
... | ... | @@ -386,5 +386,51 @@ |
386 | 386 | do_fixup_by_path(fdt, path, prop, &val, sizeof(val), create); |
387 | 387 | } |
388 | 388 | |
389 | +void fdt_fixup_ethernet(void *fdt, bd_t *bd) | |
390 | +{ | |
391 | + int node; | |
392 | + const char *path; | |
393 | + | |
394 | + node = fdt_path_offset(fdt, "/aliases"); | |
395 | + if (node >= 0) { | |
396 | +#if defined(CONFIG_HAS_ETH0) | |
397 | + path = fdt_getprop(fdt, node, "ethernet0", NULL); | |
398 | + if (path) { | |
399 | + do_fixup_by_path(fdt, path, "mac-address", | |
400 | + bd->bi_enetaddr, 6, 0); | |
401 | + do_fixup_by_path(fdt, path, "local-mac-address", | |
402 | + bd->bi_enetaddr, 6, 1); | |
403 | + } | |
404 | +#endif | |
405 | +#if defined(CONFIG_HAS_ETH1) | |
406 | + path = fdt_getprop(fdt, node, "ethernet1", NULL); | |
407 | + if (path) { | |
408 | + do_fixup_by_path(fdt, path, "mac-address", | |
409 | + bd->bi_enet1addr, 6, 0); | |
410 | + do_fixup_by_path(fdt, path, "local-mac-address", | |
411 | + bd->bi_enet1addr, 6, 1); | |
412 | + } | |
413 | +#endif | |
414 | +#if defined(CONFIG_HAS_ETH2) | |
415 | + path = fdt_getprop(fdt, node, "ethernet2", NULL); | |
416 | + if (path) { | |
417 | + do_fixup_by_path(fdt, path, "mac-address", | |
418 | + bd->bi_enet2addr, 6, 0); | |
419 | + do_fixup_by_path(fdt, path, "local-mac-address", | |
420 | + bd->bi_enet2addr, 6, 1); | |
421 | + } | |
422 | +#endif | |
423 | +#if defined(CONFIG_HAS_ETH3) | |
424 | + path = fdt_getprop(fdt, node, "ethernet3", NULL); | |
425 | + if (path) { | |
426 | + do_fixup_by_path(fdt, path, "mac-address", | |
427 | + bd->bi_enet3addr, 6, 0); | |
428 | + do_fixup_by_path(fdt, path, "local-mac-address", | |
429 | + bd->bi_enet3addr, 6, 1); | |
430 | + } | |
431 | +#endif | |
432 | + } | |
433 | +} | |
434 | + | |
389 | 435 | #endif /* CONFIG_OF_LIBFDT */ |
include/fdt_support.h
... | ... | @@ -33,6 +33,7 @@ |
33 | 33 | const void *val, int len, int create); |
34 | 34 | void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop, |
35 | 35 | u32 val, int create); |
36 | +void fdt_fixup_ethernet(void *fdt, bd_t *bd); | |
36 | 37 | |
37 | 38 | #ifdef CONFIG_OF_HAS_UBOOT_ENV |
38 | 39 | int fdt_env(void *fdt); |