]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/arm/include/asm/arch-exynos/dmc.h
Merge remote-tracking branch 'u-boot-samsung/master'
[karo-tx-uboot.git] / arch / arm / include / asm / arch-exynos / dmc.h
1 #ifndef __DMC_H__
2 #define __DMC_H__
3
4 #ifndef __ASSEMBLY__
5 struct exynos4_dmc {
6         unsigned int concontrol;
7         unsigned int memcontrol;
8         unsigned int memconfig0;
9         unsigned int memconfig1;
10         unsigned int directcmd;
11         unsigned int prechconfig;
12         unsigned int phycontrol0;
13         unsigned int phycontrol1;
14         unsigned int phycontrol2;
15         unsigned int phycontrol3;
16         unsigned int pwrdnconfig;
17         unsigned char res1[0x4];
18         unsigned int timingref;
19         unsigned int timingrow;
20         unsigned int timingdata;
21         unsigned int timingpower;
22         unsigned int phystatus;
23         unsigned int phyzqcontrol;
24         unsigned int chip0status;
25         unsigned int chip1status;
26         unsigned int arefstatus;
27         unsigned int mrstatus;
28         unsigned int phytest0;
29         unsigned int phytest1;
30         unsigned int qoscontrol0;
31         unsigned int qosconfig0;
32         unsigned int qoscontrol1;
33         unsigned int qosconfig1;
34         unsigned int qoscontrol2;
35         unsigned int qosconfig2;
36         unsigned int qoscontrol3;
37         unsigned int qosconfig3;
38         unsigned int qoscontrol4;
39         unsigned int qosconfig4;
40         unsigned int qoscontrol5;
41         unsigned int qosconfig5;
42         unsigned int qoscontrol6;
43         unsigned int qosconfig6;
44         unsigned int qoscontrol7;
45         unsigned int qosconfig7;
46         unsigned int qoscontrol8;
47         unsigned int qosconfig8;
48         unsigned int qoscontrol9;
49         unsigned int qosconfig9;
50         unsigned int qoscontrol10;
51         unsigned int qosconfig10;
52         unsigned int qoscontrol11;
53         unsigned int qosconfig11;
54         unsigned int qoscontrol12;
55         unsigned int qosconfig12;
56         unsigned int qoscontrol13;
57         unsigned int qosconfig13;
58         unsigned int qoscontrol14;
59         unsigned int qosconfig14;
60         unsigned int qoscontrol15;
61         unsigned int qosconfig15;
62         unsigned int qostimeout0;
63         unsigned int qostimeout1;
64         unsigned char res2[0x8];
65         unsigned int ivcontrol;
66         unsigned char res3[0x8];
67         unsigned int perevconfig;
68         unsigned char res4[0xDF00];
69         unsigned int pmnc_ppc_a;
70         unsigned char res5[0xC];
71         unsigned int cntens_ppc_a;
72         unsigned char res6[0xC];
73         unsigned int cntenc_ppc_a;
74         unsigned char res7[0xC];
75         unsigned int intens_ppc_a;
76         unsigned char res8[0xC];
77         unsigned int intenc_ppc_a;
78         unsigned char res9[0xC];
79         unsigned int flag_ppc_a;
80         unsigned char res10[0xAC];
81         unsigned int ccnt_ppc_a;
82         unsigned char res11[0xC];
83         unsigned int pmcnt0_ppc_a;
84         unsigned char res12[0xC];
85         unsigned int pmcnt1_ppc_a;
86         unsigned char res13[0xC];
87         unsigned int pmcnt2_ppc_a;
88         unsigned char res14[0xC];
89         unsigned int pmcnt3_ppc_a;
90         unsigned char res15[0xEBC];
91         unsigned int pmnc_ppc_m;
92         unsigned char res16[0xC];
93         unsigned int cntens_ppc_m;
94         unsigned char res17[0xC];
95         unsigned int cntenc_ppc_m;
96         unsigned char res18[0xC];
97         unsigned int intens_ppc_m;
98         unsigned char res19[0xC];
99         unsigned int intenc_ppc_m;
100         unsigned char res20[0xC];
101         unsigned int flag_ppc_m;
102         unsigned char res21[0xAC];
103         unsigned int ccnt_ppc_m;
104         unsigned char res22[0xC];
105         unsigned int pmcnt0_ppc_m;
106         unsigned char res23[0xC];
107         unsigned int pmcnt1_ppc_m;
108         unsigned char res24[0xC];
109         unsigned int pmcnt2_ppc_m;
110         unsigned char res25[0xC];
111         unsigned int pmcnt3_ppc_m;
112 };
113
114 struct exynos5_dmc {
115         unsigned int concontrol;
116         unsigned int memcontrol;
117         unsigned int memconfig0;
118         unsigned int memconfig1;
119         unsigned int directcmd;
120         unsigned int prechconfig;
121         unsigned int phycontrol0;
122         unsigned char res1[0xc];
123         unsigned int pwrdnconfig;
124         unsigned int timingpzq;
125         unsigned int timingref;
126         unsigned int timingrow;
127         unsigned int timingdata;
128         unsigned int timingpower;
129         unsigned int phystatus;
130         unsigned char res2[0x4];
131         unsigned int chipstatus_ch0;
132         unsigned int chipstatus_ch1;
133         unsigned char res3[0x4];
134         unsigned int mrstatus;
135         unsigned char res4[0x8];
136         unsigned int qoscontrol0;
137         unsigned char resr5[0x4];
138         unsigned int qoscontrol1;
139         unsigned char res6[0x4];
140         unsigned int qoscontrol2;
141         unsigned char res7[0x4];
142         unsigned int qoscontrol3;
143         unsigned char res8[0x4];
144         unsigned int qoscontrol4;
145         unsigned char res9[0x4];
146         unsigned int qoscontrol5;
147         unsigned char res10[0x4];
148         unsigned int qoscontrol6;
149         unsigned char res11[0x4];
150         unsigned int qoscontrol7;
151         unsigned char res12[0x4];
152         unsigned int qoscontrol8;
153         unsigned char res13[0x4];
154         unsigned int qoscontrol9;
155         unsigned char res14[0x4];
156         unsigned int qoscontrol10;
157         unsigned char res15[0x4];
158         unsigned int qoscontrol11;
159         unsigned char res16[0x4];
160         unsigned int qoscontrol12;
161         unsigned char res17[0x4];
162         unsigned int qoscontrol13;
163         unsigned char res18[0x4];
164         unsigned int qoscontrol14;
165         unsigned char res19[0x4];
166         unsigned int qoscontrol15;
167         unsigned char res20[0x14];
168         unsigned int ivcontrol;
169         unsigned int wrtra_config;
170         unsigned int rdlvl_config;
171         unsigned char res21[0x8];
172         unsigned int brbrsvconfig;
173         unsigned int brbqosconfig;
174         unsigned int membaseconfig0;
175         unsigned int membaseconfig1;
176         unsigned char res22[0xc];
177         unsigned int wrlvl_config;
178         unsigned char res23[0xc];
179         unsigned int perevcontrol;
180         unsigned int perev0config;
181         unsigned int perev1config;
182         unsigned int perev2config;
183         unsigned int perev3config;
184         unsigned char res24[0xdebc];
185         unsigned int pmnc_ppc_a;
186         unsigned char res25[0xc];
187         unsigned int cntens_ppc_a;
188         unsigned char res26[0xc];
189         unsigned int cntenc_ppc_a;
190         unsigned char res27[0xc];
191         unsigned int intens_ppc_a;
192         unsigned char res28[0xc];
193         unsigned int intenc_ppc_a;
194         unsigned char res29[0xc];
195         unsigned int flag_ppc_a;
196         unsigned char res30[0xac];
197         unsigned int ccnt_ppc_a;
198         unsigned char res31[0xc];
199         unsigned int pmcnt0_ppc_a;
200         unsigned char res32[0xc];
201         unsigned int pmcnt1_ppc_a;
202         unsigned char res33[0xc];
203         unsigned int pmcnt2_ppc_a;
204         unsigned char res34[0xc];
205         unsigned int pmcnt3_ppc_a;
206 };
207
208 struct exynos5420_dmc {
209         unsigned int concontrol;
210         unsigned int memcontrol;
211         unsigned int cgcontrol;
212         unsigned char res500[0x4];
213         unsigned int directcmd;
214         unsigned int prechconfig0;
215         unsigned int phycontrol0;
216         unsigned int prechconfig1;
217         unsigned char res1[0x8];
218         unsigned int pwrdnconfig;
219         unsigned int timingpzq;
220         unsigned int timingref;
221         unsigned int timingrow0;
222         unsigned int timingdata0;
223         unsigned int timingpower0;
224         unsigned int phystatus;
225         unsigned int etctiming;
226         unsigned int chipstatus;
227         unsigned char res3[0x8];
228         unsigned int mrstatus;
229         unsigned char res4[0x8];
230         unsigned int qoscontrol0;
231         unsigned char resr5[0x4];
232         unsigned int qoscontrol1;
233         unsigned char res6[0x4];
234         unsigned int qoscontrol2;
235         unsigned char res7[0x4];
236         unsigned int qoscontrol3;
237         unsigned char res8[0x4];
238         unsigned int qoscontrol4;
239         unsigned char res9[0x4];
240         unsigned int qoscontrol5;
241         unsigned char res10[0x4];
242         unsigned int qoscontrol6;
243         unsigned char res11[0x4];
244         unsigned int qoscontrol7;
245         unsigned char res12[0x4];
246         unsigned int qoscontrol8;
247         unsigned char res13[0x4];
248         unsigned int qoscontrol9;
249         unsigned char res14[0x4];
250         unsigned int qoscontrol10;
251         unsigned char res15[0x4];
252         unsigned int qoscontrol11;
253         unsigned char res16[0x4];
254         unsigned int qoscontrol12;
255         unsigned char res17[0x4];
256         unsigned int qoscontrol13;
257         unsigned char res18[0x4];
258         unsigned int qoscontrol14;
259         unsigned char res19[0x4];
260         unsigned int qoscontrol15;
261         unsigned char res20[0x4];
262         unsigned int timing_set_sw;
263         unsigned int timingrow1;
264         unsigned int timingdata1;
265         unsigned int timingpower1;
266         unsigned char res300[0x4];
267         unsigned int wrtra_config;
268         unsigned int rdlvl_config;
269         unsigned char res21[0x4];
270         unsigned int brbrsvcontrol;
271         unsigned int brbrsvconfig;
272         unsigned int brbqosconfig;
273         unsigned char res301[0x14];
274         unsigned int wrlvl_config0;
275         unsigned int wrlvl_config1;
276         unsigned int wrlvl_status;
277         unsigned char res23[0x4];
278         unsigned int ppcclockon;
279         unsigned int perevconfig0;
280         unsigned int perevconfig1;
281         unsigned int perevconfig2;
282         unsigned int perevconfig3;
283         unsigned char res24[0xc];
284         unsigned int control_io_rdata;
285         unsigned char res240[0xc];
286         unsigned int cacal_config0;
287         unsigned int cacal_config1;
288         unsigned int cacal_status;
289         unsigned char res302[0xa4];
290         unsigned int bp_control0;
291         unsigned int bp_config0_r;
292         unsigned int bp_config0_w;
293         unsigned char res303[0x4];
294         unsigned int bp_control1;
295         unsigned int bp_config1_r;
296         unsigned int bp_config1_w;
297         unsigned char res304[0x4];
298         unsigned int bp_control2;
299         unsigned int bp_config2_r;
300         unsigned int bp_config2_w;
301         unsigned char res305[0x4];
302         unsigned int bp_control3;
303         unsigned int bp_config3_r;
304         unsigned int bp_config3_w;
305         unsigned char res306[0xddb4];
306         unsigned int pmnc_ppc;
307         unsigned char res25[0xc];
308         unsigned int cntens_ppc;
309         unsigned char res26[0xc];
310         unsigned int cntenc_ppc;
311         unsigned char res27[0xc];
312         unsigned int intens_ppc;
313         unsigned char res28[0xc];
314         unsigned int intenc_ppc;
315         unsigned char res29[0xc];
316         unsigned int flag_ppc;
317         unsigned char res30[0xac];
318         unsigned int ccnt_ppc;
319         unsigned char res31[0xc];
320         unsigned int pmcnt0_ppc;
321         unsigned char res32[0xc];
322         unsigned int pmcnt1_ppc;
323         unsigned char res33[0xc];
324         unsigned int pmcnt2_ppc;
325         unsigned char res34[0xc];
326         unsigned int pmcnt3_ppc;
327 };
328
329 struct exynos5_phy_control {
330         unsigned int phy_con0;
331         unsigned int phy_con1;
332         unsigned int phy_con2;
333         unsigned int phy_con3;
334         unsigned int phy_con4;
335         unsigned char res1[4];
336         unsigned int phy_con6;
337         unsigned char res2[4];
338         unsigned int phy_con8;
339         unsigned int phy_con9;
340         unsigned int phy_con10;
341         unsigned char res3[4];
342         unsigned int phy_con12;
343         unsigned int phy_con13;
344         unsigned int phy_con14;
345         unsigned int phy_con15;
346         unsigned int phy_con16;
347         unsigned char res4[4];
348         unsigned int phy_con17;
349         unsigned int phy_con18;
350         unsigned int phy_con19;
351         unsigned int phy_con20;
352         unsigned int phy_con21;
353         unsigned int phy_con22;
354         unsigned int phy_con23;
355         unsigned int phy_con24;
356         unsigned int phy_con25;
357         unsigned int phy_con26;
358         unsigned int phy_con27;
359         unsigned int phy_con28;
360         unsigned int phy_con29;
361         unsigned int phy_con30;
362         unsigned int phy_con31;
363         unsigned int phy_con32;
364         unsigned int phy_con33;
365         unsigned int phy_con34;
366         unsigned int phy_con35;
367         unsigned int phy_con36;
368         unsigned int phy_con37;
369         unsigned int phy_con38;
370         unsigned int phy_con39;
371         unsigned int phy_con40;
372         unsigned int phy_con41;
373         unsigned int phy_con42;
374 };
375
376 struct exynos5420_phy_control {
377         unsigned int phy_con0;
378         unsigned int phy_con1;
379         unsigned int phy_con2;
380         unsigned int phy_con3;
381         unsigned int phy_con4;
382         unsigned int phy_con5;
383         unsigned int phy_con6;
384         unsigned char res2[0x4];
385         unsigned int phy_con8;
386         unsigned char res5[0x4];
387         unsigned int phy_con10;
388         unsigned int phy_con11;
389         unsigned int phy_con12;
390         unsigned int phy_con13;
391         unsigned int phy_con14;
392         unsigned int phy_con15;
393         unsigned int phy_con16;
394         unsigned char res4[0x4];
395         unsigned int phy_con17;
396         unsigned int phy_con18;
397         unsigned int phy_con19;
398         unsigned int phy_con20;
399         unsigned int phy_con21;
400         unsigned int phy_con22;
401         unsigned int phy_con23;
402         unsigned int phy_con24;
403         unsigned int phy_con25;
404         unsigned int phy_con26;
405         unsigned int phy_con27;
406         unsigned int phy_con28;
407         unsigned int phy_con29;
408         unsigned int phy_con30;
409         unsigned int phy_con31;
410         unsigned int phy_con32;
411         unsigned int phy_con33;
412         unsigned int phy_con34;
413         unsigned char res6[0x8];
414         unsigned int phy_con37;
415         unsigned char res7[0x4];
416         unsigned int phy_con39;
417         unsigned int phy_con40;
418         unsigned int phy_con41;
419         unsigned int phy_con42;
420 };
421
422 struct exynos5420_tzasc {
423         unsigned char res1[0xf00];
424         unsigned int membaseconfig0;
425         unsigned int membaseconfig1;
426         unsigned char res2[0x8];
427         unsigned int memconfig0;
428         unsigned int memconfig1;
429 };
430
431 enum ddr_mode {
432         DDR_MODE_DDR2,
433         DDR_MODE_DDR3,
434         DDR_MODE_LPDDR2,
435         DDR_MODE_LPDDR3,
436
437         DDR_MODE_COUNT,
438 };
439
440 enum mem_manuf {
441         MEM_MANUF_AUTODETECT,
442         MEM_MANUF_ELPIDA,
443         MEM_MANUF_SAMSUNG,
444
445         MEM_MANUF_COUNT,
446 };
447
448 /* CONCONTROL register fields */
449 #define CONCONTROL_DFI_INIT_START_SHIFT 28
450 #define CONCONTROL_RD_FETCH_SHIFT       12
451 #define CONCONTROL_RD_FETCH_MASK        (0x7 << CONCONTROL_RD_FETCH_SHIFT)
452 #define CONCONTROL_AREF_EN_SHIFT        5
453
454 /* PRECHCONFIG register field */
455 #define PRECHCONFIG_TP_CNT_SHIFT        24
456
457 /* PWRDNCONFIG register field */
458 #define PWRDNCONFIG_DPWRDN_CYC_SHIFT    0
459 #define PWRDNCONFIG_DSREF_CYC_SHIFT     16
460
461 /* PHY_CON0 register fields */
462 #define PHY_CON0_T_WRRDCMD_SHIFT        17
463 #define PHY_CON0_T_WRRDCMD_MASK         (0x7 << PHY_CON0_T_WRRDCMD_SHIFT)
464 #define PHY_CON0_CTRL_DDR_MODE_SHIFT    11
465 #define PHY_CON0_CTRL_DDR_MODE_MASK     0x3
466
467 /* PHY_CON1 register fields */
468 #define PHY_CON1_RDLVL_RDDATA_ADJ_SHIFT 0
469
470 /* PHY_CON4 rgister fields */
471 #define PHY_CON10_CTRL_OFFSETR3         (1 << 24)
472
473 /* PHY_CON12 register fields */
474 #define PHY_CON12_CTRL_START_POINT_SHIFT        24
475 #define PHY_CON12_CTRL_INC_SHIFT        16
476 #define PHY_CON12_CTRL_FORCE_SHIFT      8
477 #define PHY_CON12_CTRL_START_SHIFT      6
478 #define PHY_CON12_CTRL_START_MASK       (1 << PHY_CON12_CTRL_START_SHIFT)
479 #define PHY_CON12_CTRL_DLL_ON_SHIFT     5
480 #define PHY_CON12_CTRL_DLL_ON_MASK      (1 << PHY_CON12_CTRL_DLL_ON_SHIFT)
481 #define PHY_CON12_CTRL_REF_SHIFT        1
482
483 /* PHY_CON16 register fields */
484 #define PHY_CON16_ZQ_MODE_DDS_SHIFT     24
485 #define PHY_CON16_ZQ_MODE_DDS_MASK      (0x7 << PHY_CON16_ZQ_MODE_DDS_SHIFT)
486
487 #define PHY_CON16_ZQ_MODE_TERM_SHIFT 21
488 #define PHY_CON16_ZQ_MODE_TERM_MASK     (0x7 << PHY_CON16_ZQ_MODE_TERM_SHIFT)
489
490 #define PHY_CON16_ZQ_MODE_NOTERM_MASK   (1 << 19)
491
492 /* PHY_CON42 register fields */
493 #define PHY_CON42_CTRL_BSTLEN_SHIFT     8
494 #define PHY_CON42_CTRL_BSTLEN_MASK      (0xff << PHY_CON42_CTRL_BSTLEN_SHIFT)
495
496 #define PHY_CON42_CTRL_RDLAT_SHIFT      0
497 #define PHY_CON42_CTRL_RDLAT_MASK       (0x1f << PHY_CON42_CTRL_RDLAT_SHIFT)
498
499 #endif
500 #endif