Re: [U-Boot] [PATCH 2/2] OMAP3: TAM3517: add macros for reading eeprom

2012-12-10 Thread Tom Rini
On Fri, Nov 23, 2012 at 04:19:25PM +0100, Stefano Babic wrote:

 Added macros to read SOM information from the I2C
 EEPROM.
 
 Signed-off-by: Stefano Babic sba...@denx.de

Applied to u-boot-ti/master, thanks!

-- 
Tom


signature.asc
Description: Digital signature
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 2/2] OMAP3: TAM3517: add macros for reading eeprom

2012-11-23 Thread Stefano Babic
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);   \
}