1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
|
/*
* Copyright 2018 NXP
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <dram.h>
#include <mmio.h>
struct dram_cfg_param lpddr4_phy_pie[] = {
{ .reg = DDRPHY_REG(0xd0000), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90000), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90001), .cfg = 0x400},
{ .reg = DDRPHY_REG(0x90002), .cfg = 0x10e},
{ .reg = DDRPHY_REG(0x90003), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90004), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90005), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90029), .cfg = 0xb},
{ .reg = DDRPHY_REG(0x9002a), .cfg = 0x480},
{ .reg = DDRPHY_REG(0x9002b), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9002c), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9002d), .cfg = 0x448},
{ .reg = DDRPHY_REG(0x9002e), .cfg = 0x139},
{ .reg = DDRPHY_REG(0x9002f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90030), .cfg = 0x478},
{ .reg = DDRPHY_REG(0x90031), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90032), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90033), .cfg = 0xe8},
{ .reg = DDRPHY_REG(0x90034), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90035), .cfg = 0x2},
{ .reg = DDRPHY_REG(0x90036), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90037), .cfg = 0x139},
{ .reg = DDRPHY_REG(0x90038), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x90039), .cfg = 0x7c0},
{ .reg = DDRPHY_REG(0x9003a), .cfg = 0x139},
{ .reg = DDRPHY_REG(0x9003b), .cfg = 0x44},
{ .reg = DDRPHY_REG(0x9003c), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9003d), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x9003e), .cfg = 0x14f},
{ .reg = DDRPHY_REG(0x9003f), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90040), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x90041), .cfg = 0x47},
{ .reg = DDRPHY_REG(0x90042), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90043), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90044), .cfg = 0x4f},
{ .reg = DDRPHY_REG(0x90045), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90046), .cfg = 0x179},
{ .reg = DDRPHY_REG(0x90047), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90048), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x90049), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9004a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9004b), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x9004c), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9004d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9004e), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x9004f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90050), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90051), .cfg = 0x45a},
{ .reg = DDRPHY_REG(0x90052), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x90053), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90054), .cfg = 0x448},
{ .reg = DDRPHY_REG(0x90055), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90056), .cfg = 0x40},
{ .reg = DDRPHY_REG(0x90057), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90058), .cfg = 0x179},
{ .reg = DDRPHY_REG(0x90059), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x9005a), .cfg = 0x618},
{ .reg = DDRPHY_REG(0x9005b), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9005c), .cfg = 0x40c0},
{ .reg = DDRPHY_REG(0x9005d), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9005e), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9005f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90060), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90061), .cfg = 0x48},
{ .reg = DDRPHY_REG(0x90062), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x90063), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90064), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90065), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90066), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90067), .cfg = 0x48},
{ .reg = DDRPHY_REG(0x90068), .cfg = 0x40},
{ .reg = DDRPHY_REG(0x90069), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9006a), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9006b), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x9006c), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x9006d), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x9006e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9006f), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90070), .cfg = 0x78},
{ .reg = DDRPHY_REG(0x90071), .cfg = 0x549},
{ .reg = DDRPHY_REG(0x90072), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90073), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x90074), .cfg = 0xd49},
{ .reg = DDRPHY_REG(0x90075), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90076), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x90077), .cfg = 0x94a},
{ .reg = DDRPHY_REG(0x90078), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90079), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x9007a), .cfg = 0x441},
{ .reg = DDRPHY_REG(0x9007b), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9007c), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9007d), .cfg = 0x42},
{ .reg = DDRPHY_REG(0x9007e), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x9007f), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90080), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x90081), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90082), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x90083), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90084), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x90085), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90086), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x90087), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90088), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90089), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x9008a), .cfg = 0x3c0},
{ .reg = DDRPHY_REG(0x9008b), .cfg = 0x149},
{ .reg = DDRPHY_REG(0x9008c), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x9008d), .cfg = 0x3c0},
{ .reg = DDRPHY_REG(0x9008e), .cfg = 0x159},
{ .reg = DDRPHY_REG(0x9008f), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x90090), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90091), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90092), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90093), .cfg = 0x3c0},
{ .reg = DDRPHY_REG(0x90094), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90095), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x90096), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90097), .cfg = 0x48},
{ .reg = DDRPHY_REG(0x90098), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x90099), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x9009a), .cfg = 0x58},
{ .reg = DDRPHY_REG(0x9009b), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x9009c), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x9009d), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9009e), .cfg = 0x2},
{ .reg = DDRPHY_REG(0x9009f), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900a0), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x900a1), .cfg = 0x5},
{ .reg = DDRPHY_REG(0x900a2), .cfg = 0x7c0},
{ .reg = DDRPHY_REG(0x900a3), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x900a4), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900a5), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900a6), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x40000), .cfg = 0x811},
{ .reg = DDRPHY_REG(0x40020), .cfg = 0x880},
{ .reg = DDRPHY_REG(0x40040), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40060), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40001), .cfg = 0x4008},
{ .reg = DDRPHY_REG(0x40021), .cfg = 0x83},
{ .reg = DDRPHY_REG(0x40041), .cfg = 0x4f},
{ .reg = DDRPHY_REG(0x40061), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40002), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x40022), .cfg = 0x83},
{ .reg = DDRPHY_REG(0x40042), .cfg = 0x51},
{ .reg = DDRPHY_REG(0x40062), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40003), .cfg = 0x811},
{ .reg = DDRPHY_REG(0x40023), .cfg = 0x880},
{ .reg = DDRPHY_REG(0x40043), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40063), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40004), .cfg = 0x720},
{ .reg = DDRPHY_REG(0x40024), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40044), .cfg = 0x1740},
{ .reg = DDRPHY_REG(0x40064), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40005), .cfg = 0x16},
{ .reg = DDRPHY_REG(0x40025), .cfg = 0x83},
{ .reg = DDRPHY_REG(0x40045), .cfg = 0x4b},
{ .reg = DDRPHY_REG(0x40065), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40006), .cfg = 0x716},
{ .reg = DDRPHY_REG(0x40026), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40046), .cfg = 0x2001},
{ .reg = DDRPHY_REG(0x40066), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40007), .cfg = 0x716},
{ .reg = DDRPHY_REG(0x40027), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40047), .cfg = 0x2800},
{ .reg = DDRPHY_REG(0x40067), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40008), .cfg = 0x716},
{ .reg = DDRPHY_REG(0x40028), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40048), .cfg = 0xf00},
{ .reg = DDRPHY_REG(0x40068), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40009), .cfg = 0x720},
{ .reg = DDRPHY_REG(0x40029), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x40049), .cfg = 0x1400},
{ .reg = DDRPHY_REG(0x40069), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000a), .cfg = 0xe08},
{ .reg = DDRPHY_REG(0x4002a), .cfg = 0xc15},
{ .reg = DDRPHY_REG(0x4004a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000b), .cfg = 0x623},
{ .reg = DDRPHY_REG(0x4002b), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x4004b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000c), .cfg = 0x4028},
{ .reg = DDRPHY_REG(0x4002c), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x4004c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000d), .cfg = 0xe08},
{ .reg = DDRPHY_REG(0x4002d), .cfg = 0xc1a},
{ .reg = DDRPHY_REG(0x4004d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000e), .cfg = 0x623},
{ .reg = DDRPHY_REG(0x4002e), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x4004e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4000f), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x4002f), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x4004f), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4006f), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40010), .cfg = 0x2604},
{ .reg = DDRPHY_REG(0x40030), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x40050), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40070), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40011), .cfg = 0x708},
{ .reg = DDRPHY_REG(0x40031), .cfg = 0x5},
{ .reg = DDRPHY_REG(0x40051), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40071), .cfg = 0x2002},
{ .reg = DDRPHY_REG(0x40012), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x40032), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x40052), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40072), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40013), .cfg = 0x2604},
{ .reg = DDRPHY_REG(0x40033), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x40053), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40073), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40014), .cfg = 0x708},
{ .reg = DDRPHY_REG(0x40034), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x40054), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40074), .cfg = 0x2002},
{ .reg = DDRPHY_REG(0x40015), .cfg = 0x4040},
{ .reg = DDRPHY_REG(0x40035), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x40055), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40075), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40016), .cfg = 0x60a},
{ .reg = DDRPHY_REG(0x40036), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x40056), .cfg = 0x1200},
{ .reg = DDRPHY_REG(0x40076), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40017), .cfg = 0x61a},
{ .reg = DDRPHY_REG(0x40037), .cfg = 0x15},
{ .reg = DDRPHY_REG(0x40057), .cfg = 0x1300},
{ .reg = DDRPHY_REG(0x40077), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40018), .cfg = 0x60a},
{ .reg = DDRPHY_REG(0x40038), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x40058), .cfg = 0x1200},
{ .reg = DDRPHY_REG(0x40078), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x40019), .cfg = 0x642},
{ .reg = DDRPHY_REG(0x40039), .cfg = 0x1a},
{ .reg = DDRPHY_REG(0x40059), .cfg = 0x1300},
{ .reg = DDRPHY_REG(0x40079), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4001a), .cfg = 0x4808},
{ .reg = DDRPHY_REG(0x4003a), .cfg = 0x880},
{ .reg = DDRPHY_REG(0x4005a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x4007a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900a7), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900a8), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x900a9), .cfg = 0x11a},
{ .reg = DDRPHY_REG(0x900aa), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900ab), .cfg = 0x7aa},
{ .reg = DDRPHY_REG(0x900ac), .cfg = 0x2a},
{ .reg = DDRPHY_REG(0x900ad), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900ae), .cfg = 0x7b2},
{ .reg = DDRPHY_REG(0x900af), .cfg = 0x2a},
{ .reg = DDRPHY_REG(0x900b0), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900b1), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x900b2), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x900b3), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900b4), .cfg = 0x2a8},
{ .reg = DDRPHY_REG(0x900b5), .cfg = 0x129},
{ .reg = DDRPHY_REG(0x900b6), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900b7), .cfg = 0x370},
{ .reg = DDRPHY_REG(0x900b8), .cfg = 0x129},
{ .reg = DDRPHY_REG(0x900b9), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x900ba), .cfg = 0x3c8},
{ .reg = DDRPHY_REG(0x900bb), .cfg = 0x1a9},
{ .reg = DDRPHY_REG(0x900bc), .cfg = 0xc},
{ .reg = DDRPHY_REG(0x900bd), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900be), .cfg = 0x199},
{ .reg = DDRPHY_REG(0x900bf), .cfg = 0x14},
{ .reg = DDRPHY_REG(0x900c0), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x900c1), .cfg = 0x11a},
{ .reg = DDRPHY_REG(0x900c2), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900c3), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x900c4), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x900c5), .cfg = 0xe},
{ .reg = DDRPHY_REG(0x900c6), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900c7), .cfg = 0x199},
{ .reg = DDRPHY_REG(0x900c8), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900c9), .cfg = 0x8568},
{ .reg = DDRPHY_REG(0x900ca), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x900cb), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x900cc), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x900cd), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900ce), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900cf), .cfg = 0x1d8},
{ .reg = DDRPHY_REG(0x900d0), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x900d1), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x900d2), .cfg = 0x8558},
{ .reg = DDRPHY_REG(0x900d3), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900d4), .cfg = 0x70},
{ .reg = DDRPHY_REG(0x900d5), .cfg = 0x788},
{ .reg = DDRPHY_REG(0x900d6), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900d7), .cfg = 0x1ff8},
{ .reg = DDRPHY_REG(0x900d8), .cfg = 0x85a8},
{ .reg = DDRPHY_REG(0x900d9), .cfg = 0x1e8},
{ .reg = DDRPHY_REG(0x900da), .cfg = 0x50},
{ .reg = DDRPHY_REG(0x900db), .cfg = 0x798},
{ .reg = DDRPHY_REG(0x900dc), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900dd), .cfg = 0x60},
{ .reg = DDRPHY_REG(0x900de), .cfg = 0x7a0},
{ .reg = DDRPHY_REG(0x900df), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900e0), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900e1), .cfg = 0x8310},
{ .reg = DDRPHY_REG(0x900e2), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900e3), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x900e4), .cfg = 0xa310},
{ .reg = DDRPHY_REG(0x900e5), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900e6), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x900e7), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900e8), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x900e9), .cfg = 0x6e},
{ .reg = DDRPHY_REG(0x900ea), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900eb), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x900ec), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900ed), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x900ee), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x900ef), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900f0), .cfg = 0x8310},
{ .reg = DDRPHY_REG(0x900f1), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900f2), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x900f3), .cfg = 0xa310},
{ .reg = DDRPHY_REG(0x900f4), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x900f5), .cfg = 0x1ff8},
{ .reg = DDRPHY_REG(0x900f6), .cfg = 0x85a8},
{ .reg = DDRPHY_REG(0x900f7), .cfg = 0x1e8},
{ .reg = DDRPHY_REG(0x900f8), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x900f9), .cfg = 0x798},
{ .reg = DDRPHY_REG(0x900fa), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900fb), .cfg = 0x78},
{ .reg = DDRPHY_REG(0x900fc), .cfg = 0x7a0},
{ .reg = DDRPHY_REG(0x900fd), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x900fe), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x900ff), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x90100), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x90101), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90102), .cfg = 0x8b10},
{ .reg = DDRPHY_REG(0x90103), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90104), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90105), .cfg = 0xab10},
{ .reg = DDRPHY_REG(0x90106), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90107), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x90108), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90109), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x9010a), .cfg = 0x58},
{ .reg = DDRPHY_REG(0x9010b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9010c), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x9010d), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9010e), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x9010f), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90110), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90111), .cfg = 0x8b10},
{ .reg = DDRPHY_REG(0x90112), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90113), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90114), .cfg = 0xab10},
{ .reg = DDRPHY_REG(0x90115), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90116), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90117), .cfg = 0x1d8},
{ .reg = DDRPHY_REG(0x90118), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90119), .cfg = 0x80},
{ .reg = DDRPHY_REG(0x9011a), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x9011b), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x9011c), .cfg = 0x18},
{ .reg = DDRPHY_REG(0x9011d), .cfg = 0x7aa},
{ .reg = DDRPHY_REG(0x9011e), .cfg = 0x6a},
{ .reg = DDRPHY_REG(0x9011f), .cfg = 0xa},
{ .reg = DDRPHY_REG(0x90120), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90121), .cfg = 0x1e9},
{ .reg = DDRPHY_REG(0x90122), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90123), .cfg = 0x8080},
{ .reg = DDRPHY_REG(0x90124), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x90125), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x90126), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90127), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90128), .cfg = 0xc},
{ .reg = DDRPHY_REG(0x90129), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9012a), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x9012b), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x9012c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9012d), .cfg = 0x1a9},
{ .reg = DDRPHY_REG(0x9012e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9012f), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90130), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90131), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90132), .cfg = 0x8080},
{ .reg = DDRPHY_REG(0x90133), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x90134), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90135), .cfg = 0x7aa},
{ .reg = DDRPHY_REG(0x90136), .cfg = 0x6a},
{ .reg = DDRPHY_REG(0x90137), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90138), .cfg = 0x8568},
{ .reg = DDRPHY_REG(0x90139), .cfg = 0x108},
{ .reg = DDRPHY_REG(0x9013a), .cfg = 0xb7},
{ .reg = DDRPHY_REG(0x9013b), .cfg = 0x790},
{ .reg = DDRPHY_REG(0x9013c), .cfg = 0x16a},
{ .reg = DDRPHY_REG(0x9013d), .cfg = 0x1f},
{ .reg = DDRPHY_REG(0x9013e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9013f), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x90140), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90141), .cfg = 0x8558},
{ .reg = DDRPHY_REG(0x90142), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x90143), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x90144), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x90145), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x90146), .cfg = 0xc},
{ .reg = DDRPHY_REG(0x90147), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90148), .cfg = 0x68},
{ .reg = DDRPHY_REG(0x90149), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9014a), .cfg = 0x408},
{ .reg = DDRPHY_REG(0x9014b), .cfg = 0x169},
{ .reg = DDRPHY_REG(0x9014c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9014d), .cfg = 0x8558},
{ .reg = DDRPHY_REG(0x9014e), .cfg = 0x168},
{ .reg = DDRPHY_REG(0x9014f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90150), .cfg = 0x3c8},
{ .reg = DDRPHY_REG(0x90151), .cfg = 0x1a9},
{ .reg = DDRPHY_REG(0x90152), .cfg = 0x3},
{ .reg = DDRPHY_REG(0x90153), .cfg = 0x370},
{ .reg = DDRPHY_REG(0x90154), .cfg = 0x129},
{ .reg = DDRPHY_REG(0x90155), .cfg = 0x20},
{ .reg = DDRPHY_REG(0x90156), .cfg = 0x2aa},
{ .reg = DDRPHY_REG(0x90157), .cfg = 0x9},
{ .reg = DDRPHY_REG(0x90158), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90159), .cfg = 0x400},
{ .reg = DDRPHY_REG(0x9015a), .cfg = 0x10e},
{ .reg = DDRPHY_REG(0x9015b), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9015c), .cfg = 0xe8},
{ .reg = DDRPHY_REG(0x9015d), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9015e), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9015f), .cfg = 0x8140},
{ .reg = DDRPHY_REG(0x90160), .cfg = 0x10c},
{ .reg = DDRPHY_REG(0x90161), .cfg = 0x10},
{ .reg = DDRPHY_REG(0x90162), .cfg = 0x8138},
{ .reg = DDRPHY_REG(0x90163), .cfg = 0x10c},
{ .reg = DDRPHY_REG(0x90164), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90165), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x90166), .cfg = 0x101},
{ .reg = DDRPHY_REG(0x90167), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90168), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90169), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9016a), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9016b), .cfg = 0x448},
{ .reg = DDRPHY_REG(0x9016c), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9016d), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x9016e), .cfg = 0x7c0},
{ .reg = DDRPHY_REG(0x9016f), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90170), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90171), .cfg = 0xe8},
{ .reg = DDRPHY_REG(0x90172), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90173), .cfg = 0x47},
{ .reg = DDRPHY_REG(0x90174), .cfg = 0x630},
{ .reg = DDRPHY_REG(0x90175), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90176), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90177), .cfg = 0x618},
{ .reg = DDRPHY_REG(0x90178), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x90179), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x9017a), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x9017b), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9017c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9017d), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x9017e), .cfg = 0x109},
{ .reg = DDRPHY_REG(0x9017f), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90180), .cfg = 0x8140},
{ .reg = DDRPHY_REG(0x90181), .cfg = 0x10c},
{ .reg = DDRPHY_REG(0x90182), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90183), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x90184), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90185), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90186), .cfg = 0x4},
{ .reg = DDRPHY_REG(0x90187), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90188), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90189), .cfg = 0x7c8},
{ .reg = DDRPHY_REG(0x9018a), .cfg = 0x101},
{ .reg = DDRPHY_REG(0x90006), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90007), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x90008), .cfg = 0x8},
{ .reg = DDRPHY_REG(0x90009), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9000a), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9000b), .cfg = 0x0},
{ .reg = DDRPHY_REG(0xd00e7), .cfg = 0x400},
{ .reg = DDRPHY_REG(0x90017), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9001f), .cfg = 0x2a},
{ .reg = DDRPHY_REG(0x90026), .cfg = 0x6a},
{ .reg = DDRPHY_REG(0x400d0), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x400d1), .cfg = 0x101},
{ .reg = DDRPHY_REG(0x400d2), .cfg = 0x105},
{ .reg = DDRPHY_REG(0x400d3), .cfg = 0x107},
{ .reg = DDRPHY_REG(0x400d4), .cfg = 0x10f},
{ .reg = DDRPHY_REG(0x400d5), .cfg = 0x202},
{ .reg = DDRPHY_REG(0x400d6), .cfg = 0x20a},
{ .reg = DDRPHY_REG(0x400d7), .cfg = 0x20b},
{ .reg = DDRPHY_REG(0x2003a), .cfg = 0x2},
{ .reg = DDRPHY_REG(0x2000b), .cfg = 0x5d},
{ .reg = DDRPHY_REG(0x2000c), .cfg = 0xbb},
{ .reg = DDRPHY_REG(0x2000d), .cfg = 0x753},
{ .reg = DDRPHY_REG(0x2000e), .cfg = 0x2c},
{ .reg = DDRPHY_REG(0x9000c), .cfg = 0x0},
{ .reg = DDRPHY_REG(0x9000d), .cfg = 0x173},
{ .reg = DDRPHY_REG(0x9000e), .cfg = 0x60},
{ .reg = DDRPHY_REG(0x9000f), .cfg = 0x6110},
{ .reg = DDRPHY_REG(0x90010), .cfg = 0x2152},
{ .reg = DDRPHY_REG(0x90011), .cfg = 0xdfbd},
{ .reg = DDRPHY_REG(0x90012), .cfg = 0x60},
{ .reg = DDRPHY_REG(0x90013), .cfg = 0x6152},
{ .reg = DDRPHY_REG(0x20010), .cfg = 0x5a},
{ .reg = DDRPHY_REG(0x20011), .cfg = 0x3},
{ .reg = DDRPHY_REG(0x40080), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x40081), .cfg = 0x12},
{ .reg = DDRPHY_REG(0x40082), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x40083), .cfg = 0x12},
{ .reg = DDRPHY_REG(0x40084), .cfg = 0xe0},
{ .reg = DDRPHY_REG(0x40085), .cfg = 0x12},
{ .reg = DDRPHY_REG(0x400fd), .cfg = 0xf},
{ .reg = DDRPHY_REG(0x10011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x10012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x10013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x10018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x10002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x100b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x101b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x102b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x103b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x104b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x105b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x106b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x107b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x108b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x11018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x11002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x110b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x111b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x112b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x113b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x114b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x115b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x116b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x117b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x118b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x12018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x12002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x120b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x121b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x122b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x123b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x124b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x125b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x126b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x127b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x128b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13011), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13012), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13013), .cfg = 0x180},
{ .reg = DDRPHY_REG(0x13018), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x13002), .cfg = 0x6209},
{ .reg = DDRPHY_REG(0x130b2), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x131b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x132b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x133b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x134b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x135b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x136b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x137b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x138b4), .cfg = 0x1},
{ .reg = DDRPHY_REG(0x2003a), .cfg = 0x2},
{ .reg = DDRPHY_REG(0xc0080), .cfg = 0x2},
{ .reg = DDRPHY_REG(0xd0000), .cfg = 0x1},
};
void ddrphy_load_pie_image(void)
{
unsigned int reg, cfg;
int num = ARRAY_SIZE(lpddr4_phy_pie);
for (int i = 0; i < num; i ++) {
reg = lpddr4_phy_pie[i].reg;
cfg = lpddr4_phy_pie[i].cfg;
mmio_write_32(reg, cfg);
}
}
|