]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - board/cm_t35/eeprom.c
cm-t35: fix legacy board revision representation
[karo-tx-uboot.git] / board / cm_t35 / eeprom.c
index dfa171d23302c412787a625401661ff898bd47de..4986b23786d8e5d788ac6de0a57781bfedb00b38 100644 (file)
@@ -27,8 +27,7 @@
 #define BOARD_SERIAL_OFFSET_LEGACY     8
 #define BOARD_REV_OFFSET               0
 #define BOARD_REV_OFFSET_LEGACY                6
-#define BOARD_REV_SIZE                 4
-#define BOARD_REV_SIZE_LEGACY          2
+#define BOARD_REV_SIZE                 2
 #define MAC_ADDR_OFFSET                        4
 #define MAC_ADDR_OFFSET_LEGACY         0
 
@@ -106,19 +105,26 @@ int cm_t3x_eeprom_read_mac_addr(uchar *buf)
 u32 get_board_rev(void)
 {
        u32 rev = 0;
+       char str[5]; /* Legacy representation can contain at most 4 digits */
        uint offset = BOARD_REV_OFFSET_LEGACY;
-       int len = BOARD_REV_SIZE_LEGACY;
 
        if (eeprom_setup_layout())
                return 0;
 
-       if (eeprom_layout != LAYOUT_LEGACY) {
+       if (eeprom_layout != LAYOUT_LEGACY)
                offset = BOARD_REV_OFFSET;
-               len = BOARD_REV_SIZE;
-       }
 
-       if (cm_t3x_eeprom_read(offset, (uchar *)&rev, len))
+       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;
 };