summaryrefslogtreecommitdiff
path: root/board/freescale/mx35_3stack
diff options
context:
space:
mode:
Diffstat (limited to 'board/freescale/mx35_3stack')
-rw-r--r--board/freescale/mx35_3stack/lowlevel_init.S15
-rw-r--r--board/freescale/mx35_3stack/mx35_3stack.c10
2 files changed, 17 insertions, 8 deletions
diff --git a/board/freescale/mx35_3stack/lowlevel_init.S b/board/freescale/mx35_3stack/lowlevel_init.S
index 0b47ef1..c255e98 100644
--- a/board/freescale/mx35_3stack/lowlevel_init.S
+++ b/board/freescale/mx35_3stack/lowlevel_init.S
@@ -33,8 +33,8 @@
ldr \tmp, =IIM_BASE_ADDR
ldr \ret, [\tmp, #IIM_SREV]
cmp \ret, #0x00
- moveq \tmp, #ROMPATCH_BASE_ADDR
- ldreq \ret, [\tmp, #ROMPATCH_REV]
+ moveq \tmp, #ROMPATCH_REV
+ ldreq \ret, [\tmp]
moveq \ret, \ret, lsl #4
addne \ret, \ret, #0x10
.endm
@@ -62,6 +62,13 @@
orr r1, r1, r2
str r1, [r0, #L2_CACHE_AUX_CTL_REG]
+ /* Workaournd for TO1 DDR issue:WT*/
+ check_soc_version r1, r2
+ cmp r1, #CHIP_REV_2_0
+ ldrlo r1, [r0, #L2_CACHE_DBG_CTL_REG]
+ orrlo r1, r1, #2
+ strlo r1, [r0, #L2_CACHE_DBG_CTL_REG]
+
/* Invalidate L2 */
mov r1, #0x000000FF
str r1, [r0, #L2_CACHE_INV_WAY_REG]
@@ -196,7 +203,7 @@
str r2, [r0, #CLKCTL_CCMR]
check_soc_version r1, r2
- cmp r1, #0x20
+ cmp r1, #CHIP_REV_2_0
ldrhs r3, =CCM_MPLL_399_HZ
bhs 1f
ldr r2, [r0, #CLKCTL_PDR0]
@@ -247,7 +254,7 @@
mov lr, fp
check_soc_version r3, r4
- cmp r1, #0x20
+ cmp r1, #CHIP_REV_2_0
bhs 1f
cmp r5, #0
movne r3, #L2CC_BASE_ADDR
diff --git a/board/freescale/mx35_3stack/mx35_3stack.c b/board/freescale/mx35_3stack/mx35_3stack.c
index 7854f86..267e9f1 100644
--- a/board/freescale/mx35_3stack/mx35_3stack.c
+++ b/board/freescale/mx35_3stack/mx35_3stack.c
@@ -43,19 +43,20 @@ static inline void setup_soc_rev(void)
int reg;
reg = __REG(IIM_BASE_ADDR + IIM_SREV);
if (!reg) {
- reg = __REG(ROMPATCH_BASE_ADDR + ROMPATCH_REV);
+ reg = __REG(ROMPATCH_REV);
reg <<= 4;
} else
- reg += 0x10;
+ reg += CHIP_REV_1_0;
system_rev = 0x35000 + (reg & 0xFF);
}
static inline void set_board_rev(int rev)
{
- system_rev |= (rev & 0xF) << 8;
+ int reg;
+ system_rev = (system_rev & ~(0xF << 8)) | (rev & 0xF) << 8;
}
-static inline int is_soc_rev(int rev)
+int is_soc_rev(int rev)
{
return (system_rev & 0xFF) - rev;
}
@@ -171,6 +172,7 @@ static inline int board_detect(void)
set_board_rev(1);
return 1;
}
+ set_board_rev(0);
return 0;
}