|
@@ -201,6 +201,22 @@ static int ivm_check_crc(unsigned char *buf, int block)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static int calculate_mac_offset(unsigned char *valbuf, unsigned char *buf,
|
|
|
|
+ int offset)
|
|
|
|
+{
|
|
|
|
+ unsigned long val = (buf[4] << 16) + (buf[5] << 8) + buf[6];
|
|
|
|
+
|
|
|
|
+ if (offset == 0)
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
|
|
+ val += offset;
|
|
|
|
+ buf[4] = (val >> 16) & 0xff;
|
|
|
|
+ buf[5] = (val >> 8) & 0xff;
|
|
|
|
+ buf[6] = val & 0xff;
|
|
|
|
+ sprintf((char *)valbuf, "%pM", buf + 1);
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
static int ivm_analyze_block2(unsigned char *buf, int len)
|
|
static int ivm_analyze_block2(unsigned char *buf, int len)
|
|
{
|
|
{
|
|
unsigned char valbuf[CONFIG_SYS_IVM_EEPROM_PAGE_LEN];
|
|
unsigned char valbuf[CONFIG_SYS_IVM_EEPROM_PAGE_LEN];
|
|
@@ -210,17 +226,7 @@ static int ivm_analyze_block2(unsigned char *buf, int len)
|
|
sprintf((char *)valbuf, "%pM", buf + 1);
|
|
sprintf((char *)valbuf, "%pM", buf + 1);
|
|
ivm_set_value("IVM_MacAddress", (char *)valbuf);
|
|
ivm_set_value("IVM_MacAddress", (char *)valbuf);
|
|
/* if an offset is defined, add it */
|
|
/* 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 + 1);
|
|
|
|
- }
|
|
|
|
-#endif
|
|
|
|
|
|
+ calculate_mac_offset(buf, valbuf, CONFIG_PIGGY_MAC_ADRESS_OFFSET);
|
|
#ifdef MACH_TYPE_KM_KIRKWOOD
|
|
#ifdef MACH_TYPE_KM_KIRKWOOD
|
|
setenv((char *)"ethaddr", (char *)valbuf);
|
|
setenv((char *)"ethaddr", (char *)valbuf);
|
|
#else
|
|
#else
|