summaryrefslogtreecommitdiff
path: root/board/keymile/common/common.c
diff options
context:
space:
mode:
authorHeiko Schocher <hs@denx.de>2011-01-06 09:25:26 (GMT)
committerWolfgang Denk <wd@denx.de>2011-04-29 22:45:17 (GMT)
commit0d01520200f3bb0686567134bc2e7bb940009559 (patch)
tree5c1c23708950965e4f94f5f60a3165929ff42a95 /board/keymile/common/common.c
parent731b968044b0f96239dd41b8c7ba642cac81cfc5 (diff)
downloadu-boot-0d01520200f3bb0686567134bc2e7bb940009559.tar.xz
keymile boards: add CONFIG_PIGGY_MAC_ADRESS_OFFSET
Normaly the PIGGY_MAC_ADRESS can be read directly from the IVM on keymile boards. On mgcoge3 it differs. Because there are two piggy boards deployed the second MAC adress must be calculated with the IVM mac adress and an offset. This patch allows to set such a offset in the board config. Signed-off-by: Holger Brunck <holger.brunck@keymile.com> cc: Valentin Longchamp <valentin.longchamp@keymile.com> cc: Heiko Schocher <hs@denx.de>
Diffstat (limited to 'board/keymile/common/common.c')
-rw-r--r--board/keymile/common/common.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c
index 6600e08..8392a64 100644
--- a/board/keymile/common/common.c
+++ b/board/keymile/common/common.c
@@ -228,8 +228,21 @@ static int ivm_analyze_block2(unsigned char *buf, int len)
/* IVM_MacAddress */
sprintf((char *)valbuf, "%pM", buf);
ivm_set_value("IVM_MacAddress", (char *)valbuf);
+ /* if an offset is defined, add it */
+#if defined(CONFIG_PIGGY_MAC_ADRESS_OFFSET)
+ if (CONFIG_PIGGY_MAC_ADRESS_OFFSET > 0) {
+ unsigned long val = (buf[4] << 16) + (buf[5] << 8) + buf[6];
+
+ val += CONFIG_PIGGY_MAC_ADRESS_OFFSET;
+ buf[4] = (val >> 16) & 0xff;
+ buf[5] = (val >> 8) & 0xff;
+ buf[6] = val & 0xff;
+ sprintf((char *)valbuf, "%pM", buf);
+ }
+#endif
if (getenv("ethaddr") == NULL)
setenv((char *)"ethaddr", (char *)valbuf);
+
/* IVM_MacCount */
count = (buf[10] << 24) +
(buf[11] << 16) +