From: Nikita Kiryanov <nik...@compulab.co.il> Switch to the new EEPROM module and fix the problem of MAC address being read from the wrong offset due to lack of distinction between EEPROM layouts.
Signed-off-by: Nikita Kiryanov <nik...@compulab.co.il> Signed-off-by: Igor Grinberg <grinb...@compulab.co.il> --- board/cm_t35/cm_t35.c | 6 +++--- board/cm_t35/eeprom.c | 18 ++++++++++++++++++ board/cm_t35/eeprom.h | 9 ++++++++- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/board/cm_t35/cm_t35.c b/board/cm_t35/cm_t35.c index ff372d8..caafe06 100644 --- a/board/cm_t35/cm_t35.c +++ b/board/cm_t35/cm_t35.c @@ -41,6 +41,8 @@ #include <asm/arch/sys_proto.h> #include <asm/mach-types.h> +#include "eeprom.h" + DECLARE_GLOBAL_DATA_PTR; const omap3_sysinfo sysinfo = { @@ -382,11 +384,9 @@ static int handle_mac_address(void) if (rc) return 0; -#ifdef CONFIG_DRIVER_OMAP34XX_I2C - rc = i2c_read(0x50, 0, 1, enetaddr, 6); + rc = cm_t3x_eeprom_read_mac_addr(enetaddr); if (rc) return rc; -#endif if (!is_valid_ether_addr(enetaddr)) return -1; diff --git a/board/cm_t35/eeprom.c b/board/cm_t35/eeprom.c index 8386d18..e975855 100644 --- a/board/cm_t35/eeprom.c +++ b/board/cm_t35/eeprom.c @@ -31,6 +31,8 @@ #define BOARD_REV_OFFSET_LEGACY 6 #define BOARD_REV_SIZE 4 #define BOARD_REV_SIZE_LEGACY 2 +#define MAC_ADDR_OFFSET 4 +#define MAC_ADDR_OFFSET_LEGACY 0 #define LAYOUT_INVALID 0 #define LAYOUT_LEGACY 0xff @@ -83,6 +85,22 @@ void get_board_serial(struct tag_serialnr *serialnr) } /* + * Routine: cm_t3x_eeprom_read_mac_addr + * Description: read mac address and store it in buf. + */ +int cm_t3x_eeprom_read_mac_addr(uchar *buf) +{ + uint offset; + + if (eeprom_setup_layout()) + return 0; + + offset = (eeprom_layout != LAYOUT_LEGACY) ? + MAC_ADDR_OFFSET : MAC_ADDR_OFFSET_LEGACY; + return cm_t3x_eeprom_read(offset, buf, 6); +} + +/* * Routine: get_board_rev * Description: read system revision */ diff --git a/board/cm_t35/eeprom.h b/board/cm_t35/eeprom.h index 97a002a..e8680d7 100644 --- a/board/cm_t35/eeprom.h +++ b/board/cm_t35/eeprom.h @@ -23,7 +23,9 @@ #include <common.h> -#ifndef CONFIG_DRIVER_OMAP34XX_I2C +#ifdef CONFIG_DRIVER_OMAP34XX_I2C +int cm_t3x_eeprom_read_mac_addr(uchar *buf); +#else void get_board_serial(struct tag_serialnr *serialnr) { /* @@ -33,6 +35,11 @@ void get_board_serial(struct tag_serialnr *serialnr) serialnr->low = 0; serialnr->high = 0; }; + +int cm_t3x_eeprom_read_mac_addr(uchar *buf) +{ + return 1; +} #endif /* CONFIG_DRIVER_OMAP34XX_I2C */ #endif -- 1.7.3.4 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot