2 #include <configs/tx53.h>
3 #include <asm/arch/imx-regs.h>
5 #define DEBUG_LED_BIT 20
6 #define LED_GPIO_BASE GPIO2_BASE_ADDR
7 #define LED_MUX_OFFSET 0x174
8 #define LED_MUX_MODE 0x11
10 #define SDRAM_CLK CONFIG_SYS_SDRAM_CLK
11 #define SDRAM_SIZE (CONFIG_SYS_SDRAM_SIZE / SZ_1M)
13 #define REG_CCGR0 0x68
14 #define REG_CCGR1 0x6c
15 #define REG_CCGR2 0x70
16 #define REG_CCGR3 0x74
17 #define REG_CCGR4 0x78
18 #define REG_CCGR5 0x7c
19 #define REG_CCGR6 0x80
20 #define REG_CCGR7 0x84
21 #define REG_CMEOR 0x88
23 #define CPU_2_BE_32(l) \
24 ((((l) << 24) & 0xFF000000) | \
25 (((l) << 8) & 0x00FF0000) | \
26 (((l) >> 8) & 0x0000FF00) | \
27 (((l) >> 24) & 0x000000FF))
30 CCM register set 0x53FD4000 0x53FD7FFF
31 EIM register set 0x63FDA000 0x63FDAFFF
32 NANDFC register set 0xF7FF0000 0xF7FFFFFF
33 IOMUX Control (IOMUXC) registers 0x53FA8000 0x53FABFFF
34 DPLLC1 register 0x63F80000 0x63F83FFF
35 DPLLC2 register 0x63F84000 0x63F87FFF
36 DPLLC3 register 0x63F88000 0x63F8BFFF
37 DPLLC4 register 0x63F8C000 0x63F8FFFF
38 ESD RAM controller register 0x63FD9000 0x63FD9FFF
39 M4IF register 0x63FD8000 0x63FD8FFF
40 DDR 0x70000000 0xEFFFFFFF
41 EIM 0xF0000000 0xF7FEFFFF
42 NANDFC Buffers 0xF7FF0000 0xF7FFFFFF
43 IRAM Free Space 0xF8006000 0xF8017FF0
44 GPU Memory 0xF8020000 0xF805FFFF
46 #define CHECK_DCD_ADDR(a) ( \
47 ((a) >= 0x53fd4000 && (a) <= 0x53fd7fff) /* CCM */ || \
48 ((a) >= 0x63fda000 && (a) <= 0x63fdafff) /* EIM (CS0) */ || \
49 ((a) >= 0x53fa8000 && (a) <= 0x53fabfff) /* IOMUXC */ || \
50 ((a) >= 0x63f80000 && (a) <= 0x63f8ffff) /* DPLLC1..4 */ || \
51 ((a) >= 0x63fd8000 && (a) <= 0x63fd9fff) /* M4IF & SDRAM Contr. */ || \
52 ((a) >= 0x70000000 && (a) <= 0xefffffff) /* SDRAM */ || \
53 ((a) >= 0xf0000000 && (a) <= 0xf7ffffff) /* EIM & NANDFC buffers */ || \
54 ((a) >= 0xf8006000 && (a) <= 0xf8017ff0) /* IRAM free space */ || \
55 ((a) >= 0xf8020000 && (a) <= 0xf805ffff) /* GPU RAM */)
57 .macro mxc_dcd_item addr, val
58 .ifne CHECK_DCD_ADDR(\addr)
59 .word CPU_2_BE_32(\addr), CPU_2_BE_32(\val)
61 .error "Address \addr not accessible from DCD"
65 #define MXC_DCD_ITEM(addr, val) mxc_dcd_item (addr), (val)
67 #define MXC_DCD_CMD_SZ_BYTE 1
68 #define MXC_DCD_CMD_SZ_SHORT 2
69 #define MXC_DCD_CMD_SZ_WORD 4
70 #define MXC_DCD_CMD_FLAG_WRITE 0x0
71 #define MXC_DCD_CMD_FLAG_CLR 0x1
72 #define MXC_DCD_CMD_FLAG_SET 0x3
73 #define MXC_DCD_CMD_FLAG_CHK_CLR ((0 << 0) | (0 << 1))
74 #define MXC_DCD_CMD_FLAG_CHK_SET ((0 << 0) | (1 << 1))
75 #define MXC_DCD_CMD_FLAG_CHK_ANY_CLR ((1 << 0) | (0 << 1))
76 #define MXC_DCD_CMD_FLAG_CHK_ANY_SET ((1 << 0) | (1 << 1))
78 #define MXC_DCD_START \
79 .word CPU_2_BE_32((0xd2 << 24) | ((dcd_end - .) << 8) | DCD_VERSION) ; \
84 .ifgt . - dcd_start - 1768
85 .error "DCD too large!"
90 #define MXC_DCD_CMD_WRT(type, flags) \
91 1: .word CPU_2_BE_32((0xcc << 24) | ((1f - .) << 8) | ((flags) << 3) | (type))
93 #define MXC_DCD_CMD_CHK(type, flags, addr, mask) \
94 1: .word CPU_2_BE_32((0xcf << 24) | (12 << 8) | ((flags) << 3) | (type)), \
95 CPU_2_BE_32(addr), CPU_2_BE_32(mask)
97 #define MXC_DCD_CMD_CHK_CNT(type, flags, addr, mask, count) \
98 1: .word CPU_2_BE_32((0xcf << 24) | (16 << 8) | ((flags) << 3) | (type)), \
99 CPU_2_BE_32(addr), CPU_2_BE_32(mask), CPU_2_BE_32(count)
101 #define MXC_DCD_CMD_NOP() \
102 1: .word CPU_2_BE_32((0xc0 << 24) | (4 << 8))
105 #define CK_TO_NS(ck) (((ck) * 1000 + SDRAM_CLK / 2) / SDRAM_CLK)
106 #define NS_TO_CK(ns) (((ns) * SDRAM_CLK + 999) / 1000)
107 #define NS_TO_CK10(ns) DIV_ROUND_UP(NS_TO_CK(ns), 10)
108 #define NS_TO_CK100(ns) DIV_ROUND_UP(NS_TO_CK(ns), 100)
110 .macro CK_VAL, name, clks, offs, max
114 .ifle \clks - \offs - \max
115 .set \name, \clks - \offs
117 .error "Value \clks out of range for parameter \name"
122 .macro NS_VAL, name, ns, offs, max
126 CK_VAL \name, NS_TO_CK(\ns), \offs, \max
130 .macro CK_MAX, name, ck1, ck2, offs, max
132 CK_VAL \name, \ck1, \offs, \max
134 CK_VAL \name, \ck2, \offs, \max
138 #define ESDMISC_DDR_TYPE_DDR3 0
139 #define ESDMISC_DDR_TYPE_LPDDR2 1
140 #define ESDMISC_DDR_TYPE_DDR2 2
142 #define DIV_ROUND_UP(m,d) (((m) + (d) - 1) / (d))
144 #define CKIL_FREQ_Hz 32768
145 #define ESDOR_CLK_PERIOD_ns (1000000000 / CKIL_FREQ_Hz / 2) /* base clock for ESDOR values */
148 #define BANK_ADDR_BITS CONFIG_NR_DRAM_BANKS
149 #define SDRAM_BURST_LENGTH 8
153 #define ADDR_MIRROR 0
154 #define DDR_TYPE ESDMISC_DDR_TYPE_DDR3
156 #if SDRAM_CLK > 666 && SDRAM_CLK <= 800
159 #elif SDRAM_CLK > 533 && SDRAM_CLK <= 666
160 #define CL_VAL 9 // or 10
162 #elif SDRAM_CLK > 400 && SDRAM_CLK <= 533
163 #define CL_VAL 7 // or 8
165 #elif SDRAM_CLK > 333 && SDRAM_CLK <= 400
168 #elif SDRAM_CLK >= 303 && SDRAM_CLK <= 333
172 #error SDRAM clock out of range: 303 .. 800
175 #if SDRAM_SIZE < 2048
176 /* 512/1024MiB SDRAM: NT5CB128M16FP-DII */
178 #define ROW_ADDR_BITS 14
179 #define COL_ADDR_BITS 10
182 NS_VAL tRFC, 160, 1, 255 /* clks - 1 (0..255) */
183 CK_MAX tXS, NS_TO_CK(CK_TO_NS(tRFC + 1) + 10), 5, 1, 255 /* clks - 1 (0..255) tRFC + 10 */
184 CK_MAX tXP, NS_TO_CK10(75), 3, 1, 7 /* clks - 1 (0..7) */ /* max(3tCK, 7.5ns) */
185 CK_MAX tXPDLL, NS_TO_CK(24), 2, 1, 15 /* clks - 1 (0..15) */
186 NS_VAL tFAW, 50, 1, 31 /* clks - 1 (0..31) */
187 CK_VAL tCL, CL_VAL, 3, 8 /* clks - 3 (0..8) CAS Latency */
190 CK_VAL tRCD, NS_TO_CK10(125), 1, 7 /* clks - 1 (0..7) */ /* 12.5 */
191 CK_VAL tRP, NS_TO_CK10(125), 1, 7 /* clks - 1 (0..7) */ /* 12.5 */
192 NS_VAL tRC, 50, 1, 31 /* clks - 1 (0..31) */
193 CK_VAL tRAS, NS_TO_CK10(375), 1, 31 /* clks - 1 (0..31) */ /* 37.5 */
194 CK_VAL tRPA, 1, 0, 1 /* clks (0..1) */
195 NS_VAL tWR, 15, 1, 15 /* clks - 1 (0..15) */
196 CK_VAL tMRD, 4, 1, 15 /* clks - 1 (0..15) */
197 CK_VAL tCWL, CWL_VAL, 2, 6 /* clks - 2 (0..6) */
200 CK_VAL tDLLK, 512, 1, 511 /* clks - 1 (0..511) */
201 CK_MAX tRTP, NS_TO_CK10(75), 4, 1, 7 /* clks - 1 (0..7) */ /* max(4tCK, 7.5ns) */
202 CK_MAX tWTR, NS_TO_CK10(75), 4, 1, 7 /* clks - 1 (0..7) */ /* max(4tCK, 7.5ns) */
203 CK_MAX tRRD, NS_TO_CK(10), 4, 1, 7 /* clks - 1 (0..7) */
206 CK_MAX tXPR, NS_TO_CK(CK_TO_NS(tRFC + 1) + 10), 5, 1, 255 /* clks - 1 (0..255) max(tRFC + 10, 5CK) */
208 /* 4096MiB SDRAM: IM4G16D3EABG-125I */
210 #define ROW_ADDR_BITS 15
211 #define COL_ADDR_BITS 10
214 NS_VAL tRFC, 260, 1, 255 /* clks - 1 (0..255) */
215 CK_MAX tXS, NS_TO_CK(CK_TO_NS(tRFC + 1) + 10), 5, 1, 255 /* clks - 1 (0..255) tRFC + 10 */
216 CK_MAX tXP, NS_TO_CK(6), 3, 1, 7 /* clks - 1 (0..7) */ /* max(3tCK, 7.5ns) */
217 CK_MAX tXPDLL, NS_TO_CK(24), 2, 1, 15 /* clks - 1 (0..15) */
218 NS_VAL tFAW, 30, 1, 31 /* clks - 1 (0..31) */
219 CK_VAL tCL, CL_VAL, 3, 8 /* clks - 3 (0..8) CAS Latency */
222 CK_VAL tRCD, NS_TO_CK100(1375), 1, 7 /* clks - 1 (0..7) */ /* 13.75 */
223 CK_VAL tRP, NS_TO_CK100(1375), 1, 7 /* clks - 1 (0..7) */ /* 13.75 */
224 CK_VAL tRC, NS_TO_CK100(4875), 1, 31 /* clks - 1 (0..31) */ /* 48.75 */
225 CK_VAL tRAS, NS_TO_CK(35), 1, 31 /* clks - 1 (0..31) */ /* 35 */
226 CK_VAL tRPA, 1, 0, 1 /* clks (0..1) */
227 NS_VAL tWR, 15, 1, 15 /* clks - 1 (0..15) */
228 CK_VAL tMRD, 4, 1, 15 /* clks - 1 (0..15) */
229 CK_VAL tCWL, CWL_VAL, 2, 6 /* clks - 2 (0..6) */
232 CK_VAL tDLLK, 512, 1, 511 /* clks - 1 (0..511) */
233 CK_MAX tRTP, NS_TO_CK10(75), 4, 1, 7 /* clks - 1 (0..7) */ /* max(4tCK, 7.5ns) */
234 CK_MAX tWTR, NS_TO_CK10(75), 4, 1, 7 /* clks - 1 (0..7) */ /* max(4tCK, 7.5ns) */
235 CK_MAX tRRD, NS_TO_CK10(75), 4, 1, 7 /* clks - 1 (0..7) */ /* max(4tCK, 7.5ns) */
238 CK_MAX tXPR, NS_TO_CK(CK_TO_NS(tRFC + 1) + 10), 5, 1, 255 /* clks - 1 (0..255) max(tRFC + 10, 5CK) */
241 #define tSDE_RST (DIV_ROUND_UP(200000, ESDOR_CLK_PERIOD_ns) + 1)
242 /* Add an extra (or two?) ESDOR_CLK_PERIOD_ns according to
243 * erroneous Erratum Engcm12377
245 #define tRST_CKE (DIV_ROUND_UP(500000 + 2 * ESDOR_CLK_PERIOD_ns, ESDOR_CLK_PERIOD_ns) + 1)
248 CK_VAL tAOFPD, NS_TO_CK10(85), 1, 7 /* clks - 1 (0..7) */ /* 8.5ns */
249 CK_VAL tAONPD, NS_TO_CK10(85), 1, 7 /* clks - 1 (0..7) */ /* 8.5ns */
250 CK_VAL tANPD, tCWL + 1, 1, 15 /* clks - 1 (0..15) */
251 CK_VAL tAXPD, tCWL + 1, 1, 15 /* clks - 1 (0..15) */
252 CK_VAL tODTLon tCWL, 0, 7 /* clks - 1 (0..7) */ /* CWL+AL-2 */
253 CK_VAL tODTLoff tCWL, 0, 31 /* clks - 1 (0..31) */ /* CWL+AL-2 */
256 CK_MAX tCKE, NS_TO_CK(5), 3, 1, 7
257 CK_MAX tCKSRX, NS_TO_CK(10), 5, 0, 7
258 CK_MAX tCKSRE, NS_TO_CK(10), 5, 0, 7
265 #define ESDPDC_VAL_0 ( \
270 (BOTH_CS_PD << 6) | \
275 #define ESDPDC_VAL_1 (ESDPDC_VAL_0 | \
280 #define Rtt_Nom 1 /* ODT: 0: off 1: RZQ/4 2: RZQ/2 3: RZQ/6 4: RZQ/12 5: RZQ/8 */
281 #define Rtt_WR 0 /* Dynamic ODT: 0: off 1: RZQ/4 2: RZQ/2 */
282 #define DLL_DISABLE 0
285 .set mr0_val, (((1 - DLL_DISABLE) << 8) /* DLL Reset */ | \
286 (SLOW_PD << 12) /* PD exit: 0: fast 1: slow */ |\
287 ((tWR + 1 - 4) << 9) | \
288 ((((tCL + 3) - 4) & 0x7) << 4) | \
289 ((((tCL + 3) - 4) & 0x8) >> 1))
291 .set mr0_val, ((1 << 8) /* DLL Reset */ | \
292 (SLOW_PD << 12) /* PD exit: 0: fast 1: slow */ |\
293 (((tWR + 1) / 2) << 9) | \
294 ((((tCL + 3) - 4) & 0x7) << 4) | \
295 ((((tCL + 3) - 4) & 0x8) >> 1))
299 ((Rtt_Nom & 1) << 2) | \
300 (((Rtt_Nom >> 1) & 1) << 6) | \
301 (((Rtt_Nom >> 2) & 1) << 9) | \
302 (DLL_DISABLE << 0) | \
305 (Rtt_WR << 9) /* dynamic ODT */ | \
306 (0 << 7) /* SRT: Ext. temp. (mutually exclusive with ASR!) */ | \
307 (1 << 6) | /* ASR: Automatic Self Refresh */ \
308 (((tCWL + 2) - 5) << 3) | \
312 #define ESDSCR_MRS_VAL(cs, mr, val) (((val) << 16) | \
313 (1 << 15) /* CON_REQ */ | \
315 (3 << 4) /* MRS command */ | \
320 #define ESDCFG0_VAL ( \
328 #define ESDCFG1_VAL ( \
338 #define ESDCFG2_VAL ( \
344 #define BURST_LEN (SDRAM_BURST_LENGTH / 8) /* 0: 4 byte 1: 8 byte */
346 #define ESDCTL_VAL (((ROW_ADDR_BITS - 11) << 24) | \
347 ((COL_ADDR_BITS - 9) << 20) | \
348 (BURST_LEN << 19) | \
349 (1 << 16) | /* SDRAM bus width */ \
350 ((-1) << (32 - BANK_ADDR_BITS)))
352 #define ESDMISC_VAL ((ADDR_MIRROR << 19) | \
359 #define ESDOR_VAL ((tXPR << 16) | (tSDE_RST << 8) | (tRST_CKE << 0))
361 #define ESDOTC_VAL ((tAOFPD << 27) | \
370 .word 0x20424346 /* "FCB " marker */
371 .word 0x01 /* FCB version number */
373 .word 0x0 /* primary image starting page number */
374 .word 0x0 /* secondary image starting page number */
376 .word 0x0 /* DBBT start page (0 == NO DBBT) */
377 .word 0 /* Bad block marker offset in main area (unused) */
379 .word 0 /* BI Swap disabled */
380 .word 0 /* Bad Block marker offset in spare area */
385 .word CPU_2_BE_32((0xd1 << 24) | (32 << 8) | 0x40)
401 .long __uboot_img_end - fcb_start
405 #define DCD_VERSION 0x40
409 MXC_DCD_CMD_WRT(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_WRITE)
411 MXC_DCD_ITEM(0x53fa8004, 0x00194005) @ set LDO to 1.3V
413 /* disable all irrelevant clocks */
414 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR0, 0xffcf0fff)
415 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR1, 0x000fffcf)
416 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR2, 0x033c0000)
417 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR3, 0x000000ff)
418 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR4, 0x00000000)
419 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR5, 0x00fff033)
420 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR6, 0x0f00030f)
421 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CCGR7, 0xfff00000)
422 MXC_DCD_ITEM(CCM_BASE_ADDR + REG_CMEOR, 0x00000000)
424 MXC_DCD_ITEM(IOMUXC_BASE_ADDR + 0x340, 0x11) /* GPIO_17 => RESET_OUT */
426 MXC_DCD_ITEM(0x63fd800c, 0x00000000) /* M4IF: MUX NFC signals on WEIM */
428 MXC_DCD_ITEM(0x53fd4014, 0x00888944) /* CBCDR */
430 MXC_DCD_ITEM(0x53fd4014, 0x00888644) /* CBCDR */
432 MXC_DCD_ITEM(0x53fd4018, 0x00016154) /* CBCMR */
434 MXC_DCD_ITEM(0x53fd401c, 0xa6a2a020) /* CSCMR1 */
435 MXC_DCD_ITEM(0x53fd4020, 0xb6b12f0a) /* CSCMR2 */
436 MXC_DCD_ITEM(0x53fd4024, 0x00080b18) /* CSCDR1 */
438 #define DDR_SEL_VAL 0
442 #define DDR_SEL_SHIFT 25
445 #define DDR_INPUT_SHIFT 9
451 #define DDR_SEL_MASK (DDR_SEL_VAL << DDR_SEL_SHIFT)
452 #define DSE_MASK (DSE_VAL << DSE_SHIFT)
453 #define ODT_MASK (ODT_VAL << ODT_SHIFT)
455 #define DQM_VAL DSE_MASK
456 #define SDQS_VAL (ODT_MASK | DSE_MASK | (1 << PUE_SHIFT))
457 #define SDODT_VAL (DSE_MASK | (0 << PKE_SHIFT) | (1 << PUE_SHIFT) | (0 << PUS_SHIFT))
458 #define SDCLK_VAL DSE_MASK
459 #define SDCKE_VAL ((1 << PKE_SHIFT) | (1 << PUE_SHIFT) | (0 << PUS_SHIFT))
461 MXC_DCD_ITEM(0x53fa8724, DDR_SEL_MASK) /* DDR_TYPE: DDR3 */
462 MXC_DCD_ITEM(0x53fa86f4, 0 << DDR_INPUT_SHIFT) /* DDRMODE_CTL */
463 MXC_DCD_ITEM(0x53fa8714, 0 << DDR_INPUT_SHIFT) /* GRP_DDRMODE */
464 MXC_DCD_ITEM(0x53fa86fc, 1 << PKE_SHIFT) /* GRP_DDRPKE */
465 MXC_DCD_ITEM(0x53fa8710, 0 << HYS_SHIFT) /* GRP_DDRHYS */
466 MXC_DCD_ITEM(0x53fa8708, 1 << PUE_SHIFT) /* GRP_DDRPK */
468 MXC_DCD_ITEM(0x53fa8584, DQM_VAL) /* DQM0 */
469 MXC_DCD_ITEM(0x53fa8594, DQM_VAL) /* DQM1 */
470 MXC_DCD_ITEM(0x53fa8560, DQM_VAL) /* DQM2 */
471 MXC_DCD_ITEM(0x53fa8554, DQM_VAL) /* DQM3 */
473 MXC_DCD_ITEM(0x53fa857c, SDQS_VAL) /* SDQS0 */
474 MXC_DCD_ITEM(0x53fa8590, SDQS_VAL) /* SDQS1 */
475 MXC_DCD_ITEM(0x53fa8568, SDQS_VAL) /* SDQS2 */
476 MXC_DCD_ITEM(0x53fa8558, SDQS_VAL) /* SDQS3 */
478 MXC_DCD_ITEM(0x53fa8580, SDODT_VAL) /* SDODT0 */
479 MXC_DCD_ITEM(0x53fa8578, SDCLK_VAL) /* SDCLK0 */
481 MXC_DCD_ITEM(0x53fa8564, SDODT_VAL) /* SDODT1 */
482 MXC_DCD_ITEM(0x53fa8570, SDCLK_VAL) /* SDCLK1 */
484 MXC_DCD_ITEM(0x53fa858c, SDCKE_VAL) /* SDCKE0 */
485 MXC_DCD_ITEM(0x53fa855c, SDCKE_VAL) /* SDCKE1 */
487 MXC_DCD_ITEM(0x53fa8574, DSE_MASK) /* DRAM_CAS */
488 MXC_DCD_ITEM(0x53fa8588, DSE_MASK) /* DRAM_RAS */
490 MXC_DCD_ITEM(0x53fa86f0, DSE_MASK) /* GRP_ADDDS */
491 MXC_DCD_ITEM(0x53fa8720, DSE_MASK) /* GRP_CTLDS */
492 MXC_DCD_ITEM(0x53fa8718, DSE_MASK) /* GRP_B0DS */
493 MXC_DCD_ITEM(0x53fa871c, DSE_MASK) /* GRP_B1DS */
494 MXC_DCD_ITEM(0x53fa8728, DSE_MASK) /* GRP_B2DS */
495 MXC_DCD_ITEM(0x53fa872c, DSE_MASK) /* GRP_B3DS */
497 /* calibration defaults */
498 MXC_DCD_ITEM(0x63fd904c, 0x001f001f)
499 MXC_DCD_ITEM(0x63fd9050, 0x001f001f)
500 MXC_DCD_ITEM(0x63fd907c, 0x011e011e)
501 MXC_DCD_ITEM(0x63fd9080, 0x011f0120)
502 MXC_DCD_ITEM(0x63fd9088, 0x3a393d3b)
503 MXC_DCD_ITEM(0x63fd9090, 0x3f3f3f3f)
505 MXC_DCD_ITEM(0x63fd9018, ESDMISC_VAL)
506 MXC_DCD_ITEM(0x63fd9000, ESDCTL_VAL)
507 MXC_DCD_ITEM(0x63fd900c, ESDCFG0_VAL)
508 MXC_DCD_ITEM(0x63fd9010, ESDCFG1_VAL)
509 MXC_DCD_ITEM(0x63fd9014, ESDCFG2_VAL)
511 MXC_DCD_ITEM(0x63fd902c, 0x000026d2)
512 MXC_DCD_ITEM(0x63fd9030, ESDOR_VAL)
513 MXC_DCD_ITEM(0x63fd9008, ESDOTC_VAL)
514 MXC_DCD_ITEM(0x63fd9004, ESDPDC_VAL_0)
517 MXC_DCD_ITEM(0x63fd901c, 0x00008000) /* CON_REQ */
518 MXC_DCD_CMD_CHK(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_CHK_SET, 0x63fd901c, 0x00004000)
519 MXC_DCD_CMD_WRT(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_WRITE)
521 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 2, mr2_val)) /* MRS: MR2 */
522 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 3, mr3_val)) /* MRS: MR3 */
523 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 1, mr1_val)) /* MRS: MR1 */
524 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 0, mr0_val)) /* MRS: MR0 */
525 #if BANK_ADDR_BITS > 1
527 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(1, 2, 0x0000)) /* MRS: MR2 */
528 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(1, 3, 0x0000)) /* MRS: MR3 */
529 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(1, 1, 0x0040)) /* MRS: MR1 */
530 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(1, 0, mr0_val)) /* MRS: MR0 */
532 MXC_DCD_ITEM(0x63fd9020, 3 << 14) /* disable refresh during calibration */
533 MXC_DCD_ITEM(0x63fd9058, 0x00022222)
535 MXC_DCD_ITEM(0x63fd90d0, 0x00000003) /* select default compare pattern for calibration */
538 MXC_DCD_ITEM(0x63fd901c, 0x04008010) /* precharge all */
539 MXC_DCD_ITEM(0x63fd901c, 0x00008040) /* MRS: ZQ calibration */
540 MXC_DCD_ITEM(0x63fd9040, 0x0539002b) /* Force ZQ calibration */
541 MXC_DCD_CMD_CHK(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_CHK_CLR, 0x63fd9040, 0x00010000)
542 MXC_DCD_CMD_WRT(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_WRITE)
544 /* DQS calibration */
545 MXC_DCD_ITEM(0x63fd901c, 0x04008010) /* precharge all */
546 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 3, (1 << 2))) /* MRS: select MPR */
547 MXC_DCD_ITEM(0x63fd907c, 0x90000000) /* reset RD fifo and start DQS calib. */
549 MXC_DCD_CMD_CHK(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_CHK_CLR, 0x63fd907c, 0x90000000)
550 MXC_DCD_CMD_WRT(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_WRITE)
551 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 3, 0)) /* MRS: select normal data path */
553 /* WR DL calibration */
554 MXC_DCD_ITEM(0x63fd901c, 0x00008000)
555 MXC_DCD_ITEM(0x63fd901c, 0x04008010) /* precharge all */
556 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 3, (1 << 2))) /* MRS: select MPR */
557 MXC_DCD_ITEM(0x63fd90a4, 0x00000010)
559 MXC_DCD_CMD_CHK(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_CHK_CLR, 0x63fd90a4, 0x00000010)
560 MXC_DCD_CMD_WRT(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_WRITE)
561 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 3, 0)) /* MRS: select normal data path */
563 /* RD DL calibration */
564 MXC_DCD_ITEM(0x63fd901c, 0x04008010) /* precharge all */
565 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 3, (1 << 2))) /* MRS: select MPR */
566 MXC_DCD_ITEM(0x63fd90a0, 0x00000010)
568 MXC_DCD_CMD_CHK(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_CHK_CLR, 0x63fd90a0, 0x00000010)
569 MXC_DCD_CMD_WRT(MXC_DCD_CMD_SZ_WORD, MXC_DCD_CMD_FLAG_WRITE)
570 MXC_DCD_ITEM(0x63fd901c, ESDSCR_MRS_VAL(0, 3, 0)) /* MRS: select normal data path */
571 MXC_DCD_ITEM(0x63fd9020, (3 << 11) | (0 << 14)) /* refresh interval: 4 cycles every 64kHz period */
572 MXC_DCD_ITEM(0x63fd9004, ESDPDC_VAL_1)
574 /* DDR calibration done */
575 MXC_DCD_ITEM(0x63fd901c, 0x00000000)
579 MXC_DCD_ITEM(0x53fa819c, 0x00000000) @ EIM_DA0
580 MXC_DCD_ITEM(0x53fa81a0, 0x00000000) @ EIM_DA1
581 MXC_DCD_ITEM(0x53fa81a4, 0x00000000) @ EIM_DA2
582 MXC_DCD_ITEM(0x53fa81a8, 0x00000000) @ EIM_DA3
583 MXC_DCD_ITEM(0x53fa81ac, 0x00000000) @ EIM_DA4
584 MXC_DCD_ITEM(0x53fa81b0, 0x00000000) @ EIM_DA5
585 MXC_DCD_ITEM(0x53fa81b4, 0x00000000) @ EIM_DA6
586 MXC_DCD_ITEM(0x53fa81b8, 0x00000000) @ EIM_DA7
587 MXC_DCD_ITEM(0x53fa81dc, 0x00000000) @ WE_B
588 MXC_DCD_ITEM(0x53fa81e0, 0x00000000) @ RE_B
589 MXC_DCD_ITEM(0x53fa8228, 0x00000000) @ CLE
590 MXC_DCD_ITEM(0x53fa822c, 0x00000000) @ ALE
591 MXC_DCD_ITEM(0x53fa8230, 0x00000000) @ WP_B
592 MXC_DCD_ITEM(0x53fa8234, 0x00000000) @ RB0
593 MXC_DCD_ITEM(0x53fa8238, 0x00000000) @ CS0
595 MXC_DCD_ITEM(0x53fa84ec, 0x000000e4) @ EIM_DA0
596 MXC_DCD_ITEM(0x53fa84f0, 0x000000e4) @ EIM_DA1
597 MXC_DCD_ITEM(0x53fa84f4, 0x000000e4) @ EIM_DA2
598 MXC_DCD_ITEM(0x53fa84f8, 0x000000e4) @ EIM_DA3
599 MXC_DCD_ITEM(0x53fa84fc, 0x000000e4) @ EIM_DA4
600 MXC_DCD_ITEM(0x53fa8500, 0x000000e4) @ EIM_DA5
601 MXC_DCD_ITEM(0x53fa8504, 0x000000e4) @ EIM_DA6
602 MXC_DCD_ITEM(0x53fa8508, 0x000000e4) @ EIM_DA7
603 MXC_DCD_ITEM(0x53fa852c, 0x00000004) @ NANDF_WE_B
604 MXC_DCD_ITEM(0x53fa8530, 0x00000004) @ NANDF_RE_B
605 MXC_DCD_ITEM(0x53fa85a0, 0x00000004) @ NANDF_CLE_B
606 MXC_DCD_ITEM(0x53fa85a4, 0x00000004) @ NANDF_ALE_B
607 MXC_DCD_ITEM(0x53fa85a8, 0x000000e4) @ NANDF_WE_B
608 MXC_DCD_ITEM(0x53fa85ac, 0x000000e4) @ NANDF_RB0
609 MXC_DCD_ITEM(0x53fa85b0, 0x00000004) @ NANDF_CS0