1 /*
2  * Copyright 2021 NXP
3  * SPDX-License-Identifier: BSD-3-Clause
4  *
5  */
6 
7 #ifndef PIE_H
8 #define PIE_H
9 
10 struct pie {
11 	uint32_t addr;
12 	uint16_t data;
13 };
14 
15 static const struct pie pie_udimm[] = {
16 	{0x90000, 0x10},
17 	{0x90001, 0x400},
18 	{0x90002, 0x10e},
19 	{0x90003, 0x0},
20 	{0x90004, 0x0},
21 	{0x90005, 0x8},
22 	{0x90029, 0xb},
23 	{0x9002a, 0x480},
24 	{0x9002b, 0x109},
25 	{0x9002c, 0x8},
26 	{0x9002d, 0x448},
27 	{0x9002e, 0x139},
28 	{0x9002f, 0x8},
29 	{0x90030, 0x478},
30 	{0x90031, 0x109},
31 	{0x90032, 0x2},
32 	{0x90033, 0x10},
33 	{0x90034, 0x139},
34 	{0x90035, 0xb},
35 	{0x90036, 0x7c0},
36 	{0x90037, 0x139},
37 	{0x90038, 0x44},
38 	{0x90039, 0x633},
39 	{0x9003a, 0x159},
40 	{0x9003b, 0x14f},
41 	{0x9003c, 0x630},
42 	{0x9003d, 0x159},
43 	{0x9003e, 0x47},
44 	{0x9003f, 0x633},
45 	{0x90040, 0x149},
46 	{0x90041, 0x4f},
47 	{0x90042, 0x633},
48 	{0x90043, 0x179},
49 	{0x90044, 0x8},
50 	{0x90045, 0xe0},
51 	{0x90046, 0x109},
52 	{0x90047, 0x0},
53 	{0x90048, 0x7c8},
54 	{0x90049, 0x109},
55 	{0x9004a, 0x0},
56 	{0x9004b, 0x1},
57 	{0x9004c, 0x8},
58 	{0x9004d, 0x0},
59 	{0x9004e, 0x45a},
60 	{0x9004f, 0x9},
61 	{0x90050, 0x0},
62 	{0x90051, 0x448},
63 	{0x90052, 0x109},
64 	{0x90053, 0x40},
65 	{0x90054, 0x633},
66 	{0x90055, 0x179},
67 	{0x90056, 0x1},
68 	{0x90057, 0x618},
69 	{0x90058, 0x109},
70 	{0x90059, 0x40c0},
71 	{0x9005a, 0x633},
72 	{0x9005b, 0x149},
73 	{0x9005c, 0x8},
74 	{0x9005d, 0x4},
75 	{0x9005e, 0x48},
76 	{0x9005f, 0x4040},
77 	{0x90060, 0x633},
78 	{0x90061, 0x149},
79 	{0x90062, 0x0},
80 	{0x90063, 0x4},
81 	{0x90064, 0x48},
82 	{0x90065, 0x40},
83 	{0x90066, 0x633},
84 	{0x90067, 0x149},
85 	{0x90068, 0x10},
86 	{0x90069, 0x4},
87 	{0x9006a, 0x18},
88 	{0x9006b, 0x0},
89 	{0x9006c, 0x4},
90 	{0x9006d, 0x78},
91 	{0x9006e, 0x549},
92 	{0x9006f, 0x633},
93 	{0x90070, 0x159},
94 	{0x90071, 0xd49},
95 	{0x90072, 0x633},
96 	{0x90073, 0x159},
97 	{0x90074, 0x94a},
98 	{0x90075, 0x633},
99 	{0x90076, 0x159},
100 	{0x90077, 0x441},
101 	{0x90078, 0x633},
102 	{0x90079, 0x149},
103 	{0x9007a, 0x42},
104 	{0x9007b, 0x633},
105 	{0x9007c, 0x149},
106 	{0x9007d, 0x1},
107 	{0x9007e, 0x633},
108 	{0x9007f, 0x149},
109 	{0x90080, 0x0},
110 	{0x90081, 0xe0},
111 	{0x90082, 0x109},
112 	{0x90083, 0xa},
113 	{0x90084, 0x10},
114 	{0x90085, 0x109},
115 	{0x90086, 0x9},
116 	{0x90087, 0x3c0},
117 	{0x90088, 0x149},
118 	{0x90089, 0x9},
119 	{0x9008a, 0x3c0},
120 	{0x9008b, 0x159},
121 	{0x9008c, 0x18},
122 	{0x9008d, 0x10},
123 	{0x9008e, 0x109},
124 	{0x9008f, 0x0},
125 	{0x90090, 0x3c0},
126 	{0x90091, 0x109},
127 	{0x90092, 0x18},
128 	{0x90093, 0x4},
129 	{0x90094, 0x48},
130 	{0x90095, 0x18},
131 	{0x90096, 0x4},
132 	{0x90097, 0x58},
133 	{0x90098, 0xb},
134 	{0x90099, 0x10},
135 	{0x9009a, 0x109},
136 	{0x9009b, 0x1},
137 	{0x9009c, 0x10},
138 	{0x9009d, 0x109},
139 	{0x9009e, 0x5},
140 	{0x9009f, 0x7c0},
141 	{0x900a0, 0x109},
142 	{0x900a1, 0x0},
143 	{0x900a2, 0x8140},
144 	{0x900a3, 0x10c},
145 	{0x900a4, 0x10},
146 	{0x900a5, 0x8138},
147 	{0x900a6, 0x10c},
148 	{0x900a7, 0x8},
149 	{0x900a8, 0x7c8},
150 	{0x900a9, 0x101},
151 	{0x900aa, 0x8},
152 	{0x900ab, 0x448},
153 	{0x900ac, 0x109},
154 	{0x900ad, 0xf},
155 	{0x900ae, 0x7c0},
156 	{0x900af, 0x109},
157 	{0x900b0, 0x47},
158 	{0x900b1, 0x630},
159 	{0x900b2, 0x109},
160 	{0x900b3, 0x8},
161 	{0x900b4, 0x618},
162 	{0x900b5, 0x109},
163 	{0x900b6, 0x8},
164 	{0x900b7, 0xe0},
165 	{0x900b8, 0x109},
166 	{0x900b9, 0x0},
167 	{0x900ba, 0x7c8},
168 	{0x900bb, 0x109},
169 	{0x900bc, 0x8},
170 	{0x900bd, 0x8140},
171 	{0x900be, 0x10c},
172 	{0x900bf, 0x0},
173 	{0x900c0, 0x478},
174 	{0x900c1, 0x109},
175 	{0x900c2, 0x0},
176 	{0x900c3, 0x1},
177 	{0x900c4, 0x8},
178 	{0x900c5, 0x8},
179 	{0x900c6, 0x4},
180 	{0x900c7, 0x8},
181 	{0x900c8, 0x8},
182 	{0x900c9, 0x7c8},
183 	{0x900ca, 0x101},
184 	{0x90006, 0x0},
185 	{0x90007, 0x0},
186 	{0x90008, 0x8},
187 	{0x90009, 0x0},
188 	{0x9000a, 0x0},
189 	{0x9000b, 0x0},
190 	{0xd00e7, 0x400},
191 	{0x90017, 0x0},
192 	{0x90026, 0x2b},
193 };
194 
195 static const struct pie pie_rdimm[] = {
196 	{0x90000, 0x10},
197 	{0x90001, 0x400},
198 	{0x90002, 0x10e},
199 	{0x90003, 0x0},
200 	{0x90004, 0x0},
201 	{0x90005, 0x8},
202 	{0x40000, 0x10},
203 	{0x40020, 0x0},
204 	{0x40040, 0x0},
205 	{0x40060, 0x0},
206 	{0x40001, 0x70a},
207 	{0x40021, 0x7005},
208 	{0x40041, 0x0},
209 	{0x40061, 0x2001},
210 	{0x40002, 0x4010},
211 	{0x40022, 0x0},
212 	{0x40042, 0x0},
213 	{0x40062, 0x0},
214 	{0x90029, 0x10},
215 	{0x9002a, 0x400},
216 	{0x9002b, 0x16e},
217 	{0x9002c, 0x8},
218 	{0x9002d, 0x370},
219 	{0x9002e, 0x169},
220 	{0x9002f, 0x8},
221 	{0x90030, 0x7aa},
222 	{0x90031, 0x6a},
223 	{0x90032, 0x10},
224 	{0x90033, 0x7b2},
225 	{0x90034, 0x6a},
226 	{0x90035, 0x0},
227 	{0x90036, 0x48a},
228 	{0x90037, 0x6a},
229 	{0x90038, 0x9},
230 	{0x90039, 0x480},
231 	{0x9003a, 0x16a},
232 	{0x9003b, 0x4},
233 	{0x9003c, 0x790},
234 	{0x9003d, 0x16a},
235 	{0x9003e, 0xc},
236 	{0x9003f, 0x408},
237 	{0x90040, 0x169},
238 	{0x90041, 0xa},
239 	{0x90042, 0x0},
240 	{0x90043, 0x68},
241 	{0x90044, 0x0},
242 	{0x90045, 0x408},
243 	{0x90046, 0x169},
244 	{0x90047, 0x1},
245 	{0x90048, 0x480},
246 	{0x90049, 0x16a},
247 	{0x9004a, 0xb},
248 	{0x9004b, 0x480},
249 	{0x9004c, 0x109},
250 	{0x9004d, 0x8},
251 	{0x9004e, 0x448},
252 	{0x9004f, 0x139},
253 	{0x90050, 0x78},
254 	{0x90051, 0x8},
255 	{0x90052, 0x139},
256 	{0x90053, 0x2},
257 	{0x90054, 0x10},
258 	{0x90055, 0x139},
259 	{0x90056, 0xb},
260 	{0x90057, 0x7c0},
261 	{0x90058, 0x139},
262 	{0x90059, 0x44},
263 	{0x9005a, 0x633},
264 	{0x9005b, 0x159},
265 	{0x9005c, 0x14f},
266 	{0x9005d, 0x630},
267 	{0x9005e, 0x159},
268 	{0x9005f, 0x47},
269 	{0x90060, 0x633},
270 	{0x90061, 0x149},
271 	{0x90062, 0x4f},
272 	{0x90063, 0x633},
273 	{0x90064, 0x179},
274 	{0x90065, 0x8},
275 	{0x90066, 0xe0},
276 	{0x90067, 0x109},
277 	{0x90068, 0x0},
278 	{0x90069, 0x7c8},
279 	{0x9006a, 0x109},
280 	{0x9006b, 0x0},
281 	{0x9006c, 0x1},
282 	{0x9006d, 0x8},
283 	{0x9006e, 0x0},
284 	{0x9006f, 0x45a},
285 	{0x90070, 0x9},
286 	{0x90071, 0x0},
287 	{0x90072, 0x448},
288 	{0x90073, 0x109},
289 	{0x90074, 0x40},
290 	{0x90075, 0x633},
291 	{0x90076, 0x179},
292 	{0x90077, 0x1},
293 	{0x90078, 0x618},
294 	{0x90079, 0x109},
295 	{0x9007a, 0x40c0},
296 	{0x9007b, 0x633},
297 	{0x9007c, 0x149},
298 	{0x9007d, 0x8},
299 	{0x9007e, 0x4},
300 	{0x9007f, 0x48},
301 	{0x90080, 0x4040},
302 	{0x90081, 0x633},
303 	{0x90082, 0x149},
304 	{0x90083, 0x0},
305 	{0x90084, 0x4},
306 	{0x90085, 0x48},
307 	{0x90086, 0x40},
308 	{0x90087, 0x633},
309 	{0x90088, 0x149},
310 	{0x90089, 0x10},
311 	{0x9008a, 0x4},
312 	{0x9008b, 0x18},
313 	{0x9008c, 0x0},
314 	{0x9008d, 0x4},
315 	{0x9008e, 0x78},
316 	{0x9008f, 0x549},
317 	{0x90090, 0x633},
318 	{0x90091, 0x159},
319 	{0x90092, 0xd49},
320 	{0x90093, 0x633},
321 	{0x90094, 0x159},
322 	{0x90095, 0x94a},
323 	{0x90096, 0x633},
324 	{0x90097, 0x159},
325 	{0x90098, 0x441},
326 	{0x90099, 0x633},
327 	{0x9009a, 0x149},
328 	{0x9009b, 0x42},
329 	{0x9009c, 0x633},
330 	{0x9009d, 0x149},
331 	{0x9009e, 0x1},
332 	{0x9009f, 0x633},
333 	{0x900a0, 0x149},
334 	{0x900a1, 0x0},
335 	{0x900a2, 0xe0},
336 	{0x900a3, 0x109},
337 	{0x900a4, 0xa},
338 	{0x900a5, 0x10},
339 	{0x900a6, 0x109},
340 	{0x900a7, 0x9},
341 	{0x900a8, 0x3c0},
342 	{0x900a9, 0x149},
343 	{0x900aa, 0x9},
344 	{0x900ab, 0x3c0},
345 	{0x900ac, 0x159},
346 	{0x900ad, 0x18},
347 	{0x900ae, 0x10},
348 	{0x900af, 0x109},
349 	{0x900b0, 0x0},
350 	{0x900b1, 0x3c0},
351 	{0x900b2, 0x109},
352 	{0x900b3, 0x18},
353 	{0x900b4, 0x4},
354 	{0x900b5, 0x48},
355 	{0x900b6, 0x18},
356 	{0x900b7, 0x4},
357 	{0x900b8, 0x58},
358 	{0x900b9, 0xb},
359 	{0x900ba, 0x10},
360 	{0x900bb, 0x109},
361 	{0x900bc, 0x1},
362 	{0x900bd, 0x10},
363 	{0x900be, 0x109},
364 	{0x900bf, 0x5},
365 	{0x900c0, 0x7c0},
366 	{0x900c1, 0x109},
367 	{0x900c2, 0x3},
368 	{0x900c3, 0x370},
369 	{0x900c4, 0x169},
370 	{0x900c5, 0x3},
371 	{0x900c6, 0x8},
372 	{0x900c7, 0x139},
373 	{0x900c8, 0x0},
374 	{0x900c9, 0x400},
375 	{0x900ca, 0x16e},
376 	{0x900cb, 0x8},
377 	{0x900cc, 0x478},
378 	{0x900cd, 0x109},
379 	{0x900ce, 0x0},
380 	{0x900cf, 0x8140},
381 	{0x900d0, 0x10c},
382 	{0x900d1, 0x10},
383 	{0x900d2, 0x8138},
384 	{0x900d3, 0x10c},
385 	{0x900d4, 0x8},
386 	{0x900d5, 0x7c8},
387 	{0x900d6, 0x101},
388 	{0x900d7, 0x7a},
389 	{0x900d8, 0x8},
390 	{0x900d9, 0x109},
391 	{0x900da, 0x8},
392 	{0x900db, 0x448},
393 	{0x900dc, 0x109},
394 	{0x900dd, 0xf},
395 	{0x900de, 0x7c0},
396 	{0x900df, 0x109},
397 	{0x900e0, 0x47},
398 	{0x900e1, 0x630},
399 	{0x900e2, 0x109},
400 	{0x900e3, 0x8},
401 	{0x900e4, 0x618},
402 	{0x900e5, 0x109},
403 	{0x900e6, 0x8},
404 	{0x900e7, 0xe0},
405 	{0x900e8, 0x109},
406 	{0x900e9, 0x0},
407 	{0x900ea, 0x8},
408 	{0x900eb, 0x109},
409 	{0x900ec, 0x0},
410 	{0x900ed, 0x7c8},
411 	{0x900ee, 0x109},
412 	{0x900ef, 0x8},
413 	{0x900f0, 0x8140},
414 	{0x900f1, 0x10c},
415 	{0x900f2, 0x0},
416 	{0x900f3, 0x478},
417 	{0x900f4, 0x109},
418 	{0x900f5, 0x0},
419 	{0x900f6, 0x1},
420 	{0x900f7, 0x8},
421 	{0x900f8, 0x8},
422 	{0x900f9, 0x4},
423 	{0x900fa, 0x8},
424 	{0x900fb, 0x8},
425 	{0x900fc, 0x7c8},
426 	{0x900fd, 0x101},
427 	{0x90006, 0x0},
428 	{0x90007, 0x0},
429 	{0x90008, 0x8},
430 	{0x90009, 0x0},
431 	{0x9000a, 0x0},
432 	{0x9000b, 0x0},
433 	{0xd00e7, 0x400},
434 	{0x90017, 0x0},
435 	{0x90026, 0x3a},
436 };
437 
438 static const struct pie pie_lrdimm[] = {
439 	{0x90000, 0x10},
440 	{0x90001, 0x400},
441 	{0x90002, 0x10e},
442 	{0x90003, 0x0},
443 	{0x90004, 0x0},
444 	{0x90005, 0x8},
445 	{0x90029, 0xb},
446 	{0x9002a, 0x480},
447 	{0x9002b, 0x109},
448 	{0x9002c, 0x8},
449 	{0x9002d, 0x448},
450 	{0x9002e, 0x139},
451 	{0x9002f, 0x78},
452 	{0x90030, 0x8},
453 	{0x90031, 0x139},
454 	{0x90032, 0x2},
455 	{0x90033, 0x10},
456 	{0x90034, 0x139},
457 	{0x90035, 0xb},
458 	{0x90036, 0x7c0},
459 	{0x90037, 0x139},
460 	{0x90038, 0x44},
461 	{0x90039, 0x633},
462 	{0x9003a, 0x159},
463 	{0x9003b, 0x14f},
464 	{0x9003c, 0x630},
465 	{0x9003d, 0x159},
466 	{0x9003e, 0x47},
467 	{0x9003f, 0x633},
468 	{0x90040, 0x149},
469 	{0x90041, 0x4f},
470 	{0x90042, 0x633},
471 	{0x90043, 0x179},
472 	{0x90044, 0x8},
473 	{0x90045, 0xe0},
474 	{0x90046, 0x109},
475 	{0x90047, 0x0},
476 	{0x90048, 0x7c8},
477 	{0x90049, 0x109},
478 	{0x9004a, 0x0},
479 	{0x9004b, 0x1},
480 	{0x9004c, 0x8},
481 	{0x9004d, 0x0},
482 	{0x9004e, 0x45a},
483 	{0x9004f, 0x9},
484 	{0x90050, 0x0},
485 	{0x90051, 0x448},
486 	{0x90052, 0x109},
487 	{0x90053, 0x40},
488 	{0x90054, 0x633},
489 	{0x90055, 0x179},
490 	{0x90056, 0x1},
491 	{0x90057, 0x618},
492 	{0x90058, 0x109},
493 	{0x90059, 0x40c0},
494 	{0x9005a, 0x633},
495 	{0x9005b, 0x149},
496 	{0x9005c, 0x8},
497 	{0x9005d, 0x4},
498 	{0x9005e, 0x48},
499 	{0x9005f, 0x4040},
500 	{0x90060, 0x633},
501 	{0x90061, 0x149},
502 	{0x90062, 0x0},
503 	{0x90063, 0x4},
504 	{0x90064, 0x48},
505 	{0x90065, 0x40},
506 	{0x90066, 0x633},
507 	{0x90067, 0x149},
508 	{0x90068, 0x10},
509 	{0x90069, 0x4},
510 	{0x9006a, 0x18},
511 	{0x9006b, 0x0},
512 	{0x9006c, 0x4},
513 	{0x9006d, 0x78},
514 	{0x9006e, 0x549},
515 	{0x9006f, 0x633},
516 	{0x90070, 0x159},
517 	{0x90071, 0xd49},
518 	{0x90072, 0x633},
519 	{0x90073, 0x159},
520 	{0x90074, 0x94a},
521 	{0x90075, 0x633},
522 	{0x90076, 0x159},
523 	{0x90077, 0x441},
524 	{0x90078, 0x633},
525 	{0x90079, 0x149},
526 	{0x9007a, 0x42},
527 	{0x9007b, 0x633},
528 	{0x9007c, 0x149},
529 	{0x9007d, 0x1},
530 	{0x9007e, 0x633},
531 	{0x9007f, 0x149},
532 	{0x90080, 0x0},
533 	{0x90081, 0xe0},
534 	{0x90082, 0x109},
535 	{0x90083, 0xa},
536 	{0x90084, 0x10},
537 	{0x90085, 0x109},
538 	{0x90086, 0x9},
539 	{0x90087, 0x3c0},
540 	{0x90088, 0x149},
541 	{0x90089, 0x9},
542 	{0x9008a, 0x3c0},
543 	{0x9008b, 0x159},
544 	{0x9008c, 0x18},
545 	{0x9008d, 0x10},
546 	{0x9008e, 0x109},
547 	{0x9008f, 0x0},
548 	{0x90090, 0x3c0},
549 	{0x90091, 0x109},
550 	{0x90092, 0x18},
551 	{0x90093, 0x4},
552 	{0x90094, 0x48},
553 	{0x90095, 0x18},
554 	{0x90096, 0x4},
555 	{0x90097, 0x58},
556 	{0x90098, 0xb},
557 	{0x90099, 0x10},
558 	{0x9009a, 0x109},
559 	{0x9009b, 0x1},
560 	{0x9009c, 0x10},
561 	{0x9009d, 0x109},
562 	{0x9009e, 0x5},
563 	{0x9009f, 0x7c0},
564 	{0x900a0, 0x109},
565 	{0x900a1, 0x3},
566 	{0x900a2, 0x8},
567 	{0x900a3, 0x139},
568 	{0x900a4, 0x0},
569 	{0x900a5, 0x400},
570 	{0x900a6, 0x16e},
571 	{0x900a7, 0x8},
572 	{0x900a8, 0x478},
573 	{0x900a9, 0x109},
574 	{0x900aa, 0x0},
575 	{0x900ab, 0x8140},
576 	{0x900ac, 0x10c},
577 	{0x900ad, 0x10},
578 	{0x900ae, 0x8138},
579 	{0x900af, 0x10c},
580 	{0x900b0, 0x8},
581 	{0x900b1, 0x7c8},
582 	{0x900b2, 0x101},
583 	{0x900b3, 0x7a},
584 	{0x900b4, 0x8},
585 	{0x900b5, 0x109},
586 	{0x900b6, 0x8},
587 	{0x900b7, 0x448},
588 	{0x900b8, 0x109},
589 	{0x900b9, 0xf},
590 	{0x900ba, 0x7c0},
591 	{0x900bb, 0x109},
592 	{0x900bc, 0x47},
593 	{0x900bd, 0x630},
594 	{0x900be, 0x109},
595 	{0x900bf, 0x8},
596 	{0x900c0, 0x618},
597 	{0x900c1, 0x109},
598 	{0x900c2, 0x8},
599 	{0x900c3, 0xe0},
600 	{0x900c4, 0x109},
601 	{0x900c5, 0x0},
602 	{0x900c6, 0x8},
603 	{0x900c7, 0x109},
604 	{0x900c8, 0x0},
605 	{0x900c9, 0x7c8},
606 	{0x900ca, 0x109},
607 	{0x900cb, 0x8},
608 	{0x900cc, 0x8140},
609 	{0x900cd, 0x10c},
610 	{0x900ce, 0x0},
611 	{0x900cf, 0x478},
612 	{0x900d0, 0x109},
613 	{0x900d1, 0x0},
614 	{0x900d2, 0x1},
615 	{0x900d3, 0x8},
616 	{0x900d4, 0x8},
617 	{0x900d5, 0x4},
618 	{0x900d6, 0x8},
619 	{0x900d7, 0x8},
620 	{0x900d8, 0x7c8},
621 	{0x900d9, 0x101},
622 	{0x90006, 0x0},
623 	{0x90007, 0x0},
624 	{0x90008, 0x8},
625 	{0x90009, 0x0},
626 	{0x9000a, 0x0},
627 	{0x9000b, 0x0},
628 	{0xd00e7, 0x400},
629 	{0x90017, 0x0},
630 	{0x90026, 0x2e},
631 };
632 #endif
633