cm-t35: pass correct revision information to Linux
authorNikita Kiryanov <nikita@compulab.co.il>
Mon, 2 Jan 2012 04:01:34 +0000 (04:01 +0000)
committerAlbert ARIBAUD <albert.u.boot@aribaud.net>
Mon, 16 Jan 2012 07:40:11 +0000 (08:40 +0100)
Read revision from EEPROM and pass it to Linux.

Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
board/cm_t35/eeprom.c

index 93ed6cbc0b2592fb29b65eed398b8096e06774c7..b3d332f3ac1f30b5b912c8af9efca2cdd01d6567 100644 (file)
 #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                 4
+#define BOARD_REV_SIZE_LEGACY          2
 
 #define LAYOUT_INVALID 0
 #define LAYOUT_LEGACY  0xff
@@ -76,3 +80,27 @@ void get_board_serial(struct tag_serialnr *serialnr)
                serialnr->high = serial[1];
        }
 }
+
+/*
+ * Routine: get_board_rev
+ * Description: read system revision
+ */
+u32 get_board_rev(void)
+{
+       u32 rev = 0;
+       uint offset = BOARD_REV_OFFSET_LEGACY;
+       int len = BOARD_REV_SIZE_LEGACY;
+
+       if (eeprom_setup_layout())
+               return 0;
+
+       if (eeprom_layout != LAYOUT_LEGACY) {
+               offset = BOARD_REV_OFFSET;
+               len = BOARD_REV_SIZE;
+       }
+
+       if (cm_t3x_eeprom_read(offset, (uchar *)&rev, len))
+               return 0;
+
+       return rev;
+};