For upcoming SECU board we have different MAC address offsets depending
on which functional unit we are running. In this case we need to pass
this value to the ivm_populate_env function instead of using the hard
coded config option there.

Signed-off-by: Holger Brunck <holger.bru...@ch.abb.com>
CC: Stefan Roese <s...@denx.de>
CC: Valentin Longchamp <valentin.longch...@ch.abb.com>
CC: Marek Vasut <ma...@denx.de>
---
 board/keymile/common/common.h   |  2 +-
 board/keymile/common/ivm.c      | 12 ++++++------
 board/keymile/km83xx/km83xx.c   |  3 ++-
 board/keymile/km_arm/km_arm.c   |  3 ++-
 board/keymile/kmp204x/kmp204x.c |  3 ++-
 5 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/board/keymile/common/common.h b/board/keymile/common/common.h
index 42b760dc6e..8251de4db8 100644
--- a/board/keymile/common/common.h
+++ b/board/keymile/common/common.h
@@ -121,7 +121,7 @@ struct bfticu_iomap {
 };
 
 int ethernet_present(void);
-int ivm_read_eeprom(unsigned char *buf, int len);
+int ivm_read_eeprom(unsigned char *buf, int len, int mac_address_offset);
 int ivm_analyze_eeprom(unsigned char *buf, int len);
 
 int trigger_fpga_config(void);
diff --git a/board/keymile/common/ivm.c b/board/keymile/common/ivm.c
index 429e9c7914..fee7f03c8c 100644
--- a/board/keymile/common/ivm.c
+++ b/board/keymile/common/ivm.c
@@ -297,7 +297,7 @@ int ivm_analyze_eeprom(unsigned char *buf, int len)
        return 0;
 }
 
-static int ivm_populate_env(unsigned char *buf, int len)
+static int ivm_populate_env(unsigned char *buf, int len, int 
mac_address_offset)
 {
        unsigned char   *page2;
        unsigned char   valbuf[MAC_STR_SZ];
@@ -309,23 +309,23 @@ static int ivm_populate_env(unsigned char *buf, int len)
 
 #ifndef CONFIG_KMTEGR1
        /* if an offset is defined, add it */
-       process_mac(valbuf, page2, CONFIG_PIGGY_MAC_ADDRESS_OFFSET, true);
+       process_mac(valbuf, page2, mac_address_offset, true);
        env_set((char *)"ethaddr", (char *)valbuf);
 #else
 /* KMTEGR1 has a special setup. eth0 has no connection to the outside and
  * gets an locally administred MAC address, eth1 is the debug interface and
  * gets the official MAC address from the IVM
  */
-       process_mac(valbuf, page2, CONFIG_PIGGY_MAC_ADDRESS_OFFSET, false);
+       process_mac(valbuf, page2, mac_address_offset, false);
        env_set((char *)"ethaddr", (char *)valbuf);
-       process_mac(valbuf, page2, CONFIG_PIGGY_MAC_ADDRESS_OFFSET, true);
+       process_mac(valbuf, page2, mac_address_offset, true);
        env_set((char *)"eth1addr", (char *)valbuf);
 #endif
 
        return 0;
 }
 
-int ivm_read_eeprom(unsigned char *buf, int len)
+int ivm_read_eeprom(unsigned char *buf, int len, int mac_address_offset)
 {
        int ret;
 
@@ -339,5 +339,5 @@ int ivm_read_eeprom(unsigned char *buf, int len)
                return -2;
        }
 
-       return ivm_populate_env(buf, len);
+       return ivm_populate_env(buf, len, mac_address_offset);
 }
diff --git a/board/keymile/km83xx/km83xx.c b/board/keymile/km83xx/km83xx.c
index 8846b64f7d..59347a3990 100644
--- a/board/keymile/km83xx/km83xx.c
+++ b/board/keymile/km83xx/km83xx.c
@@ -185,7 +185,8 @@ int board_early_init_r(void)
 
 int misc_init_r(void)
 {
-       ivm_read_eeprom(ivm_content, CONFIG_SYS_IVM_EEPROM_MAX_LEN);
+       ivm_read_eeprom(ivm_content, CONFIG_SYS_IVM_EEPROM_MAX_LEN,
+                       CONFIG_PIGGY_MAC_ADDRESS_OFFSET);
        return 0;
 }
 
diff --git a/board/keymile/km_arm/km_arm.c b/board/keymile/km_arm/km_arm.c
index 922cc621f7..2724d8bd48 100644
--- a/board/keymile/km_arm/km_arm.c
+++ b/board/keymile/km_arm/km_arm.c
@@ -231,7 +231,8 @@ int misc_init_r(void)
        }
 #endif
 
-       ivm_read_eeprom(ivm_content, CONFIG_SYS_IVM_EEPROM_MAX_LEN);
+       ivm_read_eeprom(ivm_content, CONFIG_SYS_IVM_EEPROM_MAX_LEN,
+                       CONFIG_PIGGY_MAC_ADDRESS_OFFSET);
 
        initialize_unit_leds();
        set_km_env();
diff --git a/board/keymile/kmp204x/kmp204x.c b/board/keymile/kmp204x/kmp204x.c
index 4d1e38aa3a..e7c321c326 100644
--- a/board/keymile/kmp204x/kmp204x.c
+++ b/board/keymile/kmp204x/kmp204x.c
@@ -195,7 +195,8 @@ int misc_init_r(void)
                }
        }
 
-       ivm_read_eeprom(ivm_content, CONFIG_SYS_IVM_EEPROM_MAX_LEN);
+       ivm_read_eeprom(ivm_content, CONFIG_SYS_IVM_EEPROM_MAX_LEN,
+                       CONFIG_PIGGY_MAC_ADDRESS_OFFSET);
        return 0;
 }
 
-- 
2.24.0.rc1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to