summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnish Trivedi <anish@freescale.com>2011-01-31 11:02:32 -0600
committerAnish Trivedi <anish@freescale.com>2011-01-31 11:02:32 -0600
commitd56b22a7f367d358d35e188da6f58310ae980cbe (patch)
tree00cb0c4ed843e09f5f2a82881de0be6cc67d31f7
parentc8087980af087ef280bbf59d62fff8c2c78f79ad (diff)
downloadu-boot-imx-d56b22a7f367d358d35e188da6f58310ae980cbe.zip
u-boot-imx-d56b22a7f367d358d35e188da6f58310ae980cbe.tar.gz
u-boot-imx-d56b22a7f367d358d35e188da6f58310ae980cbe.tar.bz2
ENGR00138689 MX50 Update LPDDR2 script to use more optimized settings
New LPDDR2 initialization script from designer includes controller changes as well as very important PHY changes that increase internal sampling window to detect DQS edge. This increase compensates for possible jitter. The script, Codex_LPDDR2_266MHz.inc v7, is found at http://compass.freescale.net/livelink/ livelink?func=ll&objId=218722501&objAction=browse&viewType=1 Also removed ARM2 LPDDR2 init section since the settings for that board are the same as the RDP (EVK). Signed-off-by: Anish Trivedi <anish@freescale.com>
-rw-r--r--board/freescale/mx50_rdp/flash_header.S357
1 files changed, 42 insertions, 315 deletions
diff --git a/board/freescale/mx50_rdp/flash_header.S b/board/freescale/mx50_rdp/flash_header.S
index 97bd92a..5565af5 100644
--- a/board/freescale/mx50_rdp/flash_header.S
+++ b/board/freescale/mx50_rdp/flash_header.S
@@ -291,7 +291,7 @@ plugin_start:
strhi r3, [r2]
/*=============================================================================
- *init script for codex LPDDR1-200MHz CPU board
+ *init script for all MX50 boards
*===========================================================================*/
/* Setup PLL1 to be 800 MHz */
@@ -369,6 +369,9 @@ 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 0x53fa8670 = 0x00000000 //IOMUXC_SW_PAD_CTL_GRP_DDRPKE
+// bit 7: PKE=0 (All ddr pads except DQS)
+ str r2, [r0, #0x70]
//setmem /32 0x53fa86a4 = 0x00200000
//IOMUXC_SW_PAD_CTL_GRP_CTLDS, dse=3'b100
str r3, [r0, #0xa4]
@@ -461,8 +464,6 @@ wait_pll1_lock:
str r1, [r0, #0x124]
#endif
-#if defined(CONFIG_MX50_RDP)
-
/*===========================================================================
* DDR setting
*===========================================================================*/
@@ -470,9 +471,6 @@ wait_pll1_lock:
//setmem /32 0x14000000 = 0x00000500
ldr r1, =0x00000500
str r1, [r0, #0x0]
-//setmem /32 0x14000004 = 0x00000000
- ldr r1, =0x00000000
- str r1, [r0, #0x4]
//setmem /32 0x14000008 = 0x0000001b
ldr r1, =0x0000001b
str r1, [r0, #0x8]
@@ -485,20 +483,20 @@ wait_pll1_lock:
//setmem /32 0x14000014 = 0x00000a6b
ldr r1, =0x00000a6b
str r1, [r0, #0x14]
-//setmem /32 0x14000018 = 0x02030d0c
- ldr r1, =0x02030d0c
+//setmem /32 0x14000018 = 0x02020d0c
+ ldr r1, =0x02020d0c
str r1, [r0, #0x18]
-//setmem /32 0x1400001c = 0x0c110304
- ldr r1, =0x0c110304
+//setmem /32 0x1400001c = 0x0c110302
+ ldr r1, =0x0c110302
str r1, [r0, #0x1c]
//setmem /32 0x14000020 = 0x05020503
ldr r1, =0x05020503
str r1, [r0, #0x20]
-//setmem /32 0x14000024 = 0x0048D005
- ldr r1, =0x0048D005
+//setmem /32 0x14000024 = 0x0048eb05
+ ldr r1, =0x0048eb05
str r1, [r0, #0x24]
-//setmem /32 0x14000028 = 0x01000403
- ldr r1, =0x01000403
+//setmem /32 0x14000028 = 0x00000606
+ ldr r1, =0x00000606
str r1, [r0, #0x28]
//setmem /32 0x1400002c = 0x09040501
ldr r1, =0x09040501
@@ -515,8 +513,8 @@ wait_pll1_lock:
//setmem /32 0x1400003c = 0x00002301
ldr r1, =0x00002301
str r1, [r0, #0x3c]
-//setmem /32 0x14000040 = 0x00050300
- ldr r1, =0x00050300
+//setmem /32 0x14000040 = 0x00050408
+ ldr r1, =0x00050408
str r1, [r0, #0x40]
//setmem /32 0x14000044 = 0x00000300
ldr r1, =0x00000300
@@ -612,8 +610,8 @@ wait_pll1_lock:
ldr r1, =0x0000ffff
str r1, [r0, #0xdc]
-//setmem /32 0x140000e0 = 0x0000ffff
- ldr r1, =0x0000ffff
+//setmem /32 0x140000e0 = 0x0000ff00
+ ldr r1, =0x0000ff00
str r1, [r0, #0xe0]
//setmem /32 0x140000e4 = 0x02020000
@@ -668,8 +666,8 @@ wait_pll1_lock:
ldr r1, =0x03060408
str r1, [r0, #0x114]
-//setmem /32 0x14000118 = 0x01010002
- ldr r1, =0x01010002
+//setmem /32 0x14000118 = 0x00010002
+ ldr r1, =0x00010002
str r1, [r0, #0x118]
//setmem /32 0x1400011c = 0x00001000
@@ -685,44 +683,36 @@ wait_pll1_lock:
ldr r1, =0x00000000
str r1, [r0, #0x204]
-//setmem /32 0x14000208 = 0xf5003a27
- ldr r1, =0xf5003a27
+//setmem /32 0x14000208 = 0x35003a27
+ ldr r1, =0x35003a27
str r1, [r0, #0x208]
-//setmem /32 0x14000210 = 0xf5003a27
- ldr r1, =0xf5003a27
+//setmem /32 0x14000210 = 0x35003a27
str r1, [r0, #0x210]
-//setmem /32 0x14000218 = 0xf5003a27
- ldr r1, =0xf5003a27
+//setmem /32 0x14000218 = 0x35003a27
str r1, [r0, #0x218]
-//setmem /32 0x14000220 = 0xf5003a27
- ldr r1, =0xf5003a27
+//setmem /32 0x14000220 = 0x35003a27
str r1, [r0, #0x220]
-//setmem /32 0x14000228 = 0xf5003a27
- ldr r1, =0xf5003a27
+//setmem /32 0x14000228 = 0x35003a27
str r1, [r0, #0x228]
-//setmem /32 0x1400020c = 0x074002e1
- ldr r1, =0x074002e1
+//setmem /32 0x1400020c = 0x380002e1
+ ldr r1, =0x380002e1
str r1, [r0, #0x20c]
-//setmem /32 0x14000214 = 0x074002e1
- ldr r1, =0x074002e1
+//setmem /32 0x14000214 = 0x380002e1
str r1, [r0, #0x214]
-//setmem /32 0x1400021c = 0x074002e1
- ldr r1, =0x074002e1
+//setmem /32 0x1400021c = 0x380002e1
str r1, [r0, #0x21c]
-//setmem /32 0x14000224 = 0x074002e1
- ldr r1, =0x074002e1
+//setmem /32 0x14000224 = 0x380002e1
str r1, [r0, #0x224]
-//setmem /32 0x1400022c = 0x074002e1
- ldr r1, =0x074002e1
+//setmem /32 0x1400022c = 0x380002e1
str r1, [r0, #0x22c]
//setmem /32 0x14000230 = 0x00000000
@@ -733,301 +723,38 @@ wait_pll1_lock:
ldr r1, =0x00810006
str r1, [r0, #0x234]
-//setmem /32 0x14000238 = 0x60099414
- ldr r1, =0x60099414
+//setmem /32 0x14000238 = 0x60101014
+ ldr r1, =0x60101014
str r1, [r0, #0x238]
-//setmem /32 0x14000240 = 0x60099414
- ldr r1, =0x60099414
+//setmem /32 0x14000240 = 0x60101014
str r1, [r0, #0x240]
-//setmem /32 0x14000248 = 0x60099414
- ldr r1, =0x60099414
+//setmem /32 0x14000248 = 0x60101014
str r1, [r0, #0x248]
-//setmem /32 0x14000250 = 0x60099414
- ldr r1, =0x60099414
+//setmem /32 0x14000250 = 0x60101014
str r1, [r0, #0x250]
-//setmem /32 0x14000258 = 0x60099414
- ldr r1, =0x60099414
+//setmem /32 0x14000258 = 0x60101014
str r1, [r0, #0x258]
-//setmem /32 0x1400023c = 0x000a0b01
- ldr r1, =0x000a0b01
+//setmem /32 0x1400023c = 0x00100b01
+ ldr r1, =0x00100b01
str r1, [r0, #0x23c]
-//setmem /32 0x14000244 = 0x000a0b01
- ldr r1, =0x000a0b01
+//setmem /32 0x14000244 = 0x00100b01
str r1, [r0, #0x244]
-//setmem /32 0x1400024c = 0x000a0b01
- ldr r1, =0x000a0b01
+//setmem /32 0x1400024c = 0x00100b01
str r1, [r0, #0x24c]
-//setmem /32 0x14000254 = 0x000a0b01
- ldr r1, =0x000a0b01
+//setmem /32 0x14000254 = 0x00100b01
str r1, [r0, #0x254]
-//setmem /32 0x1400025c = 0x000a0b01
- ldr r1, =0x000a0b01
+//setmem /32 0x1400025c = 0x00100b01
str r1, [r0, #0x25c]
-#elif defined(CONFIG_MX50_ARM2)
-
-/*=============================================================================
- * DDR setting
- *===========================================================================*/
-
-/* setmem /32 0x14000000 = 0x00000500 */
- ldr r1, =0x00000500
- str r1, [r0, #0x0]
-/* setmem /32 0x14000004 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x4]
-/* setmem /32 0x14000008 = 0x0000001b */
- ldr r1, =0x0000001b
- str r1, [r0, #0x8]
-/* setmem /32 0x1400000c = 0x0000d056 */
- ldr r1, =0x0000d056
- str r1, [r0, #0xc]
-/* setmem /32 0x14000010 = 0x0000010b */
- ldr r1, =0x0000010b
- str r1, [r0, #0x10]
-/* setmem /32 0x14000014 = 0x00000a6b */
- ldr r1, =0x00000a6b
- str r1, [r0, #0x14]
-/* setmem /32 0x14000018 = 0x02020d0c */
- ldr r1, =0x02020d0c
- str r1, [r0, #0x18]
-/* setmem /32 0x1400001c = 0x0c110302 */
- ldr r1, =0x0c110302
- str r1, [r0, #0x1c]
-/* setmem /32 0x14000020 = 0x05020503 */
- ldr r1, =0x05020503
- str r1, [r0, #0x20]
-/* setmem /32 0x14000024 = 0x00000105 */
- ldr r1, =0x00000105
- str r1, [r0, #0x24]
-/* setmem /32 0x14000028 = 0x01000403 */
- ldr r1, =0x01000403
- str r1, [r0, #0x28]
-/* setmem /32 0x1400002c = 0x09040501 */
- ldr r1, =0x09040501
- str r1, [r0, #0x2c]
-/* setmem /32 0x14000030 = 0x02000000 */
- ldr r1, =0x02000000
- str r1, [r0, #0x30]
-/* setmem /32 0x14000034 = 0x00000e02 */
- ldr r1, =0x00000e02
- str r1, [r0, #0x34]
-/* setmem /32 0x14000038 = 0x00000006 */
- ldr r1, =0x00000006
- str r1, [r0, #0x38]
-/* setmem /32 0x1400003c = 0x00002301 */
- ldr r1, =0x00002301
- str r1, [r0, #0x3c]
-/* setmem /32 0x14000040 = 0x00050300 */
- ldr r1, =0x00050300
- str r1, [r0, #0x40]
-/* setmem /32 0x14000044 = 0x00000300 */
- ldr r1, =0x00000300
- str r1, [r0, #0x44]
-/* setmem /32 0x14000048 = 0x00260026 */
- ldr r1, =0x00260026
- str r1, [r0, #0x48]
-/* setmem /32 0x1400004c = 0x00010000 */
- ldr r1, =0x00010000
- str r1, [r0, #0x4c]
-/* setmem /32 0x1400005c = 0x02000000 */
- ldr r1, =0x02000000
- str r1, [r0, #0x5c]
-/* setmem /32 0x14000060 = 0x00000002 */
- ldr r1, =0x00000002
- str r1, [r0, #0x60]
-/* setmem /32 0x14000064 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x64]
-/* setmem /32 0x14000068 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x68]
-/* setmem /32 0x1400006c = 0x00040042 */
- ldr r1, =0x00040042
- str r1, [r0, #0x6c]
-/* setmem /32 0x14000070 = 0x00000001 */
- ldr r1, =0x00000001
- str r1, [r0, #0x70]
-/* setmem /32 0x14000074 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x74]
-/* setmem /32 0x14000078 = 0x00040042 */
- ldr r1, =0x00040042
- str r1, [r0, #0x78]
-/* setmem /32 0x1400007c = 0x00000001 */
- ldr r1, =0x00000001
- str r1, [r0, #0x7c]
-/* setmem /32 0x14000080 = 0x010b0000 */
- ldr r1, =0x010b0000
- str r1, [r0, #0x80]
-/* setmem /32 0x14000084 = 0x00000060 */
- ldr r1, =0x00000060
- str r1, [r0, #0x84]
-/* setmem /32 0x14000088 = 0x02400018 */
- ldr r1, =0x02400018
- str r1, [r0, #0x88]
-/* setmem /32 0x1400008c = 0x01000e00 */
- ldr r1, =0x01000e00
- str r1, [r0, #0x8c]
-/* setmem /32 0x14000090 = 0x0a010101 */
- ldr r1, =0x0a010101
- str r1, [r0, #0x90]
-/* setmem /32 0x14000094 = 0x01011f1f */
- ldr r1, =0x01011f1f
- str r1, [r0, #0x94]
-/* setmem /32 0x14000098 = 0x01010101 */
- ldr r1, =0x01010101
- str r1, [r0, #0x98]
-/* setmem /32 0x1400009c = 0x00030101 */
- ldr r1, =0x00030101
- str r1, [r0, #0x9c]
-/* setmem /32 0x140000a0 = 0x00010000 */
- ldr r1, =0x00010000
- str r1, [r0, #0xa0]
-/* setmem /32 0x140000a4 = 0x00010000 */
- ldr r1, =0x00010000
- str r1, [r0, #0xa4]
-/* setmem /32 0x140000a8 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0xa8]
-/* setmem /32 0x140000ac = 0x0000ffff */
- ldr r1, =0x0000ffff
- str r1, [r0, #0xac]
-/* setmem /32 0x140000c8 = 0x02020101 */
- ldr r1, =0x02020101
- str r1, [r0, #0xc8]
-/* setmem /32 0x140000cc = 0x01000000 */
- ldr r1, =0x01000000
- str r1, [r0, #0xcc]
-/* setmem /32 0x140000d0 = 0x06060606 */
- ldr r1, =0x06060606
- str r1, [r0, #0xd0]
-/* setmem /32 0x140000d4 = 0x06060606 */
- ldr r1, =0x06060606
- str r1, [r0, #0xd4]
-/* setmem /32 0x140000d8 = 0x00000102 */
- ldr r1, =0x00000102
- str r1, [r0, #0xd8]
-/* setmem /32 0x140000dc = 0x0000ffff */
- ldr r1, =0x0000ffff
- str r1, [r0, #0xdc]
-/* setmem /32 0x140000e0 = 0x0000ffff */
- ldr r1, =0x0000ffff
- str r1, [r0, #0xdc]
-/* setmem /32 0x140000e4 = 0x02020000 */
- ldr r1, =0x02020000
- str r1, [r0, #0xe4]
-/* setmem /32 0x140000e8 = 0x02020202 */
- ldr r1, =0x02020202
- str r1, [r0, #0xe8]
-/* setmem /32 0x140000ec = 0x00000202 */
- ldr r1, =0x00000202
- str r1, [r0, #0xec]
-/* setmem /32 0x140000f0 = 0x01010064 */
- ldr r1, =0x01010064
- str r1, [r0, #0xf0]
-/* setmem /32 0x140000f4 = 0x01010101 */
- ldr r1, =0x01010101
- str r1, [r0, #0xf4]
-/* setmem /32 0x140000f8 = 0x00010101 */
- ldr r1, =0x00010101
- str r1, [r0, #0xf8]
-/* setmem /32 0x140000fc = 0x00000064 */
- ldr r1, =0x00000064
- str r1, [r0, #0xfc]
-/* setmem /32 0x14000100 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x100]
-/* setmem /32 0x14000104 = 0x02000802 */
- ldr r1, =0x02000802
- str r1, [r0, #0x104]
-/* setmem /32 0x14000108 = 0x04080000 */
- ldr r1, =0x04080000
- str r1, [r0, #0x108]
-/* setmem /32 0x1400010c = 0x04080408 */
- ldr r1, =0x04080408
- str r1, [r0, #0x10c]
-/* setmem /32 0x14000110 = 0x04080408 */
- ldr r1, =0x04080408
- str r1, [r0, #0x110]
-/* setmem /32 0x14000114 = 0x03060408 */
- ldr r1, =0x03060408
- str r1, [r0, #0x114]
-/* setmem /32 0x14000118 = 0x01010002 */
- ldr r1, =0x01010002
- str r1, [r0, #0x118]
-/* setmem /32 0x1400011c = 0x00001000 */
- ldr r1, =0x00001000
- str r1, [r0, #0x11c]
-/* setmem /32 0x14000200 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x200]
-/* setmem /32 0x14000204 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x204]
-/* setmem /32 0x14000208 = 0xf5003a27 */
- ldr r1, =0xf5003a27
- str r1, [r0, #0x208]
-/* setmem /32 0x14000210 = 0xf5003a27 */
- str r1, [r0, #0x210]
-/* setmem /32 0x14000218 = 0xf5003a27 */
- str r1, [r0, #0x218]
-/* setmem /32 0x14000220 = 0xf5003a27 */
- str r1, [r0, #0x220]
-/* setmem /32 0x14000228 = 0xf5003a27 */
- str r1, [r0, #0x228]
-/* setmem /32 0x1400020c = 0x074002e1 */
- ldr r1, =0x074002e1
- str r1, [r0, #0x20c]
-/* setmem /32 0x14000214 = 0x074002e1 */
- str r1, [r0, #0x214]
-/* setmem /32 0x1400021c = 0x074002e1 */
- str r1, [r0, #0x21c]
-/* setmem /32 0x14000224 = 0x074002e1 */
- str r1, [r0, #0x224]
-/* setmem /32 0x1400022c = 0x074002e1 */
- str r1, [r0, #0x22c]
-/* setmem /32 0x14000230 = 0x00000000 */
- ldr r1, =0x00000000
- str r1, [r0, #0x230]
-/* setmem /32 0x14000234 = 0x00810006 */
- ldr r1, =0x00810006
- str r1, [r0, #0x234]
-/* setmem /32 0x14000238 = 0x20099414 */
- ldr r1, =0x20099414
- str r1, [r0, #0x238]
-/* setmem /32 0x14000240 = 0x20099414 */
- str r1, [r0, #0x240]
-/* setmem /32 0x14000248 = 0x20099414 */
- str r1, [r0, #0x248]
-/* setmem /32 0x14000250 = 0x20099414 */
- str r1, [r0, #0x250]
-/* setmem /32 0x14000258 = 0x20099414 */
- str r1, [r0, #0x258]
-/* setmem /32 0x1400023c = 0x000a0b01 */
- ldr r1, =0x000a0b01
- str r1, [r0, #0x23c]
-/* setmem /32 0x14000244 = 0x000a0b01 */
- str r1, [r0, #0x244]
-/* setmem /32 0x1400024c = 0x000a0b01 */
- str r1, [r0, #0x24c]
-/* setmem /32 0x14000254 = 0x000a0b01 */
- str r1, [r0, #0x254]
-/* setmem /32 0x1400025c = 0x000a0b01 */
- str r1, [r0, #0x25c]
-#else
-# error "Unsupported board!"
-#endif
-
/* Start ddr */
/* setmem /32 0x14000000 = 0x00000501 // bit[0]: start */
ldr r1, =0x00000501