]> git.sur5r.net Git - u-boot/commitdiff
compulab: refactor board revision handling
authorIgor Grinberg <grinberg@compulab.co.il>
Mon, 3 Nov 2014 09:32:18 +0000 (11:32 +0200)
committerTom Rini <trini@ti.com>
Thu, 6 Nov 2014 16:04:40 +0000 (11:04 -0500)
Move board revision handling code to a common location
for further reuse.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
Reviewed-by: Tom Rini <trini@ti.com>
board/compulab/cm_t35/cm_t35.c
board/compulab/common/Makefile
board/compulab/common/common.c [new file with mode: 0644]
board/compulab/common/common.h [new file with mode: 0644]
board/compulab/common/eeprom.c

index d0b0930f423ad633cce8aee1cd05a5ee032de64c..5453942202d5a3cb8b2d925a57a9cee26e4a9cf3 100644 (file)
@@ -33,6 +33,7 @@
 #include <asm/ehci-omap.h>
 #include <asm/gpio.h>
 
+#include "../common/common.h"
 #include "../common/eeprom.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -154,34 +155,18 @@ int board_init(void)
        return 0;
 }
 
-static u32 cm_t3x_rev;
-
 /*
  * Routine: get_board_rev
  * Description: read system revision
  */
 u32 get_board_rev(void)
 {
-       if (!cm_t3x_rev)
-               cm_t3x_rev = cl_eeprom_get_board_rev();
-
-       return cm_t3x_rev;
+       return cl_eeprom_get_board_rev();
 };
 
-/*
- * Routine: misc_init_r
- * Description: display die ID
- */
 int misc_init_r(void)
 {
-       u32 board_rev = get_board_rev();
-       u32 rev_major = board_rev / 100;
-       u32 rev_minor = board_rev - (rev_major * 100);
-
-       if ((rev_minor / 10) * 10 == rev_minor)
-               rev_minor = rev_minor / 10;
-
-       printf("PCB:   %u.%u\n", rev_major, rev_minor);
+       cl_print_pcb_info();
        dieid_num_r();
 
        return 0;
index 4044ac9d626185d584fc99726117d68aa3a1c0eb..e343bf021051e722eae897e175bca9bd7bfe3167 100644 (file)
@@ -6,5 +6,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_SYS_I2C) += eeprom.o
-obj-$(CONFIG_LCD) += omap3_display.o
+obj-y                          += common.o
+obj-$(CONFIG_SYS_I2C)          += eeprom.o
+obj-$(CONFIG_LCD)              += omap3_display.o
diff --git a/board/compulab/common/common.c b/board/compulab/common/common.c
new file mode 100644 (file)
index 0000000..6d2d7b0
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/bootm.h>
+
+#include "common.h"
+#include "eeprom.h"
+
+void cl_print_pcb_info(void)
+{
+       u32 board_rev = get_board_rev();
+       u32 rev_major = board_rev / 100;
+       u32 rev_minor = board_rev - (rev_major * 100);
+
+       if ((rev_minor / 10) * 10 == rev_minor)
+               rev_minor = rev_minor / 10;
+
+       printf("PCB:   %u.%u\n", rev_major, rev_minor);
+}
diff --git a/board/compulab/common/common.h b/board/compulab/common/common.h
new file mode 100644 (file)
index 0000000..316ee4c
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il>
+ *
+ * Authors: Igor Grinberg <grinberg@compulab.co.il>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _CL_COMMON_
+#define _CL_COMMON_
+
+void cl_print_pcb_info(void);
+
+#endif /* _CL_COMMON_ */
index 2df3adabf8b3dd097fcfcb6006b7d6baa10bbafe..a45e7be11f76a0ba2f3548bef62f41198c641974 100644 (file)
@@ -109,23 +109,27 @@ int cl_eeprom_read_mac_addr(uchar *buf)
        return cl_eeprom_read(offset, buf, 6);
 }
 
+static u32 board_rev;
+
 /*
  * Routine: cl_eeprom_get_board_rev
  * Description: read system revision from eeprom
  */
 u32 cl_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 (board_rev)
+               return board_rev;
+
        if (cl_eeprom_setup_layout())
                return 0;
 
        if (cl_eeprom_layout != LAYOUT_LEGACY)
                offset = BOARD_REV_OFFSET;
 
-       if (cl_eeprom_read(offset, (uchar *)&rev, BOARD_REV_SIZE))
+       if (cl_eeprom_read(offset, (uchar *)&board_rev, BOARD_REV_SIZE))
                return 0;
 
        /*
@@ -133,9 +137,9 @@ u32 cl_eeprom_get_board_rev(void)
         * representation. i.e. for rev 1.00: 0x100 --> 0x64
         */
        if (cl_eeprom_layout == LAYOUT_LEGACY) {
-               sprintf(str, "%x", rev);
-               rev = simple_strtoul(str, NULL, 10);
+               sprintf(str, "%x", board_rev);
+               board_rev = simple_strtoul(str, NULL, 10);
        }
 
-       return rev;
+       return board_rev;
 };