2 #include <configs/tx51.h>
3 #include <asm/arch/imx-regs.h>
5 #define DCDGEN(type, addr, data) .long type, addr, data
7 #define SDRAM_CLK CONFIG_SYS_SDRAM_CLK
9 #ifdef PHYS_SDRAM_2_SIZE
10 #define SDRAM_SIZE (PHYS_SDRAM_1_SIZE + PHYS_SDRAM_2_SIZE)
12 #define SDRAM_SIZE PHYS_SDRAM_1_SIZE
15 #define REG_ESDCTL0 0x00
16 #define REG_ESDCFG0 0x04
17 #define REG_ESDCTL1 0x08
18 #define REG_ESDCFG1 0x0c
19 #define REG_ESDMISC 0x10
20 #define REG_ESDSCR 0x14
21 #define REG_ESDGPR 0x34
23 #define REG_CCGR0 0x68
24 #define REG_CCGR1 0x6c
25 #define REG_CCGR2 0x70
26 #define REG_CCGR3 0x74
27 #define REG_CCGR4 0x78
28 #define REG_CCGR5 0x7c
29 #define REG_CCGR6 0x80
30 #define REG_CMEOR 0x84
32 /* SDRAM timing setup */
36 #if SDRAM_SIZE <= SZ_128M
37 #define RA_BITS (13 - 11) /* row addr bits - 11 */
39 #define RA_BITS (14 - 11) /* row addr bits - 11 */
42 #define CA_BITS (10 - 8) /* 0-2: col addr bits - 8 3: rsrvd */
43 #define DSIZ 2 /* 0: D[31..16] 1: D[15..D0] 2: D[31..0] 3: rsrvd */
44 #define SREFR 3 /* 0: disabled 1-5: 2^n rows/clock *: rsrvd */
45 #define SRT 0 /* 0: disabled *: 1: self refr. ... */
46 #define PWDT 0 /* 0: disabled 1: precharge pwdn
47 2: pwdn after 64 clocks 3: pwdn after 128 clocks */
48 #define ESDCTL_VAL (0x80000000 | (SREFR << 28) | (RA_BITS << 24) | (CA_BITS << 20) | \
49 (DSIZ << 16) | (SRT << 14) | (PWDT << 12))
51 #define NS_TO_CK(ns) (((ns) * SDRAM_CLK + 999) / 1000)
53 .macro CK_VAL, name, clks, offs
57 .set \name, \clks - \offs
61 .macro NS_VAL, name, ns, offs
65 CK_VAL \name, NS_TO_CK(\ns), \offs
71 NS_VAL tRFC, 125, 10 /* clks - 10 (0..15) */
72 NS_VAL tXSR, 138, 25 /* clks - 25 (0..15) */
73 NS_VAL tXP, 25, 1 /* clks - 1 (0..7) */
74 CK_VAL tWTR, 1, 1 /* clks - 1 (0..1) */
75 NS_VAL tRP, 18, 2 /* clks - 2 (0..3) */
76 CK_VAL tMRD, 2, 1 /* clks - 1 (0..3) */
77 NS_VAL tWR, 15, 2 /* clks - 2 (0..1) */
78 NS_VAL tRAS, 42, 1 /* clks - 1 (0..15) */
79 NS_VAL tRRD, 12, 1 /* clks - 1 (0..3) */
80 NS_VAL tRCD, 18, 1 /* clks - 1 (0..7) */
81 NS_VAL tRC, 60, 1 /* 0: 20 *: clks - 1 (0..15) */
83 /* MT46H64M32LF-5 or -6 */
84 NS_VAL tRFC, 72, 10 /* clks - 10 (0..15) */
85 NS_VAL tXSR, 113, 25 /* clks - 25 (0..15) */
86 CK_VAL tXP, 2, 1 /* clks - 1 (0..7) */
87 CK_VAL tWTR, 2, 1 /* clks - 1 (0..1) */
88 NS_VAL tRP, 18, 2 /* clks - 2 (0..3) */
89 CK_VAL tMRD, 2, 1 /* clks - 1 (0..3) */
90 NS_VAL tWR, 15, 2 /* clks - 2 (0..1) */
91 NS_VAL tRAS, 42, 1 /* clks - 1 (0..15) */
92 NS_VAL tRRD, 12, 1 /* clks - 1 (0..3) */
93 NS_VAL tRCD, 18, 1 /* clks - 1 (0..7) */
94 NS_VAL tRC, 60, 1 /* 0: 20 *: clks - 1 (0..15) */
97 #define ESDCFG_VAL ((tRFC << 28) | (tXSR << 24) | (tXP << 21) | \
98 (tWTR << 20) | (tRP << 18) | (tMRD << 16) | \
99 (tRAS << 12) | (tRRD << 10) | (tWR << 7) | \
100 (tRCD << 4) | (tRC << 0))
102 #define ESDMISC_RALAT(n) (((n) & 0x3) << 7)
103 #define ESDMISC_DDR2_EN(n) (((n) & 0x1) << 4)
104 #define ESDMISC_DDR_EN(n) (((n) & 0x1) << 3)
105 #define ESDMISC_AP(n) (((n) & 0xf) << 16)
106 #define ESDMISC_VAL (ESDMISC_AP(10) | ESDMISC_RALAT(RALAT) | \
107 (LHD << 5) | ESDMISC_DDR2_EN(0) | ESDMISC_DDR_EN(0))
116 .long 0 // 0x97f40000 - 0x1000
120 .long 0 // hab_super_root_key
124 .long CONFIG_SYS_TEXT_BASE
126 .long 0xB17219E9 // Fixed. can't change.
128 .long dcd_end - dcd_start
130 DCDGEN(4, CCM_BASE_ADDR + REG_CCGR0, 0xffcffffc);
131 DCDGEN(4, CCM_BASE_ADDR + REG_CCGR1, 0x003fffff);
132 DCDGEN(4, CCM_BASE_ADDR + REG_CCGR2, 0x030c003c);
133 DCDGEN(4, CCM_BASE_ADDR + REG_CCGR3, 0x000000ff);
134 DCDGEN(4, CCM_BASE_ADDR + REG_CCGR4, 0x00000000);
135 DCDGEN(4, CCM_BASE_ADDR + REG_CCGR5, 0x003fc003);
136 DCDGEN(4, CCM_BASE_ADDR + REG_CCGR6, 0x00000000);
137 DCDGEN(4, CCM_BASE_ADDR + REG_CMEOR, 0x00000000);
139 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDCTL0, 0x80000000)
140 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDSCR, 0x04008008)
141 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDSCR, 0x00008010)
142 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDSCR, 0x00008010)
143 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDSCR, 0x00338018)
144 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDCTL0, ESDCTL_VAL)
145 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDCFG0, ESDCFG_VAL)
146 #ifdef RAM_BANK1_SIZE
147 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDCTL1, ESDCTL_VAL)
148 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDCFG1, ESDCFG_VAL)
150 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDGPR, 0x00020000 | ((RALAT & 0x3) << 29))
151 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDMISC, ESDMISC_VAL)
152 DCDGEN(4, ESDCTL_BASE_ADDR + REG_ESDSCR, 0x00000000)
155 DCDGEN(4, IOMUXC_BASE_ADDR + 0x228, 0x00000000)
156 DCDGEN(4, IOMUXC_BASE_ADDR + 0x618, 0x000001c1)
157 DCDGEN(4, IOMUXC_BASE_ADDR + 0x9e4, 0x00000000)
160 DCDGEN(4, IOMUXC_BASE_ADDR + 0x22c, 0x00000000)
161 DCDGEN(4, IOMUXC_BASE_ADDR + 0x61c, 0x000000c5)
164 DCDGEN(4, IOMUXC_BASE_ADDR + 0x230, 0x00000000)
165 DCDGEN(4, IOMUXC_BASE_ADDR + 0x620, 0x000001c1)
166 DCDGEN(4, IOMUXC_BASE_ADDR + 0x9e0, 0x00000000)
169 DCDGEN(4, IOMUXC_BASE_ADDR + 0x234, 0x00000000)
170 DCDGEN(4, IOMUXC_BASE_ADDR + 0x624, 0x000000c5)
173 DCDGEN(4, IOMUXC_BASE_ADDR + 0x1d0, 0x00000013)
175 .ifgt dcd_end - dcd_start - 720
179 .long CONFIG_U_BOOT_IMG_SIZE