blob: 7e4f6fbb64c8452d8c55c58757cddf42f2401d1e [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Peng Fan01be8a92018-01-10 13:20:47 +08002/*
3 * Copyright 2017 NXP
Peng Fan01be8a92018-01-10 13:20:47 +08004 */
5
6#ifndef __ASM_ARCH_MX8M_DDR_H
7#define __ASM_ARCH_MX8M_DDR_H
8
9#define DDRC_DDR_SS_GPR0 0x3d000000
10#define DDRC_IPS_BASE_ADDR_0 0x3f400000
11#define IP2APB_DDRPHY_IPS_BASE_ADDR(X) (0x3c000000 + (X * 0x2000000))
12#define DDRPHY_MEM(X) (0x3c000000 + (X * 0x2000000) + 0x50000)
13
14struct ddrc_freq {
15 u32 res0[8];
16 u32 derateen;
17 u32 derateint;
18 u32 res1[10];
19 u32 rfshctl0;
20 u32 res2[4];
21 u32 rfshtmg;
22 u32 rfshtmg1;
23 u32 res3[28];
24 u32 init3;
25 u32 init4;
26 u32 res;
27 u32 init6;
28 u32 init7;
29 u32 res4[4];
30 u32 dramtmg0;
31 u32 dramtmg1;
32 u32 dramtmg2;
33 u32 dramtmg3;
34 u32 dramtmg4;
35 u32 dramtmg5;
36 u32 dramtmg6;
37 u32 dramtmg7;
38 u32 dramtmg8;
39 u32 dramtmg9;
40 u32 dramtmg10;
41 u32 dramtmg11;
42 u32 dramtmg12;
43 u32 dramtmg13;
44 u32 dramtmg14;
45 u32 dramtmg15;
46 u32 dramtmg16;
47 u32 dramtmg17;
48 u32 res5[10];
49 u32 mramtmg0;
50 u32 mramtmg1;
51 u32 mramtmg4;
52 u32 mramtmg9;
53 u32 zqctl0;
54 u32 res6[3];
55 u32 dfitmg0;
56 u32 dfitmg1;
57 u32 res7[7];
58 u32 dfitmg2;
59 u32 dfitmg3;
60 u32 res8[33];
61 u32 odtcfg;
62};
63
64struct imx8m_ddrc_regs {
65 u32 mstr;
66 u32 stat;
67 u32 mstr1;
68 u32 res1;
69 u32 mrctrl0;
70 u32 mrctrl1;
71 u32 mrstat;
72 u32 mrctrl2;
73 u32 derateen;
74 u32 derateint;
75 u32 mstr2;
76 u32 res2;
77 u32 pwrctl;
78 u32 pwrtmg;
79 u32 hwlpctl;
80 u32 hwffcctl;
81 u32 hwffcstat;
82 u32 res3[3];
83 u32 rfshctl0;
84 u32 rfshctl1;
85 u32 rfshctl2;
86 u32 rfshctl4;
87 u32 rfshctl3;
88 u32 rfshtmg;
89 u32 rfshtmg1;
90 u32 res4;
91 u32 ecccfg0;
92 u32 ecccfg1;
93 u32 eccstat;
94 u32 eccclr;
95 u32 eccerrcnt;
96 u32 ecccaddr0;
97 u32 ecccaddr1;
98 u32 ecccsyn0;
99 u32 ecccsyn1;
100 u32 ecccsyn2;
101 u32 eccbitmask0;
102 u32 eccbitmask1;
103 u32 eccbitmask2;
104 u32 eccuaddr0;
105 u32 eccuaddr1;
106 u32 eccusyn0;
107 u32 eccusyn1;
108 u32 eccusyn2;
109 u32 eccpoisonaddr0;
110 u32 eccpoisonaddr1;
111 u32 crcparctl0;
112 u32 crcparctl1;
113 u32 crcparctl2;
114 u32 crcparstat;
115 u32 init0;
116 u32 init1;
117 u32 init2;
118 u32 init3;
119 u32 init4;
120 u32 init5;
121 u32 init6;
122 u32 init7;
123 u32 dimmctl;
124 u32 rankctl;
125 u32 res5;
126 u32 chctl;
127 u32 dramtmg0;
128 u32 dramtmg1;
129 u32 dramtmg2;
130 u32 dramtmg3;
131 u32 dramtmg4;
132 u32 dramtmg5;
133 u32 dramtmg6;
134 u32 dramtmg7;
135 u32 dramtmg8;
136 u32 dramtmg9;
137 u32 dramtmg10;
138 u32 dramtmg11;
139 u32 dramtmg12;
140 u32 dramtmg13;
141 u32 dramtmg14;
142 u32 dramtmg15;
143 u32 dramtmg16;
144 u32 dramtmg17;
145 u32 res6[10];
146 u32 mramtmg0;
147 u32 mramtmg1;
148 u32 mramtmg4;
149 u32 mramtmg9;
150 u32 zqctl0;
151 u32 zqctl1;
152 u32 zqctl2;
153 u32 zqstat;
154 u32 dfitmg0;
155 u32 dfitmg1;
156 u32 dfilpcfg0;
157 u32 dfilpcfg1;
158 u32 dfiupd0;
159 u32 dfiupd1;
160 u32 dfiupd2;
161 u32 res7;
162 u32 dfimisc;
163 u32 dfitmg2;
164 u32 dfitmg3;
165 u32 dfistat;
166 u32 dbictl;
167 u32 dfiphymstr;
168 u32 res8[14];
169 u32 addrmap0;
170 u32 addrmap1;
171 u32 addrmap2;
172 u32 addrmap3;
173 u32 addrmap4;
174 u32 addrmap5;
175 u32 addrmap6;
176 u32 addrmap7;
177 u32 addrmap8;
178 u32 addrmap9;
179 u32 addrmap10;
180 u32 addrmap11;
181 u32 res9[4];
182 u32 odtcfg;
183 u32 odtmap;
184 u32 res10[2];
185 u32 sched;
186 u32 sched1;
187 u32 sched2;
188 u32 perfhpr1;
189 u32 res11;
190 u32 perflpr1;
191 u32 res12;
192 u32 perfwr1;
193 u32 res13[4];
194 u32 dqmap0;
195 u32 dqmap1;
196 u32 dqmap2;
197 u32 dqmap3;
198 u32 dqmap4;
199 u32 dqmap5;
200 u32 res14[26];
201 u32 dbg0;
202 u32 dbg1;
203 u32 dbgcam;
204 u32 dbgcmd;
205 u32 dbgstat;
206 u32 res15[3];
207 u32 swctl;
208 u32 swstat;
209 u32 res16[2];
210 u32 ocparcfg0;
211 u32 ocparcfg1;
212 u32 ocparcfg2;
213 u32 ocparcfg3;
214 u32 ocparstat0;
215 u32 ocparstat1;
216 u32 ocparwlog0;
217 u32 ocparwlog1;
218 u32 ocparwlog2;
219 u32 ocparawlog0;
220 u32 ocparawlog1;
221 u32 ocparrlog0;
222 u32 ocparrlog1;
223 u32 ocpararlog0;
224 u32 ocpararlog1;
225 u32 poisoncfg;
226 u32 poisonstat;
227 u32 adveccindex;
228 union {
229 u32 adveccstat;
230 u32 eccapstat;
231 };
232 u32 eccpoisonpat0;
233 u32 eccpoisonpat1;
234 u32 eccpoisonpat2;
235 u32 res17[6];
236 u32 caparpoisonctl;
237 u32 caparpoisonstat;
238 u32 res18[2];
239 u32 dynbsmstat;
240 u32 res19[18];
241 u32 pstat;
242 u32 pccfg;
243 struct {
244 u32 pcfgr;
245 u32 pcfgw;
246 u32 pcfgc;
247 struct {
248 u32 pcfgidmaskch0;
249 u32 pcfidvaluech0;
250 } pcfgid[16];
251 u32 pctrl;
252 u32 pcfgqos0;
253 u32 pcfgqos1;
254 u32 pcfgwqos0;
255 u32 pcfgwqos1;
256 u32 res[4];
257 } pcfg[16];
258 struct {
259 u32 sarbase;
260 u32 sarsize;
261 } sar[4];
262 u32 sbrctl;
263 u32 sbrstat;
264 u32 sbrwdata0;
265 u32 sbrwdata1;
266 u32 pdch;
267 u32 res20[755];
268 /* umctl2_regs_dch1 */
269 u32 ch1_stat;
270 u32 res21[2];
271 u32 ch1_mrctrl0;
272 u32 ch1_mrctrl1;
273 u32 ch1_mrstat;
274 u32 ch1_mrctrl2;
275 u32 res22[4];
276 u32 ch1_pwrctl;
277 u32 ch1_pwrtmg;
278 u32 ch1_hwlpctl;
279 u32 res23[15];
280 u32 ch1_eccstat;
281 u32 ch1_eccclr;
282 u32 ch1_eccerrcnt;
283 u32 ch1_ecccaddr0;
284 u32 ch1_ecccaddr1;
285 u32 ch1_ecccsyn0;
286 u32 ch1_ecccsyn1;
287 u32 ch1_ecccsyn2;
288 u32 ch1_eccbitmask0;
289 u32 ch1_eccbitmask1;
290 u32 ch1_eccbitmask2;
291 u32 ch1_eccuaddr0;
292 u32 ch1_eccuaddr1;
293 u32 ch1_eccusyn0;
294 u32 ch1_eccusyn1;
295 u32 ch1_eccusyn2;
296 u32 res24[2];
297 u32 ch1_crcparctl0;
298 u32 res25[2];
299 u32 ch1_crcparstat;
300 u32 res26[46];
301 u32 ch1_zqctl2;
302 u32 ch1_zqstat;
303 u32 res27[11];
304 u32 ch1_dfistat;
305 u32 res28[33];
306 u32 ch1_odtmap;
307 u32 res29[47];
308 u32 ch1_dbg1;
309 u32 ch1_dbgcam;
310 u32 ch1_dbgcmd;
311 u32 ch1_dbgstat;
312 u32 res30[123];
313 /* umctl2_regs_freq1 */
314 struct ddrc_freq freq1;
315 u32 res31[109];
316 /* umctl2_regs_addrmap_alt */
317 u32 addrmap0_alt;
318 u32 addrmap1_alt;
319 u32 addrmap2_alt;
320 u32 addrmap3_alt;
321 u32 addrmap4_alt;
322 u32 addrmap5_alt;
323 u32 addrmap6_alt;
324 u32 addrmap7_alt;
325 u32 addrmap8_alt;
326 u32 addrmap9_alt;
327 u32 addrmap10_alt;
328 u32 addrmap11_alt;
329 u32 res32[758];
330 /* umctl2_regs_freq2 */
331 struct ddrc_freq freq2;
332 u32 res33[879];
333 /* umctl2_regs_freq3 */
334 struct ddrc_freq freq3;
335};
336
337struct imx8m_ddrphy_regs {
338 u32 reg[0xf0000];
339};
340
341/* PHY State */
342enum pstate {
343 PS0,
344 PS1,
345 PS2,
346 PS3,
347};
348
349enum msg_response {
350 TRAIN_SUCCESS = 0x7,
351 TRAIN_STREAM_START = 0x8,
352 TRAIN_FAIL = 0xff,
353};
354
355#endif