blob: de593c17fad2b8a728739d56b2e7ac2886b8eaac [file] [log] [blame]
Chia-Wei Wang8fb52592024-09-10 17:39:19 +08001// SPDX-License-Identifier: GPL-2.0+
2// [dwc_ddrphy_phyinit_main] Start of dwc_ddrphy_phyinit_main()
3// [dwc_ddrphy_phyinit_sequence] Start of dwc_ddrphy_phyinit_sequence()
4// [dwc_ddrphy_phyinit_initStruct] Start of dwc_ddrphy_phyinit_initStruct()
5// [dwc_ddrphy_phyinit_initStruct] End of dwc_ddrphy_phyinit_initStruct()
6// [dwc_ddrphy_phyinit_setDefault] Start of dwc_ddrphy_phyinit_setDefault()
7// [dwc_ddrphy_phyinit_setDefault] End of dwc_ddrphy_phyinit_setDefault()
8
9////##############################################################
10//
11//// dwc_ddrphy_phyinit_userCustom_overrideUserInput is a user-editable function. User can edit this function according to their needs.
12////
13//// The purpose of dwc_ddrphy_phyinit_userCustom_overrideUserInput() is to override any
14//// any field in Phyinit data structure set by dwc_ddrphy_phyinit_setDefault()
15//// User should only override values in userInputBasic and userInputAdvanced.
16//// IMPORTANT: in this function, user shall not override any values in the
17//// messageblock directly on the data structue as the might be overwritten by
18//// dwc_ddrphy_phyinit_calcMb(). Use dwc_ddrphy_phyinit_setMb() to set
19//// messageblock parameters for override values to remain pervasive if
20//// desired
21//
22////##############################################################
23
24dwc_ddrphy_phyinit_userCustom_overrideUserInput();
25//
26//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DramType' to 0x0
27//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DimmType' to 0x4
28//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'NumDbyte' to 0x2
29//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'NumActiveDbyteDfi0' to 0x2
30//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'NumAnib' to 0xa
31//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'NumRank_dfi0' to 0x1
32//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DramDataWidth[0]' to 0x10
33//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DramDataWidth[1]' to 0x10
34//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DramDataWidth[2]' to 0x10
35//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DramDataWidth[3]' to 0x10
36//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'NumPStates' to 0x1
37//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'Frequency[0]' to 0x640
38//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'PllBypass[0]' to 0x0
39//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DfiFreqRatio[0]' to 0x1
40//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'Dfi1Exists' to 0x0
41//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'D4RxPreambleLength[0]' to 0x0
42//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'D4TxPreambleLength[0]' to 0x0
43//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'ExtCalResVal' to 0xf0
44//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'Is2Ttiming[0]' to 0x0
45//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'ODTImpedance[0]' to 0x78
46//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TxImpedance[0]' to 0x3c
47//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'MemAlertEn' to 0x0
48//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'MtestPUImp' to 0xf0
49//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DisDynAdrTri[0]' to 0x0
50//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'PhyMstrTrainInterval[0]' to 0x0
51//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'PhyMstrMaxReqToAck[0]' to 0x0
52//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'PhyMstrCtrlMode[0]' to 0x0
53//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'WDQSExt' to 0x0
54//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'CalInterval' to 0x9
55//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'CalOnce' to 0x0
56//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'RxEnBackOff' to 0x1
57//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TrainSequenceCtrl' to 0x31f
58//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'SnpsUmctlOpt' to 0x0
59//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'SnpsUmctlF0RC5x[0]' to 0x0
60//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TxSlewRiseDQ[0]' to 0x0
61//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TxSlewFallDQ[0]' to 0x0
62//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TxSlewRiseAC' to 0x45
63//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TxSlewFallAC' to 0xa
64//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'IsHighVDD' to 0x0
65//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TxSlewRiseCK' to 0x52
66//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'TxSlewFallCK' to 0x12
67//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'DisablePmuEcc' to 0x1
68//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'EnableMAlertAsync' to 0x0
69//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'Apb32BitMode' to 0x1
70//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'tDQS2DQ' to 0x0
71//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'tDQSCK' to 0x0
72//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'tCASL_override' to 0x0
73//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'tCASL_add[0][0]' to 0x0
74//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'tCASL_add[0][1]' to 0x0
75//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'tCASL_add[0][2]' to 0x0
76//// [dwc_ddrphy_phyinit_setUserInput] Setting PHYINIT field 'tCASL_add[0][3]' to 0x0
77// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MsgMisc to 0x7
78// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].Pstate to 0x0
79// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].PllBypassEn to 0x0
80// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].DRAMFreq to 0xc80
81// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].PhyVref to 0x40
82// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].DramType to 0x2
83// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].DisabledDbyte to 0x0
84// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].EnabledDQs to 0x10
85// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].CsPresent to 0x1
86// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].CsPresentD0 to 0x0
87// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].CsPresentD1 to 0x0
88// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AddrMirror to 0x0
89// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].PhyCfg to 0x0
90// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].SequenceCtrl to 0x31f
91// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].HdtCtrl to 0xc8
92// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].PhyConfigOverride to 0x0
93// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].DFIMRLMargin to 0x2
94// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MR0 to 0x2150
95// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MR1 to 0x101
96// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MR2 to 0x228
97// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MR3 to 0x400
98// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MR4 to 0x0
99// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MR5 to 0x500
100// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].MR6 to 0x104f
101// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].X16Present to 0x0
102// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].CsSetupGDDec to 0x0
103// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl0 to 0x0
104// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl1 to 0x0
105// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl2 to 0x0
106// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl3 to 0x0
107// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl4 to 0x0
108// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl5 to 0x0
109// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl6 to 0x0
110// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].AcsmOdtCtrl7 to 0x0
111// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib0 to 0xf
112// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib1 to 0xf
113// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib2 to 0xf
114// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib3 to 0xf
115// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib4 to 0xf
116// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib5 to 0xf
117// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib6 to 0xf
118// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib7 to 0xf
119// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib8 to 0xf
120// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib9 to 0xf
121// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib10 to 0xf
122// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib11 to 0xf
123// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib12 to 0xf
124// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib13 to 0xf
125// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib14 to 0xf
126// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib15 to 0xf
127// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib16 to 0xf
128// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib17 to 0xf
129// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib18 to 0xf
130// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR0Nib19 to 0xf
131// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib0 to 0xf
132// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib1 to 0xf
133// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib2 to 0xf
134// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib3 to 0xf
135// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib4 to 0xf
136// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib5 to 0xf
137// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib6 to 0xf
138// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib7 to 0xf
139// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib8 to 0xf
140// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib9 to 0xf
141// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib10 to 0xf
142// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib11 to 0xf
143// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib12 to 0xf
144// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib13 to 0xf
145// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib14 to 0xf
146// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib15 to 0xf
147// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib16 to 0xf
148// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib17 to 0xf
149// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib18 to 0xf
150// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR1Nib19 to 0xf
151// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib0 to 0xf
152// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib1 to 0xf
153// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib2 to 0xf
154// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib3 to 0xf
155// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib4 to 0xf
156// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib5 to 0xf
157// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib6 to 0xf
158// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib7 to 0xf
159// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib8 to 0xf
160// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib9 to 0xf
161// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib10 to 0xf
162// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib11 to 0xf
163// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib12 to 0xf
164// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib13 to 0xf
165// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib14 to 0xf
166// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib15 to 0xf
167// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib16 to 0xf
168// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib17 to 0xf
169// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib18 to 0xf
170// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR2Nib19 to 0xf
171// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib0 to 0xf
172// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib1 to 0xf
173// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib2 to 0xf
174// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib3 to 0xf
175// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib4 to 0xf
176// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib5 to 0xf
177// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib6 to 0xf
178// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib7 to 0xf
179// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib8 to 0xf
180// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib9 to 0xf
181// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib10 to 0xf
182// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib11 to 0xf
183// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib12 to 0xf
184// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib13 to 0xf
185// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib14 to 0xf
186// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib15 to 0xf
187// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib16 to 0xf
188// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib17 to 0xf
189// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib18 to 0xf
190// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].VrefDqR3Nib19 to 0xf
191// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].ALT_CAS_L to 0x0
192// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].ALT_WCAS_L to 0x0
193// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].D4Misc to 0x0
194// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].ExtTrainOpt to 0x0
195// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_1D[0].NVDIMM to 0x0
196// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MsgMisc to 0x7
197// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].Pstate to 0x0
198// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].PllBypassEn to 0x0
199// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].DRAMFreq to 0xc80
200// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].PhyVref to 0x40
201// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].DramType to 0x2
202// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].DisabledDbyte to 0x0
203// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].EnabledDQs to 0x10
204// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].CsPresent to 0x1
205// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].CsPresentD0 to 0x0
206// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].CsPresentD1 to 0x0
207// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AddrMirror to 0x0
208// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].PhyCfg to 0x0
209// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].SequenceCtrl to 0x31f
210// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].HdtCtrl to 0xc8
211// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].PhyConfigOverride to 0x0
212// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].DFIMRLMargin to 0x2
213// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MR0 to 0x2150
214// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MR1 to 0x101
215// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MR2 to 0x228
216// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MR3 to 0x400
217// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MR4 to 0x0
218// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MR5 to 0x500
219// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].MR6 to 0x104f
220// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].X16Present to 0x0
221// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].CsSetupGDDec to 0x0
222// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl0 to 0x0
223// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl1 to 0x0
224// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl2 to 0x0
225// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl3 to 0x0
226// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl4 to 0x0
227// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl5 to 0x0
228// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl6 to 0x0
229// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].AcsmOdtCtrl7 to 0x0
230// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib0 to 0xf
231// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib1 to 0xf
232// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib2 to 0xf
233// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib3 to 0xf
234// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib4 to 0xf
235// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib5 to 0xf
236// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib6 to 0xf
237// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib7 to 0xf
238// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib8 to 0xf
239// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib9 to 0xf
240// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib10 to 0xf
241// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib11 to 0xf
242// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib12 to 0xf
243// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib13 to 0xf
244// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib14 to 0xf
245// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib15 to 0xf
246// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib16 to 0xf
247// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib17 to 0xf
248// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib18 to 0xf
249// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR0Nib19 to 0xf
250// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib0 to 0xf
251// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib1 to 0xf
252// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib2 to 0xf
253// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib3 to 0xf
254// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib4 to 0xf
255// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib5 to 0xf
256// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib6 to 0xf
257// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib7 to 0xf
258// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib8 to 0xf
259// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib9 to 0xf
260// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib10 to 0xf
261// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib11 to 0xf
262// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib12 to 0xf
263// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib13 to 0xf
264// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib14 to 0xf
265// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib15 to 0xf
266// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib16 to 0xf
267// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib17 to 0xf
268// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib18 to 0xf
269// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR1Nib19 to 0xf
270// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib0 to 0xf
271// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib1 to 0xf
272// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib2 to 0xf
273// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib3 to 0xf
274// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib4 to 0xf
275// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib5 to 0xf
276// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib6 to 0xf
277// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib7 to 0xf
278// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib8 to 0xf
279// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib9 to 0xf
280// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib10 to 0xf
281// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib11 to 0xf
282// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib12 to 0xf
283// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib13 to 0xf
284// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib14 to 0xf
285// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib15 to 0xf
286// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib16 to 0xf
287// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib17 to 0xf
288// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib18 to 0xf
289// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR2Nib19 to 0xf
290// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib0 to 0xf
291// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib1 to 0xf
292// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib2 to 0xf
293// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib3 to 0xf
294// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib4 to 0xf
295// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib5 to 0xf
296// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib6 to 0xf
297// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib7 to 0xf
298// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib8 to 0xf
299// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib9 to 0xf
300// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib10 to 0xf
301// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib11 to 0xf
302// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib12 to 0xf
303// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib13 to 0xf
304// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib14 to 0xf
305// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib15 to 0xf
306// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib16 to 0xf
307// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib17 to 0xf
308// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib18 to 0xf
309// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].VrefDqR3Nib19 to 0xf
310// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].ALT_CAS_L to 0x0
311// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].ALT_WCAS_L to 0x0
312// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].D4Misc to 0x0
313// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].ExtTrainOpt to 0x0
314// [dwc_ddrphy_phyinit_setMb] Setting mb_DDR4U_2D[0].NVDIMM to 0x0
315// [dwc_ddrphy_phyinit_userCustom_overrideUserInput] End of dwc_ddrphy_phyinit_userCustom_overrideUserInput()
316//[dwc_ddrphy_phyinit_calcMb] Start of dwc_ddrphy_phyinit_calcMb()
317//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].DramType override to 0x2
318//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].Pstate override to 0x0
319//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].DRAMFreq override to 0xc80
320//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].PllBypassEn override to 0x0
321//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].EnabledDQs override to 0x10
322//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].PhyCfg override to 0x0
323//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].DisabledDbyte override to 0x0
324//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_1D[0].X16Present override to 0x0
325//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].DramType to 0x2
326//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].Pstate to 0x1
327//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].DRAMFreq to 0x856
328//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].PllBypassEn to 0x0
329//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].EnabledDQs to 0x10
330//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].PhyCfg to 0x0
331//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].DisabledDbyte to 0x0
332//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[1].X16Present to 0x1
333//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].DramType to 0x2
334//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].Pstate to 0x2
335//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].DRAMFreq to 0x74a
336//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].PllBypassEn to 0x0
337//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].EnabledDQs to 0x10
338//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].PhyCfg to 0x0
339//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].DisabledDbyte to 0x0
340//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[2].X16Present to 0x1
341//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].DramType to 0x2
342//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].Pstate to 0x3
343//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].DRAMFreq to 0x640
344//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].PllBypassEn to 0x0
345//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].EnabledDQs to 0x10
346//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].PhyCfg to 0x0
347//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].DisabledDbyte to 0x0
348//// [dwc_ddrphy_phyinit_softSetMb] Setting mb_DDR4U_1D[3].X16Present to 0x1
349//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].DramType override to 0x2
350//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].Pstate override to 0x0
351//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].DRAMFreq override to 0xc80
352//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].PllBypassEn override to 0x0
353//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].EnabledDQs override to 0x10
354//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].PhyCfg override to 0x0
355//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].DisabledDbyte override to 0x0
356//// [dwc_ddrphy_phyinit_softSetMb] mb_DDR4U_2D[0].X16Present override to 0x0
357////[dwc_ddrphy_phyinit_calcMb] TG_active[0] = 1
358////[dwc_ddrphy_phyinit_calcMb] TG_active[1] = 0
359////[dwc_ddrphy_phyinit_calcMb] TG_active[2] = 0
360////[dwc_ddrphy_phyinit_calcMb] TG_active[3] = 0
361////[dwc_ddrphy_phyinit_calcMb] tDIMM_CK [pstate=0][tg=0] = 0 ps
362////[dwc_ddrphy_phyinit_calcMb] tDIMM_DQ [pstate=0][tg=0] = 0 ps
363////[dwc_ddrphy_phyinit_calcMb] userInputSim.tCASL_add[pstate=0][tg=0] = 0 ps
364////[dwc_ddrphy_phyinit_calcMb] tDIMM_CK [pstate=0][tg=1] = 0 ps
365////[dwc_ddrphy_phyinit_calcMb] tDIMM_DQ [pstate=0][tg=1] = 0 ps
366////[dwc_ddrphy_phyinit_calcMb] userInputSim.tCASL_add[pstate=0][tg=1] = 0 ps
367////[dwc_ddrphy_phyinit_calcMb] tDIMM_CK [pstate=0][tg=2] = 0 ps
368////[dwc_ddrphy_phyinit_calcMb] tDIMM_DQ [pstate=0][tg=2] = 0 ps
369////[dwc_ddrphy_phyinit_calcMb] userInputSim.tCASL_add[pstate=0][tg=2] = 0 ps
370////[dwc_ddrphy_phyinit_calcMb] tDIMM_CK [pstate=0][tg=3] = 0 ps
371////[dwc_ddrphy_phyinit_calcMb] tDIMM_DQ [pstate=0][tg=3] = 0 ps
372////[dwc_ddrphy_phyinit_calcMb] userInputSim.tCASL_add[pstate=0][tg=3] = 0 ps
373//[dwc_ddrphy_phyinit_calcMb] End of dwc_ddrphy_phyinit_calcMb()
374//// [phyinit_print_dat] // ####################################################
375//// [phyinit_print_dat] //
376//// [phyinit_print_dat] // Printing values in user input structure
377//// [phyinit_print_dat] //
378//// [phyinit_print_dat] // ####################################################
379//// [phyinit_print_dat] pUserInputBasic->Frequency[0] = 1600
380//// [phyinit_print_dat] pUserInputBasic->Frequency[1] = 1067
381//// [phyinit_print_dat] pUserInputBasic->Frequency[2] = 933
382//// [phyinit_print_dat] pUserInputBasic->Frequency[3] = 800
383//// [phyinit_print_dat] pUserInputBasic->NumAnib = 10
384//// [phyinit_print_dat] pUserInputBasic->DramType = 0
385//// [phyinit_print_dat] pUserInputBasic->ARdPtrInitValOvr = 0
386//// [phyinit_print_dat] pUserInputBasic->ARdPtrInitVal[0] = 3
387//// [phyinit_print_dat] pUserInputBasic->ARdPtrInitVal[1] = 3
388//// [phyinit_print_dat] pUserInputBasic->ARdPtrInitVal[2] = 3
389//// [phyinit_print_dat] pUserInputBasic->ARdPtrInitVal[3] = 3
390//// [phyinit_print_dat] pUserInputBasic->DfiFreqRatio[0] = 1
391//// [phyinit_print_dat] pUserInputBasic->DfiFreqRatio[1] = 1
392//// [phyinit_print_dat] pUserInputBasic->DfiFreqRatio[2] = 1
393//// [phyinit_print_dat] pUserInputBasic->DfiFreqRatio[3] = 1
394//// [phyinit_print_dat] pUserInputBasic->NumActiveDbyteDfi0 = 2
395//// [phyinit_print_dat] pUserInputBasic->DisPtrInitClrTxTracking[0] = 0
396//// [phyinit_print_dat] pUserInputBasic->DisPtrInitClrTxTracking[1] = 0
397//// [phyinit_print_dat] pUserInputBasic->DisPtrInitClrTxTracking[2] = 0
398//// [phyinit_print_dat] pUserInputBasic->DisPtrInitClrTxTracking[3] = 0
399//// [phyinit_print_dat] pUserInputBasic->DramDataWidth[0] = 16
400//// [phyinit_print_dat] pUserInputBasic->DramDataWidth[1] = 16
401//// [phyinit_print_dat] pUserInputBasic->DramDataWidth[2] = 16
402//// [phyinit_print_dat] pUserInputBasic->DramDataWidth[3] = 16
403//// [phyinit_print_dat] pUserInputBasic->PllBypass[0] = 0
404//// [phyinit_print_dat] pUserInputBasic->PllBypass[1] = 0
405//// [phyinit_print_dat] pUserInputBasic->PllBypass[2] = 0
406//// [phyinit_print_dat] pUserInputBasic->PllBypass[3] = 0
407//// [phyinit_print_dat] pUserInputBasic->Dfi1Exists = 0
408//// [phyinit_print_dat] pUserInputBasic->Train2D = 0
409//// [phyinit_print_dat] pUserInputBasic->NumRank_dfi0 = 1
410//// [phyinit_print_dat] pUserInputBasic->DimmType = 4
411//// [phyinit_print_dat] pUserInputBasic->NumPStates = 1
412//// [phyinit_print_dat] pUserInputBasic->NumDbyte = 2
413//// [phyinit_print_dat] pUserInputAdvanced->DisablePmuEcc = 1
414//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[0] = 1
415//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[1] = 1
416//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[2] = 1
417//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[3] = 1
418//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[4] = 0
419//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[5] = 0
420//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[6] = 0
421//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvEn[7] = 0
422//// [phyinit_print_dat] pUserInputAdvanced->SnpsUmctlOpt = 0
423//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl1[0] = 25
424//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl1[1] = 25
425//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl1[2] = 25
426//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl1[3] = 25
427//// [phyinit_print_dat] pUserInputAdvanced->TxSlewFallAC = 10
428//// [phyinit_print_dat] pUserInputAdvanced->CalOnce = 0
429//// [phyinit_print_dat] pUserInputAdvanced->ExtCalResVal = 240
430//// [phyinit_print_dat] pUserInputAdvanced->D4TxPreambleLength[0] = 0
431//// [phyinit_print_dat] pUserInputAdvanced->D4TxPreambleLength[1] = 0
432//// [phyinit_print_dat] pUserInputAdvanced->D4TxPreambleLength[2] = 0
433//// [phyinit_print_dat] pUserInputAdvanced->D4TxPreambleLength[3] = 0
434//// [phyinit_print_dat] pUserInputAdvanced->DramByteSwap[0] = 0
435//// [phyinit_print_dat] pUserInputAdvanced->DramByteSwap[1] = 0
436//// [phyinit_print_dat] pUserInputAdvanced->DramByteSwap[2] = 0
437//// [phyinit_print_dat] pUserInputAdvanced->DramByteSwap[3] = 0
438//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[0] = 0
439//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[1] = 0
440//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[2] = 11
441//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[3] = 11
442//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[4] = 0
443//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[5] = 0
444//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[6] = 0
445//// [phyinit_print_dat] pUserInputAdvanced->NvAnibRcvSel[7] = 0
446//// [phyinit_print_dat] pUserInputAdvanced->CalInterval = 9
447//// [phyinit_print_dat] pUserInputAdvanced->IsHighVDD = 0
448//// [phyinit_print_dat] pUserInputAdvanced->TxSlewRiseAC = 69
449//// [phyinit_print_dat] pUserInputAdvanced->TxSlewRiseCK = 82
450//// [phyinit_print_dat] pUserInputAdvanced->RedundantCs_en = 0
451//// [phyinit_print_dat] pUserInputAdvanced->TrainSequenceCtrl = 799
452//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrCtrlMode[0] = 0
453//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrCtrlMode[1] = 0
454//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrCtrlMode[2] = 0
455//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrCtrlMode[3] = 0
456//// [phyinit_print_dat] pUserInputAdvanced->TxSlewFallDQ[0] = 0
457//// [phyinit_print_dat] pUserInputAdvanced->TxSlewFallDQ[1] = 0
458//// [phyinit_print_dat] pUserInputAdvanced->TxSlewFallDQ[2] = 0
459//// [phyinit_print_dat] pUserInputAdvanced->TxSlewFallDQ[3] = 0
460//// [phyinit_print_dat] pUserInputAdvanced->MtestPUImp = 240
461//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[0] = 1
462//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[1] = 3
463//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[2] = 1
464//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[3] = 3
465//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[4] = 0
466//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[5] = 0
467//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[6] = 0
468//// [phyinit_print_dat] pUserInputAdvanced->AnibRcvLaneSel[7] = 0
469//// [phyinit_print_dat] pUserInputAdvanced->AlertRecoveryEnable = 0
470//// [phyinit_print_dat] pUserInputAdvanced->DisDynAdrTri[0] = 0
471//// [phyinit_print_dat] pUserInputAdvanced->DisDynAdrTri[1] = 0
472//// [phyinit_print_dat] pUserInputAdvanced->DisDynAdrTri[2] = 0
473//// [phyinit_print_dat] pUserInputAdvanced->DisDynAdrTri[3] = 0
474//// [phyinit_print_dat] pUserInputAdvanced->VREGCtrl_LP2_PwrSavings_En = 0
475//// [phyinit_print_dat] pUserInputAdvanced->SnpsUmctlF0RC5x[0] = 0
476//// [phyinit_print_dat] pUserInputAdvanced->SnpsUmctlF0RC5x[1] = 0
477//// [phyinit_print_dat] pUserInputAdvanced->SnpsUmctlF0RC5x[2] = 0
478//// [phyinit_print_dat] pUserInputAdvanced->SnpsUmctlF0RC5x[3] = 0
479//// [phyinit_print_dat] pUserInputAdvanced->D4RxPreambleLength[0] = 0
480//// [phyinit_print_dat] pUserInputAdvanced->D4RxPreambleLength[1] = 1
481//// [phyinit_print_dat] pUserInputAdvanced->D4RxPreambleLength[2] = 1
482//// [phyinit_print_dat] pUserInputAdvanced->D4RxPreambleLength[3] = 1
483//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrMaxReqToAck[0] = 0
484//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrMaxReqToAck[1] = 0
485//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrMaxReqToAck[2] = 0
486//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrMaxReqToAck[3] = 0
487//// [phyinit_print_dat] pUserInputAdvanced->TxSlewRiseDQ[0] = 0
488//// [phyinit_print_dat] pUserInputAdvanced->TxSlewRiseDQ[1] = 0
489//// [phyinit_print_dat] pUserInputAdvanced->TxSlewRiseDQ[2] = 0
490//// [phyinit_print_dat] pUserInputAdvanced->TxSlewRiseDQ[3] = 0
491//// [phyinit_print_dat] pUserInputAdvanced->TxSlewFallCK = 18
492//// [phyinit_print_dat] pUserInputAdvanced->TxImpedance[0] = 60
493//// [phyinit_print_dat] pUserInputAdvanced->TxImpedance[1] = 25
494//// [phyinit_print_dat] pUserInputAdvanced->TxImpedance[2] = 25
495//// [phyinit_print_dat] pUserInputAdvanced->TxImpedance[3] = 25
496//// [phyinit_print_dat] pUserInputAdvanced->en_16LogicalRanks_3DS = 0
497//// [phyinit_print_dat] pUserInputAdvanced->RstRxTrkState = 0
498//// [phyinit_print_dat] pUserInputAdvanced->Is2Ttiming[0] = 0
499//// [phyinit_print_dat] pUserInputAdvanced->Is2Ttiming[1] = 0
500//// [phyinit_print_dat] pUserInputAdvanced->Is2Ttiming[2] = 0
501//// [phyinit_print_dat] pUserInputAdvanced->Is2Ttiming[3] = 0
502//// [phyinit_print_dat] pUserInputAdvanced->MemAlertEn = 0
503//// [phyinit_print_dat] pUserInputAdvanced->rtt_term_en = 0
504//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrTrainInterval[0] = 0
505//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrTrainInterval[1] = 0
506//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrTrainInterval[2] = 0
507//// [phyinit_print_dat] pUserInputAdvanced->PhyMstrTrainInterval[3] = 0
508//// [phyinit_print_dat] pUserInputAdvanced->WDQSExt = 0
509//// [phyinit_print_dat] pUserInputAdvanced->en_3DS = 0
510//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl2[0] = 0
511//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl2[1] = 0
512//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl2[2] = 0
513//// [phyinit_print_dat] pUserInputAdvanced->TxImpedanceCtrl2[3] = 0
514//// [phyinit_print_dat] pUserInputAdvanced->ODTImpedance[0] = 120
515//// [phyinit_print_dat] pUserInputAdvanced->ODTImpedance[1] = 60
516//// [phyinit_print_dat] pUserInputAdvanced->ODTImpedance[2] = 60
517//// [phyinit_print_dat] pUserInputAdvanced->ODTImpedance[3] = 60
518//// [phyinit_print_dat] pUserInputAdvanced->EnableMAlertAsync = 0
519//// [phyinit_print_dat] pUserInputAdvanced->Apb32BitMode = 1
520//// [phyinit_print_dat] pUserInputAdvanced->Nibble_ECC = 15
521//// [phyinit_print_dat] pUserInputAdvanced->RxEnBackOff = 1
522//// [phyinit_print_dat] pUserInputAdvanced->ATxImpedance = 53247
523//// [phyinit_print_dat] pUserInputSim->tDQS2DQ = 0
524//// [phyinit_print_dat] pUserInputSim->tDQSCK = 0
525//// [phyinit_print_dat] pUserInputSim->tSTAOFF[0] = 0
526//// [phyinit_print_dat] pUserInputSim->tSTAOFF[1] = 0
527//// [phyinit_print_dat] pUserInputSim->tSTAOFF[2] = 0
528//// [phyinit_print_dat] pUserInputSim->tSTAOFF[3] = 0
529//// [phyinit_print_dat] // ####################################################
530//// [phyinit_print_dat] //
531//// [phyinit_print_dat] // Printing values of 1D message block input/inout fields, PState=0
532//// [phyinit_print_dat] //
533//// [phyinit_print_dat] // ####################################################
534//// [phyinit_print_dat] mb_DDR4U_1D[0].AdvTrainOpt = 0x0
535//// [phyinit_print_dat] mb_DDR4U_1D[0].MsgMisc = 0x7
536//// [phyinit_print_dat] mb_DDR4U_1D[0].Pstate = 0x0
537//// [phyinit_print_dat] mb_DDR4U_1D[0].PllBypassEn = 0x0
538//// [phyinit_print_dat] mb_DDR4U_1D[0].DRAMFreq = 0xc80
539//// [phyinit_print_dat] mb_DDR4U_1D[0].PhyVref = 0x40
540//// [phyinit_print_dat] mb_DDR4U_1D[0].DramType = 0x2
541//// [phyinit_print_dat] mb_DDR4U_1D[0].DisabledDbyte = 0x0
542//// [phyinit_print_dat] mb_DDR4U_1D[0].EnabledDQs = 0x10
543//// [phyinit_print_dat] mb_DDR4U_1D[0].CsPresent = 0x1
544//// [phyinit_print_dat] mb_DDR4U_1D[0].CsPresentD0 = 0x0
545//// [phyinit_print_dat] mb_DDR4U_1D[0].CsPresentD1 = 0x0
546//// [phyinit_print_dat] mb_DDR4U_1D[0].AddrMirror = 0x0
547//// [phyinit_print_dat] mb_DDR4U_1D[0].PhyCfg = 0x0
548//// [phyinit_print_dat] mb_DDR4U_1D[0].SequenceCtrl = 0x31f
549//// [phyinit_print_dat] mb_DDR4U_1D[0].HdtCtrl = 0xc8
550//// [phyinit_print_dat] mb_DDR4U_1D[0].Rx2D_CmdSpacing = 0x0
551//// [phyinit_print_dat] mb_DDR4U_1D[0].MREP_MIN_PULSE = 0x0
552//// [phyinit_print_dat] mb_DDR4U_1D[0].DWL_MIN_PULSE = 0x0
553//// [phyinit_print_dat] mb_DDR4U_1D[0].PhyConfigOverride = 0x0
554//// [phyinit_print_dat] mb_DDR4U_1D[0].DFIMRLMargin = 0x2
555//// [phyinit_print_dat] mb_DDR4U_1D[0].DDR4_RXEN_OFFSET = 0x0
556//// [phyinit_print_dat] mb_DDR4U_1D[0].MR0 = 0x2150
557//// [phyinit_print_dat] mb_DDR4U_1D[0].MR1 = 0x101
558//// [phyinit_print_dat] mb_DDR4U_1D[0].MR2 = 0x228
559//// [phyinit_print_dat] mb_DDR4U_1D[0].MR3 = 0x400
560//// [phyinit_print_dat] mb_DDR4U_1D[0].MR4 = 0x0
561//// [phyinit_print_dat] mb_DDR4U_1D[0].MR5 = 0x500
562//// [phyinit_print_dat] mb_DDR4U_1D[0].MR6 = 0x104f
563//// [phyinit_print_dat] mb_DDR4U_1D[0].X16Present = 0x0
564//// [phyinit_print_dat] mb_DDR4U_1D[0].CsSetupGDDec = 0x0
565//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK0 = 0x0
566//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK1 = 0x0
567//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK2 = 0x0
568//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK3 = 0x0
569//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK4 = 0x0
570//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK5 = 0x0
571//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK6 = 0x0
572//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK7 = 0x0
573//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl0 = 0x0
574//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl1 = 0x0
575//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl2 = 0x0
576//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl3 = 0x0
577//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl4 = 0x0
578//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl5 = 0x0
579//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl6 = 0x0
580//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl7 = 0x0
581//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib0 = 0xf
582//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib1 = 0xf
583//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib2 = 0xf
584//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib3 = 0xf
585//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib4 = 0xf
586//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib5 = 0xf
587//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib6 = 0xf
588//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib7 = 0xf
589//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib8 = 0xf
590//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib9 = 0xf
591//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib10 = 0xf
592//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib11 = 0xf
593//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib12 = 0xf
594//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib13 = 0xf
595//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib14 = 0xf
596//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib15 = 0xf
597//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib16 = 0xf
598//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib17 = 0xf
599//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib18 = 0xf
600//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib19 = 0xf
601//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib0 = 0xf
602//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib1 = 0xf
603//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib2 = 0xf
604//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib3 = 0xf
605//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib4 = 0xf
606//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib5 = 0xf
607//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib6 = 0xf
608//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib7 = 0xf
609//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib8 = 0xf
610//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib9 = 0xf
611//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib10 = 0xf
612//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib11 = 0xf
613//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib12 = 0xf
614//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib13 = 0xf
615//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib14 = 0xf
616//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib15 = 0xf
617//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib16 = 0xf
618//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib17 = 0xf
619//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib18 = 0xf
620//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib19 = 0xf
621//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib0 = 0xf
622//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib1 = 0xf
623//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib2 = 0xf
624//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib3 = 0xf
625//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib4 = 0xf
626//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib5 = 0xf
627//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib6 = 0xf
628//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib7 = 0xf
629//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib8 = 0xf
630//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib9 = 0xf
631//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib10 = 0xf
632//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib11 = 0xf
633//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib12 = 0xf
634//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib13 = 0xf
635//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib14 = 0xf
636//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib15 = 0xf
637//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib16 = 0xf
638//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib17 = 0xf
639//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib18 = 0xf
640//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib19 = 0xf
641//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib0 = 0xf
642//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib1 = 0xf
643//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib2 = 0xf
644//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib3 = 0xf
645//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib4 = 0xf
646//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib5 = 0xf
647//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib6 = 0xf
648//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib7 = 0xf
649//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib8 = 0xf
650//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib9 = 0xf
651//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib10 = 0xf
652//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib11 = 0xf
653//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib12 = 0xf
654//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib13 = 0xf
655//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib14 = 0xf
656//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib15 = 0xf
657//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib16 = 0xf
658//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib17 = 0xf
659//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib18 = 0xf
660//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib19 = 0xf
661//// [phyinit_print_dat] mb_DDR4U_1D[0].ALT_CAS_L = 0x0
662//// [phyinit_print_dat] mb_DDR4U_1D[0].ALT_WCAS_L = 0x0
663//// [phyinit_print_dat] mb_DDR4U_1D[0].D4Misc = 0x0
664//// [phyinit_print_dat] mb_DDR4U_1D[0].ExtTrainOpt = 0x0
665//// [phyinit_print_dat] mb_DDR4U_1D[0].NVDIMM = 0x0
666//// [phyinit_print_dat] mb_DDR4U_1D[0].AdvTrainOpt = 0x0
667//// [phyinit_print_dat] mb_DDR4U_1D[0].MsgMisc = 0x7
668//// [phyinit_print_dat] mb_DDR4U_1D[0].Pstate = 0x0
669//// [phyinit_print_dat] mb_DDR4U_1D[0].PllBypassEn = 0x0
670//// [phyinit_print_dat] mb_DDR4U_1D[0].DRAMFreq = 0xc80
671//// [phyinit_print_dat] mb_DDR4U_1D[0].PhyVref = 0x40
672//// [phyinit_print_dat] mb_DDR4U_1D[0].DramType = 0x2
673//// [phyinit_print_dat] mb_DDR4U_1D[0].DisabledDbyte = 0x0
674//// [phyinit_print_dat] mb_DDR4U_1D[0].EnabledDQs = 0x10
675//// [phyinit_print_dat] mb_DDR4U_1D[0].CsPresent = 0x1
676//// [phyinit_print_dat] mb_DDR4U_1D[0].CsPresentD0 = 0x0
677//// [phyinit_print_dat] mb_DDR4U_1D[0].CsPresentD1 = 0x0
678//// [phyinit_print_dat] mb_DDR4U_1D[0].AddrMirror = 0x0
679//// [phyinit_print_dat] mb_DDR4U_1D[0].PhyCfg = 0x0
680//// [phyinit_print_dat] mb_DDR4U_1D[0].SequenceCtrl = 0x31f
681//// [phyinit_print_dat] mb_DDR4U_1D[0].HdtCtrl = 0xc8
682//// [phyinit_print_dat] mb_DDR4U_1D[0].Rx2D_CmdSpacing = 0x0
683//// [phyinit_print_dat] mb_DDR4U_1D[0].MREP_MIN_PULSE = 0x0
684//// [phyinit_print_dat] mb_DDR4U_1D[0].DWL_MIN_PULSE = 0x0
685//// [phyinit_print_dat] mb_DDR4U_1D[0].PhyConfigOverride = 0x0
686//// [phyinit_print_dat] mb_DDR4U_1D[0].DFIMRLMargin = 0x2
687//// [phyinit_print_dat] mb_DDR4U_1D[0].DDR4_RXEN_OFFSET = 0x0
688//// [phyinit_print_dat] mb_DDR4U_1D[0].MR0 = 0x2150
689//// [phyinit_print_dat] mb_DDR4U_1D[0].MR1 = 0x101
690//// [phyinit_print_dat] mb_DDR4U_1D[0].MR2 = 0x228
691//// [phyinit_print_dat] mb_DDR4U_1D[0].MR3 = 0x400
692//// [phyinit_print_dat] mb_DDR4U_1D[0].MR4 = 0x0
693//// [phyinit_print_dat] mb_DDR4U_1D[0].MR5 = 0x500
694//// [phyinit_print_dat] mb_DDR4U_1D[0].MR6 = 0x104f
695//// [phyinit_print_dat] mb_DDR4U_1D[0].X16Present = 0x0
696//// [phyinit_print_dat] mb_DDR4U_1D[0].CsSetupGDDec = 0x0
697//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK0 = 0x0
698//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK1 = 0x0
699//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK2 = 0x0
700//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK3 = 0x0
701//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK4 = 0x0
702//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK5 = 0x0
703//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK6 = 0x0
704//// [phyinit_print_dat] mb_DDR4U_1D[0].RTT_NOM_WR_PARK7 = 0x0
705//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl0 = 0x0
706//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl1 = 0x0
707//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl2 = 0x0
708//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl3 = 0x0
709//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl4 = 0x0
710//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl5 = 0x0
711//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl6 = 0x0
712//// [phyinit_print_dat] mb_DDR4U_1D[0].AcsmOdtCtrl7 = 0x0
713//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib0 = 0xf
714//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib1 = 0xf
715//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib2 = 0xf
716//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib3 = 0xf
717//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib4 = 0xf
718//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib5 = 0xf
719//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib6 = 0xf
720//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib7 = 0xf
721//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib8 = 0xf
722//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib9 = 0xf
723//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib10 = 0xf
724//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib11 = 0xf
725//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib12 = 0xf
726//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib13 = 0xf
727//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib14 = 0xf
728//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib15 = 0xf
729//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib16 = 0xf
730//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib17 = 0xf
731//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib18 = 0xf
732//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR0Nib19 = 0xf
733//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib0 = 0xf
734//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib1 = 0xf
735//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib2 = 0xf
736//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib3 = 0xf
737//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib4 = 0xf
738//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib5 = 0xf
739//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib6 = 0xf
740//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib7 = 0xf
741//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib8 = 0xf
742//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib9 = 0xf
743//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib10 = 0xf
744//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib11 = 0xf
745//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib12 = 0xf
746//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib13 = 0xf
747//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib14 = 0xf
748//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib15 = 0xf
749//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib16 = 0xf
750//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib17 = 0xf
751//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib18 = 0xf
752//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR1Nib19 = 0xf
753//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib0 = 0xf
754//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib1 = 0xf
755//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib2 = 0xf
756//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib3 = 0xf
757//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib4 = 0xf
758//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib5 = 0xf
759//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib6 = 0xf
760//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib7 = 0xf
761//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib8 = 0xf
762//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib9 = 0xf
763//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib10 = 0xf
764//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib11 = 0xf
765//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib12 = 0xf
766//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib13 = 0xf
767//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib14 = 0xf
768//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib15 = 0xf
769//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib16 = 0xf
770//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib17 = 0xf
771//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib18 = 0xf
772//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR2Nib19 = 0xf
773//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib0 = 0xf
774//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib1 = 0xf
775//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib2 = 0xf
776//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib3 = 0xf
777//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib4 = 0xf
778//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib5 = 0xf
779//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib6 = 0xf
780//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib7 = 0xf
781//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib8 = 0xf
782//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib9 = 0xf
783//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib10 = 0xf
784//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib11 = 0xf
785//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib12 = 0xf
786//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib13 = 0xf
787//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib14 = 0xf
788//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib15 = 0xf
789//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib16 = 0xf
790//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib17 = 0xf
791//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib18 = 0xf
792//// [phyinit_print_dat] mb_DDR4U_1D[0].VrefDqR3Nib19 = 0xf
793//// [phyinit_print_dat] mb_DDR4U_1D[0].ALT_CAS_L = 0x0
794//// [phyinit_print_dat] mb_DDR4U_1D[0].ALT_WCAS_L = 0x0
795//// [phyinit_print_dat] mb_DDR4U_1D[0].D4Misc = 0x0
796//// [phyinit_print_dat] mb_DDR4U_1D[0].ExtTrainOpt = 0x0
797//// [phyinit_print_dat] mb_DDR4U_1D[0].NVDIMM = 0x0
798//// [phyinit_print_dat] // ####################################################
799//// [phyinit_print_dat] //
800//// [phyinit_print_dat] // Printing values of 2D message block input/inout fields, PState=0
801//// [phyinit_print_dat] //
802//// [phyinit_print_dat] // ####################################################
803//// [phyinit_print_dat] mb_DDR4U_2D[0].AdvTrainOpt = 0x0
804//// [phyinit_print_dat] mb_DDR4U_2D[0].MsgMisc = 0x7
805//// [phyinit_print_dat] mb_DDR4U_2D[0].Pstate = 0x0
806//// [phyinit_print_dat] mb_DDR4U_2D[0].PllBypassEn = 0x0
807//// [phyinit_print_dat] mb_DDR4U_2D[0].DRAMFreq = 0xc80
808//// [phyinit_print_dat] mb_DDR4U_2D[0].PhyVref = 0x40
809//// [phyinit_print_dat] mb_DDR4U_2D[0].DramType = 0x2
810//// [phyinit_print_dat] mb_DDR4U_2D[0].DisabledDbyte = 0x0
811//// [phyinit_print_dat] mb_DDR4U_2D[0].EnabledDQs = 0x10
812//// [phyinit_print_dat] mb_DDR4U_2D[0].CsPresent = 0x1
813//// [phyinit_print_dat] mb_DDR4U_2D[0].CsPresentD0 = 0x0
814//// [phyinit_print_dat] mb_DDR4U_2D[0].CsPresentD1 = 0x0
815//// [phyinit_print_dat] mb_DDR4U_2D[0].AddrMirror = 0x0
816//// [phyinit_print_dat] mb_DDR4U_2D[0].PhyCfg = 0x0
817//// [phyinit_print_dat] mb_DDR4U_2D[0].SequenceCtrl = 0x31f
818//// [phyinit_print_dat] mb_DDR4U_2D[0].HdtCtrl = 0xc8
819//// [phyinit_print_dat] mb_DDR4U_2D[0].RX2D_TrainOpt = 0x0
820//// [phyinit_print_dat] mb_DDR4U_2D[0].TX2D_TrainOpt = 0x0
821//// [phyinit_print_dat] mb_DDR4U_2D[0].Share2DVrefResult = 0x0
822//// [phyinit_print_dat] mb_DDR4U_2D[0].Delay_Weight2D = 0x20
823//// [phyinit_print_dat] mb_DDR4U_2D[0].Voltage_Weight2D = 0x80
824//// [phyinit_print_dat] mb_DDR4U_2D[0].Rx2D_CmdSpacing = 0x0
825//// [phyinit_print_dat] mb_DDR4U_2D[0].MREP_MIN_PULSE = 0x0
826//// [phyinit_print_dat] mb_DDR4U_2D[0].DWL_MIN_PULSE = 0x0
827//// [phyinit_print_dat] mb_DDR4U_2D[0].PhyConfigOverride = 0x0
828//// [phyinit_print_dat] mb_DDR4U_2D[0].DFIMRLMargin = 0x2
829//// [phyinit_print_dat] mb_DDR4U_2D[0].VoltageRange2D = 0x0
830//// [phyinit_print_dat] mb_DDR4U_2D[0].MR1_EQU_TrainOpt = 0x0
831//// [phyinit_print_dat] mb_DDR4U_2D[0].advSearch_rd2D = 0x0
832//// [phyinit_print_dat] mb_DDR4U_2D[0].advSearch_wr2D = 0x0
833//// [phyinit_print_dat] mb_DDR4U_2D[0].moreDebug2D = 0x0
834//// [phyinit_print_dat] mb_DDR4U_2D[0].MR6_EQU_TrainOpt = 0x0
835//// [phyinit_print_dat] mb_DDR4U_2D[0].TX2D_DB_DFE_TrainOpt = 0x0
836//// [phyinit_print_dat] mb_DDR4U_2D[0].CsWriteNoise = 0x0
837//// [phyinit_print_dat] mb_DDR4U_2D[0].AdvTrainOpt2D = 0x0
838//// [phyinit_print_dat] mb_DDR4U_2D[0].Misc2D = 0x0
839//// [phyinit_print_dat] mb_DDR4U_2D[0].MR0 = 0x2150
840//// [phyinit_print_dat] mb_DDR4U_2D[0].MR1 = 0x101
841//// [phyinit_print_dat] mb_DDR4U_2D[0].MR2 = 0x228
842//// [phyinit_print_dat] mb_DDR4U_2D[0].MR3 = 0x400
843//// [phyinit_print_dat] mb_DDR4U_2D[0].MR4 = 0x0
844//// [phyinit_print_dat] mb_DDR4U_2D[0].MR5 = 0x500
845//// [phyinit_print_dat] mb_DDR4U_2D[0].MR6 = 0x104f
846//// [phyinit_print_dat] mb_DDR4U_2D[0].X16Present = 0x0
847//// [phyinit_print_dat] mb_DDR4U_2D[0].CsSetupGDDec = 0x0
848//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK0 = 0x0
849//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK1 = 0x0
850//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK2 = 0x0
851//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK3 = 0x0
852//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK4 = 0x0
853//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK5 = 0x0
854//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK6 = 0x0
855//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK7 = 0x0
856//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl0 = 0x0
857//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl1 = 0x0
858//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl2 = 0x0
859//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl3 = 0x0
860//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl4 = 0x0
861//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl5 = 0x0
862//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl6 = 0x0
863//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl7 = 0x0
864//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib0 = 0xf
865//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib1 = 0xf
866//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib2 = 0xf
867//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib3 = 0xf
868//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib4 = 0xf
869//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib5 = 0xf
870//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib6 = 0xf
871//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib7 = 0xf
872//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib8 = 0xf
873//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib9 = 0xf
874//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib10 = 0xf
875//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib11 = 0xf
876//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib12 = 0xf
877//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib13 = 0xf
878//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib14 = 0xf
879//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib15 = 0xf
880//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib16 = 0xf
881//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib17 = 0xf
882//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib18 = 0xf
883//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib19 = 0xf
884//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib0 = 0xf
885//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib1 = 0xf
886//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib2 = 0xf
887//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib3 = 0xf
888//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib4 = 0xf
889//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib5 = 0xf
890//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib6 = 0xf
891//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib7 = 0xf
892//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib8 = 0xf
893//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib9 = 0xf
894//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib10 = 0xf
895//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib11 = 0xf
896//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib12 = 0xf
897//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib13 = 0xf
898//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib14 = 0xf
899//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib15 = 0xf
900//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib16 = 0xf
901//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib17 = 0xf
902//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib18 = 0xf
903//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib19 = 0xf
904//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib0 = 0xf
905//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib1 = 0xf
906//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib2 = 0xf
907//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib3 = 0xf
908//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib4 = 0xf
909//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib5 = 0xf
910//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib6 = 0xf
911//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib7 = 0xf
912//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib8 = 0xf
913//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib9 = 0xf
914//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib10 = 0xf
915//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib11 = 0xf
916//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib12 = 0xf
917//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib13 = 0xf
918//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib14 = 0xf
919//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib15 = 0xf
920//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib16 = 0xf
921//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib17 = 0xf
922//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib18 = 0xf
923//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib19 = 0xf
924//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib0 = 0xf
925//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib1 = 0xf
926//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib2 = 0xf
927//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib3 = 0xf
928//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib4 = 0xf
929//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib5 = 0xf
930//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib6 = 0xf
931//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib7 = 0xf
932//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib8 = 0xf
933//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib9 = 0xf
934//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib10 = 0xf
935//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib11 = 0xf
936//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib12 = 0xf
937//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib13 = 0xf
938//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib14 = 0xf
939//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib15 = 0xf
940//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib16 = 0xf
941//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib17 = 0xf
942//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib18 = 0xf
943//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib19 = 0xf
944//// [phyinit_print_dat] mb_DDR4U_2D[0].ALT_CAS_L = 0x0
945//// [phyinit_print_dat] mb_DDR4U_2D[0].ALT_WCAS_L = 0x0
946//// [phyinit_print_dat] mb_DDR4U_2D[0].D4Misc = 0x0
947//// [phyinit_print_dat] mb_DDR4U_2D[0].ExtTrainOpt = 0x0
948//// [phyinit_print_dat] mb_DDR4U_2D[0].NVDIMM = 0x0
949//// [phyinit_print_dat] mb_DDR4U_2D[0].AdvTrainOpt = 0x0
950//// [phyinit_print_dat] mb_DDR4U_2D[0].MsgMisc = 0x7
951//// [phyinit_print_dat] mb_DDR4U_2D[0].Pstate = 0x0
952//// [phyinit_print_dat] mb_DDR4U_2D[0].PllBypassEn = 0x0
953//// [phyinit_print_dat] mb_DDR4U_2D[0].DRAMFreq = 0xc80
954//// [phyinit_print_dat] mb_DDR4U_2D[0].PhyVref = 0x40
955//// [phyinit_print_dat] mb_DDR4U_2D[0].DramType = 0x2
956//// [phyinit_print_dat] mb_DDR4U_2D[0].DisabledDbyte = 0x0
957//// [phyinit_print_dat] mb_DDR4U_2D[0].EnabledDQs = 0x10
958//// [phyinit_print_dat] mb_DDR4U_2D[0].CsPresent = 0x1
959//// [phyinit_print_dat] mb_DDR4U_2D[0].CsPresentD0 = 0x0
960//// [phyinit_print_dat] mb_DDR4U_2D[0].CsPresentD1 = 0x0
961//// [phyinit_print_dat] mb_DDR4U_2D[0].AddrMirror = 0x0
962//// [phyinit_print_dat] mb_DDR4U_2D[0].PhyCfg = 0x0
963//// [phyinit_print_dat] mb_DDR4U_2D[0].SequenceCtrl = 0x31f
964//// [phyinit_print_dat] mb_DDR4U_2D[0].HdtCtrl = 0xc8
965//// [phyinit_print_dat] mb_DDR4U_2D[0].RX2D_TrainOpt = 0x0
966//// [phyinit_print_dat] mb_DDR4U_2D[0].TX2D_TrainOpt = 0x0
967//// [phyinit_print_dat] mb_DDR4U_2D[0].Share2DVrefResult = 0x0
968//// [phyinit_print_dat] mb_DDR4U_2D[0].Delay_Weight2D = 0x20
969//// [phyinit_print_dat] mb_DDR4U_2D[0].Voltage_Weight2D = 0x80
970//// [phyinit_print_dat] mb_DDR4U_2D[0].Rx2D_CmdSpacing = 0x0
971//// [phyinit_print_dat] mb_DDR4U_2D[0].MREP_MIN_PULSE = 0x0
972//// [phyinit_print_dat] mb_DDR4U_2D[0].DWL_MIN_PULSE = 0x0
973//// [phyinit_print_dat] mb_DDR4U_2D[0].PhyConfigOverride = 0x0
974//// [phyinit_print_dat] mb_DDR4U_2D[0].DFIMRLMargin = 0x2
975//// [phyinit_print_dat] mb_DDR4U_2D[0].VoltageRange2D = 0x0
976//// [phyinit_print_dat] mb_DDR4U_2D[0].MR1_EQU_TrainOpt = 0x0
977//// [phyinit_print_dat] mb_DDR4U_2D[0].advSearch_rd2D = 0x0
978//// [phyinit_print_dat] mb_DDR4U_2D[0].advSearch_wr2D = 0x0
979//// [phyinit_print_dat] mb_DDR4U_2D[0].moreDebug2D = 0x0
980//// [phyinit_print_dat] mb_DDR4U_2D[0].MR6_EQU_TrainOpt = 0x0
981//// [phyinit_print_dat] mb_DDR4U_2D[0].TX2D_DB_DFE_TrainOpt = 0x0
982//// [phyinit_print_dat] mb_DDR4U_2D[0].CsWriteNoise = 0x0
983//// [phyinit_print_dat] mb_DDR4U_2D[0].AdvTrainOpt2D = 0x0
984//// [phyinit_print_dat] mb_DDR4U_2D[0].Misc2D = 0x0
985//// [phyinit_print_dat] mb_DDR4U_2D[0].MR0 = 0x2150
986//// [phyinit_print_dat] mb_DDR4U_2D[0].MR1 = 0x101
987//// [phyinit_print_dat] mb_DDR4U_2D[0].MR2 = 0x228
988//// [phyinit_print_dat] mb_DDR4U_2D[0].MR3 = 0x400
989//// [phyinit_print_dat] mb_DDR4U_2D[0].MR4 = 0x0
990//// [phyinit_print_dat] mb_DDR4U_2D[0].MR5 = 0x500
991//// [phyinit_print_dat] mb_DDR4U_2D[0].MR6 = 0x104f
992//// [phyinit_print_dat] mb_DDR4U_2D[0].X16Present = 0x0
993//// [phyinit_print_dat] mb_DDR4U_2D[0].CsSetupGDDec = 0x0
994//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK0 = 0x0
995//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK1 = 0x0
996//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK2 = 0x0
997//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK3 = 0x0
998//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK4 = 0x0
999//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK5 = 0x0
1000//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK6 = 0x0
1001//// [phyinit_print_dat] mb_DDR4U_2D[0].RTT_NOM_WR_PARK7 = 0x0
1002//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl0 = 0x0
1003//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl1 = 0x0
1004//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl2 = 0x0
1005//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl3 = 0x0
1006//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl4 = 0x0
1007//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl5 = 0x0
1008//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl6 = 0x0
1009//// [phyinit_print_dat] mb_DDR4U_2D[0].AcsmOdtCtrl7 = 0x0
1010//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib0 = 0xf
1011//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib1 = 0xf
1012//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib2 = 0xf
1013//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib3 = 0xf
1014//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib4 = 0xf
1015//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib5 = 0xf
1016//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib6 = 0xf
1017//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib7 = 0xf
1018//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib8 = 0xf
1019//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib9 = 0xf
1020//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib10 = 0xf
1021//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib11 = 0xf
1022//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib12 = 0xf
1023//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib13 = 0xf
1024//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib14 = 0xf
1025//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib15 = 0xf
1026//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib16 = 0xf
1027//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib17 = 0xf
1028//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib18 = 0xf
1029//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR0Nib19 = 0xf
1030//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib0 = 0xf
1031//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib1 = 0xf
1032//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib2 = 0xf
1033//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib3 = 0xf
1034//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib4 = 0xf
1035//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib5 = 0xf
1036//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib6 = 0xf
1037//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib7 = 0xf
1038//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib8 = 0xf
1039//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib9 = 0xf
1040//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib10 = 0xf
1041//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib11 = 0xf
1042//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib12 = 0xf
1043//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib13 = 0xf
1044//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib14 = 0xf
1045//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib15 = 0xf
1046//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib16 = 0xf
1047//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib17 = 0xf
1048//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib18 = 0xf
1049//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR1Nib19 = 0xf
1050//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib0 = 0xf
1051//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib1 = 0xf
1052//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib2 = 0xf
1053//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib3 = 0xf
1054//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib4 = 0xf
1055//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib5 = 0xf
1056//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib6 = 0xf
1057//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib7 = 0xf
1058//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib8 = 0xf
1059//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib9 = 0xf
1060//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib10 = 0xf
1061//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib11 = 0xf
1062//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib12 = 0xf
1063//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib13 = 0xf
1064//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib14 = 0xf
1065//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib15 = 0xf
1066//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib16 = 0xf
1067//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib17 = 0xf
1068//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib18 = 0xf
1069//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR2Nib19 = 0xf
1070//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib0 = 0xf
1071//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib1 = 0xf
1072//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib2 = 0xf
1073//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib3 = 0xf
1074//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib4 = 0xf
1075//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib5 = 0xf
1076//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib6 = 0xf
1077//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib7 = 0xf
1078//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib8 = 0xf
1079//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib9 = 0xf
1080//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib10 = 0xf
1081//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib11 = 0xf
1082//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib12 = 0xf
1083//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib13 = 0xf
1084//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib14 = 0xf
1085//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib15 = 0xf
1086//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib16 = 0xf
1087//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib17 = 0xf
1088//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib18 = 0xf
1089//// [phyinit_print_dat] mb_DDR4U_2D[0].VrefDqR3Nib19 = 0xf
1090//// [phyinit_print_dat] mb_DDR4U_2D[0].ALT_CAS_L = 0x0
1091//// [phyinit_print_dat] mb_DDR4U_2D[0].ALT_WCAS_L = 0x0
1092//// [phyinit_print_dat] mb_DDR4U_2D[0].D4Misc = 0x0
1093//// [phyinit_print_dat] mb_DDR4U_2D[0].ExtTrainOpt = 0x0
1094//// [phyinit_print_dat] mb_DDR4U_2D[0].NVDIMM = 0x0
1095
1096////##############################################################
1097////
1098//// Step (A) : Bring up VDD, VDDQ, and VAA
1099////
1100//// The power supplies can come up and stabilize in any order.
1101//// While the power supplies are coming up, all outputs will be unknown and
1102//// the values of the inputs are don't cares.
1103////
1104////##############################################################
1105
1106dwc_ddrphy_phyinit_userCustom_A_bringupPower();
1107
1108//[dwc_ddrphy_phyinit_userCustom_A_bringupPower] End of dwc_ddrphy_phyinit_userCustom_A_bringupPower()
1109//
1110//
1111////##############################################################
1112////
1113//// 4.3.2(B) Start Clocks and Reset the PHY
1114////
1115//// Following is one possbile sequence to reset the PHY. Other sequences are also possible.
1116//// See section 5.2.2 of the PUB for other possible reset sequences.
1117////
1118//// 1. Drive PwrOkIn to 0. Note: Reset, DfiClk, and APBCLK can be X.
1119//// 2. Start DfiClk and APBCLK
1120//// 3. Drive Reset to 1 and PRESETn_APB to 0.
1121//// Note: The combination of PwrOkIn=0 and Reset=1 signals a cold reset to the PHY.
1122//// 4. Wait a minimum of 8 cycles.
1123//// 5. Drive PwrOkIn to 1. Once the PwrOkIn is asserted (and Reset is still asserted),
1124//// DfiClk synchronously switches to any legal input frequency.
1125//// 6. Wait a minimum of 64 cycles. Note: This is the reset period for the PHY.
1126//// 7. Drive Reset to 0. Note: All DFI and APB inputs must be driven at valid reset states before the deassertion of Reset.
1127//// 8. Wait a minimum of 1 Cycle.
1128//// 9. Drive PRESETn_APB to 1 to de-assert reset on the ABP bus.
1129////10. The PHY is now in the reset state and is ready to accept APB transactions.
1130////
1131////##############################################################
1132//
1133//
1134dwc_ddrphy_phyinit_userCustom_B_startClockResetPhy(sdrammc);
1135
1136//// [dwc_ddrphy_phyinit_userCustom_B_startClockResetPhy] End of dwc_ddrphy_phyinit_userCustom_B_startClockResetPhy()
1137//
1138
1139////##############################################################
1140////
1141//// Step (C) Initialize PHY Configuration
1142////
1143//// Load the required PHY configuration registers for the appropriate mode and memory configuration
1144////
1145////##############################################################
1146//
1147
1148//// [phyinit_C_initPhyConfig] Start of dwc_ddrphy_phyinit_C_initPhyConfig()
1149//// [phyinit_C_initPhyConfig] Programming ForceClkGaterEnables::ForcePubDxClkEnLow to 0x1
1150dwc_ddrphy_apb_wr(0x200a6, 0x2); // DWC_DDRPHYA_MASTER0_base0_ForceClkGaterEnables
1151// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x0 for MASTER
1152dwc_ddrphy_apb_wr(0x20066, 0x0); // DWC_DDRPHYA_MASTER0_base0_VREGCtrl3
1153// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x0 for all DBYTEs
1154dwc_ddrphy_apb_wr(0x10066, 0x0); // DWC_DDRPHYA_DBYTE0_base0_VREGCtrl3
1155dwc_ddrphy_apb_wr(0x11066, 0x0); // DWC_DDRPHYA_DBYTE1_base0_VREGCtrl3
1156// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x0 for all ANIBs
1157dwc_ddrphy_apb_wr(0x66, 0x0); // DWC_DDRPHYA_ANIB0_base0_VREGCtrl3
1158dwc_ddrphy_apb_wr(0x1066, 0x0); // DWC_DDRPHYA_ANIB1_base0_VREGCtrl3
1159dwc_ddrphy_apb_wr(0x2066, 0x0); // DWC_DDRPHYA_ANIB2_base0_VREGCtrl3
1160dwc_ddrphy_apb_wr(0x3066, 0x0); // DWC_DDRPHYA_ANIB3_base0_VREGCtrl3
1161dwc_ddrphy_apb_wr(0x4066, 0x0); // DWC_DDRPHYA_ANIB4_base0_VREGCtrl3
1162dwc_ddrphy_apb_wr(0x5066, 0x0); // DWC_DDRPHYA_ANIB5_base0_VREGCtrl3
1163dwc_ddrphy_apb_wr(0x6066, 0x0); // DWC_DDRPHYA_ANIB6_base0_VREGCtrl3
1164dwc_ddrphy_apb_wr(0x7066, 0x0); // DWC_DDRPHYA_ANIB7_base0_VREGCtrl3
1165dwc_ddrphy_apb_wr(0x8066, 0x0); // DWC_DDRPHYA_ANIB8_base0_VREGCtrl3
1166dwc_ddrphy_apb_wr(0x9066, 0x0); // DWC_DDRPHYA_ANIB9_base0_VREGCtrl3
1167// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl1::VshDAC to 0x31 for MASTER
1168dwc_ddrphy_apb_wr(0x20029, 0xc4); // DWC_DDRPHYA_MASTER0_base0_VREGCtrl1_p0
1169// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl1::VshDAC to 0x31 for all DBYTEs
1170dwc_ddrphy_apb_wr(0x10029, 0xc4); // DWC_DDRPHYA_DBYTE0_base0_VREGCtrl1_p0
1171dwc_ddrphy_apb_wr(0x11029, 0xc4); // DWC_DDRPHYA_DBYTE1_base0_VREGCtrl1_p0
1172// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl1::VshDAC to 0x31 for all ANIBs
1173dwc_ddrphy_apb_wr(0x29, 0xc4); // DWC_DDRPHYA_ANIB0_base0_VREGCtrl1_p0
1174dwc_ddrphy_apb_wr(0x1029, 0xc4); // DWC_DDRPHYA_ANIB1_base0_VREGCtrl1_p0
1175dwc_ddrphy_apb_wr(0x2029, 0xc4); // DWC_DDRPHYA_ANIB2_base0_VREGCtrl1_p0
1176dwc_ddrphy_apb_wr(0x3029, 0xc4); // DWC_DDRPHYA_ANIB3_base0_VREGCtrl1_p0
1177dwc_ddrphy_apb_wr(0x4029, 0xc4); // DWC_DDRPHYA_ANIB4_base0_VREGCtrl1_p0
1178dwc_ddrphy_apb_wr(0x5029, 0xc4); // DWC_DDRPHYA_ANIB5_base0_VREGCtrl1_p0
1179dwc_ddrphy_apb_wr(0x6029, 0xc4); // DWC_DDRPHYA_ANIB6_base0_VREGCtrl1_p0
1180dwc_ddrphy_apb_wr(0x7029, 0xc4); // DWC_DDRPHYA_ANIB7_base0_VREGCtrl1_p0
1181dwc_ddrphy_apb_wr(0x8029, 0xc4); // DWC_DDRPHYA_ANIB8_base0_VREGCtrl1_p0
1182dwc_ddrphy_apb_wr(0x9029, 0xc4); // DWC_DDRPHYA_ANIB9_base0_VREGCtrl1_p0
1183//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxSlewRate::CsrTxSrc to 0x0
1184//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxSlewRate::TxPreDrvMode to 0x0
1185//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxSlewRate to 0x0
1186//// [phyinit_C_initPhyConfig] ### NOTE ### Optimal setting for TxSlewRate::CsrTxSrc are technology specific.
1187//// [phyinit_C_initPhyConfig] ### NOTE ### Please consult the "Output Slew Rate" section of HSpice Model App Note in specific technology for recommended settings
1188
1189dwc_ddrphy_apb_wr(0x1005f, 0x0); // DWC_DDRPHYA_DBYTE0_base0_TxSlewRate_b0_p0
1190dwc_ddrphy_apb_wr(0x1015f, 0x0); // DWC_DDRPHYA_DBYTE0_base0_TxSlewRate_b1_p0
1191dwc_ddrphy_apb_wr(0x1105f, 0x0); // DWC_DDRPHYA_DBYTE1_base0_TxSlewRate_b0_p0
1192dwc_ddrphy_apb_wr(0x1115f, 0x0); // DWC_DDRPHYA_DBYTE1_base0_TxSlewRate_b1_p0
1193//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::ATxPreDrvMode to 0x0
1194//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 0 to 0x11e
1195//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 0 to 0x11e
1196dwc_ddrphy_apb_wr(0x55, 0x11e); // DWC_DDRPHYA_ANIB0_base0_ATxSlewRate_p0
1197//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 1 to 0x11e
1198//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 1 to 0x11e
1199dwc_ddrphy_apb_wr(0x1055, 0x11e); // DWC_DDRPHYA_ANIB1_base0_ATxSlewRate_p0
1200//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 2 to 0x11e
1201//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 2 to 0x11e
1202dwc_ddrphy_apb_wr(0x2055, 0x11e); // DWC_DDRPHYA_ANIB2_base0_ATxSlewRate_p0
1203//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 3 to 0x11e
1204//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 3 to 0x11e
1205dwc_ddrphy_apb_wr(0x3055, 0x11e); // DWC_DDRPHYA_ANIB3_base0_ATxSlewRate_p0
1206//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 4 to 0x11e
1207//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 4 to 0x11e
1208dwc_ddrphy_apb_wr(0x4055, 0x11e); // DWC_DDRPHYA_ANIB4_base0_ATxSlewRate_p0
1209//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 5 to 0x15a
1210//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 5 to 0x15a
1211dwc_ddrphy_apb_wr(0x5055, 0x15a); // DWC_DDRPHYA_ANIB5_base0_ATxSlewRate_p0
1212//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 6 to 0x11e
1213//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 6 to 0x11e
1214dwc_ddrphy_apb_wr(0x6055, 0x11e); // DWC_DDRPHYA_ANIB6_base0_ATxSlewRate_p0
1215//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 7 to 0x11e
1216//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 7 to 0x11e
1217dwc_ddrphy_apb_wr(0x7055, 0x11e); // DWC_DDRPHYA_ANIB7_base0_ATxSlewRate_p0
1218//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 8 to 0x11e
1219//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 8 to 0x11e
1220dwc_ddrphy_apb_wr(0x8055, 0x11e); // DWC_DDRPHYA_ANIB8_base0_ATxSlewRate_p0
1221//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate::CsrATxSrc ANIB 9 to 0x11e
1222//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxSlewRate ANIB 9 to 0x11e
1223dwc_ddrphy_apb_wr(0x9055, 0x11e); // DWC_DDRPHYA_ANIB9_base0_ATxSlewRate_p0
1224//// [phyinit_C_initPhyConfig] ### NOTE ### Optimal setting for ATxSlewRate::CsrATxSrc are technology specific.
1225//// [phyinit_C_initPhyConfig] ### NOTE ### Please consult the "Output Slew Rate" section of HSpice Model App Note in specific technology for recommended settings
1226
1227//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming CalPreDriverOverride::CsrTxOvSrc to 0x172
1228//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming CalPreDriverOverride::TxCalBaseN to 0x1
1229//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming CalPreDriverOverride::TxCalBaseP to 0x1
1230//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming CalPreDriverOverride to 0x372
1231//// [phyinit_C_initPhyConfig] ### NOTE ### Optimal setting for CalPreDriverOverride::CsrTxOvSrc are technology specific.
1232//// [phyinit_C_initPhyConfig] ### NOTE ### Please consult the "Output Slew Rate" section of HSpice Model App Note in specific technology for recommended settings
1233
1234dwc_ddrphy_apb_wr(0x2008c, 0x372); // DWC_DDRPHYA_MASTER0_base0_CalPreDriverOverride
1235//// [phyinit_C_initPhyConfig] PUB revision is 0x0350.
1236//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllCtrl2::PllFreqSel to 0x19 based on DfiClk frequency = 800.
1237dwc_ddrphy_apb_wr(0x200c5, 0x19); // DWC_DDRPHYA_MASTER0_base0_PllCtrl2_p0
1238//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllCtrl1::PllCpPropCtrl to 0x3 based on DfiClk frequency = 800.
1239//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllCtrl1::PllCpIntCtrl to 0x1 based on DfiClk frequency = 800.
1240//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllCtrl1 to 0x61 based on DfiClk frequency = 800.
1241dwc_ddrphy_apb_wr(0x200c7, 0x61); // DWC_DDRPHYA_MASTER0_base0_PllCtrl1_p0
1242//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllTestMode to 0x400f based on DfiClk frequency = 800.
1243dwc_ddrphy_apb_wr(0x200ca, 0x400f); // DWC_DDRPHYA_MASTER0_base0_PllTestMode_p0
1244//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllCtrl4::PllCpPropGsCtrl to 0x6 based on DfiClk frequency = 800.
1245//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllCtrl4::PllCpIntGsCtrl to 0x12 based on DfiClk frequency = 800.
1246//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming PllCtrl4 to 0xd2 based on DfiClk frequency = 800.
1247dwc_ddrphy_apb_wr(0x200cc, 0xd2); // DWC_DDRPHYA_MASTER0_base0_PllCtrl4_p0
1248//// [phyinit_C_initPhyConfig] ### NOTE ### Optimal setting for PllCtrl1 and PllTestMode are technology specific.
1249//// [phyinit_C_initPhyConfig] ### NOTE ### Please consult technology specific PHY Databook for recommended settings
1250
1251//
1252////##############################################################
1253////
1254//// Program ARdPtrInitVal based on Frequency and PLL Bypass inputs
1255//// The values programmed here assume ideal properties of DfiClk
1256//// and Pclk including:
1257//// - DfiClk skew
1258//// - DfiClk jitter
1259//// - DfiClk PVT variations
1260//// - Pclk skew
1261//// - Pclk jitter
1262////
1263//// PLL Bypassed mode:
1264//// For MemClk frequency > 933MHz, the valid range of ARdPtrInitVal_p0[3:0] is: 2-5
1265//// For MemClk frequency < 933MHz, the valid range of ARdPtrInitVal_p0[3:0] is: 1-5
1266////
1267//// PLL Enabled mode:
1268//// For MemClk frequency > 933MHz, the valid range of ARdPtrInitVal_p0[3:0] is: 1-5
1269//// For MemClk frequency < 933MHz, the valid range of ARdPtrInitVal_p0[3:0] is: 0-5
1270////
1271////##############################################################
1272//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ARdPtrInitVal to 0x1
1273dwc_ddrphy_apb_wr(0x2002e, 0x1); // DWC_DDRPHYA_MASTER0_base0_ARdPtrInitVal_p0
1274//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DisPtrInitClrTxTracking to 0x0
1275dwc_ddrphy_apb_wr(0x20051, 0x0); // DWC_DDRPHYA_MASTER0_base0_PtrInitTrackingModeCntrl_p0
1276//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DqsPreambleControl::TwoTckRxDqsPre to 0x0
1277//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DqsPreambleControl::TwoTckTxDqsPre to 0x0
1278//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DqsPreambleControl::PositionDfeInit to 0x2
1279//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DqsPreambleControl::DDR5RxPreamble to 0x0
1280//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DqsPreambleControl::DDR5RxPostamble to 0x0
1281//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DqsPreambleControl to 0x8
1282dwc_ddrphy_apb_wr(0x20024, 0x8); // DWC_DDRPHYA_MASTER0_base0_DqsPreambleControl_p0
1283//// [phyinit_C_initPhyConfig] Programming DbyteDllModeCntrl::DllRxPreambleMode to 0x1
1284//// [phyinit_C_initPhyConfig] Programming DbyteDllModeCntrl::DllRxBurstLengthMode to 0x0
1285//// [phyinit_C_initPhyConfig] Programming DbyteDllModeCntrl to 0x2
1286dwc_ddrphy_apb_wr(0x2003a, 0x2); // DWC_DDRPHYA_MASTER0_base0_DbyteDllModeCntrl
1287//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxOdtDrvStren::TxOdtStrenPu to 0x4
1288//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxOdtDrvStren::TxOdtStrenPd to 0x0
1289dwc_ddrphy_apb_wr(0x1004d, 0x4); // DWC_DDRPHYA_DBYTE0_base0_TxOdtDrvStren_b0_p0
1290dwc_ddrphy_apb_wr(0x1014d, 0x4); // DWC_DDRPHYA_DBYTE0_base0_TxOdtDrvStren_b1_p0
1291dwc_ddrphy_apb_wr(0x1104d, 0x4); // DWC_DDRPHYA_DBYTE1_base0_TxOdtDrvStren_b0_p0
1292dwc_ddrphy_apb_wr(0x1114d, 0x4); // DWC_DDRPHYA_DBYTE1_base0_TxOdtDrvStren_b1_p0
1293//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxImpedance::ADrvStrenP to 0x3f
1294//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxImpedance::ADrvStrenN to 0x3f
1295//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxImpedance::ATxReserved13x12 to 0x0
1296//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxImpedance::ATxCalBaseN to 0x1
1297//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming ATxImpedance::ATxCalBaseP to 0x1
1298dwc_ddrphy_apb_wr(0x43, 0xcfff); // DWC_DDRPHYA_ANIB0_base0_ATxImpedance
1299dwc_ddrphy_apb_wr(0x1043, 0xcfff); // DWC_DDRPHYA_ANIB1_base0_ATxImpedance
1300dwc_ddrphy_apb_wr(0x2043, 0xcfff); // DWC_DDRPHYA_ANIB2_base0_ATxImpedance
1301dwc_ddrphy_apb_wr(0x3043, 0xcfff); // DWC_DDRPHYA_ANIB3_base0_ATxImpedance
1302dwc_ddrphy_apb_wr(0x4043, 0xcfff); // DWC_DDRPHYA_ANIB4_base0_ATxImpedance
1303dwc_ddrphy_apb_wr(0x5043, 0xcfff); // DWC_DDRPHYA_ANIB5_base0_ATxImpedance
1304dwc_ddrphy_apb_wr(0x6043, 0xcfff); // DWC_DDRPHYA_ANIB6_base0_ATxImpedance
1305dwc_ddrphy_apb_wr(0x7043, 0xcfff); // DWC_DDRPHYA_ANIB7_base0_ATxImpedance
1306dwc_ddrphy_apb_wr(0x8043, 0xcfff); // DWC_DDRPHYA_ANIB8_base0_ATxImpedance
1307dwc_ddrphy_apb_wr(0x9043, 0xcfff); // DWC_DDRPHYA_ANIB9_base0_ATxImpedance
1308//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxImpedanceCtrl0::TxStrenEqHiPu to 0xc
1309//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxImpedanceCtrl0::TxStrenEqLoPd to 0xc
1310//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxImpedanceCtrl1::TxStrenPu to 0x3f
1311//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxImpedanceCtrl1::TxStrenPd to 0x3f
1312//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxImpedanceCtrl2::TxStrenEqLoPu to 0x0
1313//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TxImpedanceCtrl2::TxStrenEqHiPd to 0x0
1314dwc_ddrphy_apb_wr(0x10041, 0x30c); // DWC_DDRPHYA_DBYTE0_base0_TxImpedanceCtrl0_b0_p0
1315dwc_ddrphy_apb_wr(0x10049, 0xfff); // DWC_DDRPHYA_DBYTE0_base0_TxImpedanceCtrl1_b0_p0
1316dwc_ddrphy_apb_wr(0x1004b, 0x0); // DWC_DDRPHYA_DBYTE0_base0_TxImpedanceCtrl2_b0_p0
1317dwc_ddrphy_apb_wr(0x10141, 0x30c); // DWC_DDRPHYA_DBYTE0_base0_TxImpedanceCtrl0_b1_p0
1318dwc_ddrphy_apb_wr(0x10149, 0xfff); // DWC_DDRPHYA_DBYTE0_base0_TxImpedanceCtrl1_b1_p0
1319dwc_ddrphy_apb_wr(0x1014b, 0x0); // DWC_DDRPHYA_DBYTE0_base0_TxImpedanceCtrl2_b1_p0
1320dwc_ddrphy_apb_wr(0x11041, 0x30c); // DWC_DDRPHYA_DBYTE1_base0_TxImpedanceCtrl0_b0_p0
1321dwc_ddrphy_apb_wr(0x11049, 0xfff); // DWC_DDRPHYA_DBYTE1_base0_TxImpedanceCtrl1_b0_p0
1322dwc_ddrphy_apb_wr(0x1104b, 0x0); // DWC_DDRPHYA_DBYTE1_base0_TxImpedanceCtrl2_b0_p0
1323dwc_ddrphy_apb_wr(0x11141, 0x30c); // DWC_DDRPHYA_DBYTE1_base0_TxImpedanceCtrl0_b1_p0
1324dwc_ddrphy_apb_wr(0x11149, 0xfff); // DWC_DDRPHYA_DBYTE1_base0_TxImpedanceCtrl1_b1_p0
1325dwc_ddrphy_apb_wr(0x1114b, 0x0); // DWC_DDRPHYA_DBYTE1_base0_TxImpedanceCtrl2_b1_p0
1326//// [phyinit_C_initPhyConfig] Programming DfiMode to 0x1
1327dwc_ddrphy_apb_wr(0x20018, 0x1); // DWC_DDRPHYA_MASTER0_base0_DfiMode
1328//// [phyinit_C_initPhyConfig] Programming DfiCAMode to 0x2
1329dwc_ddrphy_apb_wr(0x20075, 0x2); // DWC_DDRPHYA_MASTER0_base0_DfiCAMode
1330//// [phyinit_C_initPhyConfig] Programming CalDrvStr0::CalDrvStrPd50 to 0x2
1331//// [phyinit_C_initPhyConfig] Programming CalDrvStr0::CalDrvStrPu50 to 0x2
1332dwc_ddrphy_apb_wr(0x20050, 0x82); // DWC_DDRPHYA_MASTER0_base0_CalDrvStr0
1333//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming CalUclkInfo::CalUClkTicksPer1uS to 0x320
1334dwc_ddrphy_apb_wr(0x20008, 0x320); // DWC_DDRPHYA_MASTER0_base0_CalUclkInfo_p0
1335//// [phyinit_C_initPhyConfig] Programming CalRate::CalInterval to 0x9
1336//// [phyinit_C_initPhyConfig] Programming CalRate::CalOnce to 0x0
1337dwc_ddrphy_apb_wr(0x20088, 0x9); // DWC_DDRPHYA_MASTER0_base0_CalRate
1338//// [phyinit_C_initPhyConfig] Pstate=0, Programming VrefInGlobal::GlobalVrefInSel to 0x0
1339//// [phyinit_C_initPhyConfig] Pstate=0, Programming VrefInGlobal::GlobalVrefInDAC to 0x1f
1340//// [phyinit_C_initPhyConfig] Pstate=0, Programming VrefInGlobal to 0xf8
1341dwc_ddrphy_apb_wr(0x200b2, 0xf8); // DWC_DDRPHYA_MASTER0_base0_VrefInGlobal_p0
1342//// [phyinit_C_initPhyConfig] Pstate=0, Programming DqDqsRcvCntrl (Byte=0, Upper/Lower=0) to 0x2500
1343dwc_ddrphy_apb_wr(0x10043, 0x2500); // DWC_DDRPHYA_DBYTE0_base0_DqDqsRcvCntrl_b0_p0
1344//// [phyinit_C_initPhyConfig] Pstate=0, Programming DqDqsRcvCntrl (Byte=0, Upper/Lower=1) to 0x2500
1345dwc_ddrphy_apb_wr(0x10143, 0x2500); // DWC_DDRPHYA_DBYTE0_base0_DqDqsRcvCntrl_b1_p0
1346//// [phyinit_C_initPhyConfig] Pstate=0, Programming DqDqsRcvCntrl (Byte=1, Upper/Lower=0) to 0x2500
1347dwc_ddrphy_apb_wr(0x11043, 0x2500); // DWC_DDRPHYA_DBYTE1_base0_DqDqsRcvCntrl_b0_p0
1348//// [phyinit_C_initPhyConfig] Pstate=0, Programming DqDqsRcvCntrl (Byte=1, Upper/Lower=1) to 0x2500
1349dwc_ddrphy_apb_wr(0x11143, 0x2500); // DWC_DDRPHYA_DBYTE1_base0_DqDqsRcvCntrl_b1_p0
1350//// [phyinit_C_initPhyConfig] Pstate=0, Programming DqDqsRcvCntrl2 to 0x1c
1351dwc_ddrphy_apb_wr(0x1004c, 0x1c); // DWC_DDRPHYA_DBYTE0_base0_DqDqsRcvCntrl2_p0
1352dwc_ddrphy_apb_wr(0x1104c, 0x1c); // DWC_DDRPHYA_DBYTE1_base0_DqDqsRcvCntrl2_p0
1353//// [phyinit_C_initPhyConfig] Programming ATxOdtDrvStren of ANIB_0 to 0x0
1354dwc_ddrphy_apb_wr(0x42, 0x0); // DWC_DDRPHYA_ANIB0_base0_ATxOdtDrvStren
1355//// [phyinit_C_initPhyConfig] Programming ATxOdtDrvStren of ANIB_0 to 0x0
1356dwc_ddrphy_apb_wr(0x42, 0x0); // DWC_DDRPHYA_ANIB0_base0_ATxOdtDrvStren
1357//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TristateModeCA::DisDynAdrTri_p0 to 0x0
1358//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming TristateModeCA::DDR2TMode_p0 to 0x0
1359dwc_ddrphy_apb_wr(0x20019, 0x5); // DWC_DDRPHYA_MASTER0_base0_TristateModeCA_p0
1360//// [phyinit_C_initPhyConfig] Programming DfiFreqXlat*
1361dwc_ddrphy_apb_wr(0x200f0, 0x5555); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat0
1362dwc_ddrphy_apb_wr(0x200f1, 0x5555); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat1
1363dwc_ddrphy_apb_wr(0x200f2, 0x5555); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat2
1364dwc_ddrphy_apb_wr(0x200f3, 0x5555); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat3
1365dwc_ddrphy_apb_wr(0x200f4, 0x5555); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat4
1366dwc_ddrphy_apb_wr(0x200f5, 0x5555); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat5
1367dwc_ddrphy_apb_wr(0x200f6, 0x5555); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat6
1368dwc_ddrphy_apb_wr(0x200f7, 0xf000); // DWC_DDRPHYA_MASTER0_base0_DfiFreqXlat7
1369//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming Seq0BDLY0 to 0x64
1370dwc_ddrphy_apb_wr(0x2000b, 0x64); // DWC_DDRPHYA_MASTER0_base0_Seq0BDLY0_p0
1371//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming Seq0BDLY1 to 0xc8
1372dwc_ddrphy_apb_wr(0x2000c, 0xc8); // DWC_DDRPHYA_MASTER0_base0_Seq0BDLY1_p0
1373//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming Seq0BDLY2 to 0x2bc
1374dwc_ddrphy_apb_wr(0x2000d, 0x2bc); // DWC_DDRPHYA_MASTER0_base0_Seq0BDLY2_p0
1375//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming Seq0BDLY3 to 0x2c
1376dwc_ddrphy_apb_wr(0x2000e, 0x2c); // DWC_DDRPHYA_MASTER0_base0_Seq0BDLY3_p0
1377//// [phyinit_C_initPhyConfig] Disabling DBYTE 0 Lane 8 (DBI) Receiver to save power.
1378dwc_ddrphy_apb_wr(0x1004a, 0x500); // DWC_DDRPHYA_DBYTE0_base0_DqDqsRcvCntrl1
1379//// [phyinit_C_initPhyConfig] Disabling DBYTE 1 Lane 8 (DBI) Receiver to save power.
1380dwc_ddrphy_apb_wr(0x1104a, 0x500); // DWC_DDRPHYA_DBYTE1_base0_DqDqsRcvCntrl1
1381//// [phyinit_C_initPhyConfig] Programming MasterX4Config::X4TG to 0x0
1382dwc_ddrphy_apb_wr(0x20025, 0x0); // DWC_DDRPHYA_MASTER0_base0_MasterX4Config
1383//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming GPR7(csrAlertRecovery) to 0x0
1384dwc_ddrphy_apb_wr(0x90307, 0x0); // DWC_DDRPHYA_INITENG0_base0_Seq0BGPR7_p0
1385//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DMIPinPresent::RdDbiEnabled to 0x0
1386dwc_ddrphy_apb_wr(0x2002d, 0x0); // DWC_DDRPHYA_MASTER0_base0_DMIPinPresent_p0
1387// [phyinit_C_initPhyConfig] Programming TimingModeCntrl::Dly64Prec to 0x0
1388dwc_ddrphy_apb_wr(0x20040, 0x0); // DWC_DDRPHYA_MASTER0_base0_TimingModeCntrl
1389// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x1 for MASTER
1390dwc_ddrphy_apb_wr(0x20066, 0x1); // DWC_DDRPHYA_MASTER0_base0_VREGCtrl3
1391// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x1 for all DBYTEs
1392dwc_ddrphy_apb_wr(0x10066, 0x1); // DWC_DDRPHYA_DBYTE0_base0_VREGCtrl3
1393dwc_ddrphy_apb_wr(0x11066, 0x1); // DWC_DDRPHYA_DBYTE1_base0_VREGCtrl3
1394// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x1 for all ANIBs
1395dwc_ddrphy_apb_wr(0x66, 0x1); // DWC_DDRPHYA_ANIB0_base0_VREGCtrl3
1396dwc_ddrphy_apb_wr(0x1066, 0x1); // DWC_DDRPHYA_ANIB1_base0_VREGCtrl3
1397dwc_ddrphy_apb_wr(0x2066, 0x1); // DWC_DDRPHYA_ANIB2_base0_VREGCtrl3
1398dwc_ddrphy_apb_wr(0x3066, 0x1); // DWC_DDRPHYA_ANIB3_base0_VREGCtrl3
1399dwc_ddrphy_apb_wr(0x4066, 0x1); // DWC_DDRPHYA_ANIB4_base0_VREGCtrl3
1400dwc_ddrphy_apb_wr(0x5066, 0x1); // DWC_DDRPHYA_ANIB5_base0_VREGCtrl3
1401dwc_ddrphy_apb_wr(0x6066, 0x1); // DWC_DDRPHYA_ANIB6_base0_VREGCtrl3
1402dwc_ddrphy_apb_wr(0x7066, 0x1); // DWC_DDRPHYA_ANIB7_base0_VREGCtrl3
1403dwc_ddrphy_apb_wr(0x8066, 0x1); // DWC_DDRPHYA_ANIB8_base0_VREGCtrl3
1404dwc_ddrphy_apb_wr(0x9066, 0x1); // DWC_DDRPHYA_ANIB9_base0_VREGCtrl3
1405// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming AcClkDLLControl to 0x1080
1406dwc_ddrphy_apb_wr(0x200ea, 0x1080); // DWC_DDRPHYA_MASTER0_base0_AcClkDLLControl_p0
1407// [phyinit_C_initPhyConfig] Programming ArcPmuEccCtl to 0x1
1408dwc_ddrphy_apb_wr(0xc0086, 0x1); // DWC_DDRPHYA_DRTUB0_ArcPmuEccCtl
1409// [phyinit_C_initPhyConfig] Programming VREGCtrl2 to 0x9820 for MASTER
1410dwc_ddrphy_apb_wr(0x2002b, 0x9820); // DWC_DDRPHYA_MASTER0_base0_VREGCtrl2
1411// [phyinit_C_initPhyConfig] Programming VREGCtrl2 to 0x8020 for all DBYTEs
1412dwc_ddrphy_apb_wr(0x1002b, 0x8020); // DWC_DDRPHYA_DBYTE0_base0_VREGCtrl2
1413dwc_ddrphy_apb_wr(0x1102b, 0x8020); // DWC_DDRPHYA_DBYTE1_base0_VREGCtrl2
1414// [phyinit_C_initPhyConfig] Programming VREGCtrl2 to 0x8020 for all ANIBs
1415dwc_ddrphy_apb_wr(0x2b, 0x8020); // DWC_DDRPHYA_ANIB0_base0_VREGCtrl2
1416dwc_ddrphy_apb_wr(0x102b, 0x8020); // DWC_DDRPHYA_ANIB1_base0_VREGCtrl2
1417dwc_ddrphy_apb_wr(0x202b, 0x8020); // DWC_DDRPHYA_ANIB2_base0_VREGCtrl2
1418dwc_ddrphy_apb_wr(0x302b, 0x8020); // DWC_DDRPHYA_ANIB3_base0_VREGCtrl2
1419dwc_ddrphy_apb_wr(0x402b, 0x8020); // DWC_DDRPHYA_ANIB4_base0_VREGCtrl2
1420dwc_ddrphy_apb_wr(0x502b, 0x8020); // DWC_DDRPHYA_ANIB5_base0_VREGCtrl2
1421dwc_ddrphy_apb_wr(0x602b, 0x8020); // DWC_DDRPHYA_ANIB6_base0_VREGCtrl2
1422dwc_ddrphy_apb_wr(0x702b, 0x8020); // DWC_DDRPHYA_ANIB7_base0_VREGCtrl2
1423dwc_ddrphy_apb_wr(0x802b, 0x8020); // DWC_DDRPHYA_ANIB8_base0_VREGCtrl2
1424dwc_ddrphy_apb_wr(0x902b, 0x8020); // DWC_DDRPHYA_ANIB9_base0_VREGCtrl2
1425// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x0 for MASTER
1426dwc_ddrphy_apb_wr(0x20066, 0x0); // DWC_DDRPHYA_MASTER0_base0_VREGCtrl3
1427// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x0 for all DBYTEs
1428dwc_ddrphy_apb_wr(0x10066, 0x0); // DWC_DDRPHYA_DBYTE0_base0_VREGCtrl3
1429dwc_ddrphy_apb_wr(0x11066, 0x0); // DWC_DDRPHYA_DBYTE1_base0_VREGCtrl3
1430// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming VREGCtrl3::VshCtrlUpdate to 0x0 for all ANIBs
1431dwc_ddrphy_apb_wr(0x66, 0x0); // DWC_DDRPHYA_ANIB0_base0_VREGCtrl3
1432dwc_ddrphy_apb_wr(0x1066, 0x0); // DWC_DDRPHYA_ANIB1_base0_VREGCtrl3
1433dwc_ddrphy_apb_wr(0x2066, 0x0); // DWC_DDRPHYA_ANIB2_base0_VREGCtrl3
1434dwc_ddrphy_apb_wr(0x3066, 0x0); // DWC_DDRPHYA_ANIB3_base0_VREGCtrl3
1435dwc_ddrphy_apb_wr(0x4066, 0x0); // DWC_DDRPHYA_ANIB4_base0_VREGCtrl3
1436dwc_ddrphy_apb_wr(0x5066, 0x0); // DWC_DDRPHYA_ANIB5_base0_VREGCtrl3
1437dwc_ddrphy_apb_wr(0x6066, 0x0); // DWC_DDRPHYA_ANIB6_base0_VREGCtrl3
1438dwc_ddrphy_apb_wr(0x7066, 0x0); // DWC_DDRPHYA_ANIB7_base0_VREGCtrl3
1439dwc_ddrphy_apb_wr(0x8066, 0x0); // DWC_DDRPHYA_ANIB8_base0_VREGCtrl3
1440dwc_ddrphy_apb_wr(0x9066, 0x0); // DWC_DDRPHYA_ANIB9_base0_VREGCtrl3
1441// [phyinit_C_initPhyConfig] Programming VrefDAC0 to 0x3f for all DBYTEs and lanes
1442// [phyinit_C_initPhyConfig] Programming VrefDAC1 to 0x3f for all DBYTEs and lanes
1443// [phyinit_C_initPhyConfig] Programming VrefDAC2 to 0x3f for all DBYTEs and lanes
1444// [phyinit_C_initPhyConfig] Programming VrefDAC3 to 0x3f for all DBYTEs and lanes
1445dwc_ddrphy_apb_wr(0x10040, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r0_p0
1446dwc_ddrphy_apb_wr(0x10030, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r0
1447dwc_ddrphy_apb_wr(0x10050, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r0
1448dwc_ddrphy_apb_wr(0x10060, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r0
1449dwc_ddrphy_apb_wr(0x10140, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r1_p0
1450dwc_ddrphy_apb_wr(0x10130, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r1
1451dwc_ddrphy_apb_wr(0x10150, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r1
1452dwc_ddrphy_apb_wr(0x10160, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r1
1453dwc_ddrphy_apb_wr(0x10240, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r2_p0
1454dwc_ddrphy_apb_wr(0x10230, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r2
1455dwc_ddrphy_apb_wr(0x10250, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r2
1456dwc_ddrphy_apb_wr(0x10260, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r2
1457dwc_ddrphy_apb_wr(0x10340, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r3_p0
1458dwc_ddrphy_apb_wr(0x10330, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r3
1459dwc_ddrphy_apb_wr(0x10350, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r3
1460dwc_ddrphy_apb_wr(0x10360, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r3
1461dwc_ddrphy_apb_wr(0x10440, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r4_p0
1462dwc_ddrphy_apb_wr(0x10430, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r4
1463dwc_ddrphy_apb_wr(0x10450, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r4
1464dwc_ddrphy_apb_wr(0x10460, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r4
1465dwc_ddrphy_apb_wr(0x10540, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r5_p0
1466dwc_ddrphy_apb_wr(0x10530, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r5
1467dwc_ddrphy_apb_wr(0x10550, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r5
1468dwc_ddrphy_apb_wr(0x10560, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r5
1469dwc_ddrphy_apb_wr(0x10640, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r6_p0
1470dwc_ddrphy_apb_wr(0x10630, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r6
1471dwc_ddrphy_apb_wr(0x10650, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r6
1472dwc_ddrphy_apb_wr(0x10660, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r6
1473dwc_ddrphy_apb_wr(0x10740, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r7_p0
1474dwc_ddrphy_apb_wr(0x10730, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r7
1475dwc_ddrphy_apb_wr(0x10750, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r7
1476dwc_ddrphy_apb_wr(0x10760, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r7
1477dwc_ddrphy_apb_wr(0x10840, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC0_r8_p0
1478dwc_ddrphy_apb_wr(0x10830, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC1_r8
1479dwc_ddrphy_apb_wr(0x10850, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC2_r8
1480dwc_ddrphy_apb_wr(0x10860, 0x3f); // DWC_DDRPHYA_DBYTE0_base0_VrefDAC3_r8
1481dwc_ddrphy_apb_wr(0x11040, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r0_p0
1482dwc_ddrphy_apb_wr(0x11030, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r0
1483dwc_ddrphy_apb_wr(0x11050, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r0
1484dwc_ddrphy_apb_wr(0x11060, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r0
1485dwc_ddrphy_apb_wr(0x11140, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r1_p0
1486dwc_ddrphy_apb_wr(0x11130, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r1
1487dwc_ddrphy_apb_wr(0x11150, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r1
1488dwc_ddrphy_apb_wr(0x11160, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r1
1489dwc_ddrphy_apb_wr(0x11240, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r2_p0
1490dwc_ddrphy_apb_wr(0x11230, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r2
1491dwc_ddrphy_apb_wr(0x11250, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r2
1492dwc_ddrphy_apb_wr(0x11260, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r2
1493dwc_ddrphy_apb_wr(0x11340, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r3_p0
1494dwc_ddrphy_apb_wr(0x11330, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r3
1495dwc_ddrphy_apb_wr(0x11350, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r3
1496dwc_ddrphy_apb_wr(0x11360, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r3
1497dwc_ddrphy_apb_wr(0x11440, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r4_p0
1498dwc_ddrphy_apb_wr(0x11430, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r4
1499dwc_ddrphy_apb_wr(0x11450, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r4
1500dwc_ddrphy_apb_wr(0x11460, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r4
1501dwc_ddrphy_apb_wr(0x11540, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r5_p0
1502dwc_ddrphy_apb_wr(0x11530, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r5
1503dwc_ddrphy_apb_wr(0x11550, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r5
1504dwc_ddrphy_apb_wr(0x11560, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r5
1505dwc_ddrphy_apb_wr(0x11640, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r6_p0
1506dwc_ddrphy_apb_wr(0x11630, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r6
1507dwc_ddrphy_apb_wr(0x11650, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r6
1508dwc_ddrphy_apb_wr(0x11660, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r6
1509dwc_ddrphy_apb_wr(0x11740, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r7_p0
1510dwc_ddrphy_apb_wr(0x11730, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r7
1511dwc_ddrphy_apb_wr(0x11750, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r7
1512dwc_ddrphy_apb_wr(0x11760, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r7
1513dwc_ddrphy_apb_wr(0x11840, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC0_r8_p0
1514dwc_ddrphy_apb_wr(0x11830, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC1_r8
1515dwc_ddrphy_apb_wr(0x11850, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC2_r8
1516dwc_ddrphy_apb_wr(0x11860, 0x3f); // DWC_DDRPHYA_DBYTE1_base0_VrefDAC3_r8
1517//// [phyinit_C_initPhyConfig] Pstate=0, Memclk=1600MHz, Programming DfiFreqRatio_p0 to 0x1
1518dwc_ddrphy_apb_wr(0x200fa, 0x1); // DWC_DDRPHYA_MASTER0_base0_DfiFreqRatio_p0
1519//// [phyinit_C_initPhyConfig] Programming ForceClkGaterEnables::ForcePubDxClkEnLow to 0x0
1520dwc_ddrphy_apb_wr(0x200a6, 0x0); // DWC_DDRPHYA_MASTER0_base0_ForceClkGaterEnables
1521//// [phyinit_C_initPhyConfig] Programming AForceTriCont (anib=0) to 0xc
1522dwc_ddrphy_apb_wr(0x28, 0xc); // DWC_DDRPHYA_ANIB0_base0_AForceTriCont
1523//// [phyinit_C_initPhyConfig] End of dwc_ddrphy_phyinit_C_initPhyConfig()
1524//
1525//
1526////##############################################################
1527////
1528//// dwc_ddrphy_phyinit_userCustom_customPreTrain is a user-editable function.
1529////
1530//// The purpose of dwc_ddrphy_phyinit_userCustom_customPreTrain() is to override any
1531//// any message block fields calculated by Phyinit in dwc_ddrphy_phyinit_calcMb() or to
1532//// override any CSR values programmed by Phyinit in dwc_ddrphy_phyinit_C_initPhyConfig().
1533//// This function is executed before training and thus any override here might affect
1534//// training result.
1535////
1536//// IMPORTANT: in this function, user shall not override any values in userInputBasic and
1537//// userInputAdvanced data structures. Use dwc_ddrphy_phyinit_userCustom_overrideUserInput()
1538//// to modify values in those data structures.
1539////
1540////##############################################################
1541//
1542//// [phyinit_userCustom_customPreTrain] Start of dwc_ddrphy_phyinit_userCustom_customPreTrain()
1543//// [phyinit_userCustom_customPreTrain] End of dwc_ddrphy_phyinit_userCustom_customPreTrain()
1544//// [dwc_ddrphy_phyinit_D_loadIMEM, 1D] Start of dwc_ddrphy_phyinit_D_loadIMEM (Train2D=0)
1545//
1546//
1547////##############################################################
1548////
1549//// (D) Load the 1D IMEM image
1550////
1551//// This function loads the training firmware IMEM image into the SRAM.
1552//// See PhyInit App Note for detailed description and function usage
1553////
1554////##############################################################
1555//
1556//
1557//// [dwc_ddrphy_phyinit_D_loadIMEM, 1D] Programming MemResetL to 0x2
1558dwc_ddrphy_apb_wr(0x20060, 0x2); // DWC_DDRPHYA_MASTER0_base0_MemResetL
1559// [dwc_ddrphy_phyinit_storeIncvFile] Reading input file: /home/jerry_ku/Project/Development/ast2700dev/ddr45phy_tsmc12/coreConsultant/config3_3.50a/2022-12-12-16-52-55/firmware/Latest/training/ddr4/ddr4_pmu_train_imem.incv
1560
1561//// 1. Enable access to the internal CSRs by setting the MicroContMuxSel CSR to 0.
1562//// This allows the memory controller unrestricted access to the configuration CSRs.
1563dwc_ddrphy_apb_wr(0xd0000, 0x0); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1564//// [phyinit_userCustom_wait] Wait 40 DfiClks
1565//// [dwc_ddrphy_phyinit_WriteOutMem] STARTING 32bit write. offset 0x50000 size 0x8000
1566//#ifdef TRAIN_LOADBIN
1567dwc_ddrphy_phyinit_userCustom_D_loadIMEM(sdrammc, 0);
1568//// [dwc_ddrphy_phyinit_WriteOutMem] DONE. Index 0x8000
1569//// 2. Isolate the APB access from the internal CSRs by setting the MicroContMuxSel CSR to 1.
1570//// This allows the firmware unrestricted access to the configuration CSRs.
1571dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1572//// [phyinit_userCustom_wait] Wait 40 DfiClks
1573//// [dwc_ddrphy_phyinit_D_loadIMEM, 1D] End of dwc_ddrphy_phyinit_D_loadIMEM()
1574//
1575//
1576////##############################################################
1577////
1578//// 4.3.5(E) Set the PHY input clocks to the desired frequency for pstate 0
1579////
1580//// Set the PHY input Dfi Clk to the desired operating frequency associated with the given Pstate. Before proceeding to the next step,
1581//// the clock should be stable at the new frequency. For more information on clocking requirements, see "Clocks" on page <XXX>.
1582////
1583////##############################################################
1584//
1585dwc_ddrphy_phyinit_userCustom_E_setDfiClk(sdrammc);
1586
1587//
1588//// [dwc_ddrphy_phyinit_userCustom_E_setDfiClk] End of dwc_ddrphy_phyinit_userCustom_E_setDfiClk()
1589//// [phyinit_F_loadDMEM, 1D] Start of dwc_ddrphy_phyinit_F_loadDMEM (pstate=0, Train2D=0)
1590//
1591//
1592////##############################################################
1593////
1594//// 4.3.5(F) Load the 1D DMEM image and write the 1D Message Block parameters for the training firmware
1595////
1596//// The procedure is as follows:
1597////
1598////##############################################################
1599//
1600//
1601//
1602//// 1. Load the firmware DMEM segment to initialize the data structures.
1603//
1604//// 2. Write the Firmware Message Block with the required contents detailing the training parameters.
1605//
1606// [dwc_ddrphy_phyinit_storeIncvFile] Reading input file: /home/jerry_ku/Project/Development/ast2700dev/ddr45phy_tsmc12/coreConsultant/config3_3.50a/2022-12-12-16-52-55/firmware/Latest/training/ddr4/ddr4_pmu_train_dmem.incv
1607
1608//// 1. Enable access to the internal CSRs by setting the MicroContMuxSel CSR to 0.
1609//// This allows the memory controller unrestricted access to the configuration CSRs.
1610dwc_ddrphy_apb_wr(0xd0000, 0x0); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1611//// [phyinit_userCustom_wait] Wait 40 DfiClks
1612//// [dwc_ddrphy_phyinit_WriteOutMem] STARTING 32bit write. offset 0x58000 size 0x8000
1613//#ifdef TRAIN_LOADBIN
1614dwc_ddrphy_phyinit_userCustom_F_loadDMEM(sdrammc, 0, 0);
1615
1616dwc_ddrphy_apb_wr_32b(0x58000, 0x100);
1617dwc_ddrphy_apb_wr_32b(0x58002, 0xc800000);
1618dwc_ddrphy_apb_wr_32b(0x58004, 0x0);
1619dwc_ddrphy_apb_wr_32b(0x58006, 0x10000240);
1620dwc_ddrphy_apb_wr_32b(0x58008, 0x1);
1621dwc_ddrphy_apb_wr_32b(0x5800a, 0x31f0000);
1622dwc_ddrphy_apb_wr_32b(0x5800c, 0xc8);
1623dwc_ddrphy_apb_wr_32b(0x5800e, 0x0);
1624dwc_ddrphy_apb_wr_32b(0x58010, 0x0);
1625dwc_ddrphy_apb_wr_32b(0x58012, 0x2);
1626dwc_ddrphy_apb_wr_32b(0x58014, 0x0);
1627dwc_ddrphy_apb_wr_32b(0x58016, 0x0);
1628dwc_ddrphy_apb_wr_32b(0x58018, 0x0);
1629dwc_ddrphy_apb_wr_32b(0x5801a, 0x0);
1630dwc_ddrphy_apb_wr_32b(0x5801c, 0x0);
1631dwc_ddrphy_apb_wr_32b(0x5801e, 0x0);
1632dwc_ddrphy_apb_wr_32b(0x58020, 0x0);
1633dwc_ddrphy_apb_wr_32b(0x58022, 0x0);
1634dwc_ddrphy_apb_wr_32b(0x58024, 0x0);
1635dwc_ddrphy_apb_wr_32b(0x58026, 0x0);
1636dwc_ddrphy_apb_wr_32b(0x58028, 0x0);
1637dwc_ddrphy_apb_wr_32b(0x5802a, 0x0);
1638dwc_ddrphy_apb_wr_32b(0x5802c, 0x0);
1639dwc_ddrphy_apb_wr_32b(0x5802e, 0x21500000);
1640dwc_ddrphy_apb_wr_32b(0x58030, 0x2280101);
1641dwc_ddrphy_apb_wr_32b(0x58032, 0x400);
1642dwc_ddrphy_apb_wr_32b(0x58034, 0x104f0500);
1643dwc_ddrphy_apb_wr_32b(0x58036, 0x0);
1644dwc_ddrphy_apb_wr_32b(0x58038, 0x0);
1645dwc_ddrphy_apb_wr_32b(0x5803a, 0x0);
1646dwc_ddrphy_apb_wr_32b(0x5803c, 0x0);
1647dwc_ddrphy_apb_wr_32b(0x5803e, 0x0);
1648dwc_ddrphy_apb_wr_32b(0x58040, 0x0);
1649dwc_ddrphy_apb_wr_32b(0x58042, 0xf0f0000);
1650dwc_ddrphy_apb_wr_32b(0x58044, 0xf0f0f0f);
1651dwc_ddrphy_apb_wr_32b(0x58046, 0xf0f0f0f);
1652dwc_ddrphy_apb_wr_32b(0x58048, 0xf0f0f0f);
1653dwc_ddrphy_apb_wr_32b(0x5804a, 0xf0f0f0f);
1654dwc_ddrphy_apb_wr_32b(0x5804c, 0xf0f0f0f);
1655dwc_ddrphy_apb_wr_32b(0x5804e, 0xf0f0f0f);
1656dwc_ddrphy_apb_wr_32b(0x58050, 0xf0f0f0f);
1657dwc_ddrphy_apb_wr_32b(0x58052, 0xf0f0f0f);
1658dwc_ddrphy_apb_wr_32b(0x58054, 0xf0f0f0f);
1659dwc_ddrphy_apb_wr_32b(0x58056, 0xf0f0f0f);
1660dwc_ddrphy_apb_wr_32b(0x58058, 0xf0f0f0f);
1661dwc_ddrphy_apb_wr_32b(0x5805a, 0xf0f0f0f);
1662dwc_ddrphy_apb_wr_32b(0x5805c, 0xf0f0f0f);
1663dwc_ddrphy_apb_wr_32b(0x5805e, 0xf0f0f0f);
1664dwc_ddrphy_apb_wr_32b(0x58060, 0xf0f0f0f);
1665dwc_ddrphy_apb_wr_32b(0x58062, 0xf0f0f0f);
1666dwc_ddrphy_apb_wr_32b(0x58064, 0xf0f0f0f);
1667dwc_ddrphy_apb_wr_32b(0x58066, 0xf0f0f0f);
1668dwc_ddrphy_apb_wr_32b(0x58068, 0xf0f0f0f);
1669dwc_ddrphy_apb_wr_32b(0x5806a, 0xf0f);
1670dwc_ddrphy_apb_wr_32b(0x5806c, 0x0);
1671dwc_ddrphy_apb_wr_32b(0x5806e, 0x0);
1672dwc_ddrphy_apb_wr_32b(0x58070, 0x0);
1673dwc_ddrphy_apb_wr_32b(0x58072, 0x0);
1674dwc_ddrphy_apb_wr_32b(0x58074, 0x0);
1675dwc_ddrphy_apb_wr_32b(0x58076, 0x0);
1676dwc_ddrphy_apb_wr_32b(0x58078, 0x0);
1677dwc_ddrphy_apb_wr_32b(0x5807a, 0x0);
1678dwc_ddrphy_apb_wr_32b(0x5807c, 0x0);
1679dwc_ddrphy_apb_wr_32b(0x5807e, 0x0);
1680dwc_ddrphy_apb_wr_32b(0x58080, 0x0);
1681dwc_ddrphy_apb_wr_32b(0x58082, 0x0);
1682dwc_ddrphy_apb_wr_32b(0x58084, 0x0);
1683dwc_ddrphy_apb_wr_32b(0x58086, 0x0);
1684dwc_ddrphy_apb_wr_32b(0x58088, 0x0);
1685dwc_ddrphy_apb_wr_32b(0x5808a, 0x0);
1686dwc_ddrphy_apb_wr_32b(0x5808c, 0x0);
1687dwc_ddrphy_apb_wr_32b(0x5808e, 0x0);
1688dwc_ddrphy_apb_wr_32b(0x58090, 0x0);
1689dwc_ddrphy_apb_wr_32b(0x58092, 0x0);
1690dwc_ddrphy_apb_wr_32b(0x58094, 0x0);
1691dwc_ddrphy_apb_wr_32b(0x58096, 0x0);
1692dwc_ddrphy_apb_wr_32b(0x58098, 0x0);
1693dwc_ddrphy_apb_wr_32b(0x5809a, 0x0);
1694dwc_ddrphy_apb_wr_32b(0x5809c, 0x0);
1695dwc_ddrphy_apb_wr_32b(0x5809e, 0x0);
1696dwc_ddrphy_apb_wr_32b(0x580a0, 0x0);
1697dwc_ddrphy_apb_wr_32b(0x580a2, 0x0);
1698dwc_ddrphy_apb_wr_32b(0x580a4, 0x0);
1699dwc_ddrphy_apb_wr_32b(0x580a6, 0x0);
1700dwc_ddrphy_apb_wr_32b(0x580a8, 0x0);
1701dwc_ddrphy_apb_wr_32b(0x580aa, 0x0);
1702dwc_ddrphy_apb_wr_32b(0x580ac, 0x0);
1703dwc_ddrphy_apb_wr_32b(0x580ae, 0x0);
1704dwc_ddrphy_apb_wr_32b(0x580b0, 0x0);
1705dwc_ddrphy_apb_wr_32b(0x580b2, 0x0);
1706dwc_ddrphy_apb_wr_32b(0x580b4, 0x0);
1707dwc_ddrphy_apb_wr_32b(0x580b6, 0x0);
1708dwc_ddrphy_apb_wr_32b(0x580b8, 0x0);
1709dwc_ddrphy_apb_wr_32b(0x580ba, 0x0);
1710dwc_ddrphy_apb_wr_32b(0x580bc, 0x0);
1711dwc_ddrphy_apb_wr_32b(0x580be, 0x0);
1712dwc_ddrphy_apb_wr_32b(0x580c0, 0x0);
1713dwc_ddrphy_apb_wr_32b(0x580c2, 0x0);
1714dwc_ddrphy_apb_wr_32b(0x580c4, 0x0);
1715dwc_ddrphy_apb_wr_32b(0x580c6, 0x0);
1716dwc_ddrphy_apb_wr_32b(0x580c8, 0x0);
1717dwc_ddrphy_apb_wr_32b(0x580ca, 0x0);
1718dwc_ddrphy_apb_wr_32b(0x580cc, 0x0);
1719dwc_ddrphy_apb_wr_32b(0x580ce, 0x0);
1720dwc_ddrphy_apb_wr_32b(0x580d0, 0x0);
1721dwc_ddrphy_apb_wr_32b(0x580d2, 0x0);
1722dwc_ddrphy_apb_wr_32b(0x580d4, 0x0);
1723dwc_ddrphy_apb_wr_32b(0x580d6, 0x0);
1724dwc_ddrphy_apb_wr_32b(0x580d8, 0x0);
1725dwc_ddrphy_apb_wr_32b(0x580da, 0x0);
1726dwc_ddrphy_apb_wr_32b(0x580dc, 0x0);
1727dwc_ddrphy_apb_wr_32b(0x580de, 0x0);
1728dwc_ddrphy_apb_wr_32b(0x580e0, 0x0);
1729dwc_ddrphy_apb_wr_32b(0x580e2, 0x0);
1730dwc_ddrphy_apb_wr_32b(0x580e4, 0x0);
1731dwc_ddrphy_apb_wr_32b(0x580e6, 0x0);
1732dwc_ddrphy_apb_wr_32b(0x580e8, 0x0);
1733dwc_ddrphy_apb_wr_32b(0x580ea, 0x0);
1734dwc_ddrphy_apb_wr_32b(0x580ec, 0x0);
1735dwc_ddrphy_apb_wr_32b(0x580ee, 0x0);
1736dwc_ddrphy_apb_wr_32b(0x580f0, 0x0);
1737dwc_ddrphy_apb_wr_32b(0x580f2, 0x0);
1738dwc_ddrphy_apb_wr_32b(0x580f4, 0x0);
1739dwc_ddrphy_apb_wr_32b(0x580f6, 0x0);
1740dwc_ddrphy_apb_wr_32b(0x580f8, 0x0);
1741dwc_ddrphy_apb_wr_32b(0x580fa, 0x0);
1742dwc_ddrphy_apb_wr_32b(0x580fc, 0x0);
1743dwc_ddrphy_apb_wr_32b(0x580fe, 0x0);
1744dwc_ddrphy_apb_wr_32b(0x58100, 0x0);
1745dwc_ddrphy_apb_wr_32b(0x58102, 0x0);
1746dwc_ddrphy_apb_wr_32b(0x58104, 0x0);
1747dwc_ddrphy_apb_wr_32b(0x58106, 0x0);
1748dwc_ddrphy_apb_wr_32b(0x58108, 0x0);
1749dwc_ddrphy_apb_wr_32b(0x5810a, 0x0);
1750dwc_ddrphy_apb_wr_32b(0x5810c, 0x0);
1751dwc_ddrphy_apb_wr_32b(0x5810e, 0x0);
1752dwc_ddrphy_apb_wr_32b(0x58110, 0x0);
1753dwc_ddrphy_apb_wr_32b(0x58112, 0x0);
1754dwc_ddrphy_apb_wr_32b(0x58114, 0x0);
1755dwc_ddrphy_apb_wr_32b(0x58116, 0x0);
1756dwc_ddrphy_apb_wr_32b(0x58118, 0x0);
1757dwc_ddrphy_apb_wr_32b(0x5811a, 0x0);
1758dwc_ddrphy_apb_wr_32b(0x5811c, 0x0);
1759dwc_ddrphy_apb_wr_32b(0x5811e, 0x0);
1760dwc_ddrphy_apb_wr_32b(0x58120, 0x0);
1761dwc_ddrphy_apb_wr_32b(0x58122, 0x0);
1762dwc_ddrphy_apb_wr_32b(0x58124, 0x0);
1763dwc_ddrphy_apb_wr_32b(0x58126, 0x0);
1764dwc_ddrphy_apb_wr_32b(0x58128, 0x0);
1765dwc_ddrphy_apb_wr_32b(0x5812a, 0x0);
1766dwc_ddrphy_apb_wr_32b(0x5812c, 0x0);
1767dwc_ddrphy_apb_wr_32b(0x5812e, 0x0);
1768dwc_ddrphy_apb_wr_32b(0x58130, 0x0);
1769dwc_ddrphy_apb_wr_32b(0x58132, 0x0);
1770dwc_ddrphy_apb_wr_32b(0x58134, 0x0);
1771dwc_ddrphy_apb_wr_32b(0x58136, 0x0);
1772dwc_ddrphy_apb_wr_32b(0x58138, 0x0);
1773dwc_ddrphy_apb_wr_32b(0x5813a, 0x0);
1774dwc_ddrphy_apb_wr_32b(0x5813c, 0x0);
1775dwc_ddrphy_apb_wr_32b(0x5813e, 0x0);
1776dwc_ddrphy_apb_wr_32b(0x58140, 0x0);
1777dwc_ddrphy_apb_wr_32b(0x58142, 0x0);
1778dwc_ddrphy_apb_wr_32b(0x58144, 0x0);
1779dwc_ddrphy_apb_wr_32b(0x58146, 0x0);
1780dwc_ddrphy_apb_wr_32b(0x58148, 0x0);
1781dwc_ddrphy_apb_wr_32b(0x5814a, 0x0);
1782dwc_ddrphy_apb_wr_32b(0x5814c, 0x0);
1783dwc_ddrphy_apb_wr_32b(0x5814e, 0x0);
1784dwc_ddrphy_apb_wr_32b(0x58150, 0x0);
1785dwc_ddrphy_apb_wr_32b(0x58152, 0x0);
1786dwc_ddrphy_apb_wr_32b(0x58154, 0x0);
1787dwc_ddrphy_apb_wr_32b(0x58156, 0x0);
1788dwc_ddrphy_apb_wr_32b(0x58158, 0x0);
1789dwc_ddrphy_apb_wr_32b(0x5815a, 0x0);
1790dwc_ddrphy_apb_wr_32b(0x5815c, 0x0);
1791dwc_ddrphy_apb_wr_32b(0x5815e, 0x0);
1792dwc_ddrphy_apb_wr_32b(0x58160, 0x0);
1793dwc_ddrphy_apb_wr_32b(0x58162, 0x0);
1794dwc_ddrphy_apb_wr_32b(0x58164, 0x0);
1795dwc_ddrphy_apb_wr_32b(0x58166, 0x0);
1796dwc_ddrphy_apb_wr_32b(0x58168, 0x0);
1797dwc_ddrphy_apb_wr_32b(0x5816a, 0x0);
1798dwc_ddrphy_apb_wr_32b(0x5816c, 0x0);
1799dwc_ddrphy_apb_wr_32b(0x5816e, 0x0);
1800dwc_ddrphy_apb_wr_32b(0x58170, 0x0);
1801dwc_ddrphy_apb_wr_32b(0x58172, 0x0);
1802dwc_ddrphy_apb_wr_32b(0x58174, 0x0);
1803dwc_ddrphy_apb_wr_32b(0x58176, 0x0);
1804dwc_ddrphy_apb_wr_32b(0x58178, 0x0);
1805dwc_ddrphy_apb_wr_32b(0x5817a, 0x0);
1806dwc_ddrphy_apb_wr_32b(0x5817c, 0x0);
1807dwc_ddrphy_apb_wr_32b(0x5817e, 0x0);
1808dwc_ddrphy_apb_wr_32b(0x58180, 0x0);
1809dwc_ddrphy_apb_wr_32b(0x58182, 0x0);
1810dwc_ddrphy_apb_wr_32b(0x58184, 0x0);
1811dwc_ddrphy_apb_wr_32b(0x58186, 0x0);
1812dwc_ddrphy_apb_wr_32b(0x58188, 0x0);
1813dwc_ddrphy_apb_wr_32b(0x5818a, 0x0);
1814dwc_ddrphy_apb_wr_32b(0x5818c, 0x0);
1815dwc_ddrphy_apb_wr_32b(0x5818e, 0x0);
1816dwc_ddrphy_apb_wr_32b(0x58190, 0x0);
1817dwc_ddrphy_apb_wr_32b(0x58192, 0x0);
1818dwc_ddrphy_apb_wr_32b(0x58194, 0x0);
1819dwc_ddrphy_apb_wr_32b(0x58196, 0x0);
1820dwc_ddrphy_apb_wr_32b(0x58198, 0x0);
1821dwc_ddrphy_apb_wr_32b(0x5819a, 0x0);
1822dwc_ddrphy_apb_wr_32b(0x5819c, 0x0);
1823dwc_ddrphy_apb_wr_32b(0x5819e, 0x0);
1824dwc_ddrphy_apb_wr_32b(0x581a0, 0x0);
1825dwc_ddrphy_apb_wr_32b(0x581a2, 0x0);
1826dwc_ddrphy_apb_wr_32b(0x581a4, 0x0);
1827dwc_ddrphy_apb_wr_32b(0x581a6, 0x0);
1828dwc_ddrphy_apb_wr_32b(0x581a8, 0x0);
1829dwc_ddrphy_apb_wr_32b(0x581aa, 0x0);
1830dwc_ddrphy_apb_wr_32b(0x581ac, 0x0);
1831dwc_ddrphy_apb_wr_32b(0x581ae, 0x0);
1832dwc_ddrphy_apb_wr_32b(0x581b0, 0x0);
1833dwc_ddrphy_apb_wr_32b(0x581b2, 0x0);
1834dwc_ddrphy_apb_wr_32b(0x581b4, 0x0);
1835dwc_ddrphy_apb_wr_32b(0x581b6, 0x0);
1836dwc_ddrphy_apb_wr_32b(0x581b8, 0x0);
1837dwc_ddrphy_apb_wr_32b(0x581ba, 0x0);
1838dwc_ddrphy_apb_wr_32b(0x581bc, 0x0);
1839dwc_ddrphy_apb_wr_32b(0x581be, 0x0);
1840dwc_ddrphy_apb_wr_32b(0x581c0, 0x0);
1841dwc_ddrphy_apb_wr_32b(0x581c2, 0x0);
1842dwc_ddrphy_apb_wr_32b(0x581c4, 0x0);
1843dwc_ddrphy_apb_wr_32b(0x581c6, 0x0);
1844dwc_ddrphy_apb_wr_32b(0x581c8, 0x0);
1845dwc_ddrphy_apb_wr_32b(0x581ca, 0x0);
1846dwc_ddrphy_apb_wr_32b(0x581cc, 0x0);
1847dwc_ddrphy_apb_wr_32b(0x581ce, 0x0);
1848dwc_ddrphy_apb_wr_32b(0x581d0, 0x0);
1849dwc_ddrphy_apb_wr_32b(0x581d2, 0x0);
1850dwc_ddrphy_apb_wr_32b(0x581d4, 0x0);
1851dwc_ddrphy_apb_wr_32b(0x581d6, 0x0);
1852dwc_ddrphy_apb_wr_32b(0x581d8, 0x0);
1853dwc_ddrphy_apb_wr_32b(0x581da, 0x0);
1854dwc_ddrphy_apb_wr_32b(0x581dc, 0x0);
1855dwc_ddrphy_apb_wr_32b(0x581de, 0x0);
1856dwc_ddrphy_apb_wr_32b(0x581e0, 0x0);
1857dwc_ddrphy_apb_wr_32b(0x581e2, 0x0);
1858dwc_ddrphy_apb_wr_32b(0x581e4, 0x0);
1859dwc_ddrphy_apb_wr_32b(0x581e6, 0x0);
1860dwc_ddrphy_apb_wr_32b(0x581e8, 0x0);
1861dwc_ddrphy_apb_wr_32b(0x581ea, 0x0);
1862dwc_ddrphy_apb_wr_32b(0x581ec, 0x0);
1863dwc_ddrphy_apb_wr_32b(0x581ee, 0x0);
1864dwc_ddrphy_apb_wr_32b(0x581f0, 0x0);
1865dwc_ddrphy_apb_wr_32b(0x581f2, 0x0);
1866dwc_ddrphy_apb_wr_32b(0x581f4, 0x0);
1867dwc_ddrphy_apb_wr_32b(0x581f6, 0x0);
1868dwc_ddrphy_apb_wr_32b(0x581f8, 0x0);
1869dwc_ddrphy_apb_wr_32b(0x581fa, 0x0);
1870dwc_ddrphy_apb_wr_32b(0x581fc, 0x0);
1871dwc_ddrphy_apb_wr_32b(0x581fe, 0x0);
1872//// [dwc_ddrphy_phyinit_WriteOutMem] DONE. Index 0x8000
1873//// 2. Isolate the APB access from the internal CSRs by setting the MicroContMuxSel CSR to 1.
1874//// This allows the firmware unrestricted access to the configuration CSRs.
1875dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1876//// [phyinit_userCustom_wait] Wait 40 DfiClks
1877//// [phyinit_F_loadDMEM, 1D] End of dwc_ddrphy_phyinit_F_loadDMEM()
1878//
1879//
1880////##############################################################
1881////
1882//// 4.3.7(G) Execute the Training Firmware
1883////
1884//// The training firmware is executed with the following procedure:
1885////
1886////##############################################################
1887//
1888//
1889//// 1. Reset the firmware microcontroller by writing the MicroReset CSR to set the StallToMicro and
1890//// ResetToMicro fields to 1 (all other fields should be zero).
1891//// Then rewrite the CSR so that only the StallToMicro remains set (all other fields should be zero).
1892dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1893//// [phyinit_userCustom_wait] Wait 40 DfiClks
1894dwc_ddrphy_apb_wr(0xd0099, 0x9); // DWC_DDRPHYA_APBONLY0_MicroReset
1895dwc_ddrphy_apb_wr(0xd0099, 0x1); // DWC_DDRPHYA_APBONLY0_MicroReset
1896//
1897//// 2. Begin execution of the training firmware by setting the MicroReset CSR to 4'b0000.
1898dwc_ddrphy_apb_wr(0xd0099, 0x0); // DWC_DDRPHYA_APBONLY0_MicroReset
1899//
1900//// 3. Wait for the training firmware to complete by following the procedure in "uCtrl Initialization and Mailbox Messaging"
1901//// 4.3.7 3. Wait for the training firmware to complete. Implement timeout function or follow the procedure in "3.4 Running the firmware" of the Training Firmware Application Note to poll the Mailbox message.
1902dwc_ddrphy_phyinit_userCustom_G_waitFwDone(sdrammc);
1903
1904//// [dwc_ddrphy_phyinit_userCustom_G_waitFwDone] End of dwc_ddrphy_phyinit_userCustom_G_waitFwDone()
1905//// 4. Halt the microcontroller."
1906dwc_ddrphy_apb_wr(0xd0099, 0x1); // DWC_DDRPHYA_APBONLY0_MicroReset
1907dwc_ddrphy_apb_wr(0x20089, 0x0); // DWC_DDRPHYA_MASTER0_base0_CalZap
1908//// [dwc_ddrphy_phyinit_G_execFW] End of dwc_ddrphy_phyinit_G_execFW()
1909//
1910//
1911////##############################################################
1912////
1913//// 4.3.8(H) Read the Message Block results
1914////
1915//// The procedure is as follows:
1916////
1917////##############################################################
1918//
1919//
1920//// 1. Enable access to the internal CSRs by setting the MicroContMuxSel CSR to 0.
1921dwc_ddrphy_apb_wr(0xd0000, 0x0); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1922//// [phyinit_userCustom_wait] Wait 40 DfiClks
1923//
1924//2. Read the Firmware Message Block to obtain the results from the training.
1925//This can be accomplished by issuing APB read commands to the DMEM addresses.
1926//Example:
1927//if (Train2D)
1928//{
1929// _read_2d_message_block_outputs_
1930//}
1931//else
1932//{
1933// _read_1d_message_block_outputs_
1934//}
1935//This can be accomplished by issuing APB read commands to the DMEM addresses.
1936dwc_ddrphy_phyinit_userCustom_H_readMsgBlock(sdrammc, 0);
1937
1938//[dwc_ddrphy_phyinit_userCustom_H_readMsgBlock] End of dwc_ddrphy_phyinit_userCustom_H_readMsgBlock()
1939//// 3. Isolate the APB access from the internal CSRs by setting the MicroContMuxSel CSR to 1.
1940dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1941//// [phyinit_userCustom_wait] Wait 40 DfiClks
1942//// 4. If training is required at another frequency, repeat the operations starting at step (E).
1943//// [dwc_ddrphy_phyinit_H_readMsgBlock] End of dwc_ddrphy_phyinit_H_readMsgBlock()
1944//
1945//
1946////##############################################################
1947////
1948//// 4.3.5(E) Set the PHY input clocks to the desired frequency for pstate 0
1949////
1950//// Set the PHY input Dfi Clk to the desired operating frequency associated with the given Pstate. Before proceeding to the next step,
1951//// the clock should be stable at the new frequency. For more information on clocking requirements, see "Clocks" on page <XXX>.
1952////
1953////##############################################################
1954//
1955dwc_ddrphy_phyinit_userCustom_E_setDfiClk(sdrammc);
1956
1957//
1958//// [dwc_ddrphy_phyinit_userCustom_E_setDfiClk] End of dwc_ddrphy_phyinit_userCustom_E_setDfiClk()
1959//// [dwc_ddrphy_phyinit_D_loadIMEM, 2D] Start of dwc_ddrphy_phyinit_D_loadIMEM (Train2D=1)
1960//
1961//
1962////##############################################################
1963////
1964//// (D) Load the 2D IMEM image
1965////
1966//// This function loads the training firmware IMEM image into the SRAM.
1967//// See PhyInit App Note for detailed description and function usage
1968////
1969////##############################################################
1970//
1971//
1972// [dwc_ddrphy_phyinit_storeIncvFile] Reading input file: /home/jerry_ku/Project/Development/ast2700dev/ddr45phy_tsmc12/coreConsultant/config3_3.50a/2022-12-12-16-52-55/firmware/Latest/training/ddr4_2d/ddr4_2d_pmu_train_imem.incv
1973
1974//// 1. Enable access to the internal CSRs by setting the MicroContMuxSel CSR to 0.
1975//// This allows the memory controller unrestricted access to the configuration CSRs.
1976dwc_ddrphy_apb_wr(0xd0000, 0x0); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1977//// [phyinit_userCustom_wait] Wait 40 DfiClks
1978//// [dwc_ddrphy_phyinit_WriteOutMem] STARTING 32bit write. offset 0x50000 size 0x8000
1979dwc_ddrphy_phyinit_userCustom_D_loadIMEM(sdrammc, 1);
1980//// [dwc_ddrphy_phyinit_WriteOutMem] DONE. Index 0x8000
1981//// 2. Isolate the APB access from the internal CSRs by setting the MicroContMuxSel CSR to 1.
1982//// This allows the firmware unrestricted access to the configuration CSRs.
1983dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
1984//// [phyinit_userCustom_wait] Wait 40 DfiClks
1985//// [dwc_ddrphy_phyinit_D_loadIMEM, 2D] End of dwc_ddrphy_phyinit_D_loadIMEM()
1986//// [phyinit_F_loadDMEM, 2D] Start of dwc_ddrphy_phyinit_F_loadDMEM (pstate=0, Train2D=1)
1987//
1988//
1989////##############################################################
1990////
1991//// 4.3.5(F) Load the 2D DMEM image and write the 2D Message Block parameters for the training firmware
1992////
1993//// The procedure is as follows:
1994////
1995////##############################################################
1996//
1997//
1998//
1999//// 1. Load the firmware DMEM segment to initialize the data structures.
2000//
2001//// 2. Write the Firmware Message Block with the required contents detailing the training parameters.
2002//
2003// [dwc_ddrphy_phyinit_storeIncvFile] Reading input file: /home/jerry_ku/Project/Development/ast2700dev/ddr45phy_tsmc12/coreConsultant/config3_3.50a/2022-12-12-16-52-55/firmware/Latest/training/ddr4_2d/ddr4_2d_pmu_train_dmem.incv
2004
2005//// 1. Enable access to the internal CSRs by setting the MicroContMuxSel CSR to 0.
2006//// This allows the memory controller unrestricted access to the configuration CSRs.
2007dwc_ddrphy_apb_wr(0xd0000, 0x0); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
2008//// [phyinit_userCustom_wait] Wait 40 DfiClks
2009//// [dwc_ddrphy_phyinit_WriteOutMem] STARTING 32bit write. offset 0x58000 size 0x8000
2010dwc_ddrphy_phyinit_userCustom_F_loadDMEM(sdrammc, 0, 1);
2011dwc_ddrphy_apb_wr_32b(0x58000, 0x100);
2012dwc_ddrphy_apb_wr_32b(0x58002, 0xc800000);
2013dwc_ddrphy_apb_wr_32b(0x58004, 0x0);
2014dwc_ddrphy_apb_wr_32b(0x58006, 0x10000240);
2015dwc_ddrphy_apb_wr_32b(0x58008, 0x1);
2016//printf("- <DWC_DDRPHY/TRAIN>: Override 2D DMEM image for SequenceCtrl, RX2D_TrainOpt, TX2D_TrainOpt, Delay_Weight2D, and Voltage_Weight2D\n");
2017// uint16_t SequenceCtrl; // Byte offset 0x16, CSR Addr 0x5800b, Direction=In
2018 // SequenceCtrl[0] = Run DevInit - Device/PHY initialization. Should always be set
2019 // SequenceCtrl[5] = Run rd2D - 2d read dqs training
2020 // SequenceCtrl[6] = Run wr2D - 2d write dq training
2021dwc_ddrphy_apb_wr_32b(0x5800a, 0x0610000);
2022
2023// Redmine 1392: To speed up data collection, set the voltage and delay step size in Rx2D_TrainOpt and Tx2D_TrainOpt to its maximum value.
2024// uint8_t HdtCtrl; // Byte offset 0x18, CSR Addr 0x5800c, Direction=In
2025 // 0x04 = Maximal debug messages (e.g., Eye contours)
2026 // 0x05 = Detailed debug messages (e.g. Eye delays)
2027 // 0x0A = Coarse debug messages (e.g. rank information)
2028 // 0xC8 = Stage completion
2029 // 0xC9 = Assertion messages
2030 // 0xFF = Firmware completion messages only
2031// uint8_t RX2D_TrainOpt; // Byte offset 0x19, CSR Addr 0x5800c, Direction=In
2032// uint8_t TX2D_TrainOpt; // Byte offset 0x1a, CSR Addr 0x5800d, Direction=In
2033 #ifdef DWC_DEBUG
2034//dwc_ddrphy_apb_wr_32b(0x5800c, 0x001e1e0a);
2035 #else
2036//dwc_ddrphy_apb_wr_32b(0x5800c, 0x001e1ec8);
2037dwc_ddrphy_apb_wr_32b(0x5800c, 0x000000c8);
2038 #endif
2039// uint8_t Delay_Weight2D; // Byte offset 0x1c, CSR Addr 0x5800e, Direction=In
2040// uint8_t Voltage_Weight2D; // Byte offset 0x1d, CSR Addr 0x5800e, Direction=In
2041dwc_ddrphy_apb_wr_32b(0x5800e, 0x8020);
2042
2043dwc_ddrphy_apb_wr_32b(0x58010, 0x0);
2044dwc_ddrphy_apb_wr_32b(0x58012, 0x2);
2045dwc_ddrphy_apb_wr_32b(0x58014, 0x0);
2046dwc_ddrphy_apb_wr_32b(0x58016, 0x0);
2047dwc_ddrphy_apb_wr_32b(0x58018, 0x0);
2048dwc_ddrphy_apb_wr_32b(0x5801a, 0x0);
2049dwc_ddrphy_apb_wr_32b(0x5801c, 0x0);
2050dwc_ddrphy_apb_wr_32b(0x5801e, 0x0);
2051dwc_ddrphy_apb_wr_32b(0x58020, 0x0);
2052dwc_ddrphy_apb_wr_32b(0x58022, 0x0);
2053dwc_ddrphy_apb_wr_32b(0x58024, 0x0);
2054dwc_ddrphy_apb_wr_32b(0x58026, 0x0);
2055dwc_ddrphy_apb_wr_32b(0x58028, 0x0);
2056dwc_ddrphy_apb_wr_32b(0x5802a, 0x0);
2057dwc_ddrphy_apb_wr_32b(0x5802c, 0x0);
2058dwc_ddrphy_apb_wr_32b(0x5802e, 0x21500000);
2059dwc_ddrphy_apb_wr_32b(0x58030, 0x2280101);
2060dwc_ddrphy_apb_wr_32b(0x58032, 0x400);
2061dwc_ddrphy_apb_wr_32b(0x58034, 0x104f0500);
2062dwc_ddrphy_apb_wr_32b(0x58036, 0x0);
2063dwc_ddrphy_apb_wr_32b(0x58038, 0x0);
2064dwc_ddrphy_apb_wr_32b(0x5803a, 0x0);
2065dwc_ddrphy_apb_wr_32b(0x5803c, 0x0);
2066dwc_ddrphy_apb_wr_32b(0x5803e, 0x0);
2067dwc_ddrphy_apb_wr_32b(0x58040, 0x0);
2068dwc_ddrphy_apb_wr_32b(0x58042, 0xf0f0000);
2069dwc_ddrphy_apb_wr_32b(0x58044, 0xf0f0f0f);
2070dwc_ddrphy_apb_wr_32b(0x58046, 0xf0f0f0f);
2071dwc_ddrphy_apb_wr_32b(0x58048, 0xf0f0f0f);
2072dwc_ddrphy_apb_wr_32b(0x5804a, 0xf0f0f0f);
2073dwc_ddrphy_apb_wr_32b(0x5804c, 0xf0f0f0f);
2074dwc_ddrphy_apb_wr_32b(0x5804e, 0xf0f0f0f);
2075dwc_ddrphy_apb_wr_32b(0x58050, 0xf0f0f0f);
2076dwc_ddrphy_apb_wr_32b(0x58052, 0xf0f0f0f);
2077dwc_ddrphy_apb_wr_32b(0x58054, 0xf0f0f0f);
2078dwc_ddrphy_apb_wr_32b(0x58056, 0xf0f0f0f);
2079dwc_ddrphy_apb_wr_32b(0x58058, 0xf0f0f0f);
2080dwc_ddrphy_apb_wr_32b(0x5805a, 0xf0f0f0f);
2081dwc_ddrphy_apb_wr_32b(0x5805c, 0xf0f0f0f);
2082dwc_ddrphy_apb_wr_32b(0x5805e, 0xf0f0f0f);
2083dwc_ddrphy_apb_wr_32b(0x58060, 0xf0f0f0f);
2084dwc_ddrphy_apb_wr_32b(0x58062, 0xf0f0f0f);
2085dwc_ddrphy_apb_wr_32b(0x58064, 0xf0f0f0f);
2086dwc_ddrphy_apb_wr_32b(0x58066, 0xf0f0f0f);
2087dwc_ddrphy_apb_wr_32b(0x58068, 0xf0f0f0f);
2088dwc_ddrphy_apb_wr_32b(0x5806a, 0xf0f);
2089dwc_ddrphy_apb_wr_32b(0x5806c, 0x0);
2090dwc_ddrphy_apb_wr_32b(0x5806e, 0x0);
2091dwc_ddrphy_apb_wr_32b(0x58070, 0x0);
2092dwc_ddrphy_apb_wr_32b(0x58072, 0x0);
2093dwc_ddrphy_apb_wr_32b(0x58074, 0x0);
2094dwc_ddrphy_apb_wr_32b(0x58076, 0x0);
2095dwc_ddrphy_apb_wr_32b(0x58078, 0x0);
2096dwc_ddrphy_apb_wr_32b(0x5807a, 0x0);
2097dwc_ddrphy_apb_wr_32b(0x5807c, 0x0);
2098dwc_ddrphy_apb_wr_32b(0x5807e, 0x0);
2099dwc_ddrphy_apb_wr_32b(0x58080, 0x0);
2100dwc_ddrphy_apb_wr_32b(0x58082, 0x0);
2101dwc_ddrphy_apb_wr_32b(0x58084, 0x0);
2102dwc_ddrphy_apb_wr_32b(0x58086, 0x0);
2103dwc_ddrphy_apb_wr_32b(0x58088, 0x0);
2104dwc_ddrphy_apb_wr_32b(0x5808a, 0x0);
2105dwc_ddrphy_apb_wr_32b(0x5808c, 0x0);
2106dwc_ddrphy_apb_wr_32b(0x5808e, 0x0);
2107dwc_ddrphy_apb_wr_32b(0x58090, 0x0);
2108dwc_ddrphy_apb_wr_32b(0x58092, 0x0);
2109dwc_ddrphy_apb_wr_32b(0x58094, 0x0);
2110dwc_ddrphy_apb_wr_32b(0x58096, 0x0);
2111dwc_ddrphy_apb_wr_32b(0x58098, 0x0);
2112dwc_ddrphy_apb_wr_32b(0x5809a, 0x0);
2113dwc_ddrphy_apb_wr_32b(0x5809c, 0x0);
2114dwc_ddrphy_apb_wr_32b(0x5809e, 0x0);
2115dwc_ddrphy_apb_wr_32b(0x580a0, 0x0);
2116dwc_ddrphy_apb_wr_32b(0x580a2, 0x0);
2117dwc_ddrphy_apb_wr_32b(0x580a4, 0x0);
2118dwc_ddrphy_apb_wr_32b(0x580a6, 0x0);
2119dwc_ddrphy_apb_wr_32b(0x580a8, 0x0);
2120dwc_ddrphy_apb_wr_32b(0x580aa, 0x0);
2121dwc_ddrphy_apb_wr_32b(0x580ac, 0x0);
2122dwc_ddrphy_apb_wr_32b(0x580ae, 0x0);
2123dwc_ddrphy_apb_wr_32b(0x580b0, 0x0);
2124dwc_ddrphy_apb_wr_32b(0x580b2, 0x0);
2125dwc_ddrphy_apb_wr_32b(0x580b4, 0x0);
2126dwc_ddrphy_apb_wr_32b(0x580b6, 0x0);
2127dwc_ddrphy_apb_wr_32b(0x580b8, 0x0);
2128dwc_ddrphy_apb_wr_32b(0x580ba, 0x0);
2129dwc_ddrphy_apb_wr_32b(0x580bc, 0x0);
2130dwc_ddrphy_apb_wr_32b(0x580be, 0x0);
2131dwc_ddrphy_apb_wr_32b(0x580c0, 0x0);
2132dwc_ddrphy_apb_wr_32b(0x580c2, 0x0);
2133dwc_ddrphy_apb_wr_32b(0x580c4, 0x0);
2134dwc_ddrphy_apb_wr_32b(0x580c6, 0x0);
2135dwc_ddrphy_apb_wr_32b(0x580c8, 0x0);
2136dwc_ddrphy_apb_wr_32b(0x580ca, 0x0);
2137dwc_ddrphy_apb_wr_32b(0x580cc, 0x0);
2138dwc_ddrphy_apb_wr_32b(0x580ce, 0x0);
2139dwc_ddrphy_apb_wr_32b(0x580d0, 0x0);
2140dwc_ddrphy_apb_wr_32b(0x580d2, 0x0);
2141dwc_ddrphy_apb_wr_32b(0x580d4, 0x0);
2142dwc_ddrphy_apb_wr_32b(0x580d6, 0x0);
2143dwc_ddrphy_apb_wr_32b(0x580d8, 0x0);
2144dwc_ddrphy_apb_wr_32b(0x580da, 0x0);
2145dwc_ddrphy_apb_wr_32b(0x580dc, 0x0);
2146dwc_ddrphy_apb_wr_32b(0x580de, 0x0);
2147dwc_ddrphy_apb_wr_32b(0x580e0, 0x0);
2148dwc_ddrphy_apb_wr_32b(0x580e2, 0x0);
2149dwc_ddrphy_apb_wr_32b(0x580e4, 0x0);
2150dwc_ddrphy_apb_wr_32b(0x580e6, 0x0);
2151dwc_ddrphy_apb_wr_32b(0x580e8, 0x0);
2152dwc_ddrphy_apb_wr_32b(0x580ea, 0x0);
2153dwc_ddrphy_apb_wr_32b(0x580ec, 0x0);
2154dwc_ddrphy_apb_wr_32b(0x580ee, 0x0);
2155dwc_ddrphy_apb_wr_32b(0x580f0, 0x0);
2156dwc_ddrphy_apb_wr_32b(0x580f2, 0x0);
2157dwc_ddrphy_apb_wr_32b(0x580f4, 0x0);
2158dwc_ddrphy_apb_wr_32b(0x580f6, 0x0);
2159dwc_ddrphy_apb_wr_32b(0x580f8, 0x0);
2160dwc_ddrphy_apb_wr_32b(0x580fa, 0x0);
2161dwc_ddrphy_apb_wr_32b(0x580fc, 0x0);
2162dwc_ddrphy_apb_wr_32b(0x580fe, 0x0);
2163dwc_ddrphy_apb_wr_32b(0x58100, 0x0);
2164dwc_ddrphy_apb_wr_32b(0x58102, 0x0);
2165dwc_ddrphy_apb_wr_32b(0x58104, 0x0);
2166dwc_ddrphy_apb_wr_32b(0x58106, 0x0);
2167dwc_ddrphy_apb_wr_32b(0x58108, 0x0);
2168dwc_ddrphy_apb_wr_32b(0x5810a, 0x0);
2169dwc_ddrphy_apb_wr_32b(0x5810c, 0x0);
2170dwc_ddrphy_apb_wr_32b(0x5810e, 0x0);
2171dwc_ddrphy_apb_wr_32b(0x58110, 0x0);
2172dwc_ddrphy_apb_wr_32b(0x58112, 0x0);
2173dwc_ddrphy_apb_wr_32b(0x58114, 0x0);
2174dwc_ddrphy_apb_wr_32b(0x58116, 0x0);
2175dwc_ddrphy_apb_wr_32b(0x58118, 0x0);
2176dwc_ddrphy_apb_wr_32b(0x5811a, 0x0);
2177dwc_ddrphy_apb_wr_32b(0x5811c, 0x0);
2178dwc_ddrphy_apb_wr_32b(0x5811e, 0x0);
2179dwc_ddrphy_apb_wr_32b(0x58120, 0x0);
2180dwc_ddrphy_apb_wr_32b(0x58122, 0x0);
2181dwc_ddrphy_apb_wr_32b(0x58124, 0x0);
2182dwc_ddrphy_apb_wr_32b(0x58126, 0x0);
2183dwc_ddrphy_apb_wr_32b(0x58128, 0x0);
2184dwc_ddrphy_apb_wr_32b(0x5812a, 0x0);
2185dwc_ddrphy_apb_wr_32b(0x5812c, 0x0);
2186dwc_ddrphy_apb_wr_32b(0x5812e, 0x0);
2187dwc_ddrphy_apb_wr_32b(0x58130, 0x0);
2188dwc_ddrphy_apb_wr_32b(0x58132, 0x0);
2189dwc_ddrphy_apb_wr_32b(0x58134, 0x0);
2190dwc_ddrphy_apb_wr_32b(0x58136, 0x0);
2191dwc_ddrphy_apb_wr_32b(0x58138, 0x0);
2192dwc_ddrphy_apb_wr_32b(0x5813a, 0x0);
2193dwc_ddrphy_apb_wr_32b(0x5813c, 0x0);
2194dwc_ddrphy_apb_wr_32b(0x5813e, 0x0);
2195dwc_ddrphy_apb_wr_32b(0x58140, 0x0);
2196dwc_ddrphy_apb_wr_32b(0x58142, 0x0);
2197dwc_ddrphy_apb_wr_32b(0x58144, 0x0);
2198dwc_ddrphy_apb_wr_32b(0x58146, 0x0);
2199dwc_ddrphy_apb_wr_32b(0x58148, 0x0);
2200dwc_ddrphy_apb_wr_32b(0x5814a, 0x0);
2201dwc_ddrphy_apb_wr_32b(0x5814c, 0x0);
2202dwc_ddrphy_apb_wr_32b(0x5814e, 0x0);
2203dwc_ddrphy_apb_wr_32b(0x58150, 0x0);
2204dwc_ddrphy_apb_wr_32b(0x58152, 0x0);
2205dwc_ddrphy_apb_wr_32b(0x58154, 0x0);
2206dwc_ddrphy_apb_wr_32b(0x58156, 0x0);
2207dwc_ddrphy_apb_wr_32b(0x58158, 0x0);
2208dwc_ddrphy_apb_wr_32b(0x5815a, 0x0);
2209dwc_ddrphy_apb_wr_32b(0x5815c, 0x0);
2210dwc_ddrphy_apb_wr_32b(0x5815e, 0x0);
2211dwc_ddrphy_apb_wr_32b(0x58160, 0x0);
2212dwc_ddrphy_apb_wr_32b(0x58162, 0x0);
2213dwc_ddrphy_apb_wr_32b(0x58164, 0x0);
2214dwc_ddrphy_apb_wr_32b(0x58166, 0x0);
2215dwc_ddrphy_apb_wr_32b(0x58168, 0x0);
2216dwc_ddrphy_apb_wr_32b(0x5816a, 0x0);
2217dwc_ddrphy_apb_wr_32b(0x5816c, 0x0);
2218dwc_ddrphy_apb_wr_32b(0x5816e, 0x0);
2219dwc_ddrphy_apb_wr_32b(0x58170, 0x0);
2220dwc_ddrphy_apb_wr_32b(0x58172, 0x0);
2221dwc_ddrphy_apb_wr_32b(0x58174, 0x0);
2222dwc_ddrphy_apb_wr_32b(0x58176, 0x0);
2223dwc_ddrphy_apb_wr_32b(0x58178, 0x0);
2224dwc_ddrphy_apb_wr_32b(0x5817a, 0x0);
2225dwc_ddrphy_apb_wr_32b(0x5817c, 0x0);
2226dwc_ddrphy_apb_wr_32b(0x5817e, 0x0);
2227dwc_ddrphy_apb_wr_32b(0x58180, 0x0);
2228dwc_ddrphy_apb_wr_32b(0x58182, 0x0);
2229dwc_ddrphy_apb_wr_32b(0x58184, 0x0);
2230dwc_ddrphy_apb_wr_32b(0x58186, 0x0);
2231dwc_ddrphy_apb_wr_32b(0x58188, 0x0);
2232dwc_ddrphy_apb_wr_32b(0x5818a, 0x0);
2233dwc_ddrphy_apb_wr_32b(0x5818c, 0x0);
2234dwc_ddrphy_apb_wr_32b(0x5818e, 0x0);
2235dwc_ddrphy_apb_wr_32b(0x58190, 0x0);
2236dwc_ddrphy_apb_wr_32b(0x58192, 0x0);
2237dwc_ddrphy_apb_wr_32b(0x58194, 0x0);
2238dwc_ddrphy_apb_wr_32b(0x58196, 0x0);
2239dwc_ddrphy_apb_wr_32b(0x58198, 0x0);
2240dwc_ddrphy_apb_wr_32b(0x5819a, 0x0);
2241dwc_ddrphy_apb_wr_32b(0x5819c, 0x0);
2242dwc_ddrphy_apb_wr_32b(0x5819e, 0x0);
2243dwc_ddrphy_apb_wr_32b(0x581a0, 0x0);
2244dwc_ddrphy_apb_wr_32b(0x581a2, 0x0);
2245dwc_ddrphy_apb_wr_32b(0x581a4, 0x0);
2246dwc_ddrphy_apb_wr_32b(0x581a6, 0x0);
2247dwc_ddrphy_apb_wr_32b(0x581a8, 0x0);
2248dwc_ddrphy_apb_wr_32b(0x581aa, 0x0);
2249dwc_ddrphy_apb_wr_32b(0x581ac, 0x0);
2250dwc_ddrphy_apb_wr_32b(0x581ae, 0x0);
2251dwc_ddrphy_apb_wr_32b(0x581b0, 0x0);
2252dwc_ddrphy_apb_wr_32b(0x581b2, 0x0);
2253dwc_ddrphy_apb_wr_32b(0x581b4, 0x0);
2254dwc_ddrphy_apb_wr_32b(0x581b6, 0x0);
2255dwc_ddrphy_apb_wr_32b(0x581b8, 0x0);
2256dwc_ddrphy_apb_wr_32b(0x581ba, 0x0);
2257dwc_ddrphy_apb_wr_32b(0x581bc, 0x0);
2258dwc_ddrphy_apb_wr_32b(0x581be, 0x0);
2259dwc_ddrphy_apb_wr_32b(0x581c0, 0x0);
2260dwc_ddrphy_apb_wr_32b(0x581c2, 0x0);
2261dwc_ddrphy_apb_wr_32b(0x581c4, 0x0);
2262dwc_ddrphy_apb_wr_32b(0x581c6, 0x0);
2263dwc_ddrphy_apb_wr_32b(0x581c8, 0x0);
2264dwc_ddrphy_apb_wr_32b(0x581ca, 0x0);
2265dwc_ddrphy_apb_wr_32b(0x581cc, 0x0);
2266dwc_ddrphy_apb_wr_32b(0x581ce, 0x0);
2267dwc_ddrphy_apb_wr_32b(0x581d0, 0x0);
2268dwc_ddrphy_apb_wr_32b(0x581d2, 0x0);
2269dwc_ddrphy_apb_wr_32b(0x581d4, 0x0);
2270dwc_ddrphy_apb_wr_32b(0x581d6, 0x0);
2271dwc_ddrphy_apb_wr_32b(0x581d8, 0x0);
2272dwc_ddrphy_apb_wr_32b(0x581da, 0x0);
2273dwc_ddrphy_apb_wr_32b(0x581dc, 0x0);
2274dwc_ddrphy_apb_wr_32b(0x581de, 0x0);
2275dwc_ddrphy_apb_wr_32b(0x581e0, 0x0);
2276dwc_ddrphy_apb_wr_32b(0x581e2, 0x0);
2277dwc_ddrphy_apb_wr_32b(0x581e4, 0x0);
2278dwc_ddrphy_apb_wr_32b(0x581e6, 0x0);
2279dwc_ddrphy_apb_wr_32b(0x581e8, 0x0);
2280dwc_ddrphy_apb_wr_32b(0x581ea, 0x0);
2281dwc_ddrphy_apb_wr_32b(0x581ec, 0x0);
2282dwc_ddrphy_apb_wr_32b(0x581ee, 0x0);
2283dwc_ddrphy_apb_wr_32b(0x581f0, 0x0);
2284dwc_ddrphy_apb_wr_32b(0x581f2, 0x0);
2285dwc_ddrphy_apb_wr_32b(0x581f4, 0x0);
2286dwc_ddrphy_apb_wr_32b(0x581f6, 0x0);
2287dwc_ddrphy_apb_wr_32b(0x581f8, 0x0);
2288dwc_ddrphy_apb_wr_32b(0x581fa, 0x0);
2289dwc_ddrphy_apb_wr_32b(0x581fc, 0x0);
2290dwc_ddrphy_apb_wr_32b(0x581fe, 0x0);
2291//// [dwc_ddrphy_phyinit_WriteOutMem] DONE. Index 0x8000
2292//// 2. Isolate the APB access from the internal CSRs by setting the MicroContMuxSel CSR to 1.
2293//// This allows the firmware unrestricted access to the configuration CSRs.
2294dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
2295//// [phyinit_userCustom_wait] Wait 40 DfiClks
2296//// [phyinit_F_loadDMEM, 2D] End of dwc_ddrphy_phyinit_F_loadDMEM()
2297//
2298//
2299////##############################################################
2300////
2301//// 4.3.7(G) Execute the Training Firmware
2302////
2303//// The training firmware is executed with the following procedure:
2304////
2305////##############################################################
2306//
2307//
2308//// 1. Reset the firmware microcontroller by writing the MicroReset CSR to set the StallToMicro and
2309//// ResetToMicro fields to 1 (all other fields should be zero).
2310//// Then rewrite the CSR so that only the StallToMicro remains set (all other fields should be zero).
2311dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
2312//// [phyinit_userCustom_wait] Wait 40 DfiClks
2313dwc_ddrphy_apb_wr(0xd0099, 0x9); // DWC_DDRPHYA_APBONLY0_MicroReset
2314dwc_ddrphy_apb_wr(0xd0099, 0x1); // DWC_DDRPHYA_APBONLY0_MicroReset
2315//
2316//// 2. Begin execution of the training firmware by setting the MicroReset CSR to 4'b0000.
2317dwc_ddrphy_apb_wr(0xd0099, 0x0); // DWC_DDRPHYA_APBONLY0_MicroReset
2318//
2319//// 3. Wait for the training firmware to complete by following the procedure in "uCtrl Initialization and Mailbox Messaging"
2320//// 4.3.7 3. Wait for the training firmware to complete. Implement timeout function or follow the procedure in "3.4 Running the firmware" of the Training Firmware Application Note to poll the Mailbox message.
2321dwc_ddrphy_phyinit_userCustom_G_waitFwDone(sdrammc);
2322
2323//// [dwc_ddrphy_phyinit_userCustom_G_waitFwDone] End of dwc_ddrphy_phyinit_userCustom_G_waitFwDone()
2324//// 4. Halt the microcontroller."
2325dwc_ddrphy_apb_wr(0xd0099, 0x1); // DWC_DDRPHYA_APBONLY0_MicroReset
2326dwc_ddrphy_apb_wr(0x20089, 0x0); // DWC_DDRPHYA_MASTER0_base0_CalZap
2327//// [dwc_ddrphy_phyinit_G_execFW] End of dwc_ddrphy_phyinit_G_execFW()
2328//
2329//
2330////##############################################################
2331////
2332//// 4.3.8(H) Read the Message Block results
2333////
2334//// The procedure is as follows:
2335////
2336////##############################################################
2337//
2338//
2339//// 1. Enable access to the internal CSRs by setting the MicroContMuxSel CSR to 0.
2340dwc_ddrphy_apb_wr(0xd0000, 0x0); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
2341//// [phyinit_userCustom_wait] Wait 40 DfiClks
2342//
2343//2. Read the Firmware Message Block to obtain the results from the training.
2344//This can be accomplished by issuing APB read commands to the DMEM addresses.
2345//Example:
2346//if (Train2D)
2347//{
2348// _read_2d_message_block_outputs_
2349//}
2350//else
2351//{
2352// _read_1d_message_block_outputs_
2353//}
2354//This can be accomplished by issuing APB read commands to the DMEM addresses.
2355dwc_ddrphy_phyinit_userCustom_H_readMsgBlock(sdrammc, 1);
2356
2357//[dwc_ddrphy_phyinit_userCustom_H_readMsgBlock] End of dwc_ddrphy_phyinit_userCustom_H_readMsgBlock()
2358//// 3. Isolate the APB access from the internal CSRs by setting the MicroContMuxSel CSR to 1.
2359dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
2360//// [phyinit_userCustom_wait] Wait 40 DfiClks
2361//// 4. If training is required at another frequency, repeat the operations starting at step (E).
2362//// [dwc_ddrphy_phyinit_H_readMsgBlock] End of dwc_ddrphy_phyinit_H_readMsgBlock()
2363//// [initRuntimeConfigEnableBits] Start of initRuntimeConfigEnableBits()
2364//// [initRuntimeConfigEnableBits] enableBits[0] = 0x00000009
2365//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_A0 = 0x000000ff, rtt_required = 0x0000000f
2366//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_A1 = 0x000000ff, rtt_required = 0x0000000f
2367//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_A2 = 0x000000ff, rtt_required = 0x0000000f
2368//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_A3 = 0x000000ff, rtt_required = 0x0000000f
2369//// [initRuntimeConfigEnableBits] enableBits[1] = 0x00000000
2370//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_B0 = 0x000000ff, rtt_required = 0x0000000f
2371//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_B1 = 0x000000ff, rtt_required = 0x0000000f
2372//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_B2 = 0x000000ff, rtt_required = 0x0000000f
2373//// [initRuntimeConfigEnableBits] WR_RD_RTT_PARK_B3 = 0x000000ff, rtt_required = 0x0000000f
2374//// [initRuntimeConfigEnableBits] enableBits[2] = 0x00000000
2375//// [initRuntimeConfigEnableBits] End of initRuntimeConfigEnableBits()
2376//// [phyinit_I_loadPIEImage] Start of dwc_ddrphy_phyinit_I_loadPIEImage()
2377//
2378//
2379////##############################################################
2380////
2381//// 4.3.9(I) Load PHY Init Engine Image
2382////
2383//// Load the PHY Initialization Engine memory with the provided initialization sequence.
2384////
2385////##############################################################
2386//
2387//
2388//// Enable access to the internal CSRs by setting the MicroContMuxSel CSR to 0.
2389//// This allows the memory controller unrestricted access to the configuration CSRs.
2390dwc_ddrphy_apb_wr(0xd0000, 0x0); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
2391//// [phyinit_userCustom_wait] Wait 40 DfiClks
2392//// [phyinit_I_loadPIEImage] Programming ForceClkGaterEnables::ForcePubDxClkEnLow to 0x1
2393dwc_ddrphy_apb_wr(0x200a6, 0x2); // DWC_DDRPHYA_MASTER0_base0_ForceClkGaterEnables
2394//// [phyinit_I_loadPIEImage] Programming PIE Production Code
2395//// [phyinit_LoadPIECodeSections] Start of dwc_ddrphy_phyinit_LoadPIECodeSections()
2396//// [phyinit_LoadPIECodeSections] Moving start address from 0 to 90000
2397dwc_ddrphy_apb_wr(0x90000, 0x10); // DWC_DDRPHYA_INITENG0_base0_PreSequenceReg0b0s0
2398dwc_ddrphy_apb_wr(0x90001, 0x400); // DWC_DDRPHYA_INITENG0_base0_PreSequenceReg0b0s1
2399dwc_ddrphy_apb_wr(0x90002, 0x10e); // DWC_DDRPHYA_INITENG0_base0_PreSequenceReg0b0s2
2400dwc_ddrphy_apb_wr(0x90003, 0x0); // DWC_DDRPHYA_INITENG0_base0_PreSequenceReg0b1s0
2401dwc_ddrphy_apb_wr(0x90004, 0x0); // DWC_DDRPHYA_INITENG0_base0_PreSequenceReg0b1s1
2402dwc_ddrphy_apb_wr(0x90005, 0x8); // DWC_DDRPHYA_INITENG0_base0_PreSequenceReg0b1s2
2403//// [phyinit_LoadPIECodeSections] Moving start address from 90006 to 90029
2404dwc_ddrphy_apb_wr(0x90029, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b0s0
2405dwc_ddrphy_apb_wr(0x9002a, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b0s1
2406dwc_ddrphy_apb_wr(0x9002b, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b0s2
2407dwc_ddrphy_apb_wr(0x9002c, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b1s0
2408dwc_ddrphy_apb_wr(0x9002d, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b1s1
2409dwc_ddrphy_apb_wr(0x9002e, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b1s2
2410dwc_ddrphy_apb_wr(0x9002f, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b2s0
2411dwc_ddrphy_apb_wr(0x90030, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b2s1
2412dwc_ddrphy_apb_wr(0x90031, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b2s2
2413dwc_ddrphy_apb_wr(0x90032, 0xb); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b3s0
2414dwc_ddrphy_apb_wr(0x90033, 0x480); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b3s1
2415dwc_ddrphy_apb_wr(0x90034, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b3s2
2416dwc_ddrphy_apb_wr(0x90035, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b4s0
2417dwc_ddrphy_apb_wr(0x90036, 0x448); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b4s1
2418dwc_ddrphy_apb_wr(0x90037, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b4s2
2419dwc_ddrphy_apb_wr(0x90038, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b5s0
2420dwc_ddrphy_apb_wr(0x90039, 0x478); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b5s1
2421dwc_ddrphy_apb_wr(0x9003a, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b5s2
2422dwc_ddrphy_apb_wr(0x9003b, 0x2); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b6s0
2423dwc_ddrphy_apb_wr(0x9003c, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b6s1
2424dwc_ddrphy_apb_wr(0x9003d, 0x139); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b6s2
2425dwc_ddrphy_apb_wr(0x9003e, 0xf); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b7s0
2426dwc_ddrphy_apb_wr(0x9003f, 0x7c0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b7s1
2427dwc_ddrphy_apb_wr(0x90040, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b7s2
2428dwc_ddrphy_apb_wr(0x90041, 0x107); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b8s0
2429dwc_ddrphy_apb_wr(0x90042, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b8s1
2430dwc_ddrphy_apb_wr(0x90043, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b8s2
2431dwc_ddrphy_apb_wr(0x90044, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b9s0
2432dwc_ddrphy_apb_wr(0x90045, 0xe0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b9s1
2433dwc_ddrphy_apb_wr(0x90046, 0x139); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b9s2
2434dwc_ddrphy_apb_wr(0x90047, 0x147); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b10s0
2435dwc_ddrphy_apb_wr(0x90048, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b10s1
2436dwc_ddrphy_apb_wr(0x90049, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b10s2
2437dwc_ddrphy_apb_wr(0x9004a, 0x14f); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b11s0
2438dwc_ddrphy_apb_wr(0x9004b, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b11s1
2439dwc_ddrphy_apb_wr(0x9004c, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b11s2
2440dwc_ddrphy_apb_wr(0x9004d, 0x7); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b12s0
2441dwc_ddrphy_apb_wr(0x9004e, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b12s1
2442dwc_ddrphy_apb_wr(0x9004f, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b12s2
2443dwc_ddrphy_apb_wr(0x90050, 0x47); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b13s0
2444dwc_ddrphy_apb_wr(0x90051, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b13s1
2445dwc_ddrphy_apb_wr(0x90052, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b13s2
2446dwc_ddrphy_apb_wr(0x90053, 0x4f); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b14s0
2447dwc_ddrphy_apb_wr(0x90054, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b14s1
2448dwc_ddrphy_apb_wr(0x90055, 0x179); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b14s2
2449dwc_ddrphy_apb_wr(0x90056, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b15s0
2450dwc_ddrphy_apb_wr(0x90057, 0x7c8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b15s1
2451dwc_ddrphy_apb_wr(0x90058, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b15s2
2452dwc_ddrphy_apb_wr(0x90059, 0x11); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b16s0
2453dwc_ddrphy_apb_wr(0x9005a, 0x530); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b16s1
2454dwc_ddrphy_apb_wr(0x9005b, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b16s2
2455dwc_ddrphy_apb_wr(0x9005c, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b17s0
2456dwc_ddrphy_apb_wr(0x9005d, 0x1); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b17s1
2457dwc_ddrphy_apb_wr(0x9005e, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b17s2
2458dwc_ddrphy_apb_wr(0x9005f, 0x14f); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b18s0
2459dwc_ddrphy_apb_wr(0x90060, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b18s1
2460dwc_ddrphy_apb_wr(0x90061, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b18s2
2461dwc_ddrphy_apb_wr(0x90062, 0x2); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b19s0
2462dwc_ddrphy_apb_wr(0x90063, 0x45a); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b19s1
2463dwc_ddrphy_apb_wr(0x90064, 0x9); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b19s2
2464dwc_ddrphy_apb_wr(0x90065, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b20s0
2465dwc_ddrphy_apb_wr(0x90066, 0x530); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b20s1
2466dwc_ddrphy_apb_wr(0x90067, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b20s2
2467dwc_ddrphy_apb_wr(0x90068, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b21s0
2468dwc_ddrphy_apb_wr(0x90069, 0x65a); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b21s1
2469dwc_ddrphy_apb_wr(0x9006a, 0x9); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b21s2
2470dwc_ddrphy_apb_wr(0x9006b, 0x41); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b22s0
2471dwc_ddrphy_apb_wr(0x9006c, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b22s1
2472dwc_ddrphy_apb_wr(0x9006d, 0x179); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b22s2
2473dwc_ddrphy_apb_wr(0x9006e, 0x1); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b23s0
2474dwc_ddrphy_apb_wr(0x9006f, 0x618); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b23s1
2475dwc_ddrphy_apb_wr(0x90070, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b23s2
2476dwc_ddrphy_apb_wr(0x90071, 0x40c0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b24s0
2477dwc_ddrphy_apb_wr(0x90072, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b24s1
2478dwc_ddrphy_apb_wr(0x90073, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b24s2
2479dwc_ddrphy_apb_wr(0x90074, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b25s0
2480dwc_ddrphy_apb_wr(0x90075, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b25s1
2481dwc_ddrphy_apb_wr(0x90076, 0x48); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b25s2
2482dwc_ddrphy_apb_wr(0x90077, 0x4040); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b26s0
2483dwc_ddrphy_apb_wr(0x90078, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b26s1
2484dwc_ddrphy_apb_wr(0x90079, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b26s2
2485dwc_ddrphy_apb_wr(0x9007a, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b27s0
2486dwc_ddrphy_apb_wr(0x9007b, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b27s1
2487dwc_ddrphy_apb_wr(0x9007c, 0x48); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b27s2
2488dwc_ddrphy_apb_wr(0x9007d, 0x40); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b28s0
2489dwc_ddrphy_apb_wr(0x9007e, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b28s1
2490dwc_ddrphy_apb_wr(0x9007f, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b28s2
2491dwc_ddrphy_apb_wr(0x90080, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b29s0
2492dwc_ddrphy_apb_wr(0x90081, 0x658); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b29s1
2493dwc_ddrphy_apb_wr(0x90082, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b29s2
2494dwc_ddrphy_apb_wr(0x90083, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b30s0
2495dwc_ddrphy_apb_wr(0x90084, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b30s1
2496dwc_ddrphy_apb_wr(0x90085, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b30s2
2497dwc_ddrphy_apb_wr(0x90086, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b31s0
2498dwc_ddrphy_apb_wr(0x90087, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b31s1
2499dwc_ddrphy_apb_wr(0x90088, 0x78); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b31s2
2500dwc_ddrphy_apb_wr(0x90089, 0x549); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b32s0
2501dwc_ddrphy_apb_wr(0x9008a, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b32s1
2502dwc_ddrphy_apb_wr(0x9008b, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b32s2
2503dwc_ddrphy_apb_wr(0x9008c, 0xd49); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b33s0
2504dwc_ddrphy_apb_wr(0x9008d, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b33s1
2505dwc_ddrphy_apb_wr(0x9008e, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b33s2
2506dwc_ddrphy_apb_wr(0x9008f, 0x94c); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b34s0
2507dwc_ddrphy_apb_wr(0x90090, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b34s1
2508dwc_ddrphy_apb_wr(0x90091, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b34s2
2509dwc_ddrphy_apb_wr(0x90092, 0x94c); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b35s0
2510dwc_ddrphy_apb_wr(0x90093, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b35s1
2511dwc_ddrphy_apb_wr(0x90094, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b35s2
2512dwc_ddrphy_apb_wr(0x90095, 0x442); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b36s0
2513dwc_ddrphy_apb_wr(0x90096, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b36s1
2514dwc_ddrphy_apb_wr(0x90097, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b36s2
2515dwc_ddrphy_apb_wr(0x90098, 0x42); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b37s0
2516dwc_ddrphy_apb_wr(0x90099, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b37s1
2517dwc_ddrphy_apb_wr(0x9009a, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b37s2
2518dwc_ddrphy_apb_wr(0x9009b, 0x1); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b38s0
2519dwc_ddrphy_apb_wr(0x9009c, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b38s1
2520dwc_ddrphy_apb_wr(0x9009d, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b38s2
2521dwc_ddrphy_apb_wr(0x9009e, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b39s0
2522dwc_ddrphy_apb_wr(0x9009f, 0xe0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b39s1
2523dwc_ddrphy_apb_wr(0x900a0, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b39s2
2524dwc_ddrphy_apb_wr(0x900a1, 0xa); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b40s0
2525dwc_ddrphy_apb_wr(0x900a2, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b40s1
2526dwc_ddrphy_apb_wr(0x900a3, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b40s2
2527dwc_ddrphy_apb_wr(0x900a4, 0x9); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b41s0
2528dwc_ddrphy_apb_wr(0x900a5, 0x3c0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b41s1
2529dwc_ddrphy_apb_wr(0x900a6, 0x149); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b41s2
2530dwc_ddrphy_apb_wr(0x900a7, 0x9); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b42s0
2531dwc_ddrphy_apb_wr(0x900a8, 0x3c0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b42s1
2532dwc_ddrphy_apb_wr(0x900a9, 0x159); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b42s2
2533dwc_ddrphy_apb_wr(0x900aa, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b43s0
2534dwc_ddrphy_apb_wr(0x900ab, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b43s1
2535dwc_ddrphy_apb_wr(0x900ac, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b43s2
2536dwc_ddrphy_apb_wr(0x900ad, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b44s0
2537dwc_ddrphy_apb_wr(0x900ae, 0x3c0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b44s1
2538dwc_ddrphy_apb_wr(0x900af, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b44s2
2539dwc_ddrphy_apb_wr(0x900b0, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b45s0
2540dwc_ddrphy_apb_wr(0x900b1, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b45s1
2541dwc_ddrphy_apb_wr(0x900b2, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b45s2
2542dwc_ddrphy_apb_wr(0x900b3, 0xc); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b46s0
2543dwc_ddrphy_apb_wr(0x900b4, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b46s1
2544dwc_ddrphy_apb_wr(0x900b5, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b46s2
2545dwc_ddrphy_apb_wr(0x900b6, 0x3); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b47s0
2546dwc_ddrphy_apb_wr(0x900b7, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b47s1
2547dwc_ddrphy_apb_wr(0x900b8, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b47s2
2548dwc_ddrphy_apb_wr(0x900b9, 0x7); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b48s0
2549dwc_ddrphy_apb_wr(0x900ba, 0x7c0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b48s1
2550dwc_ddrphy_apb_wr(0x900bb, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b48s2
2551//// [phyinit_LoadPIECodeSections] Matched ANY enable_bits = 8, type = 0
2552dwc_ddrphy_apb_wr(0x900bc, 0x3a); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b49s0
2553dwc_ddrphy_apb_wr(0x900bd, 0x1e2); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b49s1
2554dwc_ddrphy_apb_wr(0x900be, 0x9); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b49s2
2555dwc_ddrphy_apb_wr(0x900bf, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b50s0
2556dwc_ddrphy_apb_wr(0x900c0, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b50s1
2557dwc_ddrphy_apb_wr(0x900c1, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b50s2
2558dwc_ddrphy_apb_wr(0x900c2, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b51s0
2559dwc_ddrphy_apb_wr(0x900c3, 0x8140); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b51s1
2560dwc_ddrphy_apb_wr(0x900c4, 0x10c); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b51s2
2561dwc_ddrphy_apb_wr(0x900c5, 0x10); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b52s0
2562dwc_ddrphy_apb_wr(0x900c6, 0x8138); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b52s1
2563dwc_ddrphy_apb_wr(0x900c7, 0x10c); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b52s2
2564//// [phyinit_LoadPIECodeSections] Matched ANY enable_bits = 1, type = 0
2565dwc_ddrphy_apb_wr(0x900c8, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b53s0
2566dwc_ddrphy_apb_wr(0x900c9, 0x400); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b53s1
2567dwc_ddrphy_apb_wr(0x900ca, 0x10e); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b53s2
2568dwc_ddrphy_apb_wr(0x900cb, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b54s0
2569dwc_ddrphy_apb_wr(0x900cc, 0x448); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b54s1
2570dwc_ddrphy_apb_wr(0x900cd, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b54s2
2571dwc_ddrphy_apb_wr(0x900ce, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b55s0
2572dwc_ddrphy_apb_wr(0x900cf, 0x7c8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b55s1
2573dwc_ddrphy_apb_wr(0x900d0, 0x101); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b55s2
2574dwc_ddrphy_apb_wr(0x900d1, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b56s0
2575dwc_ddrphy_apb_wr(0x900d2, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b56s1
2576dwc_ddrphy_apb_wr(0x900d3, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b56s2
2577dwc_ddrphy_apb_wr(0x900d4, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b57s0
2578dwc_ddrphy_apb_wr(0x900d5, 0x448); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b57s1
2579dwc_ddrphy_apb_wr(0x900d6, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b57s2
2580dwc_ddrphy_apb_wr(0x900d7, 0xf); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b58s0
2581dwc_ddrphy_apb_wr(0x900d8, 0x7c0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b58s1
2582dwc_ddrphy_apb_wr(0x900d9, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b58s2
2583dwc_ddrphy_apb_wr(0x900da, 0x7); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b59s0
2584dwc_ddrphy_apb_wr(0x900db, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b59s1
2585dwc_ddrphy_apb_wr(0x900dc, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b59s2
2586dwc_ddrphy_apb_wr(0x900dd, 0x47); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b60s0
2587dwc_ddrphy_apb_wr(0x900de, 0x630); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b60s1
2588dwc_ddrphy_apb_wr(0x900df, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b60s2
2589dwc_ddrphy_apb_wr(0x900e0, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b61s0
2590dwc_ddrphy_apb_wr(0x900e1, 0x618); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b61s1
2591dwc_ddrphy_apb_wr(0x900e2, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b61s2
2592dwc_ddrphy_apb_wr(0x900e3, 0x18); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b62s0
2593dwc_ddrphy_apb_wr(0x900e4, 0xe0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b62s1
2594dwc_ddrphy_apb_wr(0x900e5, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b62s2
2595dwc_ddrphy_apb_wr(0x900e6, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b63s0
2596dwc_ddrphy_apb_wr(0x900e7, 0x7c8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b63s1
2597dwc_ddrphy_apb_wr(0x900e8, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b63s2
2598dwc_ddrphy_apb_wr(0x900e9, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b64s0
2599dwc_ddrphy_apb_wr(0x900ea, 0x8140); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b64s1
2600dwc_ddrphy_apb_wr(0x900eb, 0x10c); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b64s2
2601dwc_ddrphy_apb_wr(0x900ec, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b65s0
2602dwc_ddrphy_apb_wr(0x900ed, 0x478); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b65s1
2603dwc_ddrphy_apb_wr(0x900ee, 0x109); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b65s2
2604dwc_ddrphy_apb_wr(0x900ef, 0x0); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b66s0
2605dwc_ddrphy_apb_wr(0x900f0, 0x1); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b66s1
2606dwc_ddrphy_apb_wr(0x900f1, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b66s2
2607dwc_ddrphy_apb_wr(0x900f2, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b67s0
2608dwc_ddrphy_apb_wr(0x900f3, 0x4); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b67s1
2609dwc_ddrphy_apb_wr(0x900f4, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b67s2
2610dwc_ddrphy_apb_wr(0x900f5, 0x8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b68s0
2611dwc_ddrphy_apb_wr(0x900f6, 0x7c8); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b68s1
2612dwc_ddrphy_apb_wr(0x900f7, 0x101); // DWC_DDRPHYA_INITENG0_base0_SequenceReg0b68s2
2613//// [phyinit_LoadPIECodeSections] Moving start address from 900f8 to 90006
2614dwc_ddrphy_apb_wr(0x90006, 0x0); // DWC_DDRPHYA_INITENG0_base0_PostSequenceReg0b0s0
2615dwc_ddrphy_apb_wr(0x90007, 0x0); // DWC_DDRPHYA_INITENG0_base0_PostSequenceReg0b0s1
2616dwc_ddrphy_apb_wr(0x90008, 0x8); // DWC_DDRPHYA_INITENG0_base0_PostSequenceReg0b0s2
2617dwc_ddrphy_apb_wr(0x90009, 0x0); // DWC_DDRPHYA_INITENG0_base0_PostSequenceReg0b1s0
2618dwc_ddrphy_apb_wr(0x9000a, 0x0); // DWC_DDRPHYA_INITENG0_base0_PostSequenceReg0b1s1
2619dwc_ddrphy_apb_wr(0x9000b, 0x0); // DWC_DDRPHYA_INITENG0_base0_PostSequenceReg0b1s2
2620//// [phyinit_LoadPIECodeSections] Moving start address from 9000c to d00e7
2621dwc_ddrphy_apb_wr(0xd00e7, 0x400); // DWC_DDRPHYA_APBONLY0_SequencerOverride
2622//// [phyinit_LoadPIECodeSections] End of dwc_ddrphy_phyinit_LoadPIECodeSections()
2623//seq0b_LoadPstateSeqProductionCode(): ---------------------------------------------------------------------------------------------------
2624//seq0b_LoadPstateSeqProductionCode(): Programming the 0B sequencer 0b0000 start vector registers with 0.
2625//seq0b_LoadPstateSeqProductionCode(): Programming the 0B sequencer 0b1111 start vector register with 56.
2626//seq0b_LoadPstateSeqProductionCode(): ---------------------------------------------------------------------------------------------------
2627dwc_ddrphy_apb_wr(0x90017, 0x0); // DWC_DDRPHYA_INITENG0_base0_StartVector0b0
2628dwc_ddrphy_apb_wr(0x90026, 0x38); // DWC_DDRPHYA_INITENG0_base0_StartVector0b15
2629dwc_ddrphy_apb_wr(0x9000c, 0x0); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag0
2630dwc_ddrphy_apb_wr(0x9000d, 0x173); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag1
2631dwc_ddrphy_apb_wr(0x9000e, 0x60); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag2
2632dwc_ddrphy_apb_wr(0x9000f, 0x6110); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag3
2633dwc_ddrphy_apb_wr(0x90010, 0x2152); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag4
2634dwc_ddrphy_apb_wr(0x90011, 0xdfbd); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag5
2635dwc_ddrphy_apb_wr(0x90012, 0xffff); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag6
2636dwc_ddrphy_apb_wr(0x90013, 0x6152); // DWC_DDRPHYA_INITENG0_base0_Seq0BDisableFlag7
2637//// [phyinit_I_loadPIEImage] Programming D4PowerControl::D4CATxDllLP to 0x1
2638//// [phyinit_I_loadPIEImage] Programming AcLcdlMasDis to 0xfff
2639dwc_ddrphy_apb_wr(0x2006d, 0x1); // DWC_DDRPHYA_MASTER0_base0_D4PowerControl
2640dwc_ddrphy_apb_wr(0x200e8, 0xfff); // DWC_DDRPHYA_MASTER0_base0_AcLcdlMasDis
2641//// [phyinit_I_loadPIEImage] Turn on calibration and hold idle until dfi_init_start is asserted sequence is triggered.
2642//// [phyinit_I_loadPIEImage] Programming CalZap to 0x1
2643//// [phyinit_I_loadPIEImage] Programming CalRate::CalRun to 0x1
2644//// [phyinit_I_loadPIEImage] Programming CalRate to 0x19
2645dwc_ddrphy_apb_wr(0x20089, 0x1); // DWC_DDRPHYA_MASTER0_base0_CalZap
2646dwc_ddrphy_apb_wr(0x20088, 0x19); // DWC_DDRPHYA_MASTER0_base0_CalRate
2647//// [phyinit_I_loadPIEImage] Programming ForceClkGaterEnables::ForcePubDxClkEnLow to 0x0
2648dwc_ddrphy_apb_wr(0x200a6, 0x0); // DWC_DDRPHYA_MASTER0_base0_ForceClkGaterEnables
2649//// Disabling Ucclk (PMU) and Hclk (training hardware)
2650dwc_ddrphy_apb_wr(0xc0080, 0x0); // DWC_DDRPHYA_DRTUB0_UcclkHclkEnables
2651//// Isolate the APB access from the internal CSRs by setting the MicroContMuxSel CSR to 1.
2652dwc_ddrphy_apb_wr(0xd0000, 0x1); // DWC_DDRPHYA_APBONLY0_MicroContMuxSel
2653//// [phyinit_userCustom_wait] Wait 40 DfiClks
2654//// [phyinit_I_loadPIEImage] End of dwc_ddrphy_phyinit_I_loadPIEImage()
2655//
2656//
2657////##############################################################
2658////
2659//// dwc_ddrphy_phyinit_userCustom_customPostTrain is a user-editable function.
2660////
2661//// The purpose of dwc_ddrphy_phyinit_userCustom_customPostTrain() is to override any
2662//// CSR values programmed by the training firmware or dwc_ddrphy_phyinit_progCsrSkipTrain()
2663//// This function is executed after training
2664////
2665//// IMPORTANT: in this function, user shall not override any values in userInputBasic and
2666//// userInputAdvanced data structures. Only CSR programming should be done in this function.
2667////
2668//// Sequence of Events in this function are:
2669//// 1. Enable APB access.
2670//// 2. Issue register writes
2671//// 3. Isolate APB access.
2672//
2673////##############################################################
2674//
2675dwc_ddrphy_phyinit_userCustom_customPostTrain();
2676
2677//// [dwc_ddrphy_phyinit_userCustom_customPostTrain] End of dwc_ddrphy_phyinit_userCustom_customPostTrain()
2678//// [dwc_ddrphy_phyinit_userCustom_J_enterMissionMode] Start of dwc_ddrphy_phyinit_userCustom_J_enterMissionMode()
2679//
2680//
2681////##############################################################
2682////
2683//// 4.3.10(J) Initialize the PHY to Mission Mode through DFI Initialization
2684////
2685//// Initialize the PHY to mission mode as follows:
2686////
2687//// 1. Set the PHY input clocks to the desired frequency.
2688//// 2. Initialize the PHY to mission mode by performing DFI Initialization.
2689//// Please see the DFI specification for more information. See the DFI frequency bus encoding in section <XXX>.
2690//// Note: The PHY training firmware initializes the DRAM state. if skip
2691//// training is used, the DRAM state is not initialized.
2692////
2693////##############################################################
2694//
2695dwc_ddrphy_phyinit_userCustom_J_enterMissionMode(sdrammc);
2696
2697//
2698//// [dwc_ddrphy_phyinit_userCustom_J_enterMissionMode] End of dwc_ddrphy_phyinit_userCustom_J_enterMissionMode()
2699// [dwc_ddrphy_phyinit_sequence] End of dwc_ddrphy_phyinit_sequence()
2700// [dwc_ddrphy_phyinit_main] End of dwc_ddrphy_phyinit_main()