diff options
Diffstat (limited to 'board/keymile')
-rw-r--r-- | board/keymile/common/common.c | 13 | ||||
-rw-r--r-- | board/keymile/common/common.h | 4 |
2 files changed, 17 insertions, 0 deletions
diff --git a/board/keymile/common/common.c b/board/keymile/common/common.c index 6600e08711..8392a6413e 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) + diff --git a/board/keymile/common/common.h b/board/keymile/common/common.h index 8497ab63d1..e32de8d9fa 100644 --- a/board/keymile/common/common.h +++ b/board/keymile/common/common.h @@ -39,6 +39,10 @@ struct km_bec_fpga { unsigned char pgy_eth; }; +#if !defined(CONFIG_PIGGY_MAC_ADRESS_OFFSET) +#define CONFIG_PIGGY_MAC_ADRESS_OFFSET 0 +#endif + int ethernet_present(void); int ivm_read_eeprom(void); |