summaryrefslogtreecommitdiffstats
path: root/arch/arm/boards/protonic-imx6/lpddr2-defines.imxcfg
blob: 29c42cc697c9f8bac939b784242c58067db23432 (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
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
/*
 * 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
 *              4Gb LPDDR2	0x33 (52)	24	0x33000000
 * 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
 *		4Gb LPDDR2	0x37 (56)	16	0x00370000
 * tXP		* 400MHz	0x2 (3)		13	0x00004000
 * 		* 533MHz	0x3 (4)		13	0x00006000
 * 		* LPDDR2	0x2 (3)		13	0x00004000
 * tXPDLL	* 400MHz	0x9 (10)	9	0x00001200
 * 		* 533MHz	0xc (13)	9	0x00001800
 *		* LPDDR2	0x1 (-)		9	0x00000200
 * tFAW		* 400MHz	0x13 (20)	4	0x00000130
 *		* 533MHz	0x1a (27)	4	0x000001a0
 *		* LPDDR2	0x13 (20)	4	0x00000130
 * tCL		* 400MHz	0x3 (6)		0	0x00000003
 *		* 533MHz-CL7	0x4 (7)		0	0x00000004
 *		* 533MHz-CL8	0x5 (8)		0	0x00000005
 *		* LPDDR2	0x3 (6)		0	0x00000003
 * ----------------------------------------------------------------
 */
#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
#define MDCFG0_4G_LPDDR2_CL6				0x33374133
#define MDCFG0_8G_LPDDR2_CL6				0x53574133


/*
 * MDCFG1:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * tRCD		* 400MHz	0x5 (6)		28	0xa0000000
 * 		* 533MHz	0x7 (8)		28	0xe0000000
 *		* LPDDR2	0x5 (-)		28	0xa0000000
 * tRP		* 400MHz	0x5 (6)		26	0x14000000
 * 		* 533MHz	0x7 (8)		26	0x1c000000
 * 		* LPDDR2	0x5 (-)		26	0x14000000
 * tRC		* 400MHz	0x14 (21)	21	0x02800000
 * 		* 533MHz	0x1b (28)	21	0x03600000
 *		* LPDDR2	0x15 (-)	21	0x02a00000
 * tRAS		* 400MHz	0x0e (15)	16	0x000e0000
 * 		* 533MHz	0x13 (20)	16	0x00130000
 *		* LPDDR2	0x10 (17)	16	0x00100000
 * tRPA		*		0x1 (tRP+1)	15	0x00008000
 *		RM rev 4: unused, read-only!	15	0x00000000
 * tWR		* 400MHz	0x5 (6)		9	0x00000a00
 * 		* 533MHz	0x7 (8)		9	0x00000e00
 *		* LPDDR2	0x5 (6)		9	0x00000a00
 * tMRD		* 		0x3 (4)		5	0x00000060
 * max(tMRR,tMRW) LPDDR2	0x4 (5)		5	0x00000080
 * tCWL		* 400MHz	0x3 (5)		0	0x00000003
 *		* 533MHz	0x4 (6)		0	0x00000004
 * tWL		* LPDDR2	0x2 (3)		0	0x00000002
 * ----------------------------------------------------------------
 */
#define MDCFG1_400MHZ					0xb68e8a63
#define MDCFG1_533MHZ					0xff738e64
#define MDCFG1_LPDDR2					0x00100a82

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

/*
 * 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
 *		* LPDDR2	0x9f (-)	16	0x009f0000
 * SDE_to_RST	*		0x10 (14)	8	0x00001000
 *		* LPDDR2	0xe (-)		8	0x00000e00
 * RST_to_CKE	*		0x23 (33)	0	0x00000023
 * 		* LPDDR2	0x10 (14)	0	0x00000010
 * ----------------------------------------------------------------
 */
#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
#define MDOR_LPDDR2					0x009f0e10

/*
 * MDOTC ODT delays:
 *
 * Par. 	Chip		VALUE		SHIFT	Reg. field
 * ----------------------------------------------------------------
 * tAOFPD	* 400MHz	0x3 (4)		27	0x18000000
 * 		* 533MHz	0x4 (5)		27	0x20000000
 * tAONPD	* 400MHz	0x3 (4)		24	0x03000000
 * 		* 533MHz	0x4 (5)		24	0x04000000
 * 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					0x1b333030
#define MDOTC_533MHZ					0x24444040
/* LPDDR2: not relevant, leave in reset state!! */

/*
 * 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
#define MDPDC_LPDDR2					0x00025576 /* FIXME? */

/*
 * 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
 * SDE_1	LPDDR2		0x1 (1)		30	0x40000000
 * ROW		2Gb *		0x3 (14)	24	0x03000000
 * 		4Gb *		0x4 (15)	24	0x04000000
 * 		8Gb *		0x5 (16)	24	0x05000000
 *		* LPDDR2	0x3 (14)	24	0x03000000
 * COL		*		0x1 (10)	20	0x00100000
 * BL		* 		0x1 (8)		19	0x00080000
 * 		LPDDR2		0x0 (4)		19	0x00000000
 * 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
#define MDCTL_LPDDR2					0x83110000


/*
 * 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