瀏覽代碼

cm-t35: fix legacy board revision representation

Legacy eeprom layout represents the revision number syntactically
(i.e. revision 1.00 is written as 0x100). This is inconsistent with
the representation in newer layouts, where it is defined semantically
(i.e. 0x64).

This patch fixes the issue by replacing the syntactic representation
with the semantic one.

Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Nikita Kiryanov 13 年之前
父節點
當前提交
2ef6302f87
共有 1 個文件被更改,包括 10 次插入0 次删除
  1. 10 0
      board/cm_t35/eeprom.c

+ 10 - 0
board/cm_t35/eeprom.c

@@ -105,6 +105,7 @@ 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;
 
 	if (eeprom_setup_layout())
@@ -116,5 +117,14 @@ u32 get_board_rev(void)
 	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;
 };