Skip to content
Snippets Groups Projects
0005-Added-CPU-based-board-detection-logic.patch 3.95 KiB
Newer Older
From e4929639cd8fe01ac799823d436034ec248bf03e Mon Sep 17 00:00:00 2001
From: Suhas K <suhas.kunnath@gadgeon.com>
Date: Thu, 3 May 2018 11:30:49 +0530
Subject: [PATCH 5/9] Added CPU based board detection logic

---
 board/rigado/vesta/plugin.S | 25 +++++++++++++++++--------
 board/rigado/vesta/vesta.c  | 15 ++++++++++-----
 common/cmd_getboard.c       | 18 ++++++++++++------
 3 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/board/rigado/vesta/plugin.S b/board/rigado/vesta/plugin.S
index 4876a37..ea63de5 100644
--- a/board/rigado/vesta/plugin.S
+++ b/board/rigado/vesta/plugin.S
@@ -23,6 +23,7 @@
 #define OCOTP_GP2 0x021bc670
 #define ULL_ID_MASK 0x0FFC0000
 #define VESTA_300B 0x007c0000
+#define MX6ULL_CPU_ID 0x65
 
 /* DDR script */
 
@@ -365,32 +366,40 @@
 .endm
 
 .macro imx6_ddr_setting
-    ldr r0, =OCOTP_BASE_ADDR
 
+    ldr r0, =ANATOP_BASE_ADDR
+/*USB_ANALOG_DIGPROG offset 0x260 */
+    ldr r1, [r0, #0x260]
+    mov r1, r1, lsr #0x10
+    and r1, r1, #0xFF
+    ldr r2, =#MX6ULL_CPU_ID
+    cmp r1, r2
+    bne ulcmp
 
+    ldr r0, =OCOTP_BASE_ADDR
+
+/*OCOTP_GP1 offset 0x660 */
     ldr r1, [r0, #0x660]
     ldr r2, =#ULL_ID_MASK
     and r1, r1, r2
 
-    ldr r2, =#0x0
+    ldr r2, =VESTA_300B
     cmp r1, r2
-    bne v300Bcmp
+    beq v300B
 
+/*OCOTP_GP2 offset 0x670 */
     ldr r1, [r0, #0x670]
     ldr r2, =#ULL_ID_MASK
     and r1, r1, r2
 
-    ldr r2, =#0x0
-    cmp r1, r2
-    beq ulcmp
-
-v300Bcmp:
     ldr r2, =VESTA_300B
     cmp r1, r2
     beq v300B
     b end
 
 ulcmp:
+    ldr r0, =OCOTP_BASE_ADDR
+/*OCOTP_GP34 offset 0x940 */
     ldr r1, [r0, #0x940]
     ldr r2, =#UL_ID_MASK
     and r1, r1, r2
diff --git a/board/rigado/vesta/vesta.c b/board/rigado/vesta/vesta.c
index 41f4f82..e662df1 100644
--- a/board/rigado/vesta/vesta.c
+++ b/board/rigado/vesta/vesta.c
@@ -633,11 +633,16 @@ int checkboard(void)
 {
 	unsigned int board_id;
 
-	board_id = (readl(OCOTP_GP1) != 0 )?readl(OCOTP_GP1):readl(OCOTP_GP2);
-	if ((board_id & ULL_ID_MASK) == VESTA_300B){
-		puts("Board: Vesta 300B\n");
+	if (is_cpu_type(MXC_CPU_MX6ULL)) {
+		board_id = (readl(OCOTP_GP1) != 0 )?readl(OCOTP_GP1):readl(OCOTP_GP2);
+		if ((board_id & ULL_ID_MASK) == VESTA_300B){
+			puts("Board: Vesta 300B\n");
+		}
+		else {
+			printf ("Board id not recognized\n");
+		}
 	}
-	else {
+	else if (is_cpu_type(MXC_CPU_MX6UL)) {
 		board_id = readl(OCOTP_GP34);
 		switch(board_id & UL_ID_MASK) {
 			case VESTA_100:
@@ -665,7 +670,7 @@ int checkboard(void)
 				puts("Board: Vesta 64M Norflash\n");
 				break;
 			default:
-				puts("Board: Vesta Unknown\n");
+				puts("Board id not recognized\n");
 				break;
 		}
 	}
diff --git a/common/cmd_getboard.c b/common/cmd_getboard.c
index 16053b5..fd9c587 100644
--- a/common/cmd_getboard.c
+++ b/common/cmd_getboard.c
@@ -11,6 +11,7 @@
 #include <common.h>
 #include <command.h>
 #include <asm/io.h>
+#include <asm/imx-common/sys_proto.h>
 
 /*UL board id registers */
 #define OCOTP_GP34 0x021bc940
@@ -36,12 +37,17 @@ static int do_getboard(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
 {
 	unsigned int board_id;
 
-	board_id = (readl(OCOTP_GP1) != 0)?readl(OCOTP_GP1):readl(OCOTP_GP2);
-	if ((board_id & ULL_ID_MASK) == VESTA_300B){
-		setenv("board_type", "vesta-300B");
-		setenv("fdt_file", "zImage-vesta-300B.dtb");
+	if (is_cpu_type(MXC_CPU_MX6ULL)) {
+		board_id = (readl(OCOTP_GP1) != 0)?readl(OCOTP_GP1):readl(OCOTP_GP2);
+		if ((board_id & ULL_ID_MASK) == VESTA_300B){
+			setenv("board_type", "vesta-300B");
+			setenv("fdt_file", "zImage-vesta-300B.dtb");
+		}
+		else {
+			printf ("Board id not recognized\n");
+		}
 	}
-	else {
+	else if (is_cpu_type(MXC_CPU_MX6UL)) {
 		board_id = readl(OCOTP_GP34);
 		switch (board_id & UL_ID_MASK) {
 
@@ -64,7 +70,7 @@ static int do_getboard(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
 				setenv("fdt_file", "zImage-vesta-400.dtb");
 				break;
 			default:
-				printf ("Board Name: 0x%x\n", board_id);
+				printf ("Board id not recognized");
 				break;
 		};
 	}
-- 
2.7.4