summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/protonic-imx6/ddr3-defines.imxcfg
blob: 65bd1bc3c6f0080e9d5184769bfdfddb2e561d87 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
/*
 * Timing configuration:
 *
 * MDCFG0:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * tRFC 	2Gb 400MHz	0x3f (64)	24	0x3f000000
 * 		4Gb 400MHz	0x77 (120)	24	0x77000000
 * 		8Gb 400MHz	0x8b (140)	24	0x8b000000
 *	 	2Gb 533MHz	0x55 (86)	24	0x55000000
 * 		4Gb 533MHz	0x9f (160)	24	0x9f000000
 * 		8Gb 533MHz	0xba (187)	24	0xba000000
 * tXS		2Gb 400MHz	0x43 (68)	16	0x00430000
 * 		4Gb 400MHz	0x7b (124)	16	0x007b0000
 * 		8Gb 400MHz	0x8f (144)	16	0x008f0000
 * 		2Gb 533MHz	0x5b (92)	16	0x005b0000
 * 		4Gb 533MHz	0xa5 (166)	16	0x00a50000
 * 		8Gb 533MHz	0xc0 (193)	16	0x00c00000
 * tXP		* 400MHz	0x2 (3)		13	0x00004000
 * 		* 533MHz	0x3 (4)		13	0x00006000
 * tXPDLL	* 400MHz	0x9 (10)	9	0x00001200
 * 		* 533MHz	0xc (13)	9	0x00001800
 * tFAW		* 400MHz	0x13 (20)	4	0x00000130
 *		* 533MHz	0x1a (27)	4	0x000001a0
 * tCL		* 400MHz	0x3 (6)		0	0x00000003
 *		* 533MHz-CL7	0x4 (7)		0	0x00000004
 *		* 533MHz-CL8	0x5 (8)		0	0x00000005
 * ----------------------------------------------------------------
 */
#define MDCFG0_2G_400MHZ				0x3f435333
#define MDCFG0_4G_400MHZ				0x777b5333
#define MDCFG0_8G_400MHZ				0x8b8f5333
#define MDCFG0_2G_533MHZ_CL8				0x555b79a5
#define MDCFG0_2G_533MHZ_CL7				0x555b79a4
#define MDCFG0_4G_533MHZ_CL8				0x9fa579a5
#define MDCFG0_4G_533MHZ_CL7				0x9fa579a4
#define MDCFG0_8G_533MHZ_CL8				0xbac079a5
#define MDCFG0_8G_533MHZ_CL7				0xbac079a4

/*
 * MDCFG1:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * tRCD		* 400MHz	0x5 (6)		28	0xa0000000
 * 		* 533MHz	0x7 (8)		28	0xe0000000
 * tRP		* 400MHz	0x5 (6)		26	0x14000000
 * 		* 533MHz	0x7 (8)		26	0x1c000000
 * tRC		* 400MHz	0x14 (21)	21	0x02800000
 * 		* 533MHz	0x1b (28)	21	0x03600000
 * tRAS		* 400MHz	0x0e (15)	16	0x000e0000
 * 		* 533MHz	0x13 (20)	16	0x00130000
 * tRPA		*		0x1 (tRP+1)	15	0x00008000
 * tWR		* 400MHz	0x5 (6)		9	0x00000a00
 * 		* 533MHz	0x7 (8)		9	0x00000e00
 * tMRD		* 		0xb (12)	5	0x00000160
 * tCWL		* 400MHz	0x3 (5)		0	0x00000003
 *		* 533MHz	0x4 (6)		0	0x00000004
 * ----------------------------------------------------------------
 */
#define MDCFG1_400MHZ					0xb68e8b63
#define MDCFG1_533MHZ					0xff738f64

/*
 * MDCFG2:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * tDLLK	*		0x1ff (512)	16	0x01ff0000
 * tRTP		*		0x3 (4)		6	0x000000c0
 * tWTR		*		0x3 (4)		3	0x00000018
 * tRRD		* 400MHz	0x3 (4)		0	0x00000003
 * 		* 533MHz	0x5 (6)		0	0x00000005
 * ----------------------------------------------------------------
 */
#define MDCFG2_400MHZ					0x01ff00db
#define MDCFG2_533MHZ					0x01ff00dd

/*
 * MDOR:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * tXPR		2Gb 400MHz	0x43 (68)	16	0x00430000
 * 		4Gb 400MHz	0x7b (124)	16	0x007b0000
 * 		8Gb 400MHz	0x8f (144)	16	0x008f0000
 *		2Gb 533MHz	0x5b (92)	16	0x005b0000
 *		4Gb 533MHz	0xa5 (166)	16	0x00a50000
 *		8Gb 533MHz	0xc0 (193)	16	0x00c00000
 * SDE_to_RST	*		0x10 (14)	8	0x00001000
 * RST_to_CKE	*		0x23 (33)	0	0x00000023
 * ----------------------------------------------------------------
 */
#define MDOR_2G_400MHZ					0x00431023
#define MDOR_4G_400MHZ					0x007b1023
#define MDOR_8G_400MHZ					0x008f1023
#define MDOR_2G_533MHZ					0x005b1023
#define MDOR_4G_533MHZ					0x00a51023
#define MDOR_8G_533MHZ					0x00c01023

/*
 * MDOTC ODT delays:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * tAOFPD	* 400MHz	0x0 (1)		27	0x00000000
 * 		* 533MHz	0x1 (2)		27	0x08000000
 * tAONPD	* 400MHz	0x0 (1)		24	0x00000000
 * 		* 533MHz	0x1 (2)		24	0x01000000
 * tANPD	* 400MHz	0x3 (4)		20	0x00300000
 * 		* 533MHz	0x4 (5)		20	0x00400000
 * tAXPD	* 400MHz	0x3 (4)		16	0x00030000
 * 		* 533MHz	0x4 (5)		16	0x00040000
 * tODTLon	* 400MHz	0x3 (3)		12	0x00003000
 * 		* 533MHz	0x4 (4)		12	0x00004000
 * tODTidle_off	* 400MHz	0x3 (3)		4	0x00000030
 * 		* 533MHz	0x4 (4) 	4	0x00000040
 * ----------------------------------------------------------------
 */
#define MDOTC_400MHZ					0x00333030
#define MDOTC_533MHZ					0x09444040

/*
 * MDPDC:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * PRCT_1	*		0x0		28	0x00000000
 * PRCT_0	*		0x0		24	0x00000000
 * tCKE		*		0x2 (3)		16	0x00020000
 * PWDT_1	*		0x5 (256)	12	0x00005000
 * PWDT_0	*		0x5 (256)	8	0x00000500
 * SLOW_PD	*		0x0 (0)		7	0x00000000
 * BOTH_CS_PD	*		0x1 (1)		6	0x00000040
 * tCKSRX	* 400MHz	0x5 (5)		3	0x00000028
 * 		* 533MHz	0x6 (6)		3	0x00000030
 * tCKSRE	* 400MHz	0x5 (5)		0	0x00000005
 * 		* 533MHz	0x6 (6)		0	0x00000006
 * ----------------------------------------------------------------
 */
#define MDPDC_400MHZ					0x0002556d
#define MDPDC_533MHZ					0x00025576

/*
 * MDCTL:
 * 2Gb: CS0 enable, 14bit ROW, 10bit COL, BL=8, 64bit data
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * SDE_0	*		0x1 (1)		31	0x80000000
 * SDE_1	*		0x0 (0)		30	0x00000000
 * ROW		2Gb *		0x3 (14)	24	0x03000000
 * 		4Gb *		0x4 (15)	24	0x04000000
 * 		8Gb *		0x5 (16)	24	0x05000000
 * COL		*		0x1 (10)	20	0x00100000
 * BL		* 		0x1 (8)		19	0x00080000
 * DSIZ		64bit		0x2 (64)	16	0x00020000
 * DSIZ		32bit		0x1 (32)	16	0x00010000
 * DSIZ		16bit		0x0 (16)	16	0x00000000
 * ----------------------------------------------------------------
 */
#define MDCTL_2G_16BIT					0x83180000
#define MDCTL_2G_32BIT					0x83190000
#define MDCTL_2G					0x831a0000
#define MDCTL_4G_16BIT					0x84180000
#define MDCTL_4G_32BIT					0x84190000
#define MDCTL_4G					0x841a0000
#define MDCTL_8G					0x851a0000

/*
 * MDASP Address space partitioning:
 *
 * At 0.25GiB, internal address space ends. Above that DDR3 should be
 * located. The CS1/CS0 split-line determines where:
 *
 * For 1x2Gb chips (0.25GiB total on CS0): 0.5GiB
 * For 2x4Gb chips (1GiB total on CS0): 1.25GiB
 * For 4x2Gb chips (1GiB total on CS0): 1.25GiB
 * For 4x4Gb chips (2GiB total on CS0): 2.25GiB
 * For 4x8Gb chips (4GiB total on CS0): 4.00GiB (maximum possible,
 *                      shadowed partially by internal address space).
 *
 * Register value	Split
 * ---------------------------
 * 0x0000000f		0.5GiB
 * 0x00000017		0.75GiB
 * 0x00000027		1.25GiB
 * 0x00000047		2.25GiB
 * 0x0000007f		4.00GiB
 */
#define MDASP_512MIB	0x0000000f
#define MDASP_768MIB	0x00000017
#define MDASP_1GIB25	0x00000027
#define MDASP_2GIB25	0x00000047
#define MDASP_4GIB00	0x0000007f

/*
 * Initialize DDR3 chips
 * MDSCR: Value = 0xvvvv803n, with 0xvvvv = value, n = Reg. number (BA)
 */
/*
 * DDR3 chip MR2, n = 2:
 *
 * Par. 	Chip		VALUE		BITS	  vvvv
 * ----------------------------------------------------------------
 * Rtt(wr)	*		0x0 (disabled)	10, 9	0x0000
 * SR-Temp.	*		0x1 (Extended)	7	0x0080
 * Auto-SR	*		0x0 (Manual)	6	0x0000
 * CWL		* 400MHz	0x0 (5tCK)	5, 4, 3	0x0000
 * 		* 533MHz	0x1 (6tCK)	5, 4, 3	0x0008
 * ----------------------------------------------------------------
 */
#define DDR3_MR2_400MHZ_RTT_OFF				0x00808032
#define DDR3_MR2_533MHZ_RTT_OFF				0x00888032
#define DDR3_MR2_400MHZ_RTT_120				0x04808032
#define DDR3_MR2_533MHZ_RTT_120				0x04888032

/*
 * DDR3 chip MR1, n = 1:
 *
 * Par. 		Chip	VALUE		BITS	  vvvv
 * ----------------------------------------------------------------
 * Qoff			*	0x0 (enabled)	12	0x0000
 * TDQS			*	0x0 (disabled)	11	0x0000
 * Rtt			*	0x0 (disabled)	9, 6, 2	0x0000
 * Write-levelling	*	0x0 (disable)	7	0x0000
 * ODS			*	0x0 (RZQ/6=40)	5, 1	0x0000
 * DLL			*	0x0 (enable)	0	0x0000
 * ----------------------------------------------------------------
 */
#define DDR3_MR1_RTT_OFF_ODS_40				0x00008031
#define DDR3_MR1_RTT_120_ODS_40				0x00408031
#define DDR3_MR1_RTT_60_ODS_40				0x00048031
#define DDR3_MR1_RTT_OFF_ODS_34				0x00028031
#define DDR3_MR1_RTT_120_ODS_34				0x00428031
#define DDR3_MR1_RTT_60_ODS_34				0x00068031

/*
 * DDR3 chip MR0, n = 0:
 *
 * Par. 		Chip	VALUE		BITS	  vvvv
 * ----------------------------------------------------------------
 * Precharge PD		*	0x1 (fast exit)	12	0x1000
 * WR			400MHz	0x2 (6)		11,10,9	0x0400
 * 			533MHz	0x4 (8)		11,10,9 0x0800
 * DLL reset		*	0x1 (Yes)	8	0x0100
 * CL			400MHz	0x4 (6)		6,5,4,2	0x0020
 * 			533MHz	0x6 (7)		6,5,4,2 0x0030
 * 			533MHz	0x8 (8)		6,5,4,2 0x0040
 * RD burst type	*	0x0 (seq.)	3	0x0000
 * BL			*	0x0 (BL8)	0	0x0000
 * ----------------------------------------------------------------
 */
#define DDR3_MR0_400MHZ					0x15208030
#define DDR3_MR0_533MHZ_CL7				0x19308030
#define DDR3_MR0_533MHZ_CL8				0x19408030


/*
 * MDREF:
 * REF_SEL (bit 14,15): 0 (64kHz, needed for high-temp.)
 * REFR (bit 11, 12, 13): 0x3 (4 refreshes) -> 0x00001800
 * 			  0x7 (8 refreshes) -> 0x00003800
 */
#define MDREF_64KHZ 0x00001800
#define MDREF_32KHZ 0x00007800

/* MPODTCTRL */
#define MPODTCTRL_ODT_OFF 0x00000007
#define MPODTCTRL_ODT_120 0x00011117
#define MPODTCTRL_ODT_60  0x00022227
#define MPODTCTRL_ODT_40  0x00033337

/*
 * MPDGCTRL0:
 *
 * Channel 0:
 *
 * Par. 		Chip	VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * RST_RD_FIFO		*	0		31	0x00000000
 * DG_CMP_CYC		*	1		30	0x40000000
 * DG_DIS		*	0		29	0x00000000
 * HW_DG_EN		*	0		28	0x00000000
 * DG_HC_DEL1		400MHz	2		24	0x02000000
 * 			533MHz	3		24	0x03000000
 * DG_EXT_UP		*	0		23	0x00000000
 * DG_DL_ABS_OFFS1	400MHz	0x35		16	0x00350000
 * 			533MHz	0x4b		16	0x004b0000
 * DG_HC_DEL0		400MHz	2		8	0x00000200
 * 			533MHz	3		8	0x00000300
 * DG_DL_ABS_OFFS0	400MHz	0x35		0	0x00000031
 * 			533MHz	0x4b		0	0x00000050
 * ----------------------------------------------------------------
 */
#define MPDGCTRL0_CH0_400MHZ				0x42350231
#define MPDGCTRL0_CH0_533MHZ				0x434b0350
/*
 *
 * Channel 1:
 *
 * DG_HC_DEL1 (5)	400MHz	2		24	0x02000000
 * 			533MHz	3		24	0x03000000
 * DG_DL_ABS_OFFS1 (5)	400MHz	0x35		16	0x00350000
 * 			533MHz	0x4b		16	0x004b0000
 * DG_HC_DEL0 (4)	400MHz	2		8	0x00000200
 * 			533MHz	3		8	0x00000300
 * DG_DL_ABS_OFFS0 (4)	400MHz	0x35		0	0x00000031
 * 			533MHz	0x4b		0	0x00000050
 * ----------------------------------------------------------------
 */
#define MPDGCTRL0_CH1_400MHZ				0x42350231
#define MPDGCTRL0_CH1_533MHZ				0x434b0350

/*
 * MPDGCTRL1:
 *
 * Channel 0:
 *
 * Par. 		Chip	VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * DG_HC_DEL3		400MHz	2		24	0x02000000
 * 			533MHz	3		24	0x03000000
 * DG_DL_ABS_OFFS3	400MHz	0x1a		16	0x001a0000
 * 			533MHz	0x4c		16	0x004c0000
 * DG_HC_DEL2		400MHz	2		8	0x00000200
 * 			533MHz	3		8	0x00000300
 * DG_DL_ABS_OFFS2	400MHz	0x18		0	0x00000018
 * 			533MHz	0x59		0	0x00000059
 * ----------------------------------------------------------------
 */
#define MPDGCTRL1_CH0_400MHZ				0x021a0218
#define MPDGCTRL1_CH0_533MHZ				0x034c0359
/*
 *
 * Channel 1:
 *
 * DG_HC_DEL3 (7)	400MHz	2		24	0x02000000
 * 			533MHz	3		24	0x03000000
 * DG_DL_ABS_OFFS3 (7)	400MHz	0x1a		16	0x001a0000
 * 			533MHz	0x65		16	0x00650000
 * DG_HC_DEL2 (6)	400MHz	2		8	0x00000200
 * 			533MHz	3		8	0x00000300
 * DG_DL_ABS_OFFS2 (6)	400MHz	0x18		0	0x00000018
 * 			533MHz	0x48		0	0x00000048
 * ----------------------------------------------------------------
 */
#define MPDGCTRL1_CH1_400MHZ				0x021a0218
#define MPDGCTRL1_CH1_533MHZ				0x03650348