blob: 43978c26c973449f7f52f4129b95659170fe93a4 [file] [log] [blame]
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001/*
2 * Copyright (c) 2015-2018, Renesas Electronics Corporation. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Marek Vasut3af20052019-02-25 14:57:08 +01007#define BOARDNUM 19
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02008#define BOARD_JUDGE_AUTO
9
Marek Vasut6c245a52018-12-12 18:06:39 +010010#ifdef BOARD_JUDGE_AUTO
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +020011static uint32_t _board_judge(void);
12
13static uint32_t boardcnf_get_brd_type(void)
14{
15 return _board_judge();
16}
Marek Vasut6c245a52018-12-12 18:06:39 +010017#else
18static uint32_t boardcnf_get_brd_type(void)
19{
20 return (1);
21}
22#endif
23
24#define DDR_FAST_INIT
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +020025
26struct _boardcnf_ch {
27 uint8_t ddr_density[CS_CNT];
Marek Vasut6c245a52018-12-12 18:06:39 +010028 uint64_t ca_swap;
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +020029 uint16_t dqs_swap;
30 uint32_t dq_swap[SLICE_CNT];
31 uint8_t dm_swap[SLICE_CNT];
32 uint16_t wdqlvl_patt[16];
Marek Vasut6c245a52018-12-12 18:06:39 +010033 int8_t cacs_adj[16];
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +020034 int8_t dm_adj_w[SLICE_CNT];
35 int8_t dq_adj_w[SLICE_CNT * 8];
36 int8_t dm_adj_r[SLICE_CNT];
37 int8_t dq_adj_r[SLICE_CNT * 8];
38};
39
40struct _boardcnf {
41 uint8_t phyvalid;
42 uint8_t dbi_en;
43 uint16_t cacs_dly;
44 int16_t cacs_dly_adj;
45 uint16_t dqdm_dly_w;
46 uint16_t dqdm_dly_r;
47 struct _boardcnf_ch ch[DRAM_CH_CNT];
48};
49
50#define WDQLVL_PAT {\
51 0x00AA,\
52 0x0055,\
53 0x00AA,\
54 0x0155,\
55 0x01CC,\
56 0x0133,\
57 0x00CC,\
58 0x0033,\
59 0x00F0,\
60 0x010F,\
61 0x01F0,\
62 0x010F,\
63 0x00F0,\
64 0x00F0,\
65 0x000F,\
66 0x010F}
67
68static const struct _boardcnf boardcnfs[BOARDNUM] = {
69 {
70/* boardcnf[0] RENESAS SALVATOR-X board with M3-W/SIP */
71 .phyvalid = 0x03,
72 .dbi_en = 0x01,
73 .cacs_dly = 0x02c0,
74 .cacs_dly_adj = 0,
75 .dqdm_dly_w = 0x0300,
76 .dqdm_dly_r = 0x00a0,
77 .ch = {
78 {
79 {0x02, 0x02},
80 0x00543210U,
81 0x3201U,
82 {0x70612543, 0x43251670, 0x45326170, 0x10672534},
83 {0x08, 0x08, 0x08, 0x08},
84 WDQLVL_PAT,
85 {0, 0, 0, 0, 0, 0, 0, 0,
86 0, 0},
87 {0, 0, 0, 0},
88 {0, 0, 0, 0, 0, 0, 0, 0,
89 0, 0, 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0},
92 {0, 0, 0, 0},
93 {0, 0, 0, 0, 0, 0, 0, 0,
94 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 0, 0, 0, 0,
96 0, 0, 0, 0, 0, 0, 0, 0}
97 },
98
99 {
100 {0x02, 0x02},
101 0x00543210,
102 0x2310,
103 {0x01327654, 0x34526107, 0x35421670, 0x70615324},
104 {0x08, 0x08, 0x08, 0x08},
105 WDQLVL_PAT,
106 {0, 0, 0, 0, 0, 0, 0, 0,
107 0, 0},
108 {0, 0, 0, 0},
109 {0, 0, 0, 0, 0, 0, 0, 0,
110 0, 0, 0, 0, 0, 0, 0, 0,
111 0, 0, 0, 0, 0, 0, 0, 0,
112 0, 0, 0, 0, 0, 0, 0, 0},
113 {0, 0, 0, 0},
114 {0, 0, 0, 0, 0, 0, 0, 0,
115 0, 0, 0, 0, 0, 0, 0, 0,
116 0, 0, 0, 0, 0, 0, 0, 0,
117 0, 0, 0, 0, 0, 0, 0, 0}
118 }
119 }
120 },
121/* boardcnf[1] RENESAS KRIEK board with M3-W/SoC */
122 {
123 0x03,
124 0x01,
125 0x2c0,
126 0,
127 0x300,
128 0x0a0,
129 {
130 {
131 {0x02, 0x02},
132 0x00345201,
133 0x3201,
134 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
135 {0x08, 0x08, 0x08, 0x08},
136 WDQLVL_PAT,
137 {0, 0, 0, 0, 0, 0, 0, 0,
138 0, 0},
139 {0, 0, 0, 0},
140 {0, 0, 0, 0, 0, 0, 0, 0,
141 0, 0, 0, 0, 0, 0, 0, 0,
142 0, 0, 0, 0, 0, 0, 0, 0,
143 0, 0, 0, 0, 0, 0, 0, 0},
144 {0, 0, 0, 0},
145 {0, 0, 0, 0, 0, 0, 0, 0,
146 0, 0, 0, 0, 0, 0, 0, 0,
147 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0}
149 },
150 {
151 {0x02, 0x02},
152 0x00302154,
153 0x2310,
154 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
155 {0x08, 0x08, 0x08, 0x08},
156 WDQLVL_PAT,
157 {0, 0, 0, 0, 0, 0, 0, 0,
158 0, 0},
159 {0, 0, 0, 0},
160 {0, 0, 0, 0, 0, 0, 0, 0,
161 0, 0, 0, 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0},
164 {0, 0, 0, 0},
165 {0, 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 0, 0, 0, 0,
167 0, 0, 0, 0, 0, 0, 0, 0,
168 0, 0, 0, 0, 0, 0, 0, 0}
169 }
170 }
171 },
172/* boardcnf[2] RENESAS SALVATOR-X board with H3 Ver.1.x/SIP(8Gbit 1rank) */
173 {
174 0x0f,
175 0x00,
176 0x300,
177 -320,
178 0x300,
179 0x0a0,
180 {
181 {
182 {0x02, 0xff},
183 0x00543210,
184 0x3210,
185 {0x20741365, 0x34256107, 0x57460321, 0x70614532},
186 {0x08, 0x08, 0x08, 0x08},
187 WDQLVL_PAT,
188 {0, 0, 0, 0, 0, 0, 0, 0,
189 0, 0},
190 {0, 0, 0, 0},
191 {0, 0, 0, 0, 0, 0, 0, 0,
192 0, 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0, 0, 0, 0,
194 0, 0, 0, 0, 0, 0, 0, 0},
195 {0, 0, 0, 0},
196 {0, 0, 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0, 0, 0, 0}
200 },
201 {
202 {0x02, 0xff},
203 0x00543210,
204 0x3102,
205 {0x23547610, 0x34526107, 0x67452310, 0x32106754},
206 {0x08, 0x08, 0x08, 0x08},
207 WDQLVL_PAT,
208 {0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0},
210 {0, 0, 0, 0},
211 {0, 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0,
214 0, 0, 0, 0, 0, 0, 0, 0},
215 {0, 0, 0, 0},
216 {0, 0, 0, 0, 0, 0, 0, 0,
217 0, 0, 0, 0, 0, 0, 0, 0,
218 0, 0, 0, 0, 0, 0, 0, 0,
219 0, 0, 0, 0, 0, 0, 0, 0}
220 },
221 {
222 {0x02, 0xff},
223 0x00543210,
224 0x0213,
225 {0x30216754, 0x67453210, 0x70165243, 0x07162345},
226 {0x08, 0x08, 0x08, 0x08},
227 WDQLVL_PAT,
228 {0, 0, 0, 0, 0, 0, 0, 0,
229 0, 0},
230 {0, 0, 0, 0},
231 {0, 0, 0, 0, 0, 0, 0, 0,
232 0, 0, 0, 0, 0, 0, 0, 0,
233 0, 0, 0, 0, 0, 0, 0, 0,
234 0, 0, 0, 0, 0, 0, 0, 0},
235 {0, 0, 0, 0},
236 {0, 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 0, 0, 0, 0, 0,
239 0, 0, 0, 0, 0, 0, 0, 0}
240 },
241 {
242 {0x02, 0xff},
243 0x00543210,
244 0x0213,
245 {0x01327654, 0x70615432, 0x54760123, 0x07162345},
246 {0x08, 0x08, 0x08, 0x08},
247 WDQLVL_PAT,
248 {0, 0, 0, 0, 0, 0, 0, 0,
249 0, 0},
250 {0, 0, 0, 0},
251 {0, 0, 0, 0, 0, 0, 0, 0,
252 0, 0, 0, 0, 0, 0, 0, 0,
253 0, 0, 0, 0, 0, 0, 0, 0,
254 0, 0, 0, 0, 0, 0, 0, 0},
255 {0, 0, 0, 0},
256 {0, 0, 0, 0, 0, 0, 0, 0,
257 0, 0, 0, 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 0, 0, 0, 0,
259 0, 0, 0, 0, 0, 0, 0, 0}
260 }
261 }
262 },
263/* boardcnf[3] RENESAS Starter Kit board with M3-W/SIP(8Gbit 1rank) */
264 {
265 0x03,
266 0x01,
267 0x02c0,
268 0,
269 0x0300,
270 0x00a0,
271 {
272 {
273 {0x02, 0xFF},
274 0x00543210U,
275 0x3201,
276 {0x70612543, 0x43251670, 0x45326170, 0x10672534},
277 {0x08, 0x08, 0x08, 0x08},
278 WDQLVL_PAT,
279 {0, 0, 0, 0, 0, 0, 0, 0,
280 0, 0},
281 {0, 0, 0, 0},
282 {0, 0, 0, 0, 0, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 0, 0,
284 0, 0, 0, 0, 0, 0, 0, 0,
285 0, 0, 0, 0, 0, 0, 0, 0},
286 {0, 0, 0, 0},
287 {0, 0, 0, 0, 0, 0, 0, 0,
288 0, 0, 0, 0, 0, 0, 0, 0,
289 0, 0, 0, 0, 0, 0, 0, 0,
290 0, 0, 0, 0, 0, 0, 0, 0}
291 },
292 {
293 {0x02, 0xFF},
294 0x00543210,
295 0x2310,
296 {0x01327654, 0x34526107, 0x35421670, 0x70615324},
297 {0x08, 0x08, 0x08, 0x08},
298 WDQLVL_PAT,
299 {0, 0, 0, 0, 0, 0, 0, 0,
300 0, 0},
301 {0, 0, 0, 0},
302 {0, 0, 0, 0, 0, 0, 0, 0,
303 0, 0, 0, 0, 0, 0, 0, 0,
304 0, 0, 0, 0, 0, 0, 0, 0,
305 0, 0, 0, 0, 0, 0, 0, 0},
306 {0, 0, 0, 0},
307 {0, 0, 0, 0, 0, 0, 0, 0,
308 0, 0, 0, 0, 0, 0, 0, 0,
309 0, 0, 0, 0, 0, 0, 0, 0,
310 0, 0, 0, 0, 0, 0, 0, 0}
311 }
312 }
313 },
314/* boardcnf[4] RENESAS SALVATOR-M(1rank) board with H3 Ver.1.x/SoC */
315 {
316 0x0f,
317 0x00,
318 0x2c0,
319 -320,
320 0x300,
321 0x0a0,
322 {
323 {
324 {0x02, 0xff},
325 0x00315024,
326 0x3120,
327 {0x30671254, 0x26541037, 0x17054623, 0x12307645},
328 {0x08, 0x08, 0x08, 0x08},
329 WDQLVL_PAT,
330 {0, 0, 0, 0, 0, 0, 0, 0,
331 0, 0},
332 {0, 0, 0, 0},
333 {0, 0, 0, 0, 0, 0, 0, 0,
334 0, 0, 0, 0, 0, 0, 0, 0,
335 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 0, 0, 0, 0, 0},
337 {0, 0, 0, 0},
338 {0, 0, 0, 0, 0, 0, 0, 0,
339 0, 0, 0, 0, 0, 0, 0, 0,
340 0, 0, 0, 0, 0, 0, 0, 0,
341 0, 0, 0, 0, 0, 0, 0, 0}
342 },
343 {
344 {0x02, 0xff},
345 0x00025143,
346 0x3210,
347 {0x70613542, 0x16245307, 0x30712645, 0x21706354},
348 {0x08, 0x08, 0x08, 0x08},
349 WDQLVL_PAT,
350 {0, 0, 0, 0, 0, 0, 0, 0,
351 0, 0},
352 {0, 0, 0, 0},
353 {0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 0, 0, 0, 0,
355 0, 0, 0, 0, 0, 0, 0, 0,
356 0, 0, 0, 0, 0, 0, 0, 0},
357 {0, 0, 0, 0},
358 {0, 0, 0, 0, 0, 0, 0, 0,
359 0, 0, 0, 0, 0, 0, 0, 0,
360 0, 0, 0, 0, 0, 0, 0, 0,
361 0, 0, 0, 0, 0, 0, 0, 0}
362 },
363 {
364 {0x02, 0xff},
365 0x00523104,
366 0x2301,
367 {0x70613542, 0x16245307, 0x30712645, 0x21706354},
368 {0x08, 0x08, 0x08, 0x08},
369 WDQLVL_PAT,
370 {0, 0, 0, 0, 0, 0, 0, 0,
371 0, 0},
372 {0, 0, 0, 0},
373 {0, 0, 0, 0, 0, 0, 0, 0,
374 0, 0, 0, 0, 0, 0, 0, 0,
375 0, 0, 0, 0, 0, 0, 0, 0,
376 0, 0, 0, 0, 0, 0, 0, 0},
377 {0, 0, 0, 0},
378 {0, 0, 0, 0, 0, 0, 0, 0,
379 0, 0, 0, 0, 0, 0, 0, 0,
380 0, 0, 0, 0, 0, 0, 0, 0,
381 0, 0, 0, 0, 0, 0, 0, 0}
382 },
383 {
384 {0x02, 0xff},
385 0x00153402,
386 0x2031,
387 {0x30671254, 0x26541037, 0x17054623, 0x12307645},
388 {0x08, 0x08, 0x08, 0x08},
389 WDQLVL_PAT,
390 {0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0},
392 {0, 0, 0, 0},
393 {0, 0, 0, 0, 0, 0, 0, 0,
394 0, 0, 0, 0, 0, 0, 0, 0,
395 0, 0, 0, 0, 0, 0, 0, 0,
396 0, 0, 0, 0, 0, 0, 0, 0},
397 {0, 0, 0, 0},
398 {0, 0, 0, 0, 0, 0, 0, 0,
399 0, 0, 0, 0, 0, 0, 0, 0,
400 0, 0, 0, 0, 0, 0, 0, 0,
401 0, 0, 0, 0, 0, 0, 0, 0}
402 }
403 }
404 },
405/* boardcnf[5] RENESAS KRIEK-1rank board with M3-W/SoC */
406 {
407 0x03,
408 0x01,
409 0x2c0,
410 0,
411 0x300,
412 0x0a0,
413 {
414 {
415 {0x02, 0xff},
416 0x00345201,
417 0x3201,
418 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
419 {0x08, 0x08, 0x08, 0x08},
420 WDQLVL_PAT,
421 {0, 0, 0, 0, 0, 0, 0, 0,
422 0, 0},
423 {0, 0, 0, 0},
424 {0, 0, 0, 0, 0, 0, 0, 0,
425 0, 0, 0, 0, 0, 0, 0, 0,
426 0, 0, 0, 0, 0, 0, 0, 0,
427 0, 0, 0, 0, 0, 0, 0, 0},
428 {0, 0, 0, 0},
429 {0, 0, 0, 0, 0, 0, 0, 0,
430 0, 0, 0, 0, 0, 0, 0, 0,
431 0, 0, 0, 0, 0, 0, 0, 0,
432 0, 0, 0, 0, 0, 0, 0, 0}
433 },
434 {
435 {0x02, 0xff},
436 0x00302154,
437 0x2310,
438 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
439 {0x08, 0x08, 0x08, 0x08},
440 WDQLVL_PAT,
441 {0, 0, 0, 0, 0, 0, 0, 0,
442 0, 0},
443 {0, 0, 0, 0},
444 {0, 0, 0, 0, 0, 0, 0, 0,
445 0, 0, 0, 0, 0, 0, 0, 0,
446 0, 0, 0, 0, 0, 0, 0, 0,
447 0, 0, 0, 0, 0, 0, 0, 0},
448 {0, 0, 0, 0},
449 {0, 0, 0, 0, 0, 0, 0, 0,
450 0, 0, 0, 0, 0, 0, 0, 0,
451 0, 0, 0, 0, 0, 0, 0, 0,
452 0, 0, 0, 0, 0, 0, 0, 0}
453 }
454 }
455 },
456/* boardcnf[6] RENESAS SALVATOR-X board with H3 Ver.1.x/SIP(8Gbit 2rank) */
457 {
458 0x0f,
459 0x00,
460 0x300,
461 -320,
462 0x300,
463 0x0a0,
464 {
465 {
466 {0x02, 0x02},
467 0x00543210,
468 0x3210,
469 {0x20741365, 0x34256107, 0x57460321, 0x70614532},
470 {0x08, 0x08, 0x08, 0x08},
471 WDQLVL_PAT,
472 {0, 0, 0, 0, 0, 0, 0, 0,
473 0, 0},
474 {0, 0, 0, 0},
475 {0, 0, 0, 0, 0, 0, 0, 0,
476 0, 0, 0, 0, 0, 0, 0, 0,
477 0, 0, 0, 0, 0, 0, 0, 0,
478 0, 0, 0, 0, 0, 0, 0, 0},
479 {0, 0, 0, 0},
480 {0, 0, 0, 0, 0, 0, 0, 0,
481 0, 0, 0, 0, 0, 0, 0, 0,
482 0, 0, 0, 0, 0, 0, 0, 0,
483 0, 0, 0, 0, 0, 0, 0, 0}
484 },
485 {
486 {0x02, 0x02},
487 0x00543210,
488 0x3102,
489 {0x23547610, 0x34526107, 0x67452310, 0x32106754},
490 {0x08, 0x08, 0x08, 0x08},
491 WDQLVL_PAT,
492 {0, 0, 0, 0, 0, 0, 0, 0,
493 0, 0},
494 {0, 0, 0, 0},
495 {0, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0, 0, 0, 0,
497 0, 0, 0, 0, 0, 0, 0, 0,
498 0, 0, 0, 0, 0, 0, 0, 0},
499 {0, 0, 0, 0},
500 {0, 0, 0, 0, 0, 0, 0, 0,
501 0, 0, 0, 0, 0, 0, 0, 0,
502 0, 0, 0, 0, 0, 0, 0, 0,
503 0, 0, 0, 0, 0, 0, 0, 0}
504 },
505 {
506 {0x02, 0x02},
507 0x00543210,
508 0x0213,
509 {0x30216754, 0x67453210, 0x70165243, 0x07162345},
510 {0x08, 0x08, 0x08, 0x08},
511 WDQLVL_PAT,
512 {0, 0, 0, 0, 0, 0, 0, 0,
513 0, 0},
514 {0, 0, 0, 0},
515 {0, 0, 0, 0, 0, 0, 0, 0,
516 0, 0, 0, 0, 0, 0, 0, 0,
517 0, 0, 0, 0, 0, 0, 0, 0,
518 0, 0, 0, 0, 0, 0, 0, 0},
519 {0, 0, 0, 0},
520 {0, 0, 0, 0, 0, 0, 0, 0,
521 0, 0, 0, 0, 0, 0, 0, 0,
522 0, 0, 0, 0, 0, 0, 0, 0,
523 0, 0, 0, 0, 0, 0, 0, 0}
524 },
525 {
526 {0x02, 0x02},
527 0x00543210,
528 0x0213,
529 {0x01327654, 0x70615432, 0x54760123, 0x07162345},
530 {0x08, 0x08, 0x08, 0x08},
531 WDQLVL_PAT,
532 {0, 0, 0, 0, 0, 0, 0, 0,
533 0, 0},
534 {0, 0, 0, 0},
535 {0, 0, 0, 0, 0, 0, 0, 0,
536 0, 0, 0, 0, 0, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0,
538 0, 0, 0, 0, 0, 0, 0, 0},
539 {0, 0, 0, 0},
540 {0, 0, 0, 0, 0, 0, 0, 0,
541 0, 0, 0, 0, 0, 0, 0, 0,
542 0, 0, 0, 0, 0, 0, 0, 0,
543 0, 0, 0, 0, 0, 0, 0, 0}
544 }
545 }
546 },
547/* boardcnf[7] RENESAS SALVATOR-X board with H3 Ver.2.0 or later/SIP(8Gbit 1rank) */
548 {
549 0x0f,
550 0x01,
551 0x300,
552 0,
553 0x300,
554 0x0a0,
555 {
556 {
557 {0x02, 0xff},
558 0x00543210,
559 0x2310,
560 {0x70631425, 0x34527016, 0x43527610, 0x32104567},
561 {0x08, 0x08, 0x08, 0x08},
562 WDQLVL_PAT,
563 {0, 0, 0, 0, 0, 0, 0, 0,
564 0, 0},
565 {0, 0, 0, 0},
566 {0, 0, 0, 0, 0, 0, 0, 0,
567 0, 0, 0, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 0, 0, 0,
569 0, 0, 0, 0, 0, 0, 0, 0},
570 {0, 0, 0, 0},
571 {0, 0, 0, 0, 0, 0, 0, 0,
572 0, 0, 0, 0, 0, 0, 0, 0,
573 0, 0, 0, 0, 0, 0, 0, 0,
574 0, 0, 0, 0, 0, 0, 0, 0}
575 },
576 {
577 {0x02, 0xff},
578 0x00105432,
579 0x3210,
580 {0x43256107, 0x07162354, 0x10234567, 0x01235467},
581 {0x08, 0x08, 0x08, 0x08},
582 WDQLVL_PAT,
583 {0, 0, 0, 0, 0, 0, 0, 0,
584 0, 0},
585 {0, 0, 0, 0},
586 {0, 0, 0, 0, 0, 0, 0, 0,
587 0, 0, 0, 0, 0, 0, 0, 0,
588 0, 0, 0, 0, 0, 0, 0, 0,
589 0, 0, 0, 0, 0, 0, 0, 0},
590 {0, 0, 0, 0},
591 {0, 0, 0, 0, 0, 0, 0, 0,
592 0, 0, 0, 0, 0, 0, 0, 0,
593 0, 0, 0, 0, 0, 0, 0, 0,
594 0, 0, 0, 0, 0, 0, 0, 0}
595 },
596 {
597 {0x02, 0xff},
598 0x00543210,
599 0x2301,
600 {0x01327654, 0x02316457, 0x10234567, 0x01325467},
601 {0x08, 0x08, 0x08, 0x08},
602 WDQLVL_PAT,
603 {0, 0, 0, 0, 0, 0, 0, 0,
604 0, 0},
605 {0, 0, 0, 0},
606 {0, 0, 0, 0, 0, 0, 0, 0,
607 0, 0, 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0, 0, 0,
609 0, 0, 0, 0, 0, 0, 0, 0},
610 {0, 0, 0, 0},
611 {0, 0, 0, 0, 0, 0, 0, 0,
612 0, 0, 0, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 0, 0, 0,
614 0, 0, 0, 0, 0, 0, 0, 0}
615 },
616 {
617 {0x02, 0xff},
618 0x00543210,
619 0x2301,
620 {0x12034765, 0x23105467, 0x23017645, 0x32106745},
621 {0x08, 0x08, 0x08, 0x08},
622 WDQLVL_PAT,
623 {0, 0, 0, 0, 0, 0, 0, 0,
624 0, 0},
625 {0, 0, 0, 0},
626 {0, 0, 0, 0, 0, 0, 0, 0,
627 0, 0, 0, 0, 0, 0, 0, 0,
628 0, 0, 0, 0, 0, 0, 0, 0,
629 0, 0, 0, 0, 0, 0, 0, 0},
630 {0, 0, 0, 0},
631 {0, 0, 0, 0, 0, 0, 0, 0,
632 0, 0, 0, 0, 0, 0, 0, 0,
633 0, 0, 0, 0, 0, 0, 0, 0,
634 0, 0, 0, 0, 0, 0, 0, 0}
635 }
636 }
637 },
638/* boardcnf[8] RENESAS SALVATOR-X board with H3 Ver.2.0 or later/SIP(8Gbit 2rank) */
639 {
640#if RCAR_DRAM_CHANNEL == 5
641 0x05,
642#else
643 0x0f,
644#endif
645 0x01,
646 0x300,
647 0,
648 0x300,
649 0x0a0,
650 {
651 {
652 {0x02, 0x02},
653 0x00543210,
654 0x2310,
655 {0x70631425, 0x34527016, 0x43527610, 0x32104567},
656 {0x08, 0x08, 0x08, 0x08},
657 WDQLVL_PAT,
658 {0, 0, 0, 0, 0, 0, 0, 0,
659 0, 0},
660 {0, 0, 0, 0},
661 {0, 0, 0, 0, 0, 0, 0, 0,
662 0, 0, 0, 0, 0, 0, 0, 0,
663 0, 0, 0, 0, 0, 0, 0, 0,
664 0, 0, 0, 0, 0, 0, 0, 0},
665 {0, 0, 0, 0},
666 {0, 0, 0, 0, 0, 0, 0, 0,
667 0, 0, 0, 0, 0, 0, 0, 0,
668 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 0, 0, 0, 0, 0, 0}
670 },
671#if ((RCAR_DRAM_CHANNEL == 5) && (RCAR_DRAM_SPLIT == 2))
672 {
673 {0x02, 0x02},
674 0x00543210,
675 0x2301,
676 {0x01327654, 0x02316457, 0x10234567, 0x01325467},
677 {0x08, 0x08, 0x08, 0x08},
678 WDQLVL_PAT,
679 {0, 0, 0, 0, 0, 0, 0, 0,
680 0, 0},
681 {0, 0, 0, 0},
682 {0, 0, 0, 0, 0, 0, 0, 0,
683 0, 0, 0, 0, 0, 0, 0, 0,
684 0, 0, 0, 0, 0, 0, 0, 0,
685 0, 0, 0, 0, 0, 0, 0, 0},
686 {0, 0, 0, 0},
687 {0, 0, 0, 0, 0, 0, 0, 0,
688 0, 0, 0, 0, 0, 0, 0, 0,
689 0, 0, 0, 0, 0, 0, 0, 0,
690 0, 0, 0, 0, 0, 0, 0, 0}
691 },
692#else
693 {
694 {0x02, 0x02},
695 0x00105432,
696 0x3210,
697 {0x43256107, 0x07162354, 0x10234567, 0x01235467},
698 {0x08, 0x08, 0x08, 0x08},
699 WDQLVL_PAT,
700 {0, 0, 0, 0, 0, 0, 0, 0,
701 0, 0},
702 {0, 0, 0, 0},
703 {0, 0, 0, 0, 0, 0, 0, 0,
704 0, 0, 0, 0, 0, 0, 0, 0,
705 0, 0, 0, 0, 0, 0, 0, 0,
706 0, 0, 0, 0, 0, 0, 0, 0},
707 {0, 0, 0, 0},
708 {0, 0, 0, 0, 0, 0, 0, 0,
709 0, 0, 0, 0, 0, 0, 0, 0,
710 0, 0, 0, 0, 0, 0, 0, 0,
711 0, 0, 0, 0, 0, 0, 0, 0}
712 },
713#endif
714 {
715 {0x02, 0x02},
716 0x00543210,
717 0x2301,
718 {0x01327654, 0x02316457, 0x10234567, 0x01325467},
719 {0x08, 0x08, 0x08, 0x08},
720 WDQLVL_PAT,
721 {0, 0, 0, 0, 0, 0, 0, 0,
722 0, 0},
723 {0, 0, 0, 0},
724 {0, 0, 0, 0, 0, 0, 0, 0,
725 0, 0, 0, 0, 0, 0, 0, 0,
726 0, 0, 0, 0, 0, 0, 0, 0,
727 0, 0, 0, 0, 0, 0, 0, 0},
728 {0, 0, 0, 0},
729 {0, 0, 0, 0, 0, 0, 0, 0,
730 0, 0, 0, 0, 0, 0, 0, 0,
731 0, 0, 0, 0, 0, 0, 0, 0,
732 0, 0, 0, 0, 0, 0, 0, 0}
733 },
734 {
735 {0x02, 0x02},
736 0x00543210,
737 0x2301,
738 {0x12034765, 0x23105467, 0x23017645, 0x32106745},
739 {0x08, 0x08, 0x08, 0x08},
740 WDQLVL_PAT,
741 {0, 0, 0, 0, 0, 0, 0, 0,
742 0, 0},
743 {0, 0, 0, 0},
744 {0, 0, 0, 0, 0, 0, 0, 0,
745 0, 0, 0, 0, 0, 0, 0, 0,
746 0, 0, 0, 0, 0, 0, 0, 0,
747 0, 0, 0, 0, 0, 0, 0, 0},
748 {0, 0, 0, 0},
749 {0, 0, 0, 0, 0, 0, 0, 0,
750 0, 0, 0, 0, 0, 0, 0, 0,
751 0, 0, 0, 0, 0, 0, 0, 0,
752 0, 0, 0, 0, 0, 0, 0, 0}
753 }
754 }
755 },
756/* boardcnf[9] RENESAS SALVATOR-MS(1rank) board with H3 Ver.2.0 or later/SoC */
757 {
758 0x0f,
759 0x01,
760 0x300,
761 0,
762 0x300,
763 0x0a0,
764 {
765 {
766 {0x02, 0xff},
767 0x00543210,
768 0x3210,
769 {0x27645310, 0x75346210, 0x53467210, 0x23674510},
770 {0x08, 0x08, 0x08, 0x08},
771 WDQLVL_PAT,
772 {0, 0, 0, 0, 0, 0, 0, 0,
773 0, 0},
774 {0, 0, 0, 0},
775 {0, 0, 0, 0, 0, 0, 0, 0,
776 0, 0, 0, 0, 0, 0, 0, 0,
777 0, 0, 0, 0, 0, 0, 0, 0,
778 0, 0, 0, 0, 0, 0, 0, 0},
779 {0, 0, 0, 0},
780 {0, 0, 0, 0, 0, 0, 0, 0,
781 0, 0, 0, 0, 0, 0, 0, 0,
782 0, 0, 0, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0, 0}
784 },
785 {
786 {0x02, 0xff},
787 0x00543210,
788 0x2301,
789 {0x23764510, 0x43257610, 0x43752610, 0x37652401},
790 {0x08, 0x08, 0x08, 0x08},
791 WDQLVL_PAT,
792 {-128, -128, -128, -128, -128, -128, 0, 0,
793 0, 0},
794 {0, 0, 0, 0},
795 {0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 0, 0, 0, 0, 0,
798 0, 0, 0, 0, 0, 0, 0, 0},
799 {0, 0, 0, 0},
800 {0, 0, 0, 0, 0, 0, 0, 0,
801 0, 0, 0, 0, 0, 0, 0, 0,
802 0, 0, 0, 0, 0, 0, 0, 0,
803 0, 0, 0, 0, 0, 0, 0, 0}
804 },
805 {
806 {0x02, 0xff},
807 0x00452103,
808 0x3210,
809 {0x32764510, 0x43257610, 0x43752610, 0x26573401},
810 {0x08, 0x08, 0x08, 0x08},
811 WDQLVL_PAT,
812 {0, 0, 0, 0, 0, 0, 0, 0,
813 0, 0},
814 {0, 0, 0, 0},
815 {0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 0, 0, 0, 0, 0,
817 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0, 0, 0, 0, 0, 0, 0},
819 {0, 0, 0, 0},
820 {0, 0, 0, 0, 0, 0, 0, 0,
821 0, 0, 0, 0, 0, 0, 0, 0,
822 0, 0, 0, 0, 0, 0, 0, 0,
823 0, 0, 0, 0, 0, 0, 0, 0}
824 },
825 {
826 {0x02, 0xff},
827 0x00520413,
828 0x2301,
829 {0x47652301, 0x75346210, 0x53467210, 0x32674501},
830 {0x08, 0x08, 0x08, 0x08},
831 WDQLVL_PAT,
832 {30, 30, 30, 30, 30, 30, 30, 30,
833 30, 30},
834 {0, 0, 0, 0},
835 {0, 0, 0, 0, 0, 0, 0, 0,
836 0, 0, 0, 0, 0, 0, 0, 0,
837 0, 0, 0, 0, 0, 0, 0, 0,
838 0, 0, 0, 0, 0, 0, 0, 0},
839 {0, 0, 0, 0},
840 {0, 0, 0, 0, 0, 0, 0, 0,
841 0, 0, 0, 0, 0, 0, 0, 0,
842 0, 0, 0, 0, 0, 0, 0, 0,
843 0, 0, 0, 0, 0, 0, 0, 0}
844 }
845 }
846 },
847/* boardcnf[10] RENESAS Kriek(2rank) board with M3-N/SoC */
848 {
849 0x01,
850 0x01,
851 0x300,
852 0,
853 0x300,
854 0x0a0,
855 {
856 {
857 {0x02, 0x02},
858 0x00345201,
859 0x3201,
860 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
861 {0x08, 0x08, 0x08, 0x08},
862 WDQLVL_PAT,
863 {0, 0, 0, 0, 0, 0, 0, 0,
864 0, 0},
865 {0, 0, 0, 0},
866 {0, 0, 0, 0, 0, 0, 0, 0,
867 0, 0, 0, 0, 0, 0, 0, 0,
868 0, 0, 0, 0, 0, 0, 0, 0,
869 0, 0, 0, 0, 0, 0, 0, 0},
870 {0, 0, 0, 0},
871 {0, 0, 0, 0, 0, 0, 0, 0,
872 0, 0, 0, 0, 0, 0, 0, 0,
873 0, 0, 0, 0, 0, 0, 0, 0,
874 0, 0, 0, 0, 0, 0, 0, 0}
875 }
876 }
877 },
878/* boardcnf[11] RENESAS SALVATOR-X board with M3-N/SIP(8Gbit 2rank) */
879 {
880 0x01,
881 0x01,
882 0x300,
883 0,
884 0x300,
885 0x0a0,
886 {
887 {
Marek Vasut6c245a52018-12-12 18:06:39 +0100888#if (RCAR_DRAM_LPDDR4_MEMCONF == 2)
889 {0x04, 0x04},
890#else
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +0200891 {0x02, 0x02},
Marek Vasut6c245a52018-12-12 18:06:39 +0100892#endif
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +0200893 0x00342501,
894 0x3201,
895 {0x10672534, 0x43257106, 0x34527601, 0x71605243},
896 {0x08, 0x08, 0x08, 0x08},
897 WDQLVL_PAT,
898 {0, 0, 0, 0, 0, 0, 0, 0,
899 0, 0},
900 {0, 0, 0, 0},
901 {0, 0, 0, 0, 0, 0, 0, 0,
902 0, 0, 0, 0, 0, 0, 0, 0,
903 0, 0, 0, 0, 0, 0, 0, 0,
904 0, 0, 0, 0, 0, 0, 0, 0},
905 {0, 0, 0, 0},
906 {0, 0, 0, 0, 0, 0, 0, 0,
907 0, 0, 0, 0, 0, 0, 0, 0,
908 0, 0, 0, 0, 0, 0, 0, 0,
909 0, 0, 0, 0, 0, 0, 0, 0}
910 }
911 }
912 },
913/* boardcnf[12] RENESAS CONDOR board with V3H/SoC */
914 {
915 0x01,
916 0x1,
917 0x300,
918 0,
919 0x300,
920 0x0a0,
921 {
922 {
923 {0x02, 0x02},
924 0x00501342,
925 0x3201,
926 {0x70562134, 0x34526071, 0x23147506, 0x12430567},
927 {0x08, 0x08, 0x08, 0x08},
928 WDQLVL_PAT,
929 {0, 0, 0, 0, 0, 0, 0, 0,
930 0, 0},
931 {0, 0, 0, 0},
932 {0, 0, 0, 0, 0, 0, 0, 0,
933 0, 0, 0, 0, 0, 0, 0, 0,
934 0, 0, 0, 0, 0, 0, 0, 0,
935 0, 0, 0, 0, 0, 0, 0, 0},
936 {0, 0, 0, 0},
937 {0, 0, 0, 0, 0, 0, 0, 0,
938 0, 0, 0, 0, 0, 0, 0, 0,
939 0, 0, 0, 0, 0, 0, 0, 0,
940 0, 0, 0, 0, 0, 0, 0, 0}
941 }
942 }
943 },
944/* boardcnf[13] RENESAS KRIEK board with PM3/SoC */
945 {
946 0x05,
947 0x00,
948 0x2c0,
949 -320,
950 0x300,
951 0x0a0,
952 {
953 {
954 {0x02, 0x02},
955 0x00345201,
956 0x3201,
957 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
958 {0x08, 0x08, 0x08, 0x08},
959 WDQLVL_PAT,
960 {0, 0, 0, 0, 0, 0, 0, 0,
961 0, 0},
962 {0, 0, 0, 0},
963 {0, 0, 0, 0, 0, 0, 0, 0,
964 0, 0, 0, 0, 0, 0, 0, 0,
965 0, 0, 0, 0, 0, 0, 0, 0,
966 0, 0, 0, 0, 0, 0, 0, 0},
967 {0, 0, 0, 0},
968 {0, 0, 0, 0, 0, 0, 0, 0,
969 0, 0, 0, 0, 0, 0, 0, 0,
970 0, 0, 0, 0, 0, 0, 0, 0,
971 0, 0, 0, 0, 0, 0, 0, 0}
972 },
973 {
974 {0x02, 0x02},
975 0x00302154,
976 0x2310,
977 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
978 {0x08, 0x08, 0x08, 0x08},
979 WDQLVL_PAT,
980 {0, 0, 0, 0, 0, 0, 0, 0,
981 0, 0},
982 {0, 0, 0, 0},
983 {0, 0, 0, 0, 0, 0, 0, 0,
984 0, 0, 0, 0, 0, 0, 0, 0,
985 0, 0, 0, 0, 0, 0, 0, 0,
986 0, 0, 0, 0, 0, 0, 0, 0},
987 {0, 0, 0, 0},
988 {0, 0, 0, 0, 0, 0, 0, 0,
989 0, 0, 0, 0, 0, 0, 0, 0,
990 0, 0, 0, 0, 0, 0, 0, 0,
991 0, 0, 0, 0, 0, 0, 0, 0}
992 },
993 {
994 {0x02, 0x02},
995 0x00302154,
996 0x2310,
997 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
998 {0x08, 0x08, 0x08, 0x08},
999 WDQLVL_PAT,
1000 {0, 0, 0, 0, 0, 0, 0, 0,
1001 0, 0},
1002 {0, 0, 0, 0},
1003 {0, 0, 0, 0, 0, 0, 0, 0,
1004 0, 0, 0, 0, 0, 0, 0, 0,
1005 0, 0, 0, 0, 0, 0, 0, 0,
1006 0, 0, 0, 0, 0, 0, 0, 0},
1007 {0, 0, 0, 0},
1008 {0, 0, 0, 0, 0, 0, 0, 0,
1009 0, 0, 0, 0, 0, 0, 0, 0,
1010 0, 0, 0, 0, 0, 0, 0, 0,
1011 0, 0, 0, 0, 0, 0, 0, 0}
1012 },
1013 {
1014 {0xff, 0xff},
1015 0,
1016 0,
1017 {0, 0, 0, 0},
1018 {0, 0, 0, 0},
1019 WDQLVL_PAT,
1020 {0, 0, 0, 0, 0, 0, 0, 0,
1021 0, 0},
1022 {0, 0, 0, 0},
1023 {0, 0, 0, 0, 0, 0, 0, 0,
1024 0, 0, 0, 0, 0, 0, 0, 0,
1025 0, 0, 0, 0, 0, 0, 0, 0,
1026 0, 0, 0, 0, 0, 0, 0, 0},
1027 {0, 0, 0, 0},
1028 {0, 0, 0, 0, 0, 0, 0, 0,
1029 0, 0, 0, 0, 0, 0, 0, 0,
1030 0, 0, 0, 0, 0, 0, 0, 0,
1031 0, 0, 0, 0, 0, 0, 0, 0}
1032 }
1033 }
1034 },
1035/* boardcnf[14] SALVATOR-X board with H3 Ver.2.0 or later/SIP(16Gbit 1rank) */
1036 {
1037#if RCAR_DRAM_CHANNEL == 5
1038 0x05,
1039#else
1040 0x0f,
1041#endif
1042 0x01,
1043 0x300,
1044 0,
1045 0x300,
1046 0x0a0,
1047 {
1048 {
1049 {0x04, 0xff},
1050 0x00543210,
1051 0x2310,
1052 {0x70631425, 0x34527016, 0x43527610, 0x32104567},
1053 {0x08, 0x08, 0x08, 0x08},
1054 WDQLVL_PAT,
1055 {0, 0, 0, 0, 0, 0, 0, 0,
1056 0, 0},
1057 {0, 0, 0, 0},
1058 {0, 0, 0, 0, 0, 0, 0, 0,
1059 0, 0, 0, 0, 0, 0, 0, 0,
1060 0, 0, 0, 0, 0, 0, 0, 0,
1061 0, 0, 0, 0, 0, 0, 0, 0},
1062 {0, 0, 0, 0},
1063 {0, 0, 0, 0, 0, 0, 0, 0,
1064 0, 0, 0, 0, 0, 0, 0, 0,
1065 0, 0, 0, 0, 0, 0, 0, 0,
1066 0, 0, 0, 0, 0, 0, 0, 0}
1067 },
1068#if ((RCAR_DRAM_CHANNEL == 5) && (RCAR_DRAM_SPLIT == 2))
1069 {
1070 {0x04, 0xff},
1071 0x00543210,
1072 0x2301,
1073 {0x01327654, 0x02316457, 0x10234567, 0x01325467},
1074 {0x08, 0x08, 0x08, 0x08},
1075 WDQLVL_PAT,
1076 {0, 0, 0, 0, 0, 0, 0, 0,
1077 0, 0},
1078 {0, 0, 0, 0},
1079 {0, 0, 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 0, 0, 0, 0, 0,
1081 0, 0, 0, 0, 0, 0, 0, 0,
1082 0, 0, 0, 0, 0, 0, 0, 0},
1083 {0, 0, 0, 0},
1084 {0, 0, 0, 0, 0, 0, 0, 0,
1085 0, 0, 0, 0, 0, 0, 0, 0,
1086 0, 0, 0, 0, 0, 0, 0, 0,
1087 0, 0, 0, 0, 0, 0, 0, 0}
1088 },
1089#else
1090 {
1091 {0x04, 0xff},
1092 0x00105432,
1093 0x3210,
1094 {0x43256107, 0x07162354, 0x10234567, 0x01235467},
1095 {0x08, 0x08, 0x08, 0x08},
1096 WDQLVL_PAT,
1097 {0, 0, 0, 0, 0, 0, 0, 0,
1098 0, 0},
1099 {0, 0, 0, 0},
1100 {0, 0, 0, 0, 0, 0, 0, 0,
1101 0, 0, 0, 0, 0, 0, 0, 0,
1102 0, 0, 0, 0, 0, 0, 0, 0,
1103 0, 0, 0, 0, 0, 0, 0, 0},
1104 {0, 0, 0, 0},
1105 {0, 0, 0, 0, 0, 0, 0, 0,
1106 0, 0, 0, 0, 0, 0, 0, 0,
1107 0, 0, 0, 0, 0, 0, 0, 0,
1108 0, 0, 0, 0, 0, 0, 0, 0}
1109 },
1110#endif
1111 {
1112 {0x04, 0xff},
1113 0x00543210,
1114 0x2301,
1115 {0x01327654, 0x02316457, 0x10234567, 0x01325467},
1116 {0x08, 0x08, 0x08, 0x08},
1117 WDQLVL_PAT,
1118 {0, 0, 0, 0, 0, 0, 0, 0,
1119 0, 0},
1120 {0, 0, 0, 0},
1121 {0, 0, 0, 0, 0, 0, 0, 0,
1122 0, 0, 0, 0, 0, 0, 0, 0,
1123 0, 0, 0, 0, 0, 0, 0, 0,
1124 0, 0, 0, 0, 0, 0, 0, 0},
1125 {0, 0, 0, 0},
1126 {0, 0, 0, 0, 0, 0, 0, 0,
1127 0, 0, 0, 0, 0, 0, 0, 0,
1128 0, 0, 0, 0, 0, 0, 0, 0,
1129 0, 0, 0, 0, 0, 0, 0, 0}
1130 },
1131 {
1132 {0x04, 0xff},
1133 0x00543210,
1134 0x2301,
1135 {0x12034765, 0x23105467, 0x23017645, 0x32106745},
1136 {0x08, 0x08, 0x08, 0x08},
1137 WDQLVL_PAT,
1138 {0, 0, 0, 0, 0, 0, 0, 0,
1139 0, 0},
1140 {0, 0, 0, 0},
1141 {0, 0, 0, 0, 0, 0, 0, 0,
1142 0, 0, 0, 0, 0, 0, 0, 0,
1143 0, 0, 0, 0, 0, 0, 0, 0,
1144 0, 0, 0, 0, 0, 0, 0, 0},
1145 {0, 0, 0, 0},
1146 {0, 0, 0, 0, 0, 0, 0, 0,
1147 0, 0, 0, 0, 0, 0, 0, 0,
1148 0, 0, 0, 0, 0, 0, 0, 0,
1149 0, 0, 0, 0, 0, 0, 0, 0}
1150 }
1151 }
1152 },
1153/* boardcnf[15] RENESAS KRIEK board with H3N */
1154 {
1155 0x05,
1156 0x01,
1157 0x300,
1158 0,
1159 0x300,
1160 0x0a0,
1161 {
1162 {
1163 {0x02, 0x02},
1164 0x00345201,
1165 0x3201,
1166 {0x01672543, 0x45367012, 0x45632107, 0x60715234},
1167 {0x08, 0x08, 0x08, 0x08},
1168 WDQLVL_PAT,
1169 {0, 0, 0, 0, 0, 0, 0, 0,
1170 0, 0},
1171 {0, 0, 0, 0},
1172 {0, 0, 0, 0, 0, 0, 0, 0,
1173 0, 0, 0, 0, 0, 0, 0, 0,
1174 0, 0, 0, 0, 0, 0, 0, 0,
1175 0, 0, 0, 0, 0, 0, 0, 0},
1176 {0, 0, 0, 0},
1177 {0, 0, 0, 0, 0, 0, 0, 0,
1178 0, 0, 0, 0, 0, 0, 0, 0,
1179 0, 0, 0, 0, 0, 0, 0, 0,
1180 0, 0, 0, 0, 0, 0, 0, 0}
1181 },
1182 {
1183 {0x02, 0x02},
1184 0x00302154,
1185 0x2310,
1186 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
1187 {0x08, 0x08, 0x08, 0x08},
1188 WDQLVL_PAT,
1189 {0, 0, 0, 0, 0, 0, 0, 0,
1190 0, 0},
1191 {0, 0, 0, 0},
1192 {0, 0, 0, 0, 0, 0, 0, 0,
1193 0, 0, 0, 0, 0, 0, 0, 0,
1194 0, 0, 0, 0, 0, 0, 0, 0,
1195 0, 0, 0, 0, 0, 0, 0, 0},
1196 {0, 0, 0, 0},
1197 {0, 0, 0, 0, 0, 0, 0, 0,
1198 0, 0, 0, 0, 0, 0, 0, 0,
1199 0, 0, 0, 0, 0, 0, 0, 0,
1200 0, 0, 0, 0, 0, 0, 0, 0}
1201 },
1202 {
1203 {0x02, 0x02},
1204 0x00302154,
1205 0x2310,
1206 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
1207 {0x08, 0x08, 0x08, 0x08},
1208 WDQLVL_PAT,
1209 {0, 0, 0, 0, 0, 0, 0, 0,
1210 0, 0},
1211 {0, 0, 0, 0},
1212 {0, 0, 0, 0, 0, 0, 0, 0,
1213 0, 0, 0, 0, 0, 0, 0, 0,
1214 0, 0, 0, 0, 0, 0, 0, 0,
1215 0, 0, 0, 0, 0, 0, 0, 0},
1216 {0, 0, 0, 0},
1217 {0, 0, 0, 0, 0, 0, 0, 0,
1218 0, 0, 0, 0, 0, 0, 0, 0,
1219 0, 0, 0, 0, 0, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0}
1221 },
1222 {
1223 {0xff, 0xff},
1224 0,
1225 0,
1226 {0, 0, 0, 0},
1227 {0, 0, 0, 0},
1228 WDQLVL_PAT,
1229 {0, 0, 0, 0, 0, 0, 0, 0,
1230 0, 0},
1231 {0, 0, 0, 0},
1232 {0, 0, 0, 0, 0, 0, 0, 0,
1233 0, 0, 0, 0, 0, 0, 0, 0,
1234 0, 0, 0, 0, 0, 0, 0, 0,
1235 0, 0, 0, 0, 0, 0, 0, 0},
1236 {0, 0, 0, 0},
1237 {0, 0, 0, 0, 0, 0, 0, 0,
1238 0, 0, 0, 0, 0, 0, 0, 0,
1239 0, 0, 0, 0, 0, 0, 0, 0,
1240 0, 0, 0, 0, 0, 0, 0, 0}
1241 }
1242 }
Marek Vasut6c245a52018-12-12 18:06:39 +01001243 },
1244/* boardcnf[16] RENESAS KRIEK-P2P board with M3-W/SoC */
1245 {
1246 0x03,
1247 0x01,
1248 0x0320,
1249 0,
1250 0x0300,
1251 0x00a0,
1252 {
1253 {
1254 {0x04, 0x04},
1255 0x520314FFFF523041,
1256 0x3201,
1257 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
1258 {0x08, 0x08, 0x08, 0x08},
1259 WDQLVL_PAT,
1260 {0, 0, 0, 0, 0, 0, 0, 0,
1261 0, 0, 0, 0, 0, 0, 0, 0},
1262 {0, 0, 0, 0},
1263 {0, 0, 0, 0, 0, 0, 0, 0,
1264 0, 0, 0, 0, 0, 0, 0, 0,
1265 0, 0, 0, 0, 0, 0, 0, 0,
1266 0, 0, 0, 0, 0, 0, 0, 0},
1267 {0, 0, 0, 0},
1268 {0, 0, 0, 0, 0, 0, 0, 0,
1269 0, 0, 0, 0, 0, 0, 0, 0,
1270 0, 0, 0, 0, 0, 0, 0, 0,
1271 0, 0, 0, 0, 0, 0, 0, 0}
1272 },
1273 {
1274 {0x04, 0x04},
1275 0x314250FFFF312405,
1276 0x2310,
1277 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
1278 {0x08, 0x08, 0x08, 0x08},
1279 WDQLVL_PAT,
1280 {0, 0, 0, 0, 0, 0, 0, 0,
1281 0, 0, 0, 0, 0, 0, 0, 0},
1282 {0, 0, 0, 0},
1283 {0, 0, 0, 0, 0, 0, 0, 0,
1284 0, 0, 0, 0, 0, 0, 0, 0,
1285 0, 0, 0, 0, 0, 0, 0, 0,
1286 0, 0, 0, 0, 0, 0, 0, 0},
1287 {0, 0, 0, 0},
1288 {0, 0, 0, 0, 0, 0, 0, 0,
1289 0, 0, 0, 0, 0, 0, 0, 0,
1290 0, 0, 0, 0, 0, 0, 0, 0,
1291 0, 0, 0, 0, 0, 0, 0, 0}
1292 }
1293 }
1294 },
1295/* boardcnf[17] RENESAS KRIEK-P2P board with M3-N/SoC */
1296 {
1297 0x01,
1298 0x01,
1299 0x0300,
1300 0,
1301 0x0300,
1302 0x00a0,
1303 {
1304 {
1305 {0x04, 0x04},
1306 0x520314FFFF523041,
1307 0x3201,
1308 {0x01672543, 0x45361207, 0x45632107, 0x60715234},
1309 {0x08, 0x08, 0x08, 0x08},
1310 WDQLVL_PAT,
1311 {0, 0, 0, 0, 0, 0, 0, 0,
1312 0, 0, 0, 0, 0, 0, 0, 0},
1313 {0, 0, 0, 0},
1314 {0, 0, 0, 0, 0, 0, 0, 0,
1315 0, 0, 0, 0, 0, 0, 0, 0,
1316 0, 0, 0, 0, 0, 0, 0, 0,
1317 0, 0, 0, 0, 0, 0, 0, 0},
1318 {0, 0, 0, 0},
1319 {0, 0, 0, 0, 0, 0, 0, 0,
1320 0, 0, 0, 0, 0, 0, 0, 0,
1321 0, 0, 0, 0, 0, 0, 0, 0,
1322 0, 0, 0, 0, 0, 0, 0, 0}
1323 }
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001324 }
Marek Vasut3af20052019-02-25 14:57:08 +01001325 },
1326/* boardcnf[18] RENESAS SALVATOR-X board with M3-W/SIP(16Gbit 2rank) */
1327 {
1328 0x03,
1329 0x01,
1330 0x02c0,
1331 0,
1332 0x0300,
1333 0x00a0,
1334 {
1335 {
1336 {0x04, 0x04},
1337 0x00543210,
1338 0x3201,
1339 {0x70612543, 0x43251670, 0x45326170, 0x10672534},
1340 {0x08, 0x08, 0x08, 0x08},
1341 WDQLVL_PAT,
1342 {0, 0, 0, 0, 0, 0, 0, 0,
1343 0, 0},
1344 {0, 0, 0, 0},
1345 {0, 0, 0, 0, 0, 0, 0, 0,
1346 0, 0, 0, 0, 0, 0, 0, 0,
1347 0, 0, 0, 0, 0, 0, 0, 0,
1348 0, 0, 0, 0, 0, 0, 0, 0},
1349 {0, 0, 0, 0},
1350 {0, 0, 0, 0, 0, 0, 0, 0,
1351 0, 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 0, 0,
1353 0, 0, 0, 0, 0, 0, 0, 0}
1354 },
1355 {
1356 {0x04, 0x04},
1357 0x00543210,
1358 0x2310,
1359 {0x01327654, 0x34526107, 0x35421670, 0x70615324},
1360 {0x08, 0x08, 0x08, 0x08},
1361 WDQLVL_PAT,
1362 {0, 0, 0, 0, 0, 0, 0, 0,
1363 0, 0},
1364 {0, 0, 0, 0},
1365 {0, 0, 0, 0, 0, 0, 0, 0,
1366 0, 0, 0, 0, 0, 0, 0, 0,
1367 0, 0, 0, 0, 0, 0, 0, 0,
1368 0, 0, 0, 0, 0, 0, 0, 0},
1369 {0, 0, 0, 0},
1370 {0, 0, 0, 0, 0, 0, 0, 0,
1371 0, 0, 0, 0, 0, 0, 0, 0,
1372 0, 0, 0, 0, 0, 0, 0, 0,
1373 0, 0, 0, 0, 0, 0, 0, 0}
1374 }
1375 }
1376 },
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001377};
1378
1379void boardcnf_get_brd_clk(uint32_t brd, uint32_t * clk, uint32_t * div)
1380{
1381 uint32_t md;
1382
1383 if ((Prr_Product == PRR_PRODUCT_H3) && (Prr_Cut == PRR_PRODUCT_10)) {
1384 *clk = 50;
1385 *div = 3;
1386 } else {
1387 md = (mmio_read_32(RST_MODEMR) >> 13) & 0x3;
1388 switch (md) {
1389 case 0x0:
1390 *clk = 50;
1391 *div = 3;
1392 break;
1393 case 0x1:
1394 *clk = 60;
1395 *div = 3;
1396 break;
1397 case 0x2:
1398 *clk = 75;
1399 *div = 3;
1400 break;
1401 case 0x3:
1402 *clk = 100;
1403 *div = 3;
1404 break;
1405 }
1406 }
Marek Vasut6c245a52018-12-12 18:06:39 +01001407 (void)brd;
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001408}
1409
1410void boardcnf_get_ddr_mbps(uint32_t brd, uint32_t * mbps, uint32_t * div)
1411{
1412 uint32_t md;
1413
1414 md = (mmio_read_32(RST_MODEMR) >> 17) & 0x5;
1415 md = (md | (md >> 1)) & 0x3;
1416 switch (md) {
1417 case 0x0:
1418 *mbps = 3200;
1419 *div = 1;
1420 break;
1421 case 0x1:
1422 *mbps = 2800;
1423 *div = 1;
1424 break;
1425 case 0x2:
1426 *mbps = 2400;
1427 *div = 1;
1428 break;
1429 case 0x3:
1430 *mbps = 1600;
1431 *div = 1;
1432 break;
1433 }
Marek Vasut6c245a52018-12-12 18:06:39 +01001434 (void)brd;
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001435}
1436
1437#define _def_REFPERIOD 1890
1438
1439#define M3_SAMPLE_TT_A84 0xB866CC10, 0x3B250421
1440#define M3_SAMPLE_TT_A85 0xB866CC10, 0x3AA50421
1441#define M3_SAMPLE_TT_A86 0xB866CC10, 0x3AA48421
1442#define M3_SAMPLE_FF_B45 0xB866CC10, 0x3AB00C21
1443#define M3_SAMPLE_FF_B49 0xB866CC10, 0x39B10C21
1444#define M3_SAMPLE_FF_B56 0xB866CC10, 0x3AAF8C21
1445#define M3_SAMPLE_SS_E24 0xB866CC10, 0x3BA39421
1446#define M3_SAMPLE_SS_E28 0xB866CC10, 0x3C231421
1447#define M3_SAMPLE_SS_E32 0xB866CC10, 0x3C241421
1448
1449static const uint32_t TermcodeBySample[20][3] = {
1450 {M3_SAMPLE_TT_A84, 0x000158D5},
1451 {M3_SAMPLE_TT_A85, 0x00015955},
1452 {M3_SAMPLE_TT_A86, 0x00015955},
1453 {M3_SAMPLE_FF_B45, 0x00015690},
1454 {M3_SAMPLE_FF_B49, 0x00015753},
1455 {M3_SAMPLE_FF_B56, 0x00015793},
1456 {M3_SAMPLE_SS_E24, 0x00015996},
1457 {M3_SAMPLE_SS_E28, 0x000159D7},
1458 {M3_SAMPLE_SS_E32, 0x00015997},
1459 {0xFFFFFFFF, 0xFFFFFFFF, 0x0001554F}
1460};
1461
1462#ifdef BOARD_JUDGE_AUTO
1463/*
1464 * SAMPLE board detect function
1465 */
1466#define PFC_PMMR 0xE6060000U
1467#define PFC_PUEN5 0xE6060414U
1468#define PFC_PUEN6 0xE6060418U
1469#define PFC_PUD5 0xE6060454U
1470#define PFC_PUD6 0xE6060458U
1471#define GPIO_INDT5 0xE605500CU
1472#define GPIO_INDT6 0xE605540CU
1473
1474#define BIT25 (1<<25)
1475#define BIT22 (1<<22)
1476#define BIT15 (1<<15)
1477#define BIT0 (1)
1478#define GPIO_GPSR6 (0xE6060118U)
1479
1480#if (RCAR_GEN3_ULCB == 0)
1481static void pfc_write_and_poll(uint32_t a, uint32_t v)
1482{
1483 mmio_write_32(PFC_PMMR, ~v);
1484 v = ~mmio_read_32(PFC_PMMR);
1485 mmio_write_32(a, v);
1486 while (v != mmio_read_32(a)) ;
1487 dsb_sev();
1488}
1489#endif
1490
1491#ifndef RCAR_GEN3_ULCB
1492#define RCAR_GEN3_ULCB 0
1493#endif
1494
1495#if (RCAR_GEN3_ULCB == 0) /* non Starter Kit */
1496
1497static uint32_t opencheck_SSI_WS6(void)
1498{
1499 uint32_t dataL, down, up;
1500 uint32_t gpsr6_bak;
1501 uint32_t puen5_bak;
1502 uint32_t pud5_bak;
1503
1504 gpsr6_bak = mmio_read_32(GPIO_GPSR6);
1505 puen5_bak = mmio_read_32(PFC_PUEN5);
1506 pud5_bak = mmio_read_32(PFC_PUD5);
1507 dsb_sev();
1508
1509 dataL = (gpsr6_bak & ~BIT15);
1510 pfc_write_and_poll(GPIO_GPSR6, dataL);
1511
1512 /* Pull-Up/Down Enable (PUEN5[22]=1) */
1513 dataL = puen5_bak;
1514 dataL |= (BIT22);
1515 pfc_write_and_poll(PFC_PUEN5, dataL);
1516
1517 /* Pull-Down-Enable (PUD5[22]=0, PUEN5[22]=1) */
1518 dataL = pud5_bak;
1519 dataL &= ~(BIT22);
1520 pfc_write_and_poll(PFC_PUD5, dataL);
1521 /* GPSR6[15]=SSI_WS6 */
1522 rcar_micro_delay(10);
1523 down = (mmio_read_32(GPIO_INDT6) >> 15) & 0x1;
1524 dsb_sev();
1525
1526 /* Pull-Up-Enable (PUD5[22]=1, PUEN5[22]=1) */
1527 dataL = pud5_bak;
1528 dataL |= (BIT22);
1529 pfc_write_and_poll(PFC_PUD5, dataL);
1530
1531 /* GPSR6[15]=SSI_WS6 */
1532 rcar_micro_delay(10);
1533 up = (mmio_read_32(GPIO_INDT6) >> 15) & 0x1;
1534
1535 dsb_sev();
1536
1537 pfc_write_and_poll(GPIO_GPSR6, gpsr6_bak);
1538 pfc_write_and_poll(PFC_PUEN5, puen5_bak);
1539 pfc_write_and_poll(PFC_PUD5, pud5_bak);
1540
1541 if (down == up) {
1542 /* Same = Connect */
1543 return 0;
Marek Vasut6c245a52018-12-12 18:06:39 +01001544 } else {
1545 /* Diff = Open */
1546 return 1;
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001547 }
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001548}
1549
1550#endif
1551
1552static uint32_t _board_judge(void)
1553{
1554 uint32_t brd;
1555#if (RCAR_GEN3_ULCB==1)
1556 /* Starter Kit */
1557 if (Prr_Product == PRR_PRODUCT_H3) {
1558 if (Prr_Cut <= PRR_PRODUCT_11) {
1559 /* RENESAS Starter Kit(H3 Ver.1.x/SIP) board */
1560 brd = 2;
1561 } else {
1562 /* RENESAS Starter Kit(H3 Ver.2.0 or later/SIP) board */
1563#if (RCAR_DRAM_LPDDR4_MEMCONF == 0)
1564 brd = 7;
1565#else
1566 brd = 8;
1567#endif
1568 }
1569 } else if (Prr_Product == PRR_PRODUCT_M3) {
1570 /* RENESAS Starter Kit(M3-W/SIP 8Gbit 1rank) board */
1571 brd = 3;
1572 } else {
1573 /* RENESAS Starter Kit(M3-N/SIP) board */
1574 brd = 11;
1575 }
1576#else
1577 uint32_t usb2_ovc_open;
1578
1579 usb2_ovc_open = opencheck_SSI_WS6();
1580
1581 /* RENESAS Eva-borad */
Marek Vasut6c245a52018-12-12 18:06:39 +01001582 brd = 99;
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001583 if (Prr_Product == PRR_PRODUCT_V3H) {
1584 /* RENESAS Condor board */
1585 brd = 12;
1586 } else if (usb2_ovc_open) {
1587 if (Prr_Product == PRR_PRODUCT_M3N) {
1588 /* RENESAS Kriek board with M3-N */
1589 brd = 10;
1590 } else if (Prr_Product == PRR_PRODUCT_M3) {
1591 /* RENESAS Kriek board with M3-W */
1592 brd = 1;
Marek Vasut6c245a52018-12-12 18:06:39 +01001593 } else if ((Prr_Product == PRR_PRODUCT_H3)
1594 && (Prr_Cut<=PRR_PRODUCT_11)) {
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001595 /* RENESAS Kriek board with PM3 */
1596 brd = 13;
Marek Vasut6c245a52018-12-12 18:06:39 +01001597 } else if ((Prr_Product == PRR_PRODUCT_H3)
1598 && (Prr_Cut > PRR_PRODUCT_20)) {
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001599 /* RENESAS Kriek board with H3N */
1600 brd = 15;
1601 }
1602 } else {
1603 if (Prr_Product == PRR_PRODUCT_H3) {
1604 if (Prr_Cut <= PRR_PRODUCT_11) {
1605 /* RENESAS SALVATOR-X (H3 Ver.1.x/SIP) */
1606 brd = 2;
1607 } else if (Prr_Cut < PRR_PRODUCT_30) {
1608 /* RENESAS SALVATOR-X (H3 Ver.2.0/SIP) */
1609 brd = 7; // 8Gbit/1rank
1610 } else {
1611 /* RENESAS SALVATOR-X (H3 Ver.3.0/SIP) */
1612#if (RCAR_DRAM_LPDDR4_MEMCONF == 0)
1613 brd = 7;
1614#else
1615 brd = 8;
1616#endif
1617 }
1618 } else if (Prr_Product == PRR_PRODUCT_M3N) {
1619 /* RENESAS SALVATOR-X (M3-N/SIP) */
1620 brd = 11;
Marek Vasut3af20052019-02-25 14:57:08 +01001621 } else if ((Prr_Product == PRR_PRODUCT_M3) && (Prr_Cut < PRR_PRODUCT_30)) {
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001622 /* RENESAS SALVATOR-X (M3-W/SIP) */
1623 brd = 0;
Marek Vasut3af20052019-02-25 14:57:08 +01001624 } else if ((Prr_Product == PRR_PRODUCT_M3) && (Prr_Cut >= PRR_PRODUCT_30)) {
1625 /* RENESAS SALVATOR-X (M3-W ver.3.0/SIP) */
1626 brd = 18;
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001627 }
1628 }
1629#endif
Marek Vasut6c245a52018-12-12 18:06:39 +01001630
Jorge Ramirez-Ortiz47503d22018-09-23 09:36:52 +02001631 return brd;
1632}
1633#endif