Added macros to read SOM information from the I2C
EEPROM.
Signed-off-by: Stefano Babic sba...@denx.de
---
board/technexion/twister/twister.c | 10 --
board/teejet/mt_ventoux/mt_ventoux.c | 15 ++---
include/configs/tam3517-common.h | 58 +-
3 files changed, 60 insertions(+), 23 deletions(-)
diff --git a/board/technexion/twister/twister.c
b/board/technexion/twister/twister.c
index 1471559..c9eea9b 100644
--- a/board/technexion/twister/twister.c
+++ b/board/technexion/twister/twister.c
@@ -98,9 +98,12 @@ int board_init(void)
return 0;
}
+#ifndef CONFIG_SPL_BUILD
int misc_init_r(void)
{
char *eth_addr;
+ struct tam3517_module_info info;
+ int ret;
dieid_num_r();
@@ -108,12 +111,13 @@ int misc_init_r(void)
if (eth_addr)
return 0;
-#ifndef CONFIG_SPL_BUILD
- TAM3517_READ_MAC_FROM_EEPROM;
-#endif
+ TAM3517_READ_EEPROM(info, ret);
+ if (!ret)
+ TAM3517_READ_MAC_FROM_EEPROM(info);
return 0;
}
+#endif
/*
* Routine: set_muxconf_regs
diff --git a/board/teejet/mt_ventoux/mt_ventoux.c
b/board/teejet/mt_ventoux/mt_ventoux.c
index 98b92f3..c516c75 100644
--- a/board/teejet/mt_ventoux/mt_ventoux.c
+++ b/board/teejet/mt_ventoux/mt_ventoux.c
@@ -258,21 +258,26 @@ int board_init(void)
return 0;
}
+#ifndef CONFIG_SPL_BUILD
int misc_init_r(void)
{
char *eth_addr;
+ struct tam3517_module_info info;
+ int ret;
+ TAM3517_READ_EEPROM(info, ret);
dieid_num_r();
- eth_addr = getenv(ethaddr);
- if (eth_addr)
+ if (ret)
return 0;
+ eth_addr = getenv(ethaddr);
+ if (!eth_addr)
+ TAM3517_READ_MAC_FROM_EEPROM(info);
-#ifndef CONFIG_SPL_BUILD
- TAM3517_READ_MAC_FROM_EEPROM;
-#endif
+ TAM3517_PRINT_SOM_INFO(info);
return 0;
}
+#endif
/*
* Routine: set_muxconf_regs
diff --git a/include/configs/tam3517-common.h b/include/configs/tam3517-common.h
index dd7757c..a3e84a3 100644
--- a/include/configs/tam3517-common.h
+++ b/include/configs/tam3517-common.h
@@ -357,7 +357,6 @@
* I2C EEPROM
*/
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
-
/*
* The I2C EEPROM on the TAM3517 contains
* mac address and production data
@@ -383,24 +382,29 @@ struct tam3517_module_info {
unsigned char _rev[100];
};
-#define TAM3517_READ_MAC_FROM_EEPROM \
-do { \
- struct tam3517_module_info info;\
- char buf[80], ethname[20]; \
- int i; \
+#define TAM3517_READ_EEPROM(info, ret) \
+do { \
i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE); \
if (eeprom_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, \
- (void *)info, sizeof(info))) \
- break; \
+ (void *)info, sizeof(*info))) \
+ ret = 1;\
+ else\
+ ret = 0;\
+} while (0)
+
+#define TAM3517_READ_MAC_FROM_EEPROM(info) \
+do { \
+ char buf[80], ethname[20]; \
+ int i; \
memset(buf, 0, sizeof(buf));\
- for (i = 0 ; i ARRAY_SIZE(info.eth_addr); i++) { \
+ for (i = 0 ; i ARRAY_SIZE((info)-eth_addr); i++) { \
sprintf(buf, %02X:%02X:%02X:%02X:%02X:%02X, \
- info.eth_addr[i][5],\
- info.eth_addr[i][4],\
- info.eth_addr[i][3],\
- info.eth_addr[i][2],\
- info.eth_addr[i][1],\
- info.eth_addr[i][0]); \
+ (info)-eth_addr[i][5], \
+ (info)-eth_addr[i][4], \
+ (info)-eth_addr[i][3], \
+ (info)-eth_addr[i][2], \
+ (info)-eth_addr[i][1], \
+ (info)-eth_addr[i][0]);\
\
if (i) \
sprintf(ethname, eth%daddr, i); \
@@ -410,6 +414,30 @@ do { \
setenv(ethname, buf); \
}