summaryrefslogtreecommitdiff
path: root/board/freescale
diff options
context:
space:
mode:
authorRobby Cai <R63905@freescale.com>2011-04-15 18:45:45 +0800
committerRobby Cai <R63905@freescale.com>2011-04-16 14:19:34 +0800
commit1396e7e5fc7bdf6ff39fdcc6bafe1c9772b529b9 (patch)
treeef8f163edfb2d05803f5c2a8043c935afc52e087 /board/freescale
parent6d20b6a7428e51a0b2abcbaf291287bcb38aba63 (diff)
downloadu-boot-imx-1396e7e5fc7bdf6ff39fdcc6bafe1c9772b529b9.zip
u-boot-imx-1396e7e5fc7bdf6ff39fdcc6bafe1c9772b529b9.tar.gz
u-boot-imx-1396e7e5fc7bdf6ff39fdcc6bafe1c9772b529b9.tar.bz2
ENGR00142247 MX50: Add PD+3 routine for all DDR types
PD+3 routine help test pass for ddr with higher freq. Tested on ARM2 board (mDDR, DDR2) RDP board (LPDDR2 from both vendors) RD3 board (LPDDR2) Signed-off-by: Robby Cai <R63905@freescale.com>
Diffstat (limited to 'board/freescale')
-rw-r--r--board/freescale/mx50_rdp/flash_header.S52
1 files changed, 34 insertions, 18 deletions
diff --git a/board/freescale/mx50_rdp/flash_header.S b/board/freescale/mx50_rdp/flash_header.S
index 6ce2fa5..f6b01c8 100644
--- a/board/freescale/mx50_rdp/flash_header.S
+++ b/board/freescale/mx50_rdp/flash_header.S
@@ -35,15 +35,15 @@
/*=============================================================================
* Pu calibration based on 240 Ohm
*===========================================================================*/
- ldr r1, =0x0
+ ldr r1, =0x1
pu_loop:
cmp r1, #0x20
beq pu_out
- // (pd + 1) << 24 | (pu + 1) << 16
- ldr r2, =0x0
- add r2, r2, #0x1
- add r1, r1, #0x1
+ // (pd - 1) << 24 | (pu - 1) << 16
+ ldr r2, =0x1
+ sub r2, r2, #0x1
+ sub r1, r1, #0x1
mov r3, r1, LSL #16
orr r3, r3, r2, LSL #24
@@ -88,14 +88,14 @@ pu_out:
/*=============================================================================
* PD calibration start (based on pu)
*===========================================================================*/
- ldr r2, =0x0
+ ldr r2, =0x1
pd_loop:
cmp r2, #0xf
beq pd_out
- // (pd + 1) << 24 | (pu + 1) << 16 | 1 << 4
- add r2, r2, #0x1
- add r1, r1, #0x1
+ // (pd - 1) << 24 | (pu - 1) << 16 | 1 << 4
+ sub r2, r2, #0x1
+ sub r1, r1, #0x1
mov r3, r2, lsl #24
orr r3, r3, r1, lsl #16
orr r3, r3, #0x10
@@ -143,21 +143,20 @@ pd_out:
// Pd calibration result in r2
sub r2, r2, #0x2
-#if defined(CONFIG_LPDDR2)
// Pd add 3
add r2, r2, #0x3
/*=============================================================================
* Pu calibration based on pd value
*===========================================================================*/
- ldr r1, =0x0
+ ldr r1, =0x1
pu_loop_pd:
cmp r1, #0x20
beq pu_out_pd
- // (pd + 1) << 24 | (pu + 1) << 16 | 1 << 4
- add r2, r2, #0x1
- add r1, r1, #0x1
+ // (pd - 1) << 24 | (pu - 1) << 16 | 1 << 4
+ sub r2, r2, #0x1
+ sub r1, r1, #0x1
mov r3, r2, LSL #24
orr r3, r3, r1, LSL #16
orr r3, r3, #0x10
@@ -199,7 +198,6 @@ pu_delay_pd:
pu_out_pd:
// Pu calibration result in r1
sub r1, r1, #0x1
-#endif
/*=============================================================================
* Software load PU/PD value,PU is stored in r1, and PD is stored in r2
@@ -210,9 +208,9 @@ pu_out_pd:
// Set SW_CFG2
str r3, [r0, #0x12c]
- // ((pd + 1) << 24) | ((pu + 1) <<16)
- add r2, r2, #0x1
- add r1, r1, #0x1
+ // ((pd - 1) << 24) | ((pu - 1) <<16)
+ sub r2, r2, #0x1
+ sub r1, r1, #0x1
mov r3, r2, LSL #24
orr r3, r3, r1, LSL #16
// Load PU, pu_pd_sel=0
@@ -369,8 +367,17 @@ wait_pll1_lock:
//setmem /32 0x53fa86ac = 0x04000000
//IOMUXC_SW_PAD_CTL_GRP_DDR_TYPE, ddr_sel=2'b01 (LPDDR2)
str r1, [r0, #0xac]
+//setmem /32 0x53fa866c = 0x00000200 //IOMUXC_SW_PAD_CTL_GRP_DDRMODE_CTL
+// [9] DDR_INPUT=1 (DQS: differential input mode)
+ mov r2, #0x00000200
+ str r2, [r0, #0x6c]
+//setmem /32 0x53fa868c = 0x0 // IOMUXC_SW_PAD_CTL_GRP_DDRMODE
+// [9] DDR_INPUT=0 (DATA: CMOS input type)
+ mov r2, #0x0
+ str r2, [r0, #0x8c]
//setmem /32 0x53fa8670 = 0x00000000 //IOMUXC_SW_PAD_CTL_GRP_DDRPKE
// bit 7: PKE=0 (All ddr pads except DQS)
+ mov r2, #0x0
str r2, [r0, #0x70]
//setmem /32 0x53fa86a4 = 0x00200000
//IOMUXC_SW_PAD_CTL_GRP_CTLDS, dse=3'b100
@@ -525,6 +532,15 @@ wait_pll1_lock:
//setmem /32 0x1400004c = 0x00010000
ldr r1, =0x00010000
str r1, [r0, #0x4c]
+//setmem /32 0x14000050 = 0x00000000, lowpower mode
+ ldr r1, =0x00000000
+ str r1, [r0, #0x50]
+//setmem /32 0x14000054 = 0x00000000, lowpower mode
+ ldr r1, =0x00000000
+ str r1, [r0, #0x54]
+//setmem /32 0x14000058 = 0x00000000, lowpower mode
+ ldr r1, =0x00000000
+ str r1, [r0, #0x58]
//setmem /32 0x1400005c = 0x02000000
ldr r1, =0x02000000
str r1, [r0, #0x5c]