1 /*
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
11 struct phy_msg {
12 	uint32_t index;
13 	const char *msg;
14 };
15 
16 const static struct phy_msg messages_1d[] = {
17 	{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 
1242 const static struct phy_msg messages_2d[] = {
1243 	{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
2910