km/common/ivm: rework piggy mac adress offset generation
authorHolger Brunck <holger.brunck@keymile.com>
Mon, 21 Jan 2013 03:55:17 +0000 (03:55 +0000)
committerKim Phillips <kim.phillips@freescale.com>
Fri, 15 Feb 2013 23:47:19 +0000 (17:47 -0600)
For the the kmvect1 board we will also need a functionality to add an
offset to the IVMs MAC address, because these board will have two valid
ethernet ports for debugging purpose. So move the code to an own
function.

Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
board/keymile/common/ivm.c

index 607daa6d655d592ca67e04a27a025cf1298952e7..d568fd9def5eb8a729dac60fbd7ca39cb3e8f4f7 100644 (file)
@@ -201,6 +201,22 @@ static int ivm_check_crc(unsigned char *buf, int block)
        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)
 {
        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);
        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 + 1);
-       }
-#endif
+       calculate_mac_offset(buf, valbuf, CONFIG_PIGGY_MAC_ADRESS_OFFSET);
 #ifdef MACH_TYPE_KM_KIRKWOOD
        setenv((char *)"ethaddr", (char *)valbuf);
 #else