blob: a2310f23be57fb5d9ed245f9e789fa007c448d07 [file] [log] [blame]
Pankaj Guptac518de42020-12-09 14:02:39 +05301/*
2 * Copyright 2021 NXP
3 * SPDX-License-Identifier: BSD-3-Clause
4 *
5 */
6
7#ifndef MESSAGE_H
8#define MESSAGE_H
9
10#ifdef DEBUG
11struct phy_msg {
12 uint32_t index;
13 const char *msg;
14};
15
Boyan Karatotev05e9d4d2022-11-22 14:31:41 +000016static const struct phy_msg messages_1d[] = {
Pankaj Guptac518de42020-12-09 14:02:39 +053017 {0x00000001,
18 "PMU1:prbsGenCtl:%x\n"
19 },
20 {0x00010000,
21 "PMU1: loading 2D acsm sequence\n"
22 },
23 {0x00020000,
24 "PMU1: loading 1D acsm sequence\n"
25 },
26 {0x00030002,
27 "PMU3: %d memclocks @ %d to get half of 300ns\n"
28 },
29 {0x00040000,
30 "PMU: Error: User requested MPR read pattern for read DQS training in DDR3 Mode\n"
31 },
32 {0x00050000,
33 "PMU3: Running 1D search for left eye edge\n"
34 },
35 {0x00060001,
36 "PMU1: In Phase Left Edge Search cs %d\n"
37 },
38 {0x00070001,
39 "PMU1: Out of Phase Left Edge Search cs %d\n"
40 },
41 {0x00080000,
42 "PMU3: Running 1D search for right eye edge\n"
43 },
44 {0x00090001,
45 "PMU1: In Phase Right Edge Search cs %d\n"
46 },
47 {0x000a0001,
48 "PMU1: Out of Phase Right Edge Search cs %d\n"
49 },
50 {0x000b0001,
51 "PMU1: mxRdLat training pstate %d\n"
52 },
53 {0x000c0001,
54 "PMU1: mxRdLat search for cs %d\n"
55 },
56 {0x000d0001,
57 "PMU0: MaxRdLat non consistent DtsmLoThldXingInd 0x%03x\n"
58 },
59 {0x000e0003,
60 "PMU4: CS %d Dbyte %d worked with DFIMRL = %d DFICLKs\n"
61 },
62 {0x000f0004,
63 "PMU3: MaxRdLat Read Lane err mask for csn %d, DFIMRL %2d DFIClks, dbyte %d = 0x%03x\n"
64 },
65 {0x00100003,
66 "PMU3: MaxRdLat Read Lane err mask for csn %d DFIMRL %2d, All dbytes = 0x%03x\n"
67 },
68 {0x00110001,
69 "PMU: Error: CS%d failed to find a DFIMRL setting that worked for all bytes during MaxRdLat training\n"
70 },
71 {0x00120002,
72 "PMU3: Smallest passing DFIMRL for all dbytes in CS%d = %d DFIClks\n"
73 },
74 {0x00130000,
75 "PMU: Error: No passing DFIMRL value found for any chip select during MaxRdLat training\n"
76 },
77 {0x00140003,
78 "PMU: Error: Dbyte %d lane %d txDqDly passing region is too small (width = %d)\n"
79 },
80 {0x00150006,
81 "PMU10: Adjusting rxclkdly db %d nib %d from %d+%d=%d->%d\n"
82 },
83 {0x00160000,
84 "PMU4: TxDqDly Passing Regions (EyeLeft EyeRight -> EyeCenter) Units=1/32 UI\n"
85 },
86 {0x00170005,
87 "PMU4: DB %d Lane %d: %3d %3d -> %3d\n"
88 },
89 {0x00180002,
90 "PMU2: TXDQ delayLeft[%2d] = %3d (DISCONNECTED)\n"
91 },
92 {0x00190004,
93 "PMU2: TXDQ delayLeft[%2d] = %3d oopScaled = %3d selectOop %d\n"
94 },
95 {0x001a0002,
96 "PMU2: TXDQ delayRight[%2d] = %3d (DISCONNECTED)\n"
97 },
98 {0x001b0004,
99 "PMU2: TXDQ delayRight[%2d] = %3d oopScaled = %3d selectOop %d\n"
100 },
101 {0x001c0003,
102 "PMU: Error: Dbyte %d lane %d txDqDly passing region is too small (width = %d)\n"
103 },
104 {0x001d0000,
105 "PMU4: TxDqDly Passing Regions (EyeLeft EyeRight -> EyeCenter) Units=1/32 UI\n"
106 },
107 {0x001e0002,
108 "PMU4: DB %d Lane %d: (DISCONNECTED)\n"
109 },
110 {0x001f0005,
111 "PMU4: DB %d Lane %d: %3d %3d -> %3d\n"
112 },
113 {0x00200002,
114 "PMU3: Running 1D search csn %d for DM Right/NotLeft(%d) eye edge\n"
115 },
116 {0x00210002,
117 "PMU3: WrDq DM byte%2d with Errcnt %d\n"
118 },
119 {0x00220002,
120 "PMU3: WrDq DM byte%2d avgDly 0x%04x\n"
121 },
122 {0x00230002,
123 "PMU1: WrDq DM byte%2d with Errcnt %d\n"
124 },
125 {0x00240001,
126 "PMU: Error: Dbyte %d txDqDly DM training did not start inside the eye\n"
127 },
128 {0x00250000,
129 "PMU4: DM TxDqDly Passing Regions (EyeLeft EyeRight -> EyeCenter) Units=1/32 UI\n"
130 },
131 {0x00260002,
132 "PMU4: DB %d Lane %d: (DISCONNECTED)\n"
133 },
134 {0x00270005,
135 "PMU4: DB %d Lane %d: %3d %3d -> %3d\n"
136 },
137 {0x00280003,
138 "PMU: Error: Dbyte %d lane %d txDqDly DM passing region is too small (width = %d)\n"
139 },
140 {0x00290004,
141 "PMU3: Errcnt for MRD/MWD search nib %2d delay = (%d, 0x%02x) = %d\n"
142 },
143 {0x002a0000,
144 "PMU3: Precharge all open banks\n"
145 },
146 {0x002b0002,
147 "PMU: Error: Dbyte %d nibble %d found mutliple working coarse delay setting for MRD/MWD\n"
148 },
149 {0x002c0000,
150 "PMU4: MRD Passing Regions (coarseVal, fineLeft fineRight -> fineCenter)\n"
151 },
152 {0x002d0000,
153 "PMU4: MWD Passing Regions (coarseVal, fineLeft fineRight -> fineCenter)\n"
154 },
155 {0x002e0004,
156 "PMU10: Warning: DB %d nibble %d has multiple working coarse delays, %d and %d, choosing the smaller delay\n"
157 },
158 {0x002f0003,
159 "PMU: Error: Dbyte %d nibble %d MRD/MWD passing region is too small (width = %d)\n"
160 },
161 {0x00300006,
162 "PMU4: DB %d nibble %d: %3d, %3d %3d -> %3d\n"
163 },
164 {0x00310002,
165 "PMU1: Start MRD/nMWD %d for csn %d\n"
166 },
167 {0x00320002,
168 "PMU2: RXDQS delayLeft[%2d] = %3d (DISCONNECTED)\n"
169 },
170 {0x00330006,
171 "PMU2: RXDQS delayLeft[%2d] = %3d delayOop[%2d] = %3d OopScaled %4d, selectOop %d\n"
172 },
173 {0x00340002,
174 "PMU2: RXDQS delayRight[%2d] = %3d (DISCONNECTED)\n"
175 },
176 {0x00350006,
177 "PMU2: RXDQS delayRight[%2d] = %3d delayOop[%2d] = %4d OopScaled %4d, selectOop %d\n"
178 },
179 {0x00360000,
180 "PMU4: RxClkDly Passing Regions (EyeLeft EyeRight -> EyeCenter)\n"
181 },
182 {0x00370002,
183 "PMU4: DB %d nibble %d: (DISCONNECTED)\n"
184 },
185 {0x00380005,
186 "PMU4: DB %d nibble %d: %3d %3d -> %3d\n"
187 },
188 {0x00390003,
189 "PMU: Error: Dbyte %d nibble %d rxClkDly passing region is too small (width = %d)\n"
190 },
191 {0x003a0002,
192 "PMU0: goodbar = %d for RDWR_BLEN %d\n"
193 },
194 {0x003b0001,
195 "PMU3: RxClkDly = %d\n"
196 },
197 {0x003c0005,
198 "PMU0: db %d l %d absLane %d -> bottom %d top %d\n"
199 },
200 {0x003d0009,
201 "PMU3: BYTE %d - %3d %3d %3d %3d %3d %3d %3d %3d\n"
202 },
203 {0x003e0002,
204 "PMU: Error: dbyte %d lane %d's per-lane vrefDAC's had no passing region\n"
205 },
206 {0x003f0004,
207 "PMU0: db%d l%d - %d %d\n"
208 },
209 {0x00400002,
210 "PMU0: goodbar = %d for RDWR_BLEN %d\n"
211 },
212 {0x00410004,
213 "PMU3: db%d l%d saw %d issues at rxClkDly %d\n"
214 },
215 {0x00420003,
216 "PMU3: db%d l%d first saw a pass->fail edge at rxClkDly %d\n"
217 },
218 {0x00430002,
219 "PMU3: lane %d PBD = %d\n"
220 },
221 {0x00440003,
222 "PMU3: db%d l%d first saw a DBI pass->fail edge at rxClkDly %d\n"
223 },
224 {0x00450003,
225 "PMU2: db%d l%d already passed rxPBD = %d\n"
226 },
227 {0x00460003,
228 "PMU0: db%d l%d, PBD = %d\n"
229 },
230 {0x00470002,
231 "PMU: Error: dbyte %d lane %d failed read deskew\n"
232 },
233 {0x00480003,
234 "PMU0: db%d l%d, inc PBD = %d\n"
235 },
236 {0x00490003,
237 "PMU1: Running lane deskew on pstate %d csn %d rdDBIEn %d\n"
238 },
239 {0x004a0000,
240 "PMU: Error: Read deskew training has been requested, but csrMajorModeDbyte[2] is set\n"
241 },
242 {0x004b0002,
243 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
244 },
245 {0x004c0002,
246 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
247 },
248 {0x004d0001,
249 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D3U Type\n"
250 },
251 {0x004e0001,
252 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D3R Type\n"
253 },
254 {0x004f0001,
255 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D4U Type\n"
256 },
257 {0x00500001,
258 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D4R Type\n"
259 },
260 {0x00510001,
261 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D4LR Type\n"
262 },
263 {0x00520000,
264 "PMU: Error: Both 2t timing mode and ddr4 geardown mode specified in the messageblock's PhyCfg and MR3 fields. Only one can be enabled\n"
265 },
266 {0x00530003,
267 "PMU10: PHY TOTALS - NUM_DBYTES %d NUM_NIBBLES %d NUM_ANIBS %d\n"
268 },
269 {0x00540006,
270 "PMU10: CSA=0x%02x, CSB=0x%02x, TSTAGES=0x%04x, HDTOUT=%d, MMISC=%d DRAMFreq=%dMT DramType=LPDDR3\n"
271 },
272 {0x00550006,
273 "PMU10: CSA=0x%02x, CSB=0x%02x, TSTAGES=0x%04x, HDTOUT=%d, MMISC=%d DRAMFreq=%dMT DramType=LPDDR4\n"
274 },
275 {0x00560008,
276 "PMU10: CS=0x%02x, TSTAGES=0x%04x, HDTOUT=%d, 2T=%d, MMISC=%d AddrMirror=%d DRAMFreq=%dMT DramType=%d\n"
277 },
278 {0x00570004,
279 "PMU10: Pstate%d MR0=0x%04x MR1=0x%04x MR2=0x%04x\n"
280 },
281 {0x00580008,
282 "PMU10: Pstate%d MRS MR0=0x%04x MR1=0x%04x MR2=0x%04x MR3=0x%04x MR4=0x%04x MR5=0x%04x MR6=0x%04x\n"
283 },
284 {0x00590005,
285 "PMU10: Pstate%d MRS MR1_A0=0x%04x MR2_A0=0x%04x MR3_A0=0x%04x MR11_A0=0x%04x\n"
286 },
287 {0x005a0000,
288 "PMU10: UseBroadcastMR set. All ranks and channels use MRXX_A0 for MR settings.\n"
289 },
290 {0x005b0005,
291 "PMU10: Pstate%d MRS MR01_A0=0x%02x MR02_A0=0x%02x MR03_A0=0x%02x MR11_A0=0x%02x\n"
292 },
293 {0x005c0005,
294 "PMU10: Pstate%d MRS MR12_A0=0x%02x MR13_A0=0x%02x MR14_A0=0x%02x MR22_A0=0x%02x\n"
295 },
296 {0x005d0005,
297 "PMU10: Pstate%d MRS MR01_A1=0x%02x MR02_A1=0x%02x MR03_A1=0x%02x MR11_A1=0x%02x\n"
298 },
299 {0x005e0005,
300 "PMU10: Pstate%d MRS MR12_A1=0x%02x MR13_A1=0x%02x MR14_A1=0x%02x MR22_A1=0x%02x\n"
301 },
302 {0x005f0005,
303 "PMU10: Pstate%d MRS MR01_B0=0x%02x MR02_B0=0x%02x MR03_B0=0x%02x MR11_B0=0x%02x\n"
304 },
305 {0x00600005,
306 "PMU10: Pstate%d MRS MR12_B0=0x%02x MR13_B0=0x%02x MR14_B0=0x%02x MR22_B0=0x%02x\n"
307 },
308 {0x00610005,
309 "PMU10: Pstate%d MRS MR01_B1=0x%02x MR02_B1=0x%02x MR03_B1=0x%02x MR11_B1=0x%02x\n"
310 },
311 {0x00620005,
312 "PMU10: Pstate%d MRS MR12_B1=0x%02x MR13_B1=0x%02x MR14_B1=0x%02x MR22_B1=0x%02x\n"
313 },
314 {0x00630002,
315 "PMU1: AcsmOdtCtrl%02d 0x%02x\n"
316 },
317 {0x00640002,
318 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
319 },
320 {0x00650002,
321 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
322 },
323 {0x00660000,
324 "PMU1: HwtCAMode set\n"
325 },
326 {0x00670001,
327 "PMU3: DDR4 infinite preamble enter/exit mode %d\n"
328 },
329 {0x00680002,
330 "PMU1: In rxenb_train() csn=%d pstate=%d\n"
331 },
332 {0x00690000,
333 "PMU3: Finding DQS falling edge\n"
334 },
335 {0x006a0000,
336 "PMU3: Searching for DDR3/LPDDR3/LPDDR4 read preamble\n"
337 },
338 {0x006b0009,
339 "PMU3: dtsm fails Even Nibbles : %2x %2x %2x %2x %2x %2x %2x %2x %2x\n"
340 },
341 {0x006c0009,
342 "PMU3: dtsm fails Odd Nibbles : %2x %2x %2x %2x %2x %2x %2x %2x %2x\n"
343 },
344 {0x006d0002,
345 "PMU3: Preamble search pass=%d anyfail=%d\n"
346 },
347 {0x006e0000,
348 "PMU: Error: RxEn training preamble not found\n"
349 },
350 {0x006f0000,
351 "PMU3: Found DQS pre-amble\n"
352 },
353 {0x00700001,
354 "PMU: Error: Dbyte %d couldn't find the rising edge of DQS during RxEn Training\n"
355 },
356 {0x00710000,
357 "PMU3: RxEn aligning to first rising edge of burst\n"
358 },
359 {0x00720001,
360 "PMU3: Decreasing RxEn delay by %d fine step to allow full capture of reads\n"
361 },
362 {0x00730001,
363 "PMU3: MREP Delay = %d\n"
364 },
365 {0x00740003,
366 "PMU3: Errcnt for MREP nib %2d delay = %2d is %d\n"
367 },
368 {0x00750002,
369 "PMU3: MREP nibble %d sampled a 1 at data buffer delay %d\n"
370 },
371 {0x00760002,
372 "PMU3: MREP nibble %d saw a 0 to 1 transition at data buffer delay %d\n"
373 },
374 {0x00770000,
375 "PMU2: MREP did not find a 0 to 1 transition for all nibbles. Failing nibbles assumed to have rising edge close to fine delay 63\n"
376 },
377 {0x00780002,
378 "PMU2: Rising edge found in alias window, setting rxDly for nibble %d = %d\n"
379 },
380 {0x00790002,
381 "PMU: Error: Failed MREP for nib %d with %d one\n"
382 },
383 {0x007a0003,
384 "PMU2: Rising edge not found in alias window with %d one, leaving rxDly for nibble %d = %d\n"
385 },
386 {0x007b0002,
387 "PMU3: Training DIMM %d CSn %d\n"
388 },
389 {0x007c0001,
390 "PMU3: exitCAtrain_lp3 cs 0x%x\n"
391 },
392 {0x007d0001,
393 "PMU3: enterCAtrain_lp3 cs 0x%x\n"
394 },
395 {0x007e0001,
396 "PMU3: CAtrain_switchmsb_lp3 cs 0x%x\n"
397 },
398 {0x007f0001,
399 "PMU3: CATrain_rdwr_lp3 looking for pattern %x\n"
400 },
401 {0x00800000,
402 "PMU3: exitCAtrain_lp4\n"
403 },
404 {0x00810001,
405 "PMU3: DEBUG enterCAtrain_lp4 1: cs 0x%x\n"
406 },
407 {0x00820001,
408 "PMU3: DEBUG enterCAtrain_lp4 3: Put dbyte %d in async mode\n"
409 },
410 {0x00830000,
411 "PMU3: DEBUG enterCAtrain_lp4 5: Send MR13 to turn on CA training\n"
412 },
413 {0x00840003,
414 "PMU3: DEBUG enterCAtrain_lp4 7: idx = %d vref = %x mr12 = %x\n"
415 },
416 {0x00850001,
417 "PMU3: CATrain_rdwr_lp4 looking for pattern %x\n"
418 },
419 {0x00860004,
420 "PMU3: Phase %d CAreadbackA db:%d %x xo:%x\n"
421 },
422 {0x00870005,
423 "PMU3: DEBUG lp4SetCatrVref 1: cs=%d chan=%d mr12=%x vref=%d.%d%%\n"
424 },
425 {0x00880003,
426 "PMU3: DEBUG lp4SetCatrVref 3: mr12 = %x send vref= %x to db=%d\n"
427 },
428 {0x00890000,
429 "PMU10:Optimizing vref\n"
430 },
431 {0x008a0004,
432 "PMU4:mr12:%2x cs:%d chan %d r:%4x\n"
433 },
434 {0x008b0005,
435 "PMU3: i:%2d bstr:%2d bsto:%2d st:%d r:%d\n"
436 },
437 {0x008c0002,
438 "Failed to find sufficient CA Vref Passing Region for CS %d ch. %d\n"
439 },
440 {0x008d0005,
441 "PMU3:Found %d.%d%% MR12:%x for cs:%d chan %d\n"
442 },
443 {0x008e0002,
444 "PMU3:Calculated %d for AtxImpedence from acx %d.\n"
445 },
446 {0x008f0000,
447 "PMU3:CA Odt impedence ==0. Use default vref.\n"
448 },
449 {0x00900003,
450 "PMU3:Calculated %d.%d%% for Vref MR12=0x%x.\n"
451 },
452 {0x00910000,
453 "PMU3: CAtrain_lp\n"
454 },
455 {0x00920000,
456 "PMU3: CAtrain Begins.\n"
457 },
458 {0x00930001,
459 "PMU3: CAtrain_lp testing dly %d\n"
460 },
461 {0x00940001,
462 "PMU5: CA bitmap dump for cs %x\n"
463 },
464 {0x00950001,
465 "PMU5: CAA%d "
466 },
467 {0x00960001, "%02x"
468 },
469 {0x00970000, "\n"
470 },
471 {0x00980001,
472 "PMU5: CAB%d "
473 },
474 {0x00990001, "%02x"
475 },
476 {0x009a0000, "\n"
477 },
478 {0x009b0003,
479 "PMU3: anibi=%d, anibichan[anibi]=%d ,chan=%d\n"
480 },
481 {0x009c0001, "%02x"
482 },
483 {0x009d0001, "\nPMU3:Raw CA setting :%x"
484 },
485 {0x009e0002, "\nPMU3:ATxDly setting:%x margin:%d\n"
486 },
487 {0x009f0002, "\nPMU3:InvClk ATxDly setting:%x margin:%d\n"
488 },
489 {0x00a00000, "\nPMU3:No Range found!\n"
490 },
491 {0x00a10003,
492 "PMU3: 2 anibi=%d, anibichan[anibi]=%d ,chan=%d"
493 },
494 {0x00a20002, "\nPMU3: no neg clock => CA setting anib=%d, :%d\n"
495 },
496 {0x00a30001,
497 "PMU3:Normal margin:%d\n"
498 },
499 {0x00a40001,
500 "PMU3:Inverted margin:%d\n"
501 },
502 {0x00a50000,
503 "PMU3:Using Inverted clock\n"
504 },
505 {0x00a60000,
506 "PMU3:Using normal clk\n"
507 },
508 {0x00a70003,
509 "PMU3: 3 anibi=%d, anibichan[anibi]=%d ,chan=%d\n"
510 },
511 {0x00a80002,
512 "PMU3: Setting ATxDly for anib %x to %x\n"
513 },
514 {0x00a90000,
515 "PMU: Error: CA Training Failed.\n"
516 },
517 {0x00aa0000,
518 "PMU1: Writing MRs\n"
519 },
520 {0x00ab0000,
521 "PMU4:Using MR12 values from 1D CA VREF training.\n"
522 },
523 {0x00ac0000,
524 "PMU3:Writing all MRs to fsp 1\n"
525 },
526 {0x00ad0000,
527 "PMU10:Lp4Quickboot mode.\n"
528 },
529 {0x00ae0000,
530 "PMU3: Writing MRs\n"
531 },
532 {0x00af0001,
533 "PMU10: Setting boot clock divider to %d\n"
534 },
535 {0x00b00000,
536 "PMU3: Resetting DRAM\n"
537 },
538 {0x00b10000,
539 "PMU3: setup for RCD initalization\n"
540 },
541 {0x00b20000,
542 "PMU3: pmu_exit_SR from dev_init()\n"
543 },
544 {0x00b30000,
545 "PMU3: initializing RCD\n"
546 },
547 {0x00b40000,
548 "PMU10: **** Executing 2D Image ****\n"
549 },
550 {0x00b50001,
551 "PMU10: **** Start DDR4 Training. PMU Firmware Revision 0x%04x ****\n"
552 },
553 {0x00b60001,
554 "PMU10: **** Start DDR3 Training. PMU Firmware Revision 0x%04x ****\n"
555 },
556 {0x00b70001,
557 "PMU10: **** Start LPDDR3 Training. PMU Firmware Revision 0x%04x ****\n"
558 },
559 {0x00b80001,
560 "PMU10: **** Start LPDDR4 Training. PMU Firmware Revision 0x%04x ****\n"
561 },
562 {0x00b90000,
563 "PMU: Error: Mismatched internal revision between DCCM and ICCM images\n"
564 },
565 {0x00ba0001,
566 "PMU10: **** Testchip %d Specific Firmware ****\n"
567 },
568 {0x00bb0000,
569 "PMU1: LRDIMM with EncodedCS mode, one DIMM\n"
570 },
571 {0x00bc0000,
572 "PMU1: LRDIMM with EncodedCS mode, two DIMMs\n"
573 },
574 {0x00bd0000,
575 "PMU1: RDIMM with EncodedCS mode, one DIMM\n"
576 },
577 {0x00be0000,
578 "PMU2: Starting LRDIMM MREP training for all ranks\n"
579 },
580 {0x00bf0000,
581 "PMU199: LRDIMM MREP training for all ranks completed\n"
582 },
583 {0x00c00000,
584 "PMU2: Starting LRDIMM DWL training for all ranks\n"
585 },
586 {0x00c10000,
587 "PMU199: LRDIMM DWL training for all ranks completed\n"
588 },
589 {0x00c20000,
590 "PMU2: Starting LRDIMM MRD training for all ranks\n"
591 },
592 {0x00c30000,
593 "PMU199: LRDIMM MRD training for all ranks completed\n"
594 },
595 {0x00c40000,
596 "PMU2: Starting RXEN training for all ranks\n"
597 },
598 {0x00c50000,
599 "PMU2: Starting write leveling fine delay training for all ranks\n"
600 },
601 {0x00c60000,
602 "PMU2: Starting LRDIMM MWD training for all ranks\n"
603 },
604 {0x00c70000,
605 "PMU199: LRDIMM MWD training for all ranks completed\n"
606 },
607 {0x00c80000,
608 "PMU2: Starting write leveling fine delay training for all ranks\n"
609 },
610 {0x00c90000,
611 "PMU2: Starting read deskew training\n"
612 },
613 {0x00ca0000,
614 "PMU2: Starting SI friendly 1d RdDqs training for all ranks\n"
615 },
616 {0x00cb0000,
617 "PMU2: Starting write leveling coarse delay training for all ranks\n"
618 },
619 {0x00cc0000,
620 "PMU2: Starting 1d WrDq training for all ranks\n"
621 },
622 {0x00cd0000,
623 "PMU2: Running DQS2DQ Oscillator for all ranks\n"
624 },
625 {0x00ce0000,
626 "PMU2: Starting again read deskew training but with PRBS\n"
627 },
628 {0x00cf0000,
629 "PMU2: Starting 1d RdDqs training for all ranks\n"
630 },
631 {0x00d00000,
632 "PMU2: Starting again 1d WrDq training for all ranks\n"
633 },
634 {0x00d10000,
635 "PMU2: Starting MaxRdLat training\n"
636 },
637 {0x00d20000,
638 "PMU2: Starting 2d WrDq training for all ranks\n"
639 },
640 {0x00d30000,
641 "PMU2: Starting 2d RdDqs training for all ranks\n"
642 },
643 {0x00d40002,
644 "PMU3:read_fifo %x %x\n"
645 },
646 {0x00d50001,
647 "PMU: Error: Invalid PhyDrvImpedance of 0x%x specified in message block.\n"
648 },
649 {0x00d60001,
650 "PMU: Error: Invalid PhyOdtImpedance of 0x%x specified in message block.\n"
651 },
652 {0x00d70001,
653 "PMU: Error: Invalid BPZNResVal of 0x%x specified in message block.\n"
654 },
655 {0x00d80005,
656 "PMU3: fixRxEnBackOff csn:%d db:%d dn:%d bo:%d dly:%x\n"
657 },
658 {0x00d90001,
659 "PMU3: fixRxEnBackOff dly:%x\n"
660 },
661 {0x00da0000,
662 "PMU3: Entering setupPpt\n"
663 },
664 {0x00db0000,
665 "PMU3: Start lp4PopulateHighLowBytes\n"
666 },
667 {0x00dc0002,
668 "PMU3:Dbyte Detect: db%d received %x\n"
669 },
670 {0x00dd0002,
671 "PMU3:getDqs2Dq read %x from dbyte %d\n"
672 },
673 {0x00de0002,
674 "PMU3:getDqs2Dq(2) read %x from dbyte %d\n"
675 },
676 {0x00df0001,
677 "PMU: Error: Dbyte %d read 0 from the DQS oscillator it is connected to\n"
678 },
679 {0x00e00002,
680 "PMU4: Dbyte %d dqs2dq = %d/32 UI\n"
681 },
682 {0x00e10003,
683 "PMU3:getDqs2Dq set dqs2dq:%d/32 ui (%d ps) from dbyte %d\n"
684 },
685 {0x00e20003,
686 "PMU3: Setting coarse delay in AtxDly chiplet %d from 0x%02x to 0x%02x\n"
687 },
688 {0x00e30003,
689 "PMU3: Clearing coarse delay in AtxDly chiplet %d from 0x%02x to 0x%02x\n"
690 },
691 {0x00e40000,
692 "PMU3: Performing DDR4 geardown sync sequence\n"
693 },
694 {0x00e50000,
695 "PMU1: Enter self refresh\n"
696 },
697 {0x00e60000,
698 "PMU1: Exit self refresh\n"
699 },
700 {0x00e70000,
701 "PMU: Error: No dbiEnable with lp4\n"
702 },
703 {0x00e80000,
704 "PMU: Error: No dbiDisable with lp4\n"
705 },
706 {0x00e90001,
707 "PMU1: DDR4 update Rx DBI Setting disable %d\n"
708 },
709 {0x00ea0001,
710 "PMU1: DDR4 update 2nCk WPre Setting disable %d\n"
711 },
712 {0x00eb0005,
713 "PMU1: read_delay: db%d lane%d delays[%2d] = 0x%02x (max 0x%02x)\n"
714 },
715 {0x00ec0004,
716 "PMU1: write_delay: db%d lane%d delays[%2d] = 0x%04x\n"
717 },
718 {0x00ed0001,
719 "PMU5: ID=%d -- db0 db1 db2 db3 db4 db5 db6 db7 db8 db9 --\n"
720 },
721 {0x00ee000b,
722 "PMU5: [%d]:0x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n"
723 },
724 {0x00ef0003,
725 "PMU2: dump delays - pstate=%d dimm=%d csn=%d\n"
726 },
727 {0x00f00000,
728 "PMU3: Printing Mid-Training Delay Information\n"
729 },
730 {0x00f10001,
731 "PMU5: CS%d <<KEY>> 0 TrainingCntr <<KEY>> coarse(15:10) fine(9:0)\n"
732 },
733 {0x00f20001,
734 "PMU5: CS%d <<KEY>> 0 RxEnDly, 1 RxClkDly <<KEY>> coarse(10:6) fine(5:0)\n"
735 },
736 {0x00f30001,
737 "PMU5: CS%d <<KEY>> 0 TxDqsDly, 1 TxDqDly <<KEY>> coarse(9:6) fine(5:0)\n"
738 },
739 {0x00f40001,
740 "PMU5: CS%d <<KEY>> 0 RxPBDly <<KEY>> 1 Delay Unit ~= 7ps\n"
741 },
742 {0x00f50000,
743 "PMU5: all CS <<KEY>> 0 DFIMRL <<KEY>> Units = DFI clocks\n"
744 },
745 {0x00f60000,
746 "PMU5: all CS <<KEY>> VrefDACs <<KEY>> DAC(6:0)\n"
747 },
748 {0x00f70000,
749 "PMU1: Set DMD in MR13 and wrDBI in MR3 for training\n"
750 },
751 {0x00f80000,
752 "PMU: Error: getMaxRxen() failed to find largest rxen nibble delay\n"
753 },
754 {0x00f90003,
755 "PMU2: getMaxRxen(): maxDly %d maxTg %d maxNib %d\n"
756 },
757 {0x00fa0003,
758 "PMU2: getRankMaxRxen(): maxDly %d Tg %d maxNib %d\n"
759 },
760 {0x00fb0000,
761 "PMU1: skipping CDD calculation in 2D image\n"
762 },
763 {0x00fc0001,
764 "PMU3: Calculating CDDs for pstate %d\n"
765 },
766 {0x00fd0003,
767 "PMU3: rxFromDly[%d][%d] = %d\n"
768 },
769 {0x00fe0003,
770 "PMU3: rxToDly [%d][%d] = %d\n"
771 },
772 {0x00ff0003,
773 "PMU3: rxDly [%d][%d] = %d\n"
774 },
775 {0x01000003,
776 "PMU3: txDly [%d][%d] = %d\n"
777 },
778 {0x01010003,
779 "PMU3: allFine CDD_RR_%d_%d = %d\n"
780 },
781 {0x01020003,
782 "PMU3: allFine CDD_WW_%d_%d = %d\n"
783 },
784 {0x01030003,
785 "PMU3: CDD_RR_%d_%d = %d\n"
786 },
787 {0x01040003,
788 "PMU3: CDD_WW_%d_%d = %d\n"
789 },
790 {0x01050003,
791 "PMU3: allFine CDD_RW_%d_%d = %d\n"
792 },
793 {0x01060003,
794 "PMU3: allFine CDD_WR_%d_%d = %d\n"
795 },
796 {0x01070003,
797 "PMU3: CDD_RW_%d_%d = %d\n"
798 },
799 {0x01080003,
800 "PMU3: CDD_WR_%d_%d = %d\n"
801 },
802 {0x01090004,
803 "PMU3: F%dBC2x_B%d_D%d = 0x%02x\n"
804 },
805 {0x010a0004,
806 "PMU3: F%dBC3x_B%d_D%d = 0x%02x\n"
807 },
808 {0x010b0004,
809 "PMU3: F%dBC4x_B%d_D%d = 0x%02x\n"
810 },
811 {0x010c0004,
812 "PMU3: F%dBC5x_B%d_D%d = 0x%02x\n"
813 },
814 {0x010d0004,
815 "PMU3: F%dBC8x_B%d_D%d = 0x%02x\n"
816 },
817 {0x010e0004,
818 "PMU3: F%dBC9x_B%d_D%d = 0x%02x\n"
819 },
820 {0x010f0004,
821 "PMU3: F%dBCAx_B%d_D%d = 0x%02x\n"
822 },
823 {0x01100004,
824 "PMU3: F%dBCBx_B%d_D%d = 0x%02x\n"
825 },
826 {0x01110000,
827 "PMU10: Entering context_switch_postamble\n"
828 },
829 {0x01120003,
830 "PMU10: context_switch_postamble is enabled for DIMM %d, RC0A=0x%x, RC3x=0x%x\n"
831 },
832 {0x01130000,
833 "PMU10: Setting bcw fspace 0\n"
834 },
835 {0x01140001,
836 "PMU10: Sending BC0A = 0x%x\n"
837 },
838 {0x01150001,
839 "PMU10: Sending BC6x = 0x%x\n"
840 },
841 {0x01160001,
842 "PMU10: Sending RC0A = 0x%x\n"
843 },
844 {0x01170001,
845 "PMU10: Sending RC3x = 0x%x\n"
846 },
847 {0x01180001,
848 "PMU10: Sending RC0A = 0x%x\n"
849 },
850 {0x01190001,
851 "PMU1: enter_lp3: DEBUG: pstate = %d\n"
852 },
853 {0x011a0001,
854 "PMU1: enter_lp3: DEBUG: dfifreqxlat_pstate = %d\n"
855 },
856 {0x011b0001,
857 "PMU1: enter_lp3: DEBUG: pllbypass = %d\n"
858 },
859 {0x011c0001,
860 "PMU1: enter_lp3: DEBUG: forcecal = %d\n"
861 },
862 {0x011d0001,
863 "PMU1: enter_lp3: DEBUG: pllmaxrange = 0x%x\n"
864 },
865 {0x011e0001,
866 "PMU1: enter_lp3: DEBUG: dacval_out = 0x%x\n"
867 },
868 {0x011f0001,
869 "PMU1: enter_lp3: DEBUG: pllctrl3 = 0x%x\n"
870 },
871 {0x01200000,
872 "PMU3: Loading DRAM with BIOS supplied MR values and entering self refresh prior to exiting PMU code.\n"
873 },
874 {0x01210002,
875 "PMU3: Setting DataBuffer function space of dimmcs 0x%02x to %d\n"
876 },
877 {0x01220002,
878 "PMU4: Setting RCW FxRC%Xx = 0x%02x\n"
879 },
880 {0x01230002,
881 "PMU4: Setting RCW FxRC%02x = 0x%02x\n"
882 },
883 {0x01240001,
884 "PMU1: DDR4 update Rd Pre Setting disable %d\n"
885 },
886 {0x01250002,
887 "PMU2: Setting BCW FxBC%Xx = 0x%02x\n"
888 },
889 {0x01260002,
890 "PMU2: Setting BCW BC%02x = 0x%02x\n"
891 },
892 {0x01270002,
893 "PMU2: Setting BCW PBA mode FxBC%Xx = 0x%02x\n"
894 },
895 {0x01280002,
896 "PMU2: Setting BCW PBA mode BC%02x = 0x%02x\n"
897 },
898 {0x01290003,
899 "PMU4: BCW value for dimm %d, fspace %d, addr 0x%04x\n"
900 },
901 {0x012a0002,
902 "PMU4: DB %d, value 0x%02x\n"
903 },
904 {0x012b0000,
905 "PMU6: WARNING MREP underflow, set to min value -2 coarse, 0 fine\n"
906 },
907 {0x012c0004,
908 "PMU6: LRDIMM Writing final data buffer fine delay value nib %2d, trainDly %3d, fineDly code %2d, new MREP fine %2d\n"
909 },
910 {0x012d0003,
911 "PMU6: LRDIMM Writing final data buffer fine delay value nib %2d, trainDly %3d, fineDly code %2d\n"
912 },
913 {0x012e0003,
914 "PMU6: LRDIMM Writing data buffer fine delay type %d nib %2d, code %2d\n"
915 },
916 {0x012f0002,
917 "PMU6: Writing final data buffer coarse delay value dbyte %2d, coarse = 0x%02x\n"
918 },
919 {0x01300003,
920 "PMU4: data 0x%04x at MB addr 0x%08x saved at CSR addr 0x%08x\n"
921 },
922 {0x01310003,
923 "PMU4: data 0x%04x at MB addr 0x%08x restored from CSR addr 0x%08x\n"
924 },
925 {0x01320003,
926 "PMU4: data 0x%04x at MB addr 0x%08x saved at CSR addr 0x%08x\n"
927 },
928 {0x01330003,
929 "PMU4: data 0x%04x at MB addr 0x%08x restored from CSR addr 0x%08x\n"
930 },
931 {0x01340001,
932 "PMU3: Update BC00, BC01, BC02 for rank-dimm 0x%02x\n"
933 },
934 {0x01350000,
935 "PMU3: Writing D4 RDIMM RCD Control words F0RC00 -> F0RC0F\n"
936 },
937 {0x01360000,
938 "PMU3: Disable parity in F0RC0E\n"
939 },
940 {0x01370000,
941 "PMU3: Writing D4 RDIMM RCD Control words F1RC00 -> F1RC05\n"
942 },
943 {0x01380000,
944 "PMU3: Writing D4 RDIMM RCD Control words F1RC1x -> F1RC9x\n"
945 },
946 {0x01390000,
947 "PMU3: Writing D4 Data buffer Control words BC00 -> BC0E\n"
948 },
949 {0x013a0002,
950 "PMU1: setAltCL Sending MR0 0x%x cl=%d\n"
951 },
952 {0x013b0002,
953 "PMU1: restoreFromAltCL Sending MR0 0x%x cl=%d\n"
954 },
955 {0x013c0002,
956 "PMU1: restoreAcsmFromAltCL Sending MR0 0x%x cl=%d\n"
957 },
958 {0x013d0002,
959 "PMU2: Setting D3R RC%d = 0x%01x\n"
960 },
961 {0x013e0000,
962 "PMU3: Writing D3 RDIMM RCD Control words RC0 -> RC11\n"
963 },
964 {0x013f0002,
965 "PMU0: VrefDAC0/1 vddqStart %d dacToVddq %d\n"
966 },
967 {0x01400001,
968 "PMU: Error: Messageblock phyVref=0x%x is above the limit for TSMC28's attenuated LPDDR4 receivers. Please see the pub databook\n"
969 },
970 {0x01410001,
971 "PMU: Error: Messageblock phyVref=0x%x is above the limit for TSMC28's attenuated DDR4 receivers. Please see the pub databook\n"
972 },
973 {0x01420001,
974 "PMU0: PHY VREF @ (%d/1000) VDDQ\n"
975 },
976 {0x01430002,
977 "PMU0: initalizing phy vrefDacs to %d ExtVrefRange %x\n"
978 },
979 {0x01440002,
980 "PMU0: initalizing global vref to %d range %d\n"
981 },
982 {0x01450002,
983 "PMU4: Setting initial device vrefDQ for CS%d to MR6 = 0x%04x\n"
984 },
985 {0x01460003,
986 "PMU1: In write_level_fine() csn=%d dimm=%d pstate=%d\n"
987 },
988 {0x01470000,
989 "PMU3: Fine write leveling hardware search increasing TxDqsDly until full bursts are seen\n"
990 },
991 {0x01480000,
992 "PMU4: WL normalized pos : ........................|........................\n"
993 },
994 {0x01490007,
995 "PMU4: WL margin for nib %2d: %08x%08x%08x%08x%08x%08x\n"
996 },
997 {0x014a0000,
998 "PMU4: WL normalized pos : ........................|........................\n"
999 },
1000 {0x014b0000,
1001 "PMU3: Exiting write leveling mode\n"
1002 },
1003 {0x014c0001,
1004 "PMU3: got %d for cl in load_wrlvl_acsm\n"
1005 },
1006 {0x014d0003,
1007 "PMU1: In write_level_coarse() csn=%d dimm=%d pstate=%d\n"
1008 },
1009 {0x014e0003,
1010 "PMU3: left eye edge search db:%d ln:%d dly:0x%x\n"
1011 },
1012 {0x014f0003,
1013 "PMU3: right eye edge search db:%d ln:%d dly:0x%x\n"
1014 },
1015 {0x01500004,
1016 "PMU3: eye center db:%d ln:%d dly:0x%x (maxdq:%x)\n"
1017 },
1018 {0x01510003,
1019 "PMU3: Wrote to TxDqDly db:%d ln:%d dly:0x%x\n"
1020 },
1021 {0x01520003,
1022 "PMU3: Wrote to TxDqDly db:%d ln:%d dly:0x%x\n"
1023 },
1024 {0x01530002,
1025 "PMU3: Coarse write leveling dbyte%2d is still failing for TxDqsDly=0x%04x\n"
1026 },
1027 {0x01540002,
1028 "PMU4: Coarse write leveling iteration %d saw %d data miscompares across the entire phy\n"
1029 },
1030 {0x01550000,
1031 "PMU: Error: Failed write leveling coarse\n"
1032 },
1033 {0x01560001,
1034 "PMU3: got %d for cl in load_wrlvl_acsm\n"
1035 },
1036 {0x01570003,
1037 "PMU3: In write_level_coarse() csn=%d dimm=%d pstate=%d\n"
1038 },
1039 {0x01580003,
1040 "PMU3: left eye edge search db:%d ln:%d dly:0x%x\n"
1041 },
1042 {0x01590003,
1043 "PMU3: right eye edge search db: %d ln: %d dly: 0x%x\n"
1044 },
1045 {0x015a0004,
1046 "PMU3: eye center db: %d ln: %d dly: 0x%x (maxdq: 0x%x)\n"
1047 },
1048 {0x015b0003,
1049 "PMU3: Wrote to TxDqDly db: %d ln: %d dly: 0x%x\n"
1050 },
1051 {0x015c0003,
1052 "PMU3: Wrote to TxDqDly db: %d ln: %d dly: 0x%x\n"
1053 },
1054 {0x015d0002,
1055 "PMU3: Coarse write leveling nibble%2d is still failing for TxDqsDly=0x%04x\n"
1056 },
1057 {0x015e0002,
1058 "PMU4: Coarse write leveling iteration %d saw %d data miscompares across the entire phy\n"
1059 },
1060 {0x015f0000,
1061 "PMU: Error: Failed write leveling coarse\n"
1062 },
1063 {0x01600000,
1064 "PMU4: WL normalized pos : ................................|................................\n"
1065 },
1066 {0x01610009,
1067 "PMU4: WL margin for nib %2d: %08x%08x%08x%08x%08x%08x%08x%08x\n"
1068 },
1069 {0x01620000,
1070 "PMU4: WL normalized pos : ................................|................................\n"
1071 },
1072 {0x01630001,
1073 "PMU8: Adjust margin after WL coarse to be larger than %d\n"
1074 },
1075 {0x01640001,
1076 "PMU: Error: All margin after write leveling coarse are smaller than minMargin %d\n"
1077 },
1078 {0x01650002,
1079 "PMU8: Decrement nib %d TxDqsDly by %d fine step\n"
1080 },
1081 {0x01660003,
1082 "PMU3: In write_level_coarse() csn=%d dimm=%d pstate=%d\n"
1083 },
1084 {0x01670005,
1085 "PMU2: Write level: dbyte %d nib%d dq/dmbi %2d dqsfine 0x%04x dqDly 0x%04x\n"
1086 },
1087 {0x01680002,
1088 "PMU3: Coarse write leveling nibble%2d is still failing for TxDqsDly=0x%04x\n"
1089 },
1090 {0x01690002,
1091 "PMU4: Coarse write leveling iteration %d saw %d data miscompares across the entire phy\n"
1092 },
1093 {0x016a0000,
1094 "PMU: Error: Failed write leveling coarse\n"
1095 },
1096 {0x016b0001,
1097 "PMU3: DWL delay = %d\n"
1098 },
1099 {0x016c0003,
1100 "PMU3: Errcnt for DWL nib %2d delay = %2d is %d\n"
1101 },
1102 {0x016d0002,
1103 "PMU3: DWL nibble %d sampled a 1 at delay %d\n"
1104 },
1105 {0x016e0003,
1106 "PMU3: DWL nibble %d passed at delay %d. Rising edge was at %d\n"
1107 },
1108 {0x016f0000,
1109 "PMU2: DWL did nto find a rising edge of memclk for all nibbles. Failing nibbles assumed to have rising edge close to fine delay 63\n"
1110 },
1111 {0x01700002,
1112 "PMU2: Rising edge found in alias window, setting wrlvlDly for nibble %d = %d\n"
1113 },
1114 {0x01710002,
1115 "PMU: Error: Failed DWL for nib %d with %d one\n"
1116 },
1117 {0x01720003,
1118 "PMU2: Rising edge not found in alias window with %d one, leaving wrlvlDly for nibble %d = %d\n"
1119 },
1120 {0x04000000,
1121 "PMU: Error:Mailbox Buffer Overflowed.\n"
1122 },
1123 {0x04010000,
1124 "PMU: Error:Mailbox Buffer Overflowed.\n"
1125 },
1126 {0x04020000,
1127 "PMU: ***** Assertion Error - terminating *****\n"
1128 },
1129 {0x04030002,
1130 "PMU1: swapByte db %d by %d\n"
1131 },
1132 {0x04040003,
1133 "PMU3: get_cmd_dly max(%d ps, %d memclk) = %d\n"
1134 },
1135 {0x04050002,
1136 "PMU0: Write CSR 0x%06x 0x%04x\n"
1137 },
1138 {0x04060002,
1139 "PMU0: hwt_init_ppgc_prbs(): Polynomial: %x, Deg: %d\n"
1140 },
1141 {0x04070001,
1142 "PMU: Error: acsm_set_cmd to non existent instruction address %d\n"
1143 },
1144 {0x04080001,
1145 "PMU: Error: acsm_set_cmd with unknown ddr cmd 0x%x\n"
1146 },
1147 {0x0409000c,
1148 "PMU1: acsm_addr %02x, acsm_flgs %04x, ddr_cmd %02x, cmd_dly %02x, ddr_addr %04x, ddr_bnk %02x, ddr_cs %02x, cmd_rcnt %02x, AcsmSeq0/1/2/3 %04x %04x %04x %04x\n"
1149 },
1150 {0x040a0000,
1151 "PMU: Error: Polling on ACSM done failed to complete in acsm_poll_done()...\n"
1152 },
1153 {0x040b0000,
1154 "PMU1: acsm RUN\n"
1155 },
1156 {0x040c0000,
1157 "PMU1: acsm STOPPED\n"
1158 },
1159 {0x040d0002,
1160 "PMU1: acsm_init: acsm_mode %04x mxrdlat %04x\n"
1161 },
1162 {0x040e0002,
1163 "PMU: Error: setAcsmCLCWL: cl and cwl must be each >= 2 and 5, resp. CL=%d CWL=%d\n"
1164 },
1165 {0x040f0002,
1166 "PMU: Error: setAcsmCLCWL: cl and cwl must be each >= 5. CL=%d CWL=%d\n"
1167 },
1168 {0x04100002,
1169 "PMU1: setAcsmCLCWL: CASL %04d WCASL %04d\n"
1170 },
1171 {0x04110001,
1172 "PMU: Error: Reserved value of register F0RC0F found in message block: 0x%04x\n"
1173 },
1174 {0x04120001,
1175 "PMU3: Written MRS to CS=0x%02x\n"
1176 },
1177 {0x04130001,
1178 "PMU3: Written MRS to CS=0x%02x\n"
1179 },
1180 {0x04140000,
1181 "PMU3: Entering Boot Freq Mode.\n"
1182 },
1183 {0x04150001,
1184 "PMU: Error: Boot clock divider setting of %d is too small\n"
1185 },
1186 {0x04160000,
1187 "PMU3: Exiting Boot Freq Mode.\n"
1188 },
1189 {0x04170002,
1190 "PMU3: Writing MR%d OP=%x\n"
1191 },
1192 {0x04180000,
1193 "PMU: Error: Delay too large in slomo\n"
1194 },
1195 {0x04190001,
1196 "PMU3: Written MRS to CS=0x%02x\n"
1197 },
1198 {0x041a0000,
1199 "PMU3: Enable Channel A\n"
1200 },
1201 {0x041b0000,
1202 "PMU3: Enable Channel B\n"
1203 },
1204 {0x041c0000,
1205 "PMU3: Enable All Channels\n"
1206 },
1207 {0x041d0002,
1208 "PMU2: Use PDA mode to set MR%d with value 0x%02x\n"
1209 },
1210 {0x041e0001,
1211 "PMU3: Written Vref with PDA to CS=0x%02x\n"
1212 },
1213 {0x041f0000,
1214 "PMU1: start_cal: DEBUG: setting CalRun to 1\n"
1215 },
1216 {0x04200000,
1217 "PMU1: start_cal: DEBUG: setting CalRun to 0\n"
1218 },
1219 {0x04210001,
1220 "PMU1: lock_pll_dll: DEBUG: pstate = %d\n"
1221 },
1222 {0x04220001,
1223 "PMU1: lock_pll_dll: DEBUG: dfifreqxlat_pstate = %d\n"
1224 },
1225 {0x04230001,
1226 "PMU1: lock_pll_dll: DEBUG: pllbypass = %d\n"
1227 },
1228 {0x04240001,
1229 "PMU3: SaveLcdlSeed: Saving seed %d\n"
1230 },
1231 {0x04250000,
1232 "PMU1: in phy_defaults()\n"
1233 },
1234 {0x04260003,
1235 "PMU3: ACXConf:%d MaxNumDbytes:%d NumDfi:%d\n"
1236 },
1237 {0x04270005,
1238 "PMU1: setAltAcsmCLCWL setting cl=%d cwl=%d\n"
1239 },
1240};
1241
Boyan Karatotev05e9d4d2022-11-22 14:31:41 +00001242static const struct phy_msg messages_2d[] = {
Pankaj Guptac518de42020-12-09 14:02:39 +05301243 {0x00000001,
1244 "PMU0: Converting %d into an MR\n"
1245 },
1246 {0x00010003,
1247 "PMU DEBUG: vref_idx %d -= %d, range_idx = %d\n"
1248 },
1249 {0x00020002,
1250 "PMU0: vrefIdx. Passing range %d, remaining vrefidx = %d\n"
1251 },
1252 {0x00030002,
1253 "PMU0: VrefIdx %d -> MR[6:0] 0x%02x\n"
1254 },
1255 {0x00040001,
1256 "PMU0: Converting MR 0x%04x to vrefIdx\n"
1257 },
1258 {0x00050002,
1259 "PMU0: DAC %d Range %d\n"
1260 },
1261 {0x00060003,
1262 "PMU0: Range %d, Range_idx %d, vref_idx offset %d\n"
1263 },
1264 {0x00070002,
1265 "PMU0: MR 0x%04x -> VrefIdx %d\n"
1266 },
1267 {0x00080001,
1268 "PMU: Error: Illegal timing group number ,%d, in getPtrVrefDq\n"
1269 },
1270 {0x00090003,
1271 "PMU1: VrefDqR%dNib%d = %d\n"
1272 },
1273 {0x000a0003,
1274 "PMU0: VrefDqR%dNib%d = %d\n"
1275 },
1276 {0x000b0000,
1277 "PMU0: ----------------MARGINS-------\n"
1278 },
1279 {0x000c0002,
1280 "PMU0: R%d_RxClkDly_Margin = %d\n"
1281 },
1282 {0x000d0002,
1283 "PMU0: R%d_VrefDac_Margin = %d\n"
1284 },
1285 {0x000e0002,
1286 "PMU0: R%d_TxDqDly_Margin = %d\n"
1287 },
1288 {0x000f0002,
1289 "PMU0: R%d_DeviceVref_Margin = %d\n"
1290 },
1291 {0x00100000,
1292 "PMU0: -----------------------\n"
1293 },
1294 {0x00110003,
1295 "PMU0: eye %d's for all TG's is [%d ... %d]\n"
1296 },
1297 {0x00120000,
1298 "PMU0: ------- settingWeight -----\n"
1299 },
1300 {0x00130002,
1301 "PMU0: Weight %d @ Setting %d\n"
1302 },
1303 {0x0014001f,
1304 "PMU4: %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d >%3d< %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n"
1305 },
1306 {0x00150002,
1307 "PMU3: Voltage Range = [%d, %d]\n"
1308 },
1309 {0x00160004,
1310 "PMU4: -- DB%d L%d -- centers: delay = %d, voltage = %d\n"
1311 },
1312 {0x00170001,
1313 "PMU5: <<KEY>> 0 TxDqDlyTg%d <<KEY>> coarse(6:6) fine(5:0)\n"
1314 },
1315 {0x00180001,
1316 "PMU5: <<KEY>> 0 messageBlock VrefDqR%d <<KEY>> MR6(6:0)\n"
1317 },
1318 {0x00190001,
1319 "PMU5: <<KEY>> 0 RxClkDlyTg%d <<KEY>> fine(5:0)\n"
1320 },
1321 {0x001a0003,
1322 "PMU0: tgToCsn: tg %d + 0x%04x -> csn %d\n"
1323 },
1324 {0x001b0002,
1325 "PMU: Error: LP4 rank %d cannot be mapped on tg %d\n"
1326 },
1327 {0x001c0002,
1328 "PMU3: Sending vref %d, Mr = 0X%05x, to all devices\n"
1329 },
1330 {0x001d0004,
1331 "PMU4: -------- %dD Write Scanning TG %d (CS 0x%x) Lanes 0x%03x --------\n"
1332 },
1333 {0x001e0002,
1334 "PMU0: training lanes 0x%03x using lanes 0x%03x\n"
1335 },
1336 {0x001f0003,
1337 "PMU4: ------- 2D-DFE Read Scanning TG %d (CS 0x%x) Lanes 0x%03x -------\n"
1338 },
1339 {0x00200004,
1340 "PMU4: ------- %dD Read Scanning TG %d (CS 0x%x) Lanes 0x%03x -------\n"
1341 },
1342 {0x00210003,
1343 "PMU4: TG%d MR1[13,6,5]=0x%x MR6[13,9,8]=0x%x\n"
1344 },
1345 {0x00220002,
1346 "PMU0: training lanes 0x%03x using lanes 0x%03x\n"
1347 },
1348 {0x00230003,
1349 "PMU4: ------- 2D-DFE Read Scanning TG %d (CS 0x%x) Lanes 0x%03x -------\n"
1350 },
1351 {0x00240004,
1352 "PMU4: ------- %dD Read Scanning TG %d (CS 0x%x) Lanes 0x%03x -------\n"
1353 },
1354 {0x00250002,
1355 "PMU0: training lanes 0x%03x using lanes 0x%03x\n"
1356 },
1357 {0x00260002,
1358 "PMU3: Sending vref %d, Mr = 0X%05x, to all devices\n"
1359 },
1360 {0x00270004,
1361 "PMU4: -------- %dD Write Scanning TG %d (CS 0x%x) Lanes 0x%03x --------\n"
1362 },
1363 {0x00280001,
1364 "PMU0: input %d\n"
1365 },
1366 {0x00290002,
1367 "PMU4: Programmed Voltage Search Range [%d, %d]\n"
1368 },
1369 {0x002a0002,
1370 "PMU3: Delay Stepsize = %d Fine, Voltage Stepsize = %d DAC\n"
1371 },
1372 {0x002b0002,
1373 "PMU4: Delay Weight = %d, Voltage Weight = %d\n"
1374 },
1375 {0x002c0003,
1376 "PMU0: raw 0x%x allFine %d incDec %d"
1377 },
1378 {0x002d0008,
1379 "PMU0: db%d l%d, voltage 0x%x (u_r %d) delay 0x%x (u_r %d) - lcdl %d mask 0x%x\n"
1380 },
1381 {0x002e0005,
1382 "PMU0: DB%d L%d, Eye %d, Seed = (0x%x, 0x%x)\n"
1383 },
1384 {0x002f0002,
1385 "PMU3: 2D Enables : %d, 1, %d\n"
1386 },
1387 {0x00300006,
1388 "PMU3: 2D Delay Ranges: OOPL[0x%04x,0x%04x], IP[0x%04x,0x%04x], OOPR[0x%04x,0x%04x]\n"
1389 },
1390 {0x00310002,
1391 "PMU3: 2D Voltage Search Range : [%d, %d]\n"
1392 },
1393 {0x00320002,
1394 "PMU4: Found Voltage Search Range [%d, %d]\n"
1395 },
1396 {0x00330002,
1397 "PMU0: User Weight = %d, Voltage Weight = %d\n"
1398 },
1399 {0x00340005,
1400 "PMU0: D(%d,%d) V(%d,%d | %d)\n"
1401 },
1402 {0x00350002,
1403 "PMU0: Norm Weight = %d, Voltage Weight = %d\n"
1404 },
1405 {0x00360002,
1406 "PMU0: seed 0 = (%d,%d) (center)\n"
1407 },
1408 {0x00370003,
1409 "PMU0: seed 1 = (%d,%d).min edge at idx %d\n"
1410 },
1411 {0x00380003,
1412 "PMU0: seed 2 = (%d,%d) max edge at idx %d\n"
1413 },
1414 {0x00390003,
1415 "PMU0: Search point %d = (%d,%d)\n"
1416 },
1417 {0x003a0005,
1418 "PMU0: YMARGIN: ^ %d, - %d, v %d. rate %d = %d\n"
1419 },
1420 {0x003b0003,
1421 "PMU0: XMARGIN: center %d, edge %d. = %d\n"
1422 },
1423 {0x003c0002,
1424 "PMU0: ----------- weighting (%d,%d) ----------------\n"
1425 },
1426 {0x003d0003,
1427 "PMU0: X margin - L %d R %d - Min %d\n"
1428 },
1429 {0x003e0003,
1430 "PMU0: Y margin - L %d R %d - Min %d\n"
1431 },
1432 {0x003f0003,
1433 "PMU0: center (%d,%d) weight = %d\n"
1434 },
1435 {0x00400003,
1436 "PMU4: Eye argest blob area %d from %d to %d\n"
1437 },
1438 {0x00410002,
1439 "PMU0: Compute centroid min_x %d max_x %d\n"
1440 },
1441 {0x00420003,
1442 "PMU0: Compute centroid sumLnDlyWidth %d sumLnVrefWidth %d sumLnWidht %d\n"
1443 },
1444 {0x00430000,
1445 "PMU: Error: No passing region found for 1 or more lanes. Set hdtCtrl=4 to see passing regions\n"
1446 },
1447 {0x00440003,
1448 "PMU0: Centroid ( %d, %d ) found with sumLnWidht %d\n"
1449 },
1450 {0x00450003,
1451 "PMU0: Optimal allFine Center ( %d + %d ,%d )\n"
1452 },
1453 {0x00460003,
1454 "PMU3: point %d starting at (%d,%d)\n"
1455 },
1456 {0x00470002,
1457 "PMU0: picking left (%d > %d)\n"
1458 },
1459 {0x00480002,
1460 "PMU0: picking right (%d > %d)\n"
1461 },
1462 {0x00490002,
1463 "PMU0: picking down (%d > %d)\n"
1464 },
1465 {0x004a0002,
1466 "PMU0: picking up (%d > %d)\n"
1467 },
1468 {0x004b0009,
1469 "PMU3: new center @ (%3d, %3d). Moved (%2i, %2i) -- L %d, R %d, C %d, U %d, D %d\n"
1470 },
1471 {0x004c0003,
1472 "PMU3: cordNum %d imporved %d to %d\n"
1473 },
1474 {0x004d0000,
1475 "PMU: Error: No passing region found for 1 or more lanes. Set hdtCtrl=4 to see passing regions\n"
1476 },
1477 {0x004e0004,
1478 "PMU0: Optimal allFine Center ( %d + %d ,%d ), found with weight %d.\n"
1479 },
1480 {0x004f0003,
1481 "PMU0: merging lanes=%d..%d, centerMerge_t %d\n"
1482 },
1483 {0x00500001,
1484 "PMU0: laneVal %d is disable\n"
1485 },
1486 {0x00510002,
1487 "PMU0: checking common center %d against current center %d\n"
1488 },
1489 {0x00520001,
1490 "PMU: Error: getCompoundEye Called on lane%d eye with non-compatible centers\n"
1491 },
1492 {0x00530001,
1493 "PMU0: laneItr %d is disable\n"
1494 },
1495 {0x00540005,
1496 "PMU0: lane %d, data_idx %d, offset_idx %d, = [%d..%d]\n"
1497 },
1498 {0x00550003,
1499 "PMU0: lane %d, data_idx %d, offset_idx %d, offset_idx out of range!\n"
1500 },
1501 {0x00560003,
1502 "PMU0: mergeData[%d] = max_v_low %d, min_v_high %d\n"
1503 },
1504 {0x00570005,
1505 "PMU1: writing merged center (%d,%d) back to dataBlock[%d]. doDelay %d, doVoltage %d\n"
1506 },
1507 {0x00580005,
1508 "PMU0: applying relative (%i,%i) back to dataBlock[%d]. doDelay %d, doVoltage %d\n"
1509 },
1510 {0x00590002,
1511 "PMU0: drvstren %x is idx %d in the table\n"
1512 },
1513 {0x005a0000,
1514 "PMU4: truncating FFE drive strength search range. Out of drive strengths to check.\n"
1515 },
1516 {0x005b0002,
1517 "PMU5: Weak 1 changed to pull-up %5d ohms, pull-down %5d ohms\n"
1518 },
1519 {0x005c0002,
1520 "PMU5: Weak 0 changed to pull-up %5d ohms, pull-down %5d ohms\n"
1521 },
1522 {0x005d0003,
1523 "PMU0: dlyMargin L %02d R %02d, min %02d\n"
1524 },
1525 {0x005e0003,
1526 "PMU0: vrefMargin T %02d B %02d, min %02d\n"
1527 },
1528 {0x005f0002,
1529 "PMU3: new minimum VrefMargin (%d < %d) recorded\n"
1530 },
1531 {0x00600002,
1532 "PMU3: new minimum DlyMargin (%d < %d) recorded\n"
1533 },
1534 {0x00610000,
1535 "PMU0: RX finding the per-nibble, per-tg rxClkDly values\n"
1536 },
1537 {0x00620003,
1538 "PMU0: Merging collected eyes [%d..%d) and analyzing for nibble %d's optimal rxClkDly\n"
1539 },
1540 {0x00630002,
1541 "PMU0: -- centers: delay = %d, voltage = %d\n"
1542 },
1543 {0x00640003,
1544 "PMU0: dumping optimized eye -- centers: delay = %d (%d), voltage = %d\n"
1545 },
1546 {0x00650000,
1547 "PMU0: TX optimizing txDqDelays\n"
1548 },
1549 {0x00660001,
1550 "PMU3: Analyzing collected eye %d for a lane's optimal TxDqDly\n"
1551 },
1552 {0x00670001,
1553 "PMU0: eye-lane %d is disable\n"
1554 },
1555 {0x00680000,
1556 "PMU0: TX optimizing device voltages\n"
1557 },
1558 {0x00690002,
1559 "PMU0: Merging collected eyes [%d..%d) and analyzing for optimal device txVref\n"
1560 },
1561 {0x006a0002,
1562 "PMU0: -- centers: delay = %d, voltage = %d\n"
1563 },
1564 {0x006b0003,
1565 "PMU0: dumping optimized eye -- centers: delay = %d (%d), voltage = %d\n"
1566 },
1567 {0x006c0000,
1568 "PMU4: VrefDac (compound all TG) Bottom Top -> Center\n"
1569 },
1570 {0x006d0005,
1571 "PMU4: DB%d L%d %3d %3d -> %3d (DISCONNECTED)\n"
1572 },
1573 {0x006e0005,
1574 "PMU4: DB%d L%d %3d %3d -> %3d\n"
1575 },
1576 {0x006f0005,
1577 "PMU0: writing rxClkDelay for tg%d db%1d nib%1d to 0x%02x from eye[%02d] (DISCONNECTED)\n"
1578 },
1579 {0x00700003,
1580 "PMU: Error: Dbyte %d nibble %d's optimal rxClkDly of 0x%x is out of bounds\n"
1581 },
1582 {0x00710005,
1583 "PMU0: writing rxClkDelay for tg%d db%1d nib%1d to 0x%02x from eye[%02d]\n"
1584 },
1585 {0x00720005,
1586 "PMU0: tx voltage for tg%2d nib%2d to %3d (%d) from eye[%02d]\n"
1587 },
1588 {0x00730001,
1589 "PMU0: vref Sum = %d\n"
1590 },
1591 {0x00740004,
1592 "PMU0: tx voltage total is %d/%d -> %d -> %d\n"
1593 },
1594 {0x00750007,
1595 "PMU0: writing txDqDelay for tg%1d db%1d ln%1d to 0x%02x (%d coarse, %d fine) from eye[%02d] (DISCONNECTED)\n"
1596 },
1597 {0x00760003,
1598 "PMU: Error: Dbyte %d lane %d's optimal txDqDly of 0x%x is out of bounds\n"
1599 },
1600 {0x00770007,
1601 "PMU0: writing txDqDelay for tg%1d db%1d l%1d to 0x%02x (%d coarse, %d fine) from eye[%02d]\n"
1602 },
1603 {0x00780002,
1604 "PMU0: %d (0=tx, 1=rx) TgMask for this simulation: %x\n"
1605 },
1606 {0x00790001,
1607 "PMU0: eye-byte %d is disable\n"
1608 },
1609 {0x007a0001,
1610 "PMU0: eye-lane %d is disable\n"
1611 },
1612 {0x007b0003,
1613 "PMU10: Start d4_2d_lrdimm_rx_dfe dimm %d nbTap %d biasStepMode %d\n"
1614 },
1615 {0x007c0001,
1616 "PMU10: DB DFE feature not fully supported, F2BCEx value is 0x%02x\n"
1617 },
1618 {0x007d0001,
1619 "PMU10: DB DFE feature fully supported, F2BCEx value is 0x%02x\n"
1620 },
1621 {0x007e0002,
1622 "PMU8: Start d4_2d_lrdimm_rx_dfe for tap %d biasStepInc %d\n"
1623 },
1624 {0x007f0001,
1625 "PMU7: Start d4_2d_lrdimm_rx_dfe tapCoff 0x%0x\n"
1626 },
1627 {0x00800003,
1628 "PMU6: d4_2d_lrdimm_rx_dfe db %d lane %d area %d\n"
1629 },
1630 {0x00810004,
1631 "PMU7: d4_2d_lrdimm_rx_dfe db %d lane %d max area %d best bias 0x%0x\n"
1632 },
1633 {0x00820001,
1634 "PMU0: eye-lane %d is disable\n"
1635 },
1636 {0x00830003,
1637 "PMU5: Setting 0x%x improved rank weight (%4d < %4d)\n"
1638 },
1639 {0x00840001,
1640 "PMU4: Setting 0x%x still optimal\n"
1641 },
1642 {0x00850002,
1643 "PMU5: ---- Training CS%d MR%d DRAM Equalization ----\n"
1644 },
1645 {0x00860001,
1646 "PMU0: eye-lane %d is disable\n"
1647 },
1648 {0x00870003,
1649 "PMU0: eye %d weight %d allTgWeight %d\n"
1650 },
1651 {0x00880002,
1652 "PMU5: FFE figure of merit improved from %d to %d\n"
1653 },
1654 {0x00890002,
1655 "PMU: Error: LP4 rank %d cannot be mapped on tg %d\n"
1656 },
1657 {0x008a0000,
1658 "PMU4: Adjusting vrefDac0 for just 1->x transitions\n"
1659 },
1660 {0x008b0000,
1661 "PMU4: Adjusting vrefDac1 for just 0->x transitions\n"
1662 },
1663 {0x008c0001,
1664 "PMU5: Strong 1, pull-up %d ohms\n"
1665 },
1666 {0x008d0001,
1667 "PMU5: Strong 0, pull-down %d ohms\n"
1668 },
1669 {0x008e0000,
1670 "PMU4: Enabling weak drive strengths (FFE)\n"
1671 },
1672 {0x008f0000,
1673 "PMU5: Changing all weak driver strengths\n"
1674 },
1675 {0x00900000,
1676 "PMU5: Finalizing weak drive strengths\n"
1677 },
1678 {0x00910000,
1679 "PMU4: retraining with optimal drive strength settings\n"
1680 },
1681 {0x00920002,
1682 "PMU0: targeting CsX = %d and CsY = %d\n"
1683 },
1684 {0x00930001,
1685 "PMU1:prbsGenCtl:%x\n"
1686 },
1687 {0x00940000,
1688 "PMU1: loading 2D acsm sequence\n"
1689 },
1690 {0x00950000,
1691 "PMU1: loading 1D acsm sequence\n"
1692 },
1693 {0x00960002,
1694 "PMU3: %d memclocks @ %d to get half of 300ns\n"
1695 },
1696 {0x00970000,
1697 "PMU: Error: User requested MPR read pattern for read DQS training in DDR3 Mode\n"
1698 },
1699 {0x00980000,
1700 "PMU3: Running 1D search for left eye edge\n"
1701 },
1702 {0x00990001,
1703 "PMU1: In Phase Left Edge Search cs %d\n"
1704 },
1705 {0x009a0001,
1706 "PMU1: Out of Phase Left Edge Search cs %d\n"
1707 },
1708 {0x009b0000,
1709 "PMU3: Running 1D search for right eye edge\n"
1710 },
1711 {0x009c0001,
1712 "PMU1: In Phase Right Edge Search cs %d\n"
1713 },
1714 {0x009d0001,
1715 "PMU1: Out of Phase Right Edge Search cs %d\n"
1716 },
1717 {0x009e0001,
1718 "PMU1: mxRdLat training pstate %d\n"
1719 },
1720 {0x009f0001,
1721 "PMU1: mxRdLat search for cs %d\n"
1722 },
1723 {0x00a00001,
1724 "PMU0: MaxRdLat non consistent DtsmLoThldXingInd 0x%03x\n"
1725 },
1726 {0x00a10003,
1727 "PMU4: CS %d Dbyte %d worked with DFIMRL = %d DFICLKs\n"
1728 },
1729 {0x00a20004,
1730 "PMU3: MaxRdLat Read Lane err mask for csn %d, DFIMRL %2d DFIClks, dbyte %d = 0x%03x\n"
1731 },
1732 {0x00a30003,
1733 "PMU3: MaxRdLat Read Lane err mask for csn %d DFIMRL %2d, All dbytes = 0x%03x\n"
1734 },
1735 {0x00a40001,
1736 "PMU: Error: CS%d failed to find a DFIMRL setting that worked for all bytes during MaxRdLat training\n"
1737 },
1738 {0x00a50002,
1739 "PMU3: Smallest passing DFIMRL for all dbytes in CS%d = %d DFIClks\n"
1740 },
1741 {0x00a60000,
1742 "PMU: Error: No passing DFIMRL value found for any chip select during MaxRdLat training\n"
1743 },
1744 {0x00a70003,
1745 "PMU: Error: Dbyte %d lane %d txDqDly passing region is too small (width = %d)\n"
1746 },
1747 {0x00a80006,
1748 "PMU10: Adjusting rxclkdly db %d nib %d from %d+%d=%d->%d\n"
1749 },
1750 {0x00a90000,
1751 "PMU4: TxDqDly Passing Regions (EyeLeft EyeRight -> EyeCenter) Units=1/32 UI\n"
1752 },
1753 {0x00aa0005,
1754 "PMU4: DB %d Lane %d: %3d %3d -> %3d\n"
1755 },
1756 {0x00ab0002,
1757 "PMU2: TXDQ delayLeft[%2d] = %3d (DISCONNECTED)\n"
1758 },
1759 {0x00ac0004,
1760 "PMU2: TXDQ delayLeft[%2d] = %3d oopScaled = %3d selectOop %d\n"
1761 },
1762 {0x00ad0002,
1763 "PMU2: TXDQ delayRight[%2d] = %3d (DISCONNECTED)\n"
1764 },
1765 {0x00ae0004,
1766 "PMU2: TXDQ delayRight[%2d] = %3d oopScaled = %3d selectOop %d\n"
1767 },
1768 {0x00af0003,
1769 "PMU: Error: Dbyte %d lane %d txDqDly passing region is too small (width = %d)\n"
1770 },
1771 {0x00b00000,
1772 "PMU4: TxDqDly Passing Regions (EyeLeft EyeRight -> EyeCenter) Units=1/32 UI\n"
1773 },
1774 {0x00b10002,
1775 "PMU4: DB %d Lane %d: (DISCONNECTED)\n"
1776 },
1777 {0x00b20005,
1778 "PMU4: DB %d Lane %d: %3d %3d -> %3d\n"
1779 },
1780 {0x00b30002,
1781 "PMU3: Running 1D search csn %d for DM Right/NotLeft(%d) eye edge\n"
1782 },
1783 {0x00b40002,
1784 "PMU3: WrDq DM byte%2d with Errcnt %d\n"
1785 },
1786 {0x00b50002,
1787 "PMU3: WrDq DM byte%2d avgDly 0x%04x\n"
1788 },
1789 {0x00b60002,
1790 "PMU1: WrDq DM byte%2d with Errcnt %d\n"
1791 },
1792 {0x00b70001,
1793 "PMU: Error: Dbyte %d txDqDly DM training did not start inside the eye\n"
1794 },
1795 {0x00b80000,
1796 "PMU4: DM TxDqDly Passing Regions (EyeLeft EyeRight -> EyeCenter) Units=1/32 UI\n"
1797 },
1798 {0x00b90002,
1799 "PMU4: DB %d Lane %d: (DISCONNECTED)\n"
1800 },
1801 {0x00ba0005,
1802 "PMU4: DB %d Lane %d: %3d %3d -> %3d\n"
1803 },
1804 {0x00bb0003,
1805 "PMU: Error: Dbyte %d lane %d txDqDly DM passing region is too small (width = %d)\n"
1806 },
1807 {0x00bc0004,
1808 "PMU3: Errcnt for MRD/MWD search nib %2d delay = (%d, 0x%02x) = %d\n"
1809 },
1810 {0x00bd0000,
1811 "PMU3: Precharge all open banks\n"
1812 },
1813 {0x00be0002,
1814 "PMU: Error: Dbyte %d nibble %d found mutliple working coarse delay setting for MRD/MWD\n"
1815 },
1816 {0x00bf0000,
1817 "PMU4: MRD Passing Regions (coarseVal, fineLeft fineRight -> fineCenter)\n"
1818 },
1819 {0x00c00000,
1820 "PMU4: MWD Passing Regions (coarseVal, fineLeft fineRight -> fineCenter)\n"
1821 },
1822 {0x00c10004,
1823 "PMU10: Warning: DB %d nibble %d has multiple working coarse delays, %d and %d, choosing the smaller delay\n"
1824 },
1825 {0x00c20003,
1826 "PMU: Error: Dbyte %d nibble %d MRD/MWD passing region is too small (width = %d)\n"
1827 },
1828 {0x00c30006,
1829 "PMU4: DB %d nibble %d: %3d, %3d %3d -> %3d\n"
1830 },
1831 {0x00c40002,
1832 "PMU1: Start MRD/nMWD %d for csn %d\n"
1833 },
1834 {0x00c50002,
1835 "PMU2: RXDQS delayLeft[%2d] = %3d (DISCONNECTED)\n"
1836 },
1837 {0x00c60006,
1838 "PMU2: RXDQS delayLeft[%2d] = %3d delayOop[%2d] = %3d OopScaled %4d, selectOop %d\n"
1839 },
1840 {0x00c70002,
1841 "PMU2: RXDQS delayRight[%2d] = %3d (DISCONNECTED)\n"
1842 },
1843 {0x00c80006,
1844 "PMU2: RXDQS delayRight[%2d] = %3d delayOop[%2d] = %4d OopScaled %4d, selectOop %d\n"
1845 },
1846 {0x00c90000,
1847 "PMU4: RxClkDly Passing Regions (EyeLeft EyeRight -> EyeCenter)\n"
1848 },
1849 {0x00ca0002,
1850 "PMU4: DB %d nibble %d: (DISCONNECTED)\n"
1851 },
1852 {0x00cb0005,
1853 "PMU4: DB %d nibble %d: %3d %3d -> %3d\n"
1854 },
1855 {0x00cc0003,
1856 "PMU: Error: Dbyte %d nibble %d rxClkDly passing region is too small (width = %d)\n"
1857 },
1858 {0x00cd0002,
1859 "PMU0: goodbar = %d for RDWR_BLEN %d\n"
1860 },
1861 {0x00ce0001,
1862 "PMU3: RxClkDly = %d\n"
1863 },
1864 {0x00cf0005,
1865 "PMU0: db %d l %d absLane %d -> bottom %d top %d\n"
1866 },
1867 {0x00d00009,
1868 "PMU3: BYTE %d - %3d %3d %3d %3d %3d %3d %3d %3d\n"
1869 },
1870 {0x00d10002,
1871 "PMU: Error: dbyte %d lane %d's per-lane vrefDAC's had no passing region\n"
1872 },
1873 {0x00d20004,
1874 "PMU0: db%d l%d - %d %d\n"
1875 },
1876 {0x00d30002,
1877 "PMU0: goodbar = %d for RDWR_BLEN %d\n"
1878 },
1879 {0x00d40004,
1880 "PMU3: db%d l%d saw %d issues at rxClkDly %d\n"
1881 },
1882 {0x00d50003,
1883 "PMU3: db%d l%d first saw a pass->fail edge at rxClkDly %d\n"
1884 },
1885 {0x00d60002,
1886 "PMU3: lane %d PBD = %d\n"
1887 },
1888 {0x00d70003,
1889 "PMU3: db%d l%d first saw a DBI pass->fail edge at rxClkDly %d\n"
1890 },
1891 {0x00d80003,
1892 "PMU2: db%d l%d already passed rxPBD = %d\n"
1893 },
1894 {0x00d90003,
1895 "PMU0: db%d l%d, PBD = %d\n"
1896 },
1897 {0x00da0002,
1898 "PMU: Error: dbyte %d lane %d failed read deskew\n"
1899 },
1900 {0x00db0003,
1901 "PMU0: db%d l%d, inc PBD = %d\n"
1902 },
1903 {0x00dc0003,
1904 "PMU1: Running lane deskew on pstate %d csn %d rdDBIEn %d\n"
1905 },
1906 {0x00dd0000,
1907 "PMU: Error: Read deskew training has been requested, but csrMajorModeDbyte[2] is set\n"
1908 },
1909 {0x00de0002,
1910 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
1911 },
1912 {0x00df0002,
1913 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
1914 },
1915 {0x00e00001,
1916 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D3U Type\n"
1917 },
1918 {0x00e10001,
1919 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D3R Type\n"
1920 },
1921 {0x00e20001,
1922 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D4U Type\n"
1923 },
1924 {0x00e30001,
1925 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D4R Type\n"
1926 },
1927 {0x00e40001,
1928 "PMU: Error: Wrong PMU image loaded. message Block DramType = 0x%02x, but image built for D4LR Type\n"
1929 },
1930 {0x00e50000,
1931 "PMU: Error: Both 2t timing mode and ddr4 geardown mode specified in the messageblock's PhyCfg and MR3 fields. Only one can be enabled\n"
1932 },
1933 {0x00e60003,
1934 "PMU10: PHY TOTALS - NUM_DBYTES %d NUM_NIBBLES %d NUM_ANIBS %d\n"
1935 },
1936 {0x00e70006,
1937 "PMU10: CSA=0x%02x, CSB=0x%02x, TSTAGES=0x%04x, HDTOUT=%d, MMISC=%d DRAMFreq=%dMT DramType=LPDDR3\n"
1938 },
1939 {0x00e80006,
1940 "PMU10: CSA=0x%02x, CSB=0x%02x, TSTAGES=0x%04x, HDTOUT=%d, MMISC=%d DRAMFreq=%dMT DramType=LPDDR4\n"
1941 },
1942 {0x00e90008,
1943 "PMU10: CS=0x%02x, TSTAGES=0x%04x, HDTOUT=%d, 2T=%d, MMISC=%d AddrMirror=%d DRAMFreq=%dMT DramType=%d\n"
1944 },
1945 {0x00ea0004,
1946 "PMU10: Pstate%d MR0=0x%04x MR1=0x%04x MR2=0x%04x\n"
1947 },
1948 {0x00eb0008,
1949 "PMU10: Pstate%d MRS MR0=0x%04x MR1=0x%04x MR2=0x%04x MR3=0x%04x MR4=0x%04x MR5=0x%04x MR6=0x%04x\n"
1950 },
1951 {0x00ec0005,
1952 "PMU10: Pstate%d MRS MR1_A0=0x%04x MR2_A0=0x%04x MR3_A0=0x%04x MR11_A0=0x%04x\n"
1953 },
1954 {0x00ed0000,
1955 "PMU10: UseBroadcastMR set. All ranks and channels use MRXX_A0 for MR settings.\n"
1956 },
1957 {0x00ee0005,
1958 "PMU10: Pstate%d MRS MR01_A0=0x%02x MR02_A0=0x%02x MR03_A0=0x%02x MR11_A0=0x%02x\n"
1959 },
1960 {0x00ef0005,
1961 "PMU10: Pstate%d MRS MR12_A0=0x%02x MR13_A0=0x%02x MR14_A0=0x%02x MR22_A0=0x%02x\n"
1962 },
1963 {0x00f00005,
1964 "PMU10: Pstate%d MRS MR01_A1=0x%02x MR02_A1=0x%02x MR03_A1=0x%02x MR11_A1=0x%02x\n"
1965 },
1966 {0x00f10005,
1967 "PMU10: Pstate%d MRS MR12_A1=0x%02x MR13_A1=0x%02x MR14_A1=0x%02x MR22_A1=0x%02x\n"
1968 },
1969 {0x00f20005,
1970 "PMU10: Pstate%d MRS MR01_B0=0x%02x MR02_B0=0x%02x MR03_B0=0x%02x MR11_B0=0x%02x\n"
1971 },
1972 {0x00f30005,
1973 "PMU10: Pstate%d MRS MR12_B0=0x%02x MR13_B0=0x%02x MR14_B0=0x%02x MR22_B0=0x%02x\n"
1974 },
1975 {0x00f40005,
1976 "PMU10: Pstate%d MRS MR01_B1=0x%02x MR02_B1=0x%02x MR03_B1=0x%02x MR11_B1=0x%02x\n"
1977 },
1978 {0x00f50005,
1979 "PMU10: Pstate%d MRS MR12_B1=0x%02x MR13_B1=0x%02x MR14_B1=0x%02x MR22_B1=0x%02x\n"
1980 },
1981 {0x00f60002,
1982 "PMU1: AcsmOdtCtrl%02d 0x%02x\n"
1983 },
1984 {0x00f70002,
1985 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
1986 },
1987 {0x00f80002,
1988 "PMU1: AcsmCsMapCtrl%02d 0x%04x\n"
1989 },
1990 {0x00f90000,
1991 "PMU1: HwtCAMode set\n"
1992 },
1993 {0x00fa0001,
1994 "PMU3: DDR4 infinite preamble enter/exit mode %d\n"
1995 },
1996 {0x00fb0002,
1997 "PMU1: In rxenb_train() csn=%d pstate=%d\n"
1998 },
1999 {0x00fc0000,
2000 "PMU3: Finding DQS falling edge\n"
2001 },
2002 {0x00fd0000,
2003 "PMU3: Searching for DDR3/LPDDR3/LPDDR4 read preamble\n"
2004 },
2005 {0x00fe0009,
2006 "PMU3: dtsm fails Even Nibbles : %2x %2x %2x %2x %2x %2x %2x %2x %2x\n"
2007 },
2008 {0x00ff0009,
2009 "PMU3: dtsm fails Odd Nibbles : %2x %2x %2x %2x %2x %2x %2x %2x %2x\n"
2010 },
2011 {0x01000002,
2012 "PMU3: Preamble search pass=%d anyfail=%d\n"
2013 },
2014 {0x01010000,
2015 "PMU: Error: RxEn training preamble not found\n"
2016 },
2017 {0x01020000,
2018 "PMU3: Found DQS pre-amble\n"
2019 },
2020 {0x01030001,
2021 "PMU: Error: Dbyte %d couldn't find the rising edge of DQS during RxEn Training\n"
2022 },
2023 {0x01040000,
2024 "PMU3: RxEn aligning to first rising edge of burst\n"
2025 },
2026 {0x01050001,
2027 "PMU3: Decreasing RxEn delay by %d fine step to allow full capture of reads\n"
2028 },
2029 {0x01060001,
2030 "PMU3: MREP Delay = %d\n"
2031 },
2032 {0x01070003,
2033 "PMU3: Errcnt for MREP nib %2d delay = %2d is %d\n"
2034 },
2035 {0x01080002,
2036 "PMU3: MREP nibble %d sampled a 1 at data buffer delay %d\n"
2037 },
2038 {0x01090002,
2039 "PMU3: MREP nibble %d saw a 0 to 1 transition at data buffer delay %d\n"
2040 },
2041 {0x010a0000,
2042 "PMU2: MREP did not find a 0 to 1 transition for all nibbles. Failing nibbles assumed to have rising edge close to fine delay 63\n"
2043 },
2044 {0x010b0002,
2045 "PMU2: Rising edge found in alias window, setting rxDly for nibble %d = %d\n"
2046 },
2047 {0x010c0002,
2048 "PMU: Error: Failed MREP for nib %d with %d one\n"
2049 },
2050 {0x010d0003,
2051 "PMU2: Rising edge not found in alias window with %d one, leaving rxDly for nibble %d = %d\n"
2052 },
2053 {0x010e0002,
2054 "PMU3: Training DIMM %d CSn %d\n"
2055 },
2056 {0x010f0001,
2057 "PMU3: exitCAtrain_lp3 cs 0x%x\n"
2058 },
2059 {0x01100001,
2060 "PMU3: enterCAtrain_lp3 cs 0x%x\n"
2061 },
2062 {0x01110001,
2063 "PMU3: CAtrain_switchmsb_lp3 cs 0x%x\n"
2064 },
2065 {0x01120001,
2066 "PMU3: CATrain_rdwr_lp3 looking for pattern %x\n"
2067 },
2068 {0x01130000,
2069 "PMU3: exitCAtrain_lp4\n"
2070 },
2071 {0x01140001,
2072 "PMU3: DEBUG enterCAtrain_lp4 1: cs 0x%x\n"
2073 },
2074 {0x01150001,
2075 "PMU3: DEBUG enterCAtrain_lp4 3: Put dbyte %d in async mode\n"
2076 },
2077 {0x01160000,
2078 "PMU3: DEBUG enterCAtrain_lp4 5: Send MR13 to turn on CA training\n"
2079 },
2080 {0x01170003,
2081 "PMU3: DEBUG enterCAtrain_lp4 7: idx = %d vref = %x mr12 = %x\n"
2082 },
2083 {0x01180001,
2084 "PMU3: CATrain_rdwr_lp4 looking for pattern %x\n"
2085 },
2086 {0x01190004,
2087 "PMU3: Phase %d CAreadbackA db:%d %x xo:%x\n"
2088 },
2089 {0x011a0005,
2090 "PMU3: DEBUG lp4SetCatrVref 1: cs=%d chan=%d mr12=%x vref=%d.%d%%\n"
2091 },
2092 {0x011b0003,
2093 "PMU3: DEBUG lp4SetCatrVref 3: mr12 = %x send vref= %x to db=%d\n"
2094 },
2095 {0x011c0000,
2096 "PMU10:Optimizing vref\n"
2097 },
2098 {0x011d0004,
2099 "PMU4:mr12:%2x cs:%d chan %d r:%4x\n"
2100 },
2101 {0x011e0005,
2102 "PMU3: i:%2d bstr:%2d bsto:%2d st:%d r:%d\n"
2103 },
2104 {0x011f0002,
2105 "Failed to find sufficient CA Vref Passing Region for CS %d ch. %d\n"
2106 },
2107 {0x01200005,
2108 "PMU3:Found %d.%d%% MR12:%x for cs:%d chan %d\n"
2109 },
2110 {0x01210002,
2111 "PMU3:Calculated %d for AtxImpedence from acx %d.\n"
2112 },
2113 {0x01220000,
2114 "PMU3:CA Odt impedence ==0. Use default vref.\n"
2115 },
2116 {0x01230003,
2117 "PMU3:Calculated %d.%d%% for Vref MR12=0x%x.\n"
2118 },
2119 {0x01240000,
2120 "PMU3: CAtrain_lp\n"
2121 },
2122 {0x01250000,
2123 "PMU3: CAtrain Begins.\n"
2124 },
2125 {0x01260001,
2126 "PMU3: CAtrain_lp testing dly %d\n"
2127 },
2128 {0x01270001,
2129 "PMU5: CA bitmap dump for cs %x\n"
2130 },
2131 {0x01280001,
2132 "PMU5: CAA%d "
2133 },
2134 {0x01290001, "%02x"
2135 },
2136 {0x012a0000, "\n"
2137 },
2138 {0x012b0001,
2139 "PMU5: CAB%d "
2140 },
2141 {0x012c0001, "%02x"
2142 },
2143 {0x012d0000, "\n"
2144 },
2145 {0x012e0003,
2146 "PMU3: anibi=%d, anibichan[anibi]=%d ,chan=%d\n"
2147 },
2148 {0x012f0001, "%02x"
2149 },
2150 {0x01300001, "\nPMU3:Raw CA setting :%x"
2151 },
2152 {0x01310002, "\nPMU3:ATxDly setting:%x margin:%d\n"
2153 },
2154 {0x01320002, "\nPMU3:InvClk ATxDly setting:%x margin:%d\n"
2155 },
2156 {0x01330000, "\nPMU3:No Range found!\n"
2157 },
2158 {0x01340003,
2159 "PMU3: 2 anibi=%d, anibichan[anibi]=%d ,chan=%d"
2160 },
2161 {0x01350002, "\nPMU3: no neg clock => CA setting anib=%d, :%d\n"
2162 },
2163 {0x01360001,
2164 "PMU3:Normal margin:%d\n"
2165 },
2166 {0x01370001,
2167 "PMU3:Inverted margin:%d\n"
2168 },
2169 {0x01380000,
2170 "PMU3:Using Inverted clock\n"
2171 },
2172 {0x01390000,
2173 "PMU3:Using normal clk\n"
2174 },
2175 {0x013a0003,
2176 "PMU3: 3 anibi=%d, anibichan[anibi]=%d ,chan=%d\n"
2177 },
2178 {0x013b0002,
2179 "PMU3: Setting ATxDly for anib %x to %x\n"
2180 },
2181 {0x013c0000,
2182 "PMU: Error: CA Training Failed.\n"
2183 },
2184 {0x013d0000,
2185 "PMU1: Writing MRs\n"
2186 },
2187 {0x013e0000,
2188 "PMU4:Using MR12 values from 1D CA VREF training.\n"
2189 },
2190 {0x013f0000,
2191 "PMU3:Writing all MRs to fsp 1\n"
2192 },
2193 {0x01400000,
2194 "PMU10:Lp4Quickboot mode.\n"
2195 },
2196 {0x01410000,
2197 "PMU3: Writing MRs\n"
2198 },
2199 {0x01420001,
2200 "PMU10: Setting boot clock divider to %d\n"
2201 },
2202 {0x01430000,
2203 "PMU3: Resetting DRAM\n"
2204 },
2205 {0x01440000,
2206 "PMU3: setup for RCD initalization\n"
2207 },
2208 {0x01450000,
2209 "PMU3: pmu_exit_SR from dev_init()\n"
2210 },
2211 {0x01460000,
2212 "PMU3: initializing RCD\n"
2213 },
2214 {0x01470000,
2215 "PMU10: **** Executing 2D Image ****\n"
2216 },
2217 {0x01480001,
2218 "PMU10: **** Start DDR4 Training. PMU Firmware Revision 0x%04x ****\n"
2219 },
2220 {0x01490001,
2221 "PMU10: **** Start DDR3 Training. PMU Firmware Revision 0x%04x ****\n"
2222 },
2223 {0x014a0001,
2224 "PMU10: **** Start LPDDR3 Training. PMU Firmware Revision 0x%04x ****\n"
2225 },
2226 {0x014b0001,
2227 "PMU10: **** Start LPDDR4 Training. PMU Firmware Revision 0x%04x ****\n"
2228 },
2229 {0x014c0000,
2230 "PMU: Error: Mismatched internal revision between DCCM and ICCM images\n"
2231 },
2232 {0x014d0001,
2233 "PMU10: **** Testchip %d Specific Firmware ****\n"
2234 },
2235 {0x014e0000,
2236 "PMU1: LRDIMM with EncodedCS mode, one DIMM\n"
2237 },
2238 {0x014f0000,
2239 "PMU1: LRDIMM with EncodedCS mode, two DIMMs\n"
2240 },
2241 {0x01500000,
2242 "PMU1: RDIMM with EncodedCS mode, one DIMM\n"
2243 },
2244 {0x01510000,
2245 "PMU2: Starting LRDIMM MREP training for all ranks\n"
2246 },
2247 {0x01520000,
2248 "PMU199: LRDIMM MREP training for all ranks completed\n"
2249 },
2250 {0x01530000,
2251 "PMU2: Starting LRDIMM DWL training for all ranks\n"
2252 },
2253 {0x01540000,
2254 "PMU199: LRDIMM DWL training for all ranks completed\n"
2255 },
2256 {0x01550000,
2257 "PMU2: Starting LRDIMM MRD training for all ranks\n"
2258 },
2259 {0x01560000,
2260 "PMU199: LRDIMM MRD training for all ranks completed\n"
2261 },
2262 {0x01570000,
2263 "PMU2: Starting RXEN training for all ranks\n"
2264 },
2265 {0x01580000,
2266 "PMU2: Starting write leveling fine delay training for all ranks\n"
2267 },
2268 {0x01590000,
2269 "PMU2: Starting LRDIMM MWD training for all ranks\n"
2270 },
2271 {0x015a0000,
2272 "PMU199: LRDIMM MWD training for all ranks completed\n"
2273 },
2274 {0x015b0000,
2275 "PMU2: Starting write leveling fine delay training for all ranks\n"
2276 },
2277 {0x015c0000,
2278 "PMU2: Starting read deskew training\n"
2279 },
2280 {0x015d0000,
2281 "PMU2: Starting SI friendly 1d RdDqs training for all ranks\n"
2282 },
2283 {0x015e0000,
2284 "PMU2: Starting write leveling coarse delay training for all ranks\n"
2285 },
2286 {0x015f0000,
2287 "PMU2: Starting 1d WrDq training for all ranks\n"
2288 },
2289 {0x01600000,
2290 "PMU2: Running DQS2DQ Oscillator for all ranks\n"
2291 },
2292 {0x01610000,
2293 "PMU2: Starting again read deskew training but with PRBS\n"
2294 },
2295 {0x01620000,
2296 "PMU2: Starting 1d RdDqs training for all ranks\n"
2297 },
2298 {0x01630000,
2299 "PMU2: Starting again 1d WrDq training for all ranks\n"
2300 },
2301 {0x01640000,
2302 "PMU2: Starting MaxRdLat training\n"
2303 },
2304 {0x01650000,
2305 "PMU2: Starting 2d WrDq training for all ranks\n"
2306 },
2307 {0x01660000,
2308 "PMU2: Starting 2d RdDqs training for all ranks\n"
2309 },
2310 {0x01670002,
2311 "PMU3:read_fifo %x %x\n"
2312 },
2313 {0x01680001,
2314 "PMU: Error: Invalid PhyDrvImpedance of 0x%x specified in message block.\n"
2315 },
2316 {0x01690001,
2317 "PMU: Error: Invalid PhyOdtImpedance of 0x%x specified in message block.\n"
2318 },
2319 {0x016a0001,
2320 "PMU: Error: Invalid BPZNResVal of 0x%x specified in message block.\n"
2321 },
2322 {0x016b0005,
2323 "PMU3: fixRxEnBackOff csn:%d db:%d dn:%d bo:%d dly:%x\n"
2324 },
2325 {0x016c0001,
2326 "PMU3: fixRxEnBackOff dly:%x\n"
2327 },
2328 {0x016d0000,
2329 "PMU3: Entering setupPpt\n"
2330 },
2331 {0x016e0000,
2332 "PMU3: Start lp4PopulateHighLowBytes\n"
2333 },
2334 {0x016f0002,
2335 "PMU3:Dbyte Detect: db%d received %x\n"
2336 },
2337 {0x01700002,
2338 "PMU3:getDqs2Dq read %x from dbyte %d\n"
2339 },
2340 {0x01710002,
2341 "PMU3:getDqs2Dq(2) read %x from dbyte %d\n"
2342 },
2343 {0x01720001,
2344 "PMU: Error: Dbyte %d read 0 from the DQS oscillator it is connected to\n"
2345 },
2346 {0x01730002,
2347 "PMU4: Dbyte %d dqs2dq = %d/32 UI\n"
2348 },
2349 {0x01740003,
2350 "PMU3:getDqs2Dq set dqs2dq:%d/32 ui (%d ps) from dbyte %d\n"
2351 },
2352 {0x01750003,
2353 "PMU3: Setting coarse delay in AtxDly chiplet %d from 0x%02x to 0x%02x\n"
2354 },
2355 {0x01760003,
2356 "PMU3: Clearing coarse delay in AtxDly chiplet %d from 0x%02x to 0x%02x\n"
2357 },
2358 {0x01770000,
2359 "PMU3: Performing DDR4 geardown sync sequence\n"
2360 },
2361 {0x01780000,
2362 "PMU1: Enter self refresh\n"
2363 },
2364 {0x01790000,
2365 "PMU1: Exit self refresh\n"
2366 },
2367 {0x017a0000,
2368 "PMU: Error: No dbiEnable with lp4\n"
2369 },
2370 {0x017b0000,
2371 "PMU: Error: No dbiDisable with lp4\n"
2372 },
2373 {0x017c0001,
2374 "PMU1: DDR4 update Rx DBI Setting disable %d\n"
2375 },
2376 {0x017d0001,
2377 "PMU1: DDR4 update 2nCk WPre Setting disable %d\n"
2378 },
2379 {0x017e0005,
2380 "PMU1: read_delay: db%d lane%d delays[%2d] = 0x%02x (max 0x%02x)\n"
2381 },
2382 {0x017f0004,
2383 "PMU1: write_delay: db%d lane%d delays[%2d] = 0x%04x\n"
2384 },
2385 {0x01800001,
2386 "PMU5: ID=%d -- db0 db1 db2 db3 db4 db5 db6 db7 db8 db9 --\n"
2387 },
2388 {0x0181000b,
2389 "PMU5: [%d]:0x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n"
2390 },
2391 {0x01820003,
2392 "PMU2: dump delays - pstate=%d dimm=%d csn=%d\n"
2393 },
2394 {0x01830000,
2395 "PMU3: Printing Mid-Training Delay Information\n"
2396 },
2397 {0x01840001,
2398 "PMU5: CS%d <<KEY>> 0 TrainingCntr <<KEY>> coarse(15:10) fine(9:0)\n"
2399 },
2400 {0x01850001,
2401 "PMU5: CS%d <<KEY>> 0 RxEnDly, 1 RxClkDly <<KEY>> coarse(10:6) fine(5:0)\n"
2402 },
2403 {0x01860001,
2404 "PMU5: CS%d <<KEY>> 0 TxDqsDly, 1 TxDqDly <<KEY>> coarse(9:6) fine(5:0)\n"
2405 },
2406 {0x01870001,
2407 "PMU5: CS%d <<KEY>> 0 RxPBDly <<KEY>> 1 Delay Unit ~= 7ps\n"
2408 },
2409 {0x01880000,
2410 "PMU5: all CS <<KEY>> 0 DFIMRL <<KEY>> Units = DFI clocks\n"
2411 },
2412 {0x01890000,
2413 "PMU5: all CS <<KEY>> VrefDACs <<KEY>> DAC(6:0)\n"
2414 },
2415 {0x018a0000,
2416 "PMU1: Set DMD in MR13 and wrDBI in MR3 for training\n"
2417 },
2418 {0x018b0000,
2419 "PMU: Error: getMaxRxen() failed to find largest rxen nibble delay\n"
2420 },
2421 {0x018c0003,
2422 "PMU2: getMaxRxen(): maxDly %d maxTg %d maxNib %d\n"
2423 },
2424 {0x018d0003,
2425 "PMU2: getRankMaxRxen(): maxDly %d Tg %d maxNib %d\n"
2426 },
2427 {0x018e0000,
2428 "PMU1: skipping CDD calculation in 2D image\n"
2429 },
2430 {0x018f0001,
2431 "PMU3: Calculating CDDs for pstate %d\n"
2432 },
2433 {0x01900003,
2434 "PMU3: rxFromDly[%d][%d] = %d\n"
2435 },
2436 {0x01910003,
2437 "PMU3: rxToDly [%d][%d] = %d\n"
2438 },
2439 {0x01920003,
2440 "PMU3: rxDly [%d][%d] = %d\n"
2441 },
2442 {0x01930003,
2443 "PMU3: txDly [%d][%d] = %d\n"
2444 },
2445 {0x01940003,
2446 "PMU3: allFine CDD_RR_%d_%d = %d\n"
2447 },
2448 {0x01950003,
2449 "PMU3: allFine CDD_WW_%d_%d = %d\n"
2450 },
2451 {0x01960003,
2452 "PMU3: CDD_RR_%d_%d = %d\n"
2453 },
2454 {0x01970003,
2455 "PMU3: CDD_WW_%d_%d = %d\n"
2456 },
2457 {0x01980003,
2458 "PMU3: allFine CDD_RW_%d_%d = %d\n"
2459 },
2460 {0x01990003,
2461 "PMU3: allFine CDD_WR_%d_%d = %d\n"
2462 },
2463 {0x019a0003,
2464 "PMU3: CDD_RW_%d_%d = %d\n"
2465 },
2466 {0x019b0003,
2467 "PMU3: CDD_WR_%d_%d = %d\n"
2468 },
2469 {0x019c0004,
2470 "PMU3: F%dBC2x_B%d_D%d = 0x%02x\n"
2471 },
2472 {0x019d0004,
2473 "PMU3: F%dBC3x_B%d_D%d = 0x%02x\n"
2474 },
2475 {0x019e0004,
2476 "PMU3: F%dBC4x_B%d_D%d = 0x%02x\n"
2477 },
2478 {0x019f0004,
2479 "PMU3: F%dBC5x_B%d_D%d = 0x%02x\n"
2480 },
2481 {0x01a00004,
2482 "PMU3: F%dBC8x_B%d_D%d = 0x%02x\n"
2483 },
2484 {0x01a10004,
2485 "PMU3: F%dBC9x_B%d_D%d = 0x%02x\n"
2486 },
2487 {0x01a20004,
2488 "PMU3: F%dBCAx_B%d_D%d = 0x%02x\n"
2489 },
2490 {0x01a30004,
2491 "PMU3: F%dBCBx_B%d_D%d = 0x%02x\n"
2492 },
2493 {0x01a40000,
2494 "PMU10: Entering context_switch_postamble\n"
2495 },
2496 {0x01a50003,
2497 "PMU10: context_switch_postamble is enabled for DIMM %d, RC0A=0x%x, RC3x=0x%x\n"
2498 },
2499 {0x01a60000,
2500 "PMU10: Setting bcw fspace 0\n"
2501 },
2502 {0x01a70001,
2503 "PMU10: Sending BC0A = 0x%x\n"
2504 },
2505 {0x01a80001,
2506 "PMU10: Sending BC6x = 0x%x\n"
2507 },
2508 {0x01a90001,
2509 "PMU10: Sending RC0A = 0x%x\n"
2510 },
2511 {0x01aa0001,
2512 "PMU10: Sending RC3x = 0x%x\n"
2513 },
2514 {0x01ab0001,
2515 "PMU10: Sending RC0A = 0x%x\n"
2516 },
2517 {0x01ac0001,
2518 "PMU1: enter_lp3: DEBUG: pstate = %d\n"
2519 },
2520 {0x01ad0001,
2521 "PMU1: enter_lp3: DEBUG: dfifreqxlat_pstate = %d\n"
2522 },
2523 {0x01ae0001,
2524 "PMU1: enter_lp3: DEBUG: pllbypass = %d\n"
2525 },
2526 {0x01af0001,
2527 "PMU1: enter_lp3: DEBUG: forcecal = %d\n"
2528 },
2529 {0x01b00001,
2530 "PMU1: enter_lp3: DEBUG: pllmaxrange = 0x%x\n"
2531 },
2532 {0x01b10001,
2533 "PMU1: enter_lp3: DEBUG: dacval_out = 0x%x\n"
2534 },
2535 {0x01b20001,
2536 "PMU1: enter_lp3: DEBUG: pllctrl3 = 0x%x\n"
2537 },
2538 {0x01b30000,
2539 "PMU3: Loading DRAM with BIOS supplied MR values and entering self refresh prior to exiting PMU code.\n"
2540 },
2541 {0x01b40002,
2542 "PMU3: Setting DataBuffer function space of dimmcs 0x%02x to %d\n"
2543 },
2544 {0x01b50002,
2545 "PMU4: Setting RCW FxRC%Xx = 0x%02x\n"
2546 },
2547 {0x01b60002,
2548 "PMU4: Setting RCW FxRC%02x = 0x%02x\n"
2549 },
2550 {0x01b70001,
2551 "PMU1: DDR4 update Rd Pre Setting disable %d\n"
2552 },
2553 {0x01b80002,
2554 "PMU2: Setting BCW FxBC%Xx = 0x%02x\n"
2555 },
2556 {0x01b90002,
2557 "PMU2: Setting BCW BC%02x = 0x%02x\n"
2558 },
2559 {0x01ba0002,
2560 "PMU2: Setting BCW PBA mode FxBC%Xx = 0x%02x\n"
2561 },
2562 {0x01bb0002,
2563 "PMU2: Setting BCW PBA mode BC%02x = 0x%02x\n"
2564 },
2565 {0x01bc0003,
2566 "PMU4: BCW value for dimm %d, fspace %d, addr 0x%04x\n"
2567 },
2568 {0x01bd0002,
2569 "PMU4: DB %d, value 0x%02x\n"
2570 },
2571 {0x01be0000,
2572 "PMU6: WARNING MREP underflow, set to min value -2 coarse, 0 fine\n"
2573 },
2574 {0x01bf0004,
2575 "PMU6: LRDIMM Writing final data buffer fine delay value nib %2d, trainDly %3d, fineDly code %2d, new MREP fine %2d\n"
2576 },
2577 {0x01c00003,
2578 "PMU6: LRDIMM Writing final data buffer fine delay value nib %2d, trainDly %3d, fineDly code %2d\n"
2579 },
2580 {0x01c10003,
2581 "PMU6: LRDIMM Writing data buffer fine delay type %d nib %2d, code %2d\n"
2582 },
2583 {0x01c20002,
2584 "PMU6: Writing final data buffer coarse delay value dbyte %2d, coarse = 0x%02x\n"
2585 },
2586 {0x01c30003,
2587 "PMU4: data 0x%04x at MB addr 0x%08x saved at CSR addr 0x%08x\n"
2588 },
2589 {0x01c40003,
2590 "PMU4: data 0x%04x at MB addr 0x%08x restored from CSR addr 0x%08x\n"
2591 },
2592 {0x01c50003,
2593 "PMU4: data 0x%04x at MB addr 0x%08x saved at CSR addr 0x%08x\n"
2594 },
2595 {0x01c60003,
2596 "PMU4: data 0x%04x at MB addr 0x%08x restored from CSR addr 0x%08x\n"
2597 },
2598 {0x01c70001,
2599 "PMU3: Update BC00, BC01, BC02 for rank-dimm 0x%02x\n"
2600 },
2601 {0x01c80000,
2602 "PMU3: Writing D4 RDIMM RCD Control words F0RC00 -> F0RC0F\n"
2603 },
2604 {0x01c90000,
2605 "PMU3: Disable parity in F0RC0E\n"
2606 },
2607 {0x01ca0000,
2608 "PMU3: Writing D4 RDIMM RCD Control words F1RC00 -> F1RC05\n"
2609 },
2610 {0x01cb0000,
2611 "PMU3: Writing D4 RDIMM RCD Control words F1RC1x -> F1RC9x\n"
2612 },
2613 {0x01cc0000,
2614 "PMU3: Writing D4 Data buffer Control words BC00 -> BC0E\n"
2615 },
2616 {0x01cd0002,
2617 "PMU1: setAltCL Sending MR0 0x%x cl=%d\n"
2618 },
2619 {0x01ce0002,
2620 "PMU1: restoreFromAltCL Sending MR0 0x%x cl=%d\n"
2621 },
2622 {0x01cf0002,
2623 "PMU1: restoreAcsmFromAltCL Sending MR0 0x%x cl=%d\n"
2624 },
2625 {0x01d00002,
2626 "PMU2: Setting D3R RC%d = 0x%01x\n"
2627 },
2628 {0x01d10000,
2629 "PMU3: Writing D3 RDIMM RCD Control words RC0 -> RC11\n"
2630 },
2631 {0x01d20002,
2632 "PMU0: VrefDAC0/1 vddqStart %d dacToVddq %d\n"
2633 },
2634 {0x01d30001,
2635 "PMU: Error: Messageblock phyVref=0x%x is above the limit for TSMC28's attenuated LPDDR4 receivers. Please see the pub databook\n"
2636 },
2637 {0x01d40001,
2638 "PMU: Error: Messageblock phyVref=0x%x is above the limit for TSMC28's attenuated DDR4 receivers. Please see the pub databook\n"
2639 },
2640 {0x01d50001,
2641 "PMU0: PHY VREF @ (%d/1000) VDDQ\n"
2642 },
2643 {0x01d60002,
2644 "PMU0: initalizing phy vrefDacs to %d ExtVrefRange %x\n"
2645 },
2646 {0x01d70002,
2647 "PMU0: initalizing global vref to %d range %d\n"
2648 },
2649 {0x01d80002,
2650 "PMU4: Setting initial device vrefDQ for CS%d to MR6 = 0x%04x\n"
2651 },
2652 {0x01d90003,
2653 "PMU1: In write_level_fine() csn=%d dimm=%d pstate=%d\n"
2654 },
2655 {0x01da0000,
2656 "PMU3: Fine write leveling hardware search increasing TxDqsDly until full bursts are seen\n"
2657 },
2658 {0x01db0000,
2659 "PMU4: WL normalized pos : ........................|........................\n"
2660 },
2661 {0x01dc0007,
2662 "PMU4: WL margin for nib %2d: %08x%08x%08x%08x%08x%08x\n"
2663 },
2664 {0x01dd0000,
2665 "PMU4: WL normalized pos : ........................|........................\n"
2666 },
2667 {0x01de0000,
2668 "PMU3: Exiting write leveling mode\n"
2669 },
2670 {0x01df0001,
2671 "PMU3: got %d for cl in load_wrlvl_acsm\n"
2672 },
2673 {0x01e00003,
2674 "PMU1: In write_level_coarse() csn=%d dimm=%d pstate=%d\n"
2675 },
2676 {0x01e10003,
2677 "PMU3: left eye edge search db:%d ln:%d dly:0x%x\n"
2678 },
2679 {0x01e20003,
2680 "PMU3: right eye edge search db:%d ln:%d dly:0x%x\n"
2681 },
2682 {0x01e30004,
2683 "PMU3: eye center db:%d ln:%d dly:0x%x (maxdq:%x)\n"
2684 },
2685 {0x01e40003,
2686 "PMU3: Wrote to TxDqDly db:%d ln:%d dly:0x%x\n"
2687 },
2688 {0x01e50003,
2689 "PMU3: Wrote to TxDqDly db:%d ln:%d dly:0x%x\n"
2690 },
2691 {0x01e60002,
2692 "PMU3: Coarse write leveling dbyte%2d is still failing for TxDqsDly=0x%04x\n"
2693 },
2694 {0x01e70002,
2695 "PMU4: Coarse write leveling iteration %d saw %d data miscompares across the entire phy\n"
2696 },
2697 {0x01e80000,
2698 "PMU: Error: Failed write leveling coarse\n"
2699 },
2700 {0x01e90001,
2701 "PMU3: got %d for cl in load_wrlvl_acsm\n"
2702 },
2703 {0x01ea0003,
2704 "PMU3: In write_level_coarse() csn=%d dimm=%d pstate=%d\n"
2705 },
2706 {0x01eb0003,
2707 "PMU3: left eye edge search db:%d ln:%d dly:0x%x\n"
2708 },
2709 {0x01ec0003,
2710 "PMU3: right eye edge search db: %d ln: %d dly: 0x%x\n"
2711 },
2712 {0x01ed0004,
2713 "PMU3: eye center db: %d ln: %d dly: 0x%x (maxdq: 0x%x)\n"
2714 },
2715 {0x01ee0003,
2716 "PMU3: Wrote to TxDqDly db: %d ln: %d dly: 0x%x\n"
2717 },
2718 {0x01ef0003,
2719 "PMU3: Wrote to TxDqDly db: %d ln: %d dly: 0x%x\n"
2720 },
2721 {0x01f00002,
2722 "PMU3: Coarse write leveling nibble%2d is still failing for TxDqsDly=0x%04x\n"
2723 },
2724 {0x01f10002,
2725 "PMU4: Coarse write leveling iteration %d saw %d data miscompares across the entire phy\n"
2726 },
2727 {0x01f20000,
2728 "PMU: Error: Failed write leveling coarse\n"
2729 },
2730 {0x01f30000,
2731 "PMU4: WL normalized pos : ................................|................................\n"
2732 },
2733 {0x01f40009,
2734 "PMU4: WL margin for nib %2d: %08x%08x%08x%08x%08x%08x%08x%08x\n"
2735 },
2736 {0x01f50000,
2737 "PMU4: WL normalized pos : ................................|................................\n"
2738 },
2739 {0x01f60001,
2740 "PMU8: Adjust margin after WL coarse to be larger than %d\n"
2741 },
2742 {0x01f70001,
2743 "PMU: Error: All margin after write leveling coarse are smaller than minMargin %d\n"
2744 },
2745 {0x01f80002,
2746 "PMU8: Decrement nib %d TxDqsDly by %d fine step\n"
2747 },
2748 {0x01f90003,
2749 "PMU3: In write_level_coarse() csn=%d dimm=%d pstate=%d\n"
2750 },
2751 {0x01fa0005,
2752 "PMU2: Write level: dbyte %d nib%d dq/dmbi %2d dqsfine 0x%04x dqDly 0x%04x\n"
2753 },
2754 {0x01fb0002,
2755 "PMU3: Coarse write leveling nibble%2d is still failing for TxDqsDly=0x%04x\n"
2756 },
2757 {0x01fc0002,
2758 "PMU4: Coarse write leveling iteration %d saw %d data miscompares across the entire phy\n"
2759 },
2760 {0x01fd0000,
2761 "PMU: Error: Failed write leveling coarse\n"
2762 },
2763 {0x01fe0001,
2764 "PMU3: DWL delay = %d\n"
2765 },
2766 {0x01ff0003,
2767 "PMU3: Errcnt for DWL nib %2d delay = %2d is %d\n"
2768 },
2769 {0x02000002,
2770 "PMU3: DWL nibble %d sampled a 1 at delay %d\n"
2771 },
2772 {0x02010003,
2773 "PMU3: DWL nibble %d passed at delay %d. Rising edge was at %d\n"
2774 },
2775 {0x02020000,
2776 "PMU2: DWL did nto find a rising edge of memclk for all nibbles. Failing nibbles assumed to have rising edge close to fine delay 63\n"
2777 },
2778 {0x02030002,
2779 "PMU2: Rising edge found in alias window, setting wrlvlDly for nibble %d = %d\n"
2780 },
2781 {0x02040002,
2782 "PMU: Error: Failed DWL for nib %d with %d one\n"
2783 },
2784 {0x02050003,
2785 "PMU2: Rising edge not found in alias window with %d one, leaving wrlvlDly for nibble %d = %d\n"
2786 },
2787 {0x04000000,
2788 "PMU: Error:Mailbox Buffer Overflowed.\n"
2789 },
2790 {0x04010000,
2791 "PMU: Error:Mailbox Buffer Overflowed.\n"
2792 },
2793 {0x04020000,
2794 "PMU: ***** Assertion Error - terminating *****\n"
2795 },
2796 {0x04030002,
2797 "PMU1: swapByte db %d by %d\n"
2798 },
2799 {0x04040003,
2800 "PMU3: get_cmd_dly max(%d ps, %d memclk) = %d\n"
2801 },
2802 {0x04050002,
2803 "PMU0: Write CSR 0x%06x 0x%04x\n"
2804 },
2805 {0x04060002,
2806 "PMU0: hwt_init_ppgc_prbs(): Polynomial: %x, Deg: %d\n"
2807 },
2808 {0x04070001,
2809 "PMU: Error: acsm_set_cmd to non existent instruction address %d\n"
2810 },
2811 {0x04080001,
2812 "PMU: Error: acsm_set_cmd with unknown ddr cmd 0x%x\n"
2813 },
2814 {0x0409000c,
2815 "PMU1: acsm_addr %02x, acsm_flgs %04x, ddr_cmd %02x, cmd_dly %02x, ddr_addr %04x, ddr_bnk %02x, ddr_cs %02x, cmd_rcnt %02x, AcsmSeq0/1/2/3 %04x %04x %04x %04x\n"
2816 },
2817 {0x040a0000,
2818 "PMU: Error: Polling on ACSM done failed to complete in acsm_poll_done()...\n"
2819 },
2820 {0x040b0000,
2821 "PMU1: acsm RUN\n"
2822 },
2823 {0x040c0000,
2824 "PMU1: acsm STOPPED\n"
2825 },
2826 {0x040d0002,
2827 "PMU1: acsm_init: acsm_mode %04x mxrdlat %04x\n"
2828 },
2829 {0x040e0002,
2830 "PMU: Error: setAcsmCLCWL: cl and cwl must be each >= 2 and 5, resp. CL=%d CWL=%d\n"
2831 },
2832 {0x040f0002,
2833 "PMU: Error: setAcsmCLCWL: cl and cwl must be each >= 5. CL=%d CWL=%d\n"
2834 },
2835 {0x04100002,
2836 "PMU1: setAcsmCLCWL: CASL %04d WCASL %04d\n"
2837 },
2838 {0x04110001,
2839 "PMU: Error: Reserved value of register F0RC0F found in message block: 0x%04x\n"
2840 },
2841 {0x04120001,
2842 "PMU3: Written MRS to CS=0x%02x\n"
2843 },
2844 {0x04130001,
2845 "PMU3: Written MRS to CS=0x%02x\n"
2846 },
2847 {0x04140000,
2848 "PMU3: Entering Boot Freq Mode.\n"
2849 },
2850 {0x04150001,
2851 "PMU: Error: Boot clock divider setting of %d is too small\n"
2852 },
2853 {0x04160000,
2854 "PMU3: Exiting Boot Freq Mode.\n"
2855 },
2856 {0x04170002,
2857 "PMU3: Writing MR%d OP=%x\n"
2858 },
2859 {0x04180000,
2860 "PMU: Error: Delay too large in slomo\n"
2861 },
2862 {0x04190001,
2863 "PMU3: Written MRS to CS=0x%02x\n"
2864 },
2865 {0x041a0000,
2866 "PMU3: Enable Channel A\n"
2867 },
2868 {0x041b0000,
2869 "PMU3: Enable Channel B\n"
2870 },
2871 {0x041c0000,
2872 "PMU3: Enable All Channels\n"
2873 },
2874 {0x041d0002,
2875 "PMU2: Use PDA mode to set MR%d with value 0x%02x\n"
2876 },
2877 {0x041e0001,
2878 "PMU3: Written Vref with PDA to CS=0x%02x\n"
2879 },
2880 {0x041f0000,
2881 "PMU1: start_cal: DEBUG: setting CalRun to 1\n"
2882 },
2883 {0x04200000,
2884 "PMU1: start_cal: DEBUG: setting CalRun to 0\n"
2885 },
2886 {0x04210001,
2887 "PMU1: lock_pll_dll: DEBUG: pstate = %d\n"
2888 },
2889 {0x04220001,
2890 "PMU1: lock_pll_dll: DEBUG: dfifreqxlat_pstate = %d\n"
2891 },
2892 {0x04230001,
2893 "PMU1: lock_pll_dll: DEBUG: pllbypass = %d\n"
2894 },
2895 {0x04240001,
2896 "PMU3: SaveLcdlSeed: Saving seed %d\n"
2897 },
2898 {0x04250000,
2899 "PMU1: in phy_defaults()\n"
2900 },
2901 {0x04260003,
2902 "PMU3: ACXConf:%d MaxNumDbytes:%d NumDfi:%d\n"
2903 },
2904 {0x04270005,
2905 "PMU1: setAltAcsmCLCWL setting cl=%d cwl=%d\n"
2906 },
2907};
2908#endif /* DEBUG */
2909#endif