diff options
author | Kumar Gala <galak@kernel.crashing.org> | 2007-11-21 11:11:03 -0600 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2007-11-21 15:08:56 -0600 |
commit | ab544633abdd14f4dd5d92e500b73eb59ef57e67 (patch) | |
tree | 1d336ca2515d240b95a4d00a01243147a08cfedc | |
parent | dbaf07ce620aab249e3502b20a986234a6af1d3a (diff) | |
download | u-boot-imx-ab544633abdd14f4dd5d92e500b73eb59ef57e67.zip u-boot-imx-ab544633abdd14f4dd5d92e500b73eb59ef57e67.tar.gz u-boot-imx-ab544633abdd14f4dd5d92e500b73eb59ef57e67.tar.bz2 |
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>
-rw-r--r-- | common/fdt_support.c | 46 | ||||
-rw-r--r-- | include/fdt_support.h | 1 |
2 files changed, 47 insertions, 0 deletions
diff --git a/common/fdt_support.c b/common/fdt_support.c index d5743b4..e848386 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -386,4 +386,50 @@ void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop, do_fixup_by_path(fdt, path, prop, &val, sizeof(val), create); } +void fdt_fixup_ethernet(void *fdt, bd_t *bd) +{ + int node; + const char *path; + + node = fdt_path_offset(fdt, "/aliases"); + if (node >= 0) { +#if defined(CONFIG_HAS_ETH0) + path = fdt_getprop(fdt, node, "ethernet0", NULL); + if (path) { + do_fixup_by_path(fdt, path, "mac-address", + bd->bi_enetaddr, 6, 0); + do_fixup_by_path(fdt, path, "local-mac-address", + bd->bi_enetaddr, 6, 1); + } +#endif +#if defined(CONFIG_HAS_ETH1) + path = fdt_getprop(fdt, node, "ethernet1", NULL); + if (path) { + do_fixup_by_path(fdt, path, "mac-address", + bd->bi_enet1addr, 6, 0); + do_fixup_by_path(fdt, path, "local-mac-address", + bd->bi_enet1addr, 6, 1); + } +#endif +#if defined(CONFIG_HAS_ETH2) + path = fdt_getprop(fdt, node, "ethernet2", NULL); + if (path) { + do_fixup_by_path(fdt, path, "mac-address", + bd->bi_enet2addr, 6, 0); + do_fixup_by_path(fdt, path, "local-mac-address", + bd->bi_enet2addr, 6, 1); + } +#endif +#if defined(CONFIG_HAS_ETH3) + path = fdt_getprop(fdt, node, "ethernet3", NULL); + if (path) { + do_fixup_by_path(fdt, path, "mac-address", + bd->bi_enet3addr, 6, 0); + do_fixup_by_path(fdt, path, "local-mac-address", + bd->bi_enet3addr, 6, 1); + } +#endif + } +} + #endif /* CONFIG_OF_LIBFDT */ diff --git a/include/fdt_support.h b/include/fdt_support.h index 0314dfd..150dd2b 100644 --- a/include/fdt_support.h +++ b/include/fdt_support.h @@ -33,6 +33,7 @@ void do_fixup_by_path(void *fdt, const char *path, const char *prop, const void *val, int len, int create); void do_fixup_by_path_u32(void *fdt, const char *path, const char *prop, u32 val, int create); +void fdt_fixup_ethernet(void *fdt, bd_t *bd); #ifdef CONFIG_OF_HAS_UBOOT_ENV int fdt_env(void *fdt); |