X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=board%2Fcm_t35%2Feeprom.c;h=b0af103cdd42cc312ae8db4406070d5fb3a01ba3;hb=be08abc2429c2e9cbce3d0abc1d315171d683520;hp=93ed6cbc0b2592fb29b65eed398b8096e06774c7;hpb=8230925049c164908f3936428e73e240830752f5;p=u-boot diff --git a/board/cm_t35/eeprom.c b/board/cm_t35/eeprom.c index 93ed6cbc0b..b0af103cdd 100644 --- a/board/cm_t35/eeprom.c +++ b/board/cm_t35/eeprom.c @@ -25,6 +25,11 @@ #define EEPROM_LAYOUT_VER_OFFSET 44 #define BOARD_SERIAL_OFFSET 20 #define BOARD_SERIAL_OFFSET_LEGACY 8 +#define BOARD_REV_OFFSET 0 +#define BOARD_REV_OFFSET_LEGACY 6 +#define BOARD_REV_SIZE 2 +#define MAC_ADDR_OFFSET 4 +#define MAC_ADDR_OFFSET_LEGACY 0 #define LAYOUT_INVALID 0 #define LAYOUT_LEGACY 0xff @@ -76,3 +81,50 @@ void get_board_serial(struct tag_serialnr *serialnr) serialnr->high = serial[1]; } } + +/* + * 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: cm_t3x_eeprom_get_board_rev + * Description: read system revision from eeprom + */ +u32 cm_t3x_eeprom_get_board_rev(void) +{ + u32 rev = 0; + char str[5]; /* Legacy representation can contain at most 4 digits */ + uint offset = BOARD_REV_OFFSET_LEGACY; + + if (eeprom_setup_layout()) + return 0; + + if (eeprom_layout != LAYOUT_LEGACY) + offset = BOARD_REV_OFFSET; + + if (cm_t3x_eeprom_read(offset, (uchar *)&rev, BOARD_REV_SIZE)) + return 0; + + /* + * Convert legacy syntactic representation to semantic + * representation. i.e. for rev 1.00: 0x100 --> 0x64 + */ + if (eeprom_layout == LAYOUT_LEGACY) { + sprintf(str, "%x", rev); + rev = simple_strtoul(str, NULL, 10); + } + + return rev; +};