diff mbox

[U-Boot,3/4] cm-t35: fix legacy board revision representation

Message ID 1337868084-6637-4-git-send-email-grinberg@compulab.co.il
State Accepted
Commit 2ef6302f8728d52ee4fb3b169be5dc6becae566f
Delegated to: Tom Rini
Headers show

Commit Message

Igor Grinberg May 24, 2012, 2:01 p.m. UTC
From: Nikita Kiryanov <nikita@compulab.co.il>

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>
---
 board/cm_t35/eeprom.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
diff mbox

Patch

diff --git a/board/cm_t35/eeprom.c b/board/cm_t35/eeprom.c
index 6053811..4986b23 100644
--- a/board/cm_t35/eeprom.c
+++ b/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;
 };