Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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