Commit ab544633abdd14f4dd5d92e500b73eb59ef57e67

Authored by Kumar Gala
1 parent dbaf07ce62

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);