coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
sdram_lp0.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <console/console.h>
4 #include <soc/addressmap.h>
5 #include <soc/pmc.h>
6 #include <soc/sdram.h>
7 
8 /*
9  * This function reads SDRAM parameters from the common BCT format and
10  * writes them into PMC scratch registers (where the BootROM expects them
11  * on LP0 resume).
12  */
13 void sdram_lp0_save_params(const struct sdram_params *sdram)
14 {
15  struct tegra_pmc_regs * pmc = (void *)TEGRA_PMC_BASE;
16 
17 #define pack(src, src_bits, dst, dst_bits) { \
18  _Static_assert((1 ? src_bits) >= (0 ? src_bits) && (1 ? dst_bits) >= \
19  (0 ? dst_bits), "byte range flipped (must be MSB:LSB)"); \
20  _Static_assert((1 ? src_bits) - (0 ? src_bits) == (1 ? dst_bits) - \
21  (0 ? dst_bits), "src and dst byte range lengths differ"); \
22  u32 mask = 0xffffffff >> (31 - ((1 ? src_bits) - (0 ? src_bits))); \
23  dst &= ~(mask << (0 ? dst_bits)); \
24  dst |= ((src >> (0 ? src_bits)) & mask) << (0 ? dst_bits); \
25 }
26 
27 #define s(param, src_bits, pmcreg, dst_bits) \
28  pack(sdram->param, src_bits, pmc->pmcreg, dst_bits)
29 
30 #define c(value, pmcreg, dst_bits) \
31  pack(value, (1 ? dst_bits) - (0 ? dst_bits) : 0, pmc->pmcreg, dst_bits)
32 
33 /* 32 bits version of s macro */
34 #define s32(param, pmcreg) pmc->pmcreg = sdram->param
35 
36 /* 32 bits version c macro */
37 #define c32(value, pmcreg) pmc->pmcreg = value
38 
39  s(EmcClockSource, 7:0, scratch6, 15:8);
40  s(EmcClockSourceDll, 7:0, scratch6, 23:16);
41  s(EmcClockSource, 31:29, scratch6, 26:24);
42  s(EmcClockSourceDll, 31:29, scratch6, 29:27);
43  s(EmcClockSourceDll, 11:10, scratch6, 31:30);
44  s(ClkRstControllerPllmMisc2Override, 9:8, scratch7, 1:0);
45  s(ClkRstControllerPllmMisc2Override, 2:1, scratch7, 3:2);
46  s(EmcZqCalLpDdr4WarmBoot, 31:30, scratch7, 5:4);
47  s(EmcClockSource, 15:15, scratch7, 6:6);
48  s(EmcClockSource, 26:26, scratch7, 7:7);
49  s(EmcClockSource, 20:20, scratch7, 8:8);
50  s(EmcClockSource, 19:19, scratch7, 9:9);
51  s(ClkRstControllerPllmMisc2Override, 13:13, scratch7, 10:10);
52  s(ClkRstControllerPllmMisc2Override, 12:12, scratch7, 11:11);
53  s(ClkRstControllerPllmMisc2Override, 11:11, scratch7, 12:12);
54  s(ClkRstControllerPllmMisc2Override, 10:10, scratch7, 13:13);
55  s(ClkRstControllerPllmMisc2Override, 5:5, scratch7, 14:14);
56  s(ClkRstControllerPllmMisc2Override, 4:4, scratch7, 15:15);
57  s(ClkRstControllerPllmMisc2Override, 3:3, scratch7, 16:16);
58  s(ClkRstControllerPllmMisc2Override, 0:0, scratch7, 17:17);
59  s(EmcZqCalLpDdr4WarmBoot, 1:0, scratch7, 19:18);
60  s(EmcZqCalLpDdr4WarmBoot, 4:4, scratch7, 20:20);
61  s(EmcOdtWrite, 5:0, scratch7, 26:21);
62  s(EmcOdtWrite, 11:8, scratch7, 30:27);
63  s(EmcOdtWrite, 31:31, scratch7, 31:31);
64  s(EmcFdpdCtrlCmdNoRamp, 0:0, scratch13, 30:30);
65  s(EmcCfgPipeClk, 0:0, scratch13, 31:31);
66  s(McEmemArbMisc2, 0:0, scratch14, 30:30);
67  s(McDaCfg0, 0:0, scratch14, 31:31);
68  s(EmcQRst, 6:0, scratch15, 26:20);
69  s(EmcQRst, 20:16, scratch15, 31:27);
70  s(EmcPmacroCmdTxDrv, 5:0, scratch16, 25:20);
71  s(EmcPmacroCmdTxDrv, 13:8, scratch16, 31:26);
72  s(EmcPmacroAutocalCfg0, 2:0, scratch17, 22:20);
73  s(EmcPmacroAutocalCfg0, 10:8, scratch17, 25:23);
74  s(EmcPmacroAutocalCfg0, 18:16, scratch17, 28:26);
75  s(EmcPmacroAutocalCfg0, 26:24, scratch17, 31:29);
76  s(EmcPmacroAutocalCfg1, 2:0, scratch18, 22:20);
77  s(EmcPmacroAutocalCfg1, 10:8, scratch18, 25:23);
78  s(EmcPmacroAutocalCfg1, 18:16, scratch18, 28:26);
79  s(EmcPmacroAutocalCfg1, 26:24, scratch18, 31:29);
80  s(EmcPmacroAutocalCfg2, 2:0, scratch19, 22:20);
81  s(EmcPmacroAutocalCfg2, 10:8, scratch19, 25:23);
82  s(EmcPmacroAutocalCfg2, 18:16, scratch19, 28:26);
83  s(EmcPmacroAutocalCfg2, 26:24, scratch19, 31:29);
84  s32(EmcCfgRsv,scratch22);
85  s32(EmcAutoCalConfig, scratch23);
86  s32(EmcAutoCalVrefSel0, scratch24);
87  s32(EmcPmacroBrickCtrlRfu1, scratch25);
88  s32(EmcPmacroBrickCtrlRfu2, scratch26);
89  s32(EmcPmcScratch1, scratch27);
90  s32(EmcPmcScratch2, scratch28);
91  s32(EmcPmcScratch3, scratch29);
92  s32(McEmemArbDaTurns, scratch30);
93  s(EmcFbioSpare, 31:24, scratch58, 7:0);
94  s(EmcFbioSpare, 23:16, scratch58, 15:8);
95  s(EmcFbioSpare, 15:8, scratch58, 23:16);
96  s(EmcFbioSpare, 7:2, scratch58, 29:24);
97  s(EmcFbioSpare, 0:0, scratch58, 30:30);
98  s(EmcDllCfg0, 29:0, scratch59, 29:0);
99  s(EmcPmacroDdllBypass, 11:0, scratch60, 11:0);
100  s(EmcPmacroDdllBypass, 27:13, scratch60, 26:12);
101  s(EmcPmacroDdllBypass, 31:29, scratch60, 29:27);
102  s(McEmemArbMisc0, 14:0, scratch61, 14:0);
103  s(McEmemArbMisc0, 30:16, scratch61, 29:15);
104  s(EmcFdpdCtrlCmd, 16:0, scratch62, 16:0);
105  s(EmcFdpdCtrlCmd, 31:20, scratch62, 28:17);
106  s(EmcAutoCalConfig2, 27:0, scratch63, 27:0);
107  s(EmcBurstRefreshNum, 3:0, scratch63, 31:28);
108  s(EmcPmacroZctrl, 27:0, scratch64, 27:0);
109  s(EmcTppd, 3:0, scratch64, 31:28);
110  s(EmcCfgDigDll, 10:0, scratch65, 10:0);
111  s(EmcCfgDigDll, 25:12, scratch65, 24:11);
112  s(EmcCfgDigDll, 27:27, scratch65, 25:25);
113  s(EmcCfgDigDll, 31:30, scratch65, 27:26);
114  s(EmcR2r, 3:0, scratch65, 31:28);
115  s(EmcFdpdCtrlDq, 16:0, scratch66, 16:0);
116  s(EmcFdpdCtrlDq, 28:20, scratch66, 25:17);
117  s(EmcFdpdCtrlDq, 31:30, scratch66, 27:26);
118  s(EmcW2w, 3:0, scratch66, 31:28);
119  s(EmcPmacroTxPwrd4, 13:0, scratch67, 13:0);
120  s(EmcPmacroTxPwrd4, 29:16, scratch67, 27:14);
121  s(EmcPmacroCommonPadTxCtrl, 3:0, scratch67, 31:28);
122  s(EmcPmacroTxPwrd5, 13:0, scratch68, 13:0);
123  s(EmcPmacroTxPwrd5, 29:16, scratch68, 27:14);
124  s(EmcPmacroDdllPwrd0, 4:0, scratch69, 4:0);
125  s(EmcPmacroDdllPwrd0, 12:6, scratch69, 11:5);
126  s(EmcPmacroDdllPwrd0, 20:14, scratch69, 18:12);
127  s(EmcPmacroDdllPwrd0, 28:22, scratch69, 25:19);
128  s(EmcPmacroDdllPwrd0, 31:30, scratch69, 27:26);
129  s(EmcCfg, 4:4, scratch69, 31:31);
130  s(EmcPmacroDdllPwrd1, 4:0, scratch70, 4:0);
131  s(EmcPmacroDdllPwrd1, 12:6, scratch70, 11:5);
132  s(EmcPmacroDdllPwrd1, 20:14, scratch70, 18:12);
133  s(EmcPmacroDdllPwrd1, 28:22, scratch70, 25:19);
134  s(EmcPmacroDdllPwrd1, 31:30, scratch70, 27:26);
135  s(EmcCfg, 5:5, scratch70, 31:31);
136  s(EmcPmacroDdllPwrd2, 4:0, scratch71, 4:0);
137  s(EmcPmacroDdllPwrd2, 12:6, scratch71, 11:5);
138  s(EmcPmacroDdllPwrd2, 20:14, scratch71, 18:12);
139  s(EmcPmacroDdllPwrd2, 28:22, scratch71, 25:19);
140  s(EmcPmacroDdllPwrd2, 31:30, scratch71, 27:26);
141  s(EmcFbioCfg5, 23:20, scratch71, 31:28);
142  s(EmcPmacroIbVrefDq_0, 6:0, scratch72, 6:0);
143  s(EmcPmacroIbVrefDq_0, 14:8, scratch72, 13:7);
144  s(EmcPmacroIbVrefDq_0, 22:16, scratch72, 20:14);
145  s(EmcPmacroIbVrefDq_0, 30:24, scratch72, 27:21);
146  s(EmcFbioCfg5, 15:13, scratch72, 30:28);
147  s(EmcCfg, 6:6, scratch72, 31:31);
148  s(EmcPmacroIbVrefDq_1, 6:0, scratch73, 6:0);
149  s(EmcPmacroIbVrefDq_1, 14:8, scratch73, 13:7);
150  s(EmcPmacroIbVrefDq_1, 22:16, scratch73, 20:14);
151  s(EmcPmacroIbVrefDq_1, 30:24, scratch73, 27:21);
152  s(EmcCfg2, 5:3, scratch73, 30:28);
153  s(EmcCfg, 7:7, scratch73, 31:31);
154  s(EmcPmacroIbVrefDqs_0, 6:0, scratch74, 6:0);
155  s(EmcPmacroIbVrefDqs_0, 14:8, scratch74, 13:7);
156  s(EmcPmacroIbVrefDqs_0, 22:16, scratch74, 20:14);
157  s(EmcPmacroIbVrefDqs_0, 30:24, scratch74, 27:21);
158  s(EmcCfg, 17:16, scratch74, 29:28);
159  s(EmcFbioCfg5, 1:0, scratch74, 31:30);
160  s(EmcPmacroIbVrefDqs_1, 6:0, scratch75, 6:0);
161  s(EmcPmacroIbVrefDqs_1, 14:8, scratch75, 13:7);
162  s(EmcPmacroIbVrefDqs_1, 22:16, scratch75, 20:14);
163  s(EmcPmacroIbVrefDqs_1, 30:24, scratch75, 27:21);
164  s(EmcFbioCfg5, 3:2, scratch75, 29:28);
165  s(EmcCfg2, 27:26, scratch75, 31:30);
166  s(EmcPmacroDdllShortCmd_0, 6:0, scratch76, 6:0);
167  s(EmcPmacroDdllShortCmd_0, 14:8, scratch76, 13:7);
168  s(EmcPmacroDdllShortCmd_0, 22:16, scratch76, 20:14);
169  s(EmcPmacroDdllShortCmd_0, 30:24, scratch76, 27:21);
170  s(EmcPmacroCmdPadTxCtrl, 3:2, scratch76, 29:28);
171  s(EmcPmacroCmdPadTxCtrl, 7:6, scratch76, 31:30);
172  s(EmcPmacroDdllShortCmd_1, 6:0, scratch77, 6:0);
173  s(EmcPmacroDdllShortCmd_1, 14:8, scratch77, 13:7);
174  s(EmcPmacroDdllShortCmd_1, 22:16, scratch77, 20:14);
175  s(EmcPmacroDdllShortCmd_1, 30:24, scratch77, 27:21);
176  s(EmcPmacroCmdPadTxCtrl, 11:10, scratch77, 29:28);
177  s(EmcPmacroCmdPadTxCtrl, 15:14, scratch77, 31:30);
178  s(EmcAutoCalChannel, 5:0, scratch78, 5:0);
179  s(EmcAutoCalChannel, 11:8, scratch78, 9:6);
180  s(EmcAutoCalChannel, 27:16, scratch78, 21:10);
181  s(EmcAutoCalChannel, 31:29, scratch78, 24:22);
182  s(EmcConfigSampleDelay, 6:0, scratch78, 31:25);
183  s(EmcPmacroRxTerm, 5:0, scratch79, 5:0);
184  s(EmcPmacroRxTerm, 13:8, scratch79, 11:6);
185  s(EmcPmacroRxTerm, 21:16, scratch79, 17:12);
186  s(EmcPmacroRxTerm, 29:24, scratch79, 23:18);
187  s(EmcRc, 7:0, scratch79, 31:24);
188  s(EmcPmacroDqTxDrv, 5:0, scratch80, 5:0);
189  s(EmcPmacroDqTxDrv, 13:8, scratch80, 11:6);
190  s(EmcPmacroDqTxDrv, 21:16, scratch80, 17:12);
191  s(EmcPmacroDqTxDrv, 29:24, scratch80, 23:18);
192  s(EmcSelDpdCtrl, 5:2, scratch80, 27:24);
193  s(EmcSelDpdCtrl, 8:8, scratch80, 28:28);
194  s(EmcSelDpdCtrl, 18:16, scratch80, 31:29);
195  s(EmcPmacroCaTxDrv, 5:0, scratch81, 5:0);
196  s(EmcPmacroCaTxDrv, 13:8, scratch81, 11:6);
197  s(EmcPmacroCaTxDrv, 21:16, scratch81, 17:12);
198  s(EmcPmacroCaTxDrv, 29:24, scratch81, 23:18);
199  s(EmcObdly, 5:0, scratch81, 29:24);
200  s(EmcObdly, 29:28, scratch81, 31:30);
201  s(EmcZcalInterval, 23:10, scratch82, 13:0);
202  s(EmcZcalInterval, 9:0, scratch82, 23:14);
203  s(EmcPmacroCmdRxTermMode, 1:0, scratch82, 25:24);
204  s(EmcPmacroCmdRxTermMode, 5:4, scratch82, 27:26);
205  s(EmcPmacroCmdRxTermMode, 9:8, scratch82, 29:28);
206  s(EmcPmacroCmdRxTermMode, 13:12, scratch82, 31:30);
207  s(EmcDataBrlshft0, 23:0, scratch83, 23:0);
208  s(EmcPmacroDataRxTermMode, 1:0, scratch83, 25:24);
209  s(EmcPmacroDataRxTermMode, 5:4, scratch83, 27:26);
210  s(EmcPmacroDataRxTermMode, 9:8, scratch83, 29:28);
211  s(EmcPmacroDataRxTermMode, 13:12, scratch83, 31:30);
212  s(EmcDataBrlshft1, 23:0, scratch84, 23:0);
213  s(McEmemArbTimingRc, 7:0, scratch84, 31:24);
214  s(EmcDqsBrlshft0, 23:0, scratch85, 23:0);
215  s(McEmemArbRsv, 7:0, scratch85, 31:24);
216  s(EmcDqsBrlshft1, 23:0, scratch86, 23:0);
217  s(EmcCfgPipe2, 11:0, scratch87, 11:0);
218  s(EmcCfgPipe2, 27:16, scratch87, 23:12);
219  s(EmcCfgPipe1, 11:0, scratch88, 11:0);
220  s(EmcCfgPipe1, 27:16, scratch88, 23:12);
221  s(EmcPmacroCmdCtrl0, 5:0, scratch89, 5:0);
222  s(EmcPmacroCmdCtrl0, 13:8, scratch89, 11:6);
223  s(EmcPmacroCmdCtrl0, 21:16, scratch89, 17:12);
224  s(EmcPmacroCmdCtrl0, 29:24, scratch89, 23:18);
225  s(EmcPmacroCmdCtrl1, 5:0, scratch90, 5:0);
226  s(EmcPmacroCmdCtrl1, 13:8, scratch90, 11:6);
227  s(EmcPmacroCmdCtrl1, 21:16, scratch90, 17:12);
228  s(EmcPmacroCmdCtrl1, 29:24, scratch90, 23:18);
229  s(EmcRas, 6:0, scratch90, 30:24);
230  s(EmcCfg, 8:8, scratch90, 31:31);
231  s(EmcPmacroVttgenCtrl2, 23:0, scratch91, 23:0);
232  s(EmcW2p, 6:0, scratch91, 30:24);
233  s(EmcCfg, 9:9, scratch91, 31:31);
234  s(EmcPmacroCmdPadRxCtrl, 2:0, scratch92, 2:0);
235  s(EmcPmacroCmdPadRxCtrl, 5:4, scratch92, 4:3);
236  s(EmcPmacroCmdPadRxCtrl, 10:8, scratch92, 7:5);
237  s(EmcPmacroCmdPadRxCtrl, 22:12, scratch92, 18:8);
238  s(EmcPmacroCmdPadRxCtrl, 28:24, scratch92, 23:19);
239  s(EmcQSafe, 6:0, scratch92, 30:24);
240  s(EmcCfg, 18:18, scratch92, 31:31);
241  s(EmcPmacroDataPadRxCtrl, 2:0, scratch93, 2:0);
242  s(EmcPmacroDataPadRxCtrl, 5:4, scratch93, 4:3);
243  s(EmcPmacroDataPadRxCtrl, 10:8, scratch93, 7:5);
244  s(EmcPmacroDataPadRxCtrl, 22:12, scratch93, 18:8);
245  s(EmcPmacroDataPadRxCtrl, 28:24, scratch93, 23:19);
246  s(EmcRdv, 6:0, scratch93, 30:24);
247  s(EmcCfg, 21:21, scratch93, 31:31);
248  s(McEmemArbDaCovers, 23:0, scratch94, 23:0);
249  s(EmcRw2Pden, 6:0, scratch94, 30:24);
250  s(EmcCfg, 22:22, scratch94, 31:31);
251  s(EmcPmacroCmdCtrl2, 5:0, scratch95, 5:0);
252  s(EmcPmacroCmdCtrl2, 13:9, scratch95, 10:6);
253  s(EmcPmacroCmdCtrl2, 21:16, scratch95, 16:11);
254  s(EmcPmacroCmdCtrl2, 29:24, scratch95, 22:17);
255  s(EmcRfcPb, 8:0, scratch95, 31:23);
256  s(EmcPmacroQuseDdllRank0_0, 10:0, scratch96, 10:0);
257  s(EmcPmacroQuseDdllRank0_0, 26:16, scratch96, 21:11);
258  s(EmcCfgUpdate, 2:0, scratch96, 24:22);
259  s(EmcCfgUpdate, 10:8, scratch96, 27:25);
260  s(EmcCfgUpdate, 31:28, scratch96, 31:28);
261  s(EmcPmacroQuseDdllRank0_1, 10:0, scratch97, 10:0);
262  s(EmcPmacroQuseDdllRank0_1, 26:16, scratch97, 21:11);
263  s(EmcRfc, 9:0, scratch97, 31:22);
264  s(EmcPmacroQuseDdllRank0_2, 10:0, scratch98, 10:0);
265  s(EmcPmacroQuseDdllRank0_2, 26:16, scratch98, 21:11);
266  s(EmcTxsr, 9:0, scratch98, 31:22);
267  s(EmcPmacroQuseDdllRank0_3, 10:0, scratch99, 10:0);
268  s(EmcPmacroQuseDdllRank0_3, 26:16, scratch99, 21:11);
269  s(EmcMc2EmcQ, 2:0, scratch99, 24:22);
270  s(EmcMc2EmcQ, 10:8, scratch99, 27:25);
271  s(EmcMc2EmcQ, 27:24, scratch99, 31:28);
272  s(EmcPmacroQuseDdllRank0_4, 10:0, scratch100, 10:0);
273  s(EmcPmacroQuseDdllRank0_4, 26:16, scratch100, 21:11);
274  s(McEmemArbRing1Throttle, 4:0, scratch100, 26:22);
275  s(McEmemArbRing1Throttle, 20:16, scratch100, 31:27);
276  s(EmcPmacroQuseDdllRank0_5, 10:0, scratch101, 10:0);
277  s(EmcPmacroQuseDdllRank0_5, 26:16, scratch101, 21:11);
278  s(EmcPmacroQuseDdllRank1_0, 10:0, scratch102, 10:0);
279  s(EmcPmacroQuseDdllRank1_0, 26:16, scratch102, 21:11);
280  s(EmcAr2Pden, 8:0, scratch102, 30:22);
281  s(EmcCfg, 23:23, scratch102, 31:31);
282  s(EmcPmacroQuseDdllRank1_1, 10:0, scratch103, 10:0);
283  s(EmcPmacroQuseDdllRank1_1, 26:16, scratch103, 21:11);
284  s(EmcRfcSlr, 8:0, scratch103, 30:22);
285  s(EmcCfg, 24:24, scratch103, 31:31);
286  s(EmcPmacroQuseDdllRank1_2, 10:0, scratch104, 10:0);
287  s(EmcPmacroQuseDdllRank1_2, 26:16, scratch104, 21:11);
288  s(EmcIbdly, 6:0, scratch104, 28:22);
289  s(EmcIbdly, 29:28, scratch104, 30:29);
290  s(EmcCfg, 25:25, scratch104, 31:31);
291  s(EmcPmacroQuseDdllRank1_3, 10:0, scratch105, 10:0);
292  s(EmcPmacroQuseDdllRank1_3, 26:16, scratch105, 21:11);
293  s(McEmemArbTimingRFCPB, 8:0, scratch105, 30:22);
294  s(EmcCfg, 26:26, scratch105, 31:31);
295  s(EmcPmacroQuseDdllRank1_4, 10:0, scratch106, 10:0);
296  s(EmcPmacroQuseDdllRank1_4, 26:16, scratch106, 21:11);
297  s(EmcTfaw, 6:0, scratch106, 28:22);
298  s(EmcPmacroDataPadTxCtrl, 3:2, scratch106, 30:29);
299  s(EmcCfg, 28:28, scratch106, 31:31);
300  s(EmcPmacroQuseDdllRank1_5, 10:0, scratch107, 10:0);
301  s(EmcPmacroQuseDdllRank1_5, 26:16, scratch107, 21:11);
302  s(EmcTClkStable, 6:0, scratch107, 28:22);
303  s(EmcPmacroDataPadTxCtrl, 7:6, scratch107, 30:29);
304  s(EmcCfg, 29:29, scratch107, 31:31);
305  s(EmcPmacroObDdllLongDqRank0_0, 10:0, scratch108, 10:0);
306  s(EmcPmacroObDdllLongDqRank0_0, 26:16, scratch108, 21:11);
307  s(EmcPdex2Mrr, 6:0, scratch108, 28:22);
308  s(EmcPmacroDataPadTxCtrl, 11:10, scratch108, 30:29);
309  s(EmcCfg, 30:30, scratch108, 31:31);
310  s(EmcPmacroObDdllLongDqRank0_1, 10:0, scratch109, 10:0);
311  s(EmcPmacroObDdllLongDqRank0_1, 26:16, scratch109, 21:11);
312  s(EmcRdvMask, 6:0, scratch109, 28:22);
313  s(EmcPmacroDataPadTxCtrl, 15:14, scratch109, 30:29);
314  s(EmcCfg, 31:31, scratch109, 31:31);
315  s(EmcPmacroObDdllLongDqRank0_2, 10:0, scratch110, 10:0);
316  s(EmcPmacroObDdllLongDqRank0_2, 26:16, scratch110, 21:11);
317  s(EmcRdvEarlyMask, 6:0, scratch110, 28:22);
318  s(EmcFbioCfg5, 4:4, scratch110, 29:29);
319  s(EmcFbioCfg5, 8:8, scratch110, 30:30);
320  s(EmcFbioCfg5, 10:10, scratch110, 31:31);
321  s(EmcPmacroObDdllLongDqRank0_3, 10:0, scratch111, 10:0);
322  s(EmcPmacroObDdllLongDqRank0_3, 26:16, scratch111, 21:11);
323  s(EmcRdvEarly, 6:0, scratch111, 28:22);
324  s(EmcFbioCfg5, 12:12, scratch111, 29:29);
325  s(EmcFbioCfg5, 25:24, scratch111, 31:30);
326  s(EmcPmacroObDdllLongDqRank0_4, 10:0, scratch112, 10:0);
327  s(EmcPmacroObDdllLongDqRank0_4, 26:16, scratch112, 21:11);
328  s(EmcPmacroDdllShortCmd_2, 6:0, scratch112, 28:22);
329  s(EmcFbioCfg5, 28:26, scratch112, 31:29);
330  s(EmcPmacroObDdllLongDqRank0_5, 10:0, scratch113, 10:0);
331  s(EmcPmacroObDdllLongDqRank0_5, 26:16, scratch113, 21:11);
332  s(McEmemArbTimingRp, 6:0, scratch113, 28:22);
333  s(EmcFbioCfg5, 31:30, scratch113, 30:29);
334  s(EmcCfg2, 0:0, scratch113, 31:31);
335  s(EmcPmacroObDdllLongDqRank1_0, 10:0, scratch114, 10:0);
336  s(EmcPmacroObDdllLongDqRank1_0, 26:16, scratch114, 21:11);
337  s(McEmemArbTimingRas, 6:0, scratch114, 28:22);
338  s(EmcCfg2, 2:1, scratch114, 30:29);
339  s(EmcCfg2, 7:7, scratch114, 31:31);
340  s(EmcPmacroObDdllLongDqRank1_1, 10:0, scratch115, 10:0);
341  s(EmcPmacroObDdllLongDqRank1_1, 26:16, scratch115, 21:11);
342  s(McEmemArbTimingFaw, 6:0, scratch115, 28:22);
343  s(EmcCfg2, 11:10, scratch115, 30:29);
344  s(EmcCfg2, 14:14, scratch115, 31:31);
345  s(EmcPmacroObDdllLongDqRank1_2, 10:0, scratch123, 10:0);
346  s(EmcPmacroObDdllLongDqRank1_2, 26:16, scratch123, 21:11);
347  s(McEmemArbTimingRap2Pre, 6:0, scratch123, 28:22);
348  s(EmcCfg2, 16:15, scratch123, 30:29);
349  s(EmcCfg2, 20:20, scratch123, 31:31);
350  s(EmcPmacroObDdllLongDqRank1_3, 10:0, scratch124, 10:0);
351  s(EmcPmacroObDdllLongDqRank1_3, 26:16, scratch124, 21:11);
352  s(McEmemArbTimingWap2Pre, 6:0, scratch124, 28:22);
353  s(EmcCfg2, 24:22, scratch124, 31:29);
354  s(EmcPmacroObDdllLongDqRank1_4, 10:0, scratch125, 10:0);
355  s(EmcPmacroObDdllLongDqRank1_4, 26:16, scratch125, 21:11);
356  s(McEmemArbTimingR2W, 6:0, scratch125, 28:22);
357  s(EmcCfg2, 25:25, scratch125, 29:29);
358  s(EmcCfg2, 29:28, scratch125, 31:30);
359  s(EmcPmacroObDdllLongDqRank1_5, 10:0, scratch126, 10:0);
360  s(EmcPmacroObDdllLongDqRank1_5, 26:16, scratch126, 21:11);
361  s(McEmemArbTimingW2R, 6:0, scratch126, 28:22);
362  s(EmcCfg2, 31:30, scratch126, 30:29);
363  s(EmcCfgPipe, 0:0, scratch126, 31:31);
364  s(EmcPmacroObDdllLongDqsRank0_0, 10:0, scratch127, 10:0);
365  s(EmcPmacroObDdllLongDqsRank0_0, 26:16, scratch127, 21:11);
366  s(EmcRp, 5:0, scratch127, 27:22);
367  s(EmcCfgPipe, 4:1, scratch127, 31:28);
368  s(EmcPmacroObDdllLongDqsRank0_1, 10:0, scratch128, 10:0);
369  s(EmcPmacroObDdllLongDqsRank0_1, 26:16, scratch128, 21:11);
370  s(EmcR2w, 5:0, scratch128, 27:22);
371  s(EmcCfgPipe, 8:5, scratch128, 31:28);
372  s(EmcPmacroObDdllLongDqsRank0_2, 10:0, scratch129, 10:0);
373  s(EmcPmacroObDdllLongDqsRank0_2, 26:16, scratch129, 21:11);
374  s(EmcW2r, 5:0, scratch129, 27:22);
375  s(EmcCfgPipe, 11:9, scratch129, 30:28);
376  s(EmcCfgPipe, 16:16, scratch129, 31:31);
377  s(EmcPmacroObDdllLongDqsRank0_3, 10:0, scratch130, 10:0);
378  s(EmcPmacroObDdllLongDqsRank0_3, 26:16, scratch130, 21:11);
379  s(EmcR2p, 5:0, scratch130, 27:22);
380  s(EmcCfgPipe, 20:17, scratch130, 31:28);
381  s(EmcPmacroObDdllLongDqsRank0_4, 10:0, scratch131, 10:0);
382  s(EmcPmacroObDdllLongDqsRank0_4, 26:16, scratch131, 21:11);
383  s(EmcCcdmw, 5:0, scratch131, 27:22);
384  s(EmcCfgPipe, 24:21, scratch131, 31:28);
385  s(EmcPmacroObDdllLongDqsRank0_5, 10:0, scratch132, 10:0);
386  s(EmcPmacroObDdllLongDqsRank0_5, 26:16, scratch132, 21:11);
387  s(EmcRdRcd, 5:0, scratch132, 27:22);
388  s(EmcCfgPipe, 27:25, scratch132, 30:28);
389  s(EmcPmacroTxPwrd0, 0:0, scratch132, 31:31);
390  s(EmcPmacroObDdllLongDqsRank1_0, 10:0, scratch133, 10:0);
391  s(EmcPmacroObDdllLongDqsRank1_0, 26:16, scratch133, 21:11);
392  s(EmcWrRcd, 5:0, scratch133, 27:22);
393  s(EmcPmacroTxPwrd0, 4:1, scratch133, 31:28);
394  s(EmcPmacroObDdllLongDqsRank1_1, 10:0, scratch134, 10:0);
395  s(EmcPmacroObDdllLongDqsRank1_1, 26:16, scratch134, 21:11);
396  s(EmcWdv, 5:0, scratch134, 27:22);
397  s(EmcPmacroTxPwrd0, 8:5, scratch134, 31:28);
398  s(EmcPmacroObDdllLongDqsRank1_2, 10:0, scratch135, 10:0);
399  s(EmcPmacroObDdllLongDqsRank1_2, 26:16, scratch135, 21:11);
400  s(EmcQUse, 5:0, scratch135, 27:22);
401  s(EmcPmacroTxPwrd0, 12:9, scratch135, 31:28);
402  s(EmcPmacroObDdllLongDqsRank1_3, 10:0, scratch136, 10:0);
403  s(EmcPmacroObDdllLongDqsRank1_3, 26:16, scratch136, 21:11);
404  s(EmcPdEx2Wr, 5:0, scratch136, 27:22);
405  s(EmcPmacroTxPwrd0, 13:13, scratch136, 28:28);
406  s(EmcPmacroTxPwrd0, 18:16, scratch136, 31:29);
407  s(EmcPmacroObDdllLongDqsRank1_4, 10:0, scratch137, 10:0);
408  s(EmcPmacroObDdllLongDqsRank1_4, 26:16, scratch137, 21:11);
409  s(EmcPdEx2Rd, 5:0, scratch137, 27:22);
410  s(EmcPmacroTxPwrd0, 22:19, scratch137, 31:28);
411  s(EmcPmacroObDdllLongDqsRank1_5, 10:0, scratch138, 10:0);
412  s(EmcPmacroObDdllLongDqsRank1_5, 26:16, scratch138, 21:11);
413  s(EmcPdex2Cke, 5:0, scratch138, 27:22);
414  s(EmcPmacroTxPwrd0, 26:23, scratch138, 31:28);
415  s(EmcPmacroIbDdllLongDqsRank0_0, 10:0, scratch139, 10:0);
416  s(EmcPmacroIbDdllLongDqsRank0_0, 26:16, scratch139, 21:11);
417  s(EmcPChg2Pden, 5:0, scratch139, 27:22);
418  s(EmcPmacroTxPwrd0, 29:27, scratch139, 30:28);
419  s(EmcPmacroTxPwrd1, 0:0, scratch139, 31:31);
420  s(EmcPmacroIbDdllLongDqsRank0_1, 10:0, scratch140, 10:0);
421  s(EmcPmacroIbDdllLongDqsRank0_1, 26:16, scratch140, 21:11);
422  s(EmcAct2Pden, 5:0, scratch140, 27:22);
423  s(EmcPmacroTxPwrd1, 4:1, scratch140, 31:28);
424  s(EmcPmacroIbDdllLongDqsRank0_2, 10:0, scratch141, 10:0);
425  s(EmcPmacroIbDdllLongDqsRank0_2, 26:16, scratch141, 21:11);
426  s(EmcCke2Pden, 5:0, scratch141, 27:22);
427  s(EmcPmacroTxPwrd1, 8:5, scratch141, 31:28);
428  s(EmcPmacroIbDdllLongDqsRank0_3, 10:0, scratch142, 10:0);
429  s(EmcPmacroIbDdllLongDqsRank0_3, 26:16, scratch142, 21:11);
430  s(EmcTcke, 5:0, scratch142, 27:22);
431  s(EmcPmacroTxPwrd1, 12:9, scratch142, 31:28);
432  s(EmcPmacroIbDdllLongDqsRank1_0, 10:0, scratch143, 10:0);
433  s(EmcPmacroIbDdllLongDqsRank1_0, 26:16, scratch143, 21:11);
434  s(EmcTrpab, 5:0, scratch143, 27:22);
435  s(EmcPmacroTxPwrd1, 13:13, scratch143, 28:28);
436  s(EmcPmacroTxPwrd1, 18:16, scratch143, 31:29);
437  s(EmcPmacroIbDdllLongDqsRank1_1, 10:0, scratch144, 10:0);
438  s(EmcPmacroIbDdllLongDqsRank1_1, 26:16, scratch144, 21:11);
439  s(EmcClkenOverride, 3:1, scratch144, 24:22);
440  s(EmcClkenOverride, 8:6, scratch144, 27:25);
441  s(EmcPmacroTxPwrd1, 22:19, scratch144, 31:28);
442  s(EmcPmacroIbDdllLongDqsRank1_2, 10:0, scratch145, 10:0);
443  s(EmcPmacroIbDdllLongDqsRank1_2, 26:16, scratch145, 21:11);
444  s(EmcEInput, 5:0, scratch145, 27:22);
445  s(EmcPmacroTxPwrd1, 26:23, scratch145, 31:28);
446  s(EmcPmacroIbDdllLongDqsRank1_3, 10:0, scratch146, 10:0);
447  s(EmcPmacroIbDdllLongDqsRank1_3, 26:16, scratch146, 21:11);
448  s(EmcEInputDuration, 5:0, scratch146, 27:22);
449  s(EmcPmacroTxPwrd1, 29:27, scratch146, 30:28);
450  s(EmcPmacroTxPwrd2, 0:0, scratch146, 31:31);
451  s(EmcPmacroDdllLongCmd_0, 10:0, scratch147, 10:0);
452  s(EmcPmacroDdllLongCmd_0, 26:16, scratch147, 21:11);
453  s(EmcPutermExtra, 5:0, scratch147, 27:22);
454  s(EmcPmacroTxPwrd2, 4:1, scratch147, 31:28);
455  s(EmcPmacroDdllLongCmd_1, 10:0, scratch148, 10:0);
456  s(EmcPmacroDdllLongCmd_1, 26:16, scratch148, 21:11);
457  s(EmcTckesr, 5:0, scratch148, 27:22);
458  s(EmcPmacroTxPwrd2, 8:5, scratch148, 31:28);
459  s(EmcPmacroDdllLongCmd_2, 10:0, scratch149, 10:0);
460  s(EmcPmacroDdllLongCmd_2, 26:16, scratch149, 21:11);
461  s(EmcTpd, 5:0, scratch149, 27:22);
462  s(EmcPmacroTxPwrd2, 12:9, scratch149, 31:28);
463  s(EmcPmacroDdllLongCmd_3, 10:0, scratch150, 10:0);
464  s(EmcPmacroDdllLongCmd_3, 26:16, scratch150, 21:11);
465  s(EmcWdvMask, 5:0, scratch150, 27:22);
466  s(EmcPmacroTxPwrd2, 13:13, scratch150, 28:28);
467  s(EmcPmacroTxPwrd2, 18:16, scratch150, 31:29);
468  s(McEmemArbCfg, 8:0, scratch151, 8:0);
469  s(McEmemArbCfg, 20:16, scratch151, 13:9);
470  s(McEmemArbCfg, 31:24, scratch151, 21:14);
471  s(EmcWdvChk, 5:0, scratch151, 27:22);
472  s(EmcPmacroTxPwrd2, 22:19, scratch151, 31:28);
473  s(McEmemArbMisc1, 12:0, scratch152, 12:0);
474  s(McEmemArbMisc1, 25:21, scratch152, 17:13);
475  s(McEmemArbMisc1, 31:28, scratch152, 21:18);
476  s(EmcCmdBrlshft0, 5:0, scratch152, 27:22);
477  s(EmcPmacroTxPwrd2, 26:23, scratch152, 31:28);
478  s(EmcMrsWaitCnt2, 9:0, scratch153, 9:0);
479  s(EmcMrsWaitCnt2, 26:16, scratch153, 20:10);
480  s(EmcPmacroIbRxrt, 10:0, scratch153, 31:21);
481  s(EmcMrsWaitCnt, 9:0, scratch154, 9:0);
482  s(EmcMrsWaitCnt, 26:16, scratch154, 20:10);
483  s(EmcPmacroDdllLongCmd_4, 10:0, scratch154, 31:21);
484  s(EmcAutoCalInterval, 20:0, scratch155, 20:0);
485  s(McEmemArbOutstandingReq, 8:0, scratch155, 29:21);
486  s(McEmemArbOutstandingReq, 31:30, scratch155, 31:30);
487  s(McEmemArbRefpbHpCtrl, 6:0, scratch156, 6:0);
488  s(McEmemArbRefpbHpCtrl, 14:8, scratch156, 13:7);
489  s(McEmemArbRefpbHpCtrl, 22:16, scratch156, 20:14);
490  s(EmcCmdBrlshft1, 5:0, scratch156, 26:21);
491  s(EmcRrd, 4:0, scratch156, 31:27);
492  s(EmcQuseBrlshft0, 19:0, scratch157, 19:0);
493  s(EmcFbioCfg8, 27:16, scratch157, 31:20);
494  s(EmcQuseBrlshft1, 19:0, scratch158, 19:0);
495  s(EmcTxsrDll, 11:0, scratch158, 31:20);
496  s(EmcQuseBrlshft2, 19:0, scratch159, 19:0);
497  s(EmcTxdsrvttgen, 11:0, scratch159, 31:20);
498  s(EmcQuseBrlshft3, 19:0, scratch160, 19:0);
499  s(EmcPmacroVttgenCtrl0, 3:0, scratch160, 23:20);
500  s(EmcPmacroVttgenCtrl0, 11:8, scratch160, 27:24);
501  s(EmcPmacroVttgenCtrl0, 19:16, scratch160, 31:28);
502  s(EmcPmacroVttgenCtrl1, 19:0, scratch161, 19:0);
503  s(EmcCmdBrlshft2, 5:0, scratch161, 25:20);
504  s(EmcCmdBrlshft3, 5:0, scratch161, 31:26);
505  s(EmcAutoCalConfig3, 5:0, scratch162, 5:0);
506  s(EmcAutoCalConfig3, 13:8, scratch162, 11:6);
507  s(EmcAutoCalConfig3, 18:16, scratch162, 14:12);
508  s(EmcAutoCalConfig3, 22:20, scratch162, 17:15);
509  s(EmcTRefBw, 13:0, scratch162, 31:18);
510  s(EmcAutoCalConfig4, 5:0, scratch163, 5:0);
511  s(EmcAutoCalConfig4, 13:8, scratch163, 11:6);
512  s(EmcAutoCalConfig4, 18:16, scratch163, 14:12);
513  s(EmcAutoCalConfig4, 22:20, scratch163, 17:15);
514  s(EmcQpop, 6:0, scratch163, 24:18);
515  s(EmcQpop, 22:16, scratch163, 31:25);
516  s(EmcAutoCalConfig5, 5:0, scratch164, 5:0);
517  s(EmcAutoCalConfig5, 13:8, scratch164, 11:6);
518  s(EmcAutoCalConfig5, 18:16, scratch164, 14:12);
519  s(EmcAutoCalConfig5, 22:20, scratch164, 17:15);
520  s(EmcPmacroAutocalCfgCommon, 5:0, scratch164, 23:18);
521  s(EmcPmacroAutocalCfgCommon, 13:8, scratch164, 29:24);
522  s(EmcPmacroAutocalCfgCommon, 16:16, scratch164, 30:30);
523  s(EmcPmacroTxPwrd2, 27:27, scratch164, 31:31);
524  s(EmcAutoCalConfig6, 5:0, scratch165, 5:0);
525  s(EmcAutoCalConfig6, 13:8, scratch165, 11:6);
526  s(EmcAutoCalConfig6, 18:16, scratch165, 14:12);
527  s(EmcAutoCalConfig6, 22:20, scratch165, 17:15);
528  s(EmcWev, 5:0, scratch165, 23:18);
529  s(EmcWsv, 5:0, scratch165, 29:24);
530  s(EmcPmacroTxPwrd2, 29:28, scratch165, 31:30);
531  s(EmcAutoCalConfig7, 5:0, scratch166, 5:0);
532  s(EmcAutoCalConfig7, 13:8, scratch166, 11:6);
533  s(EmcAutoCalConfig7, 18:16, scratch166, 14:12);
534  s(EmcAutoCalConfig7, 22:20, scratch166, 17:15);
535  s(EmcCfg3, 2:0, scratch166, 20:18);
536  s(EmcCfg3, 6:4, scratch166, 23:21);
537  s(EmcQuseWidth, 3:0, scratch166, 27:24);
538  s(EmcQuseWidth, 29:28, scratch166, 29:28);
539  s(EmcPmacroTxPwrd3, 1:0, scratch166, 31:30);
540  s(EmcAutoCalConfig8, 5:0, scratch167, 5:0);
541  s(EmcAutoCalConfig8, 13:8, scratch167, 11:6);
542  s(EmcAutoCalConfig8, 18:16, scratch167, 14:12);
543  s(EmcAutoCalConfig8, 22:20, scratch167, 17:15);
544  s(EmcPmacroBgBiasCtrl0, 2:0, scratch167, 20:18);
545  s(EmcPmacroBgBiasCtrl0, 6:4, scratch167, 23:21);
546  s(McEmemArbTimingRcd, 5:0, scratch167, 29:24);
547  s(EmcPmacroTxPwrd3, 3:2, scratch167, 31:30);
548  s(EmcXm2CompPadCtrl2, 17:0, scratch168, 17:0);
549  s(McEmemArbTimingCcdmw, 5:0, scratch168, 23:18);
550  s(McEmemArbOverride, 27:27, scratch168, 24:24);
551  s(McEmemArbOverride, 26:26, scratch168, 25:25);
552  s(McEmemArbOverride, 16:16, scratch168, 26:26);
553  s(McEmemArbOverride, 10:10, scratch168, 27:27);
554  s(McEmemArbOverride, 4:4, scratch168, 28:28);
555  s(McEmemArbOverride, 3:3, scratch168, 29:29);
556  s(EmcPmacroTxPwrd3, 5:4, scratch168, 31:30);
557  s(EmcXm2CompPadCtrl3, 17:0, scratch169, 17:0);
558  s(EmcRext, 4:0, scratch169, 22:18);
559  s(EmcTClkStop, 4:0, scratch169, 27:23);
560  s(EmcPmacroTxPwrd3, 9:6, scratch169, 31:28);
561  s(EmcZcalWaitCnt, 10:0, scratch170, 10:0);
562  s(EmcZcalWaitCnt, 21:16, scratch170, 16:11);
563  s(EmcZcalWaitCnt, 31:31, scratch170, 17:17);
564  s(EmcWext, 4:0, scratch170, 22:18);
565  s(EmcRefctrl2, 0:0, scratch170, 23:23);
566  s(EmcRefctrl2, 26:24, scratch170, 26:24);
567  s(EmcRefctrl2, 31:31, scratch170, 27:27);
568  s(EmcPmacroTxPwrd3, 13:10, scratch170, 31:28);
569  s(EmcZcalMrwCmd, 7:0, scratch171, 7:0);
570  s(EmcZcalMrwCmd, 23:16, scratch171, 15:8);
571  s(EmcZcalMrwCmd, 31:30, scratch171, 17:16);
572  s(EmcWeDuration, 4:0, scratch171, 22:18);
573  s(EmcWsDuration, 4:0, scratch171, 27:23);
574  s(EmcPmacroTxPwrd3, 19:16, scratch171, 31:28);
575  s(EmcSwizzleRank0Byte0, 2:0, scratch172, 2:0);
576  s(EmcSwizzleRank0Byte0, 6:4, scratch172, 5:3);
577  s(EmcSwizzleRank0Byte0, 10:8, scratch172, 8:6);
578  s(EmcSwizzleRank0Byte0, 14:12, scratch172, 11:9);
579  s(EmcSwizzleRank0Byte0, 18:16, scratch172, 14:12);
580  s(EmcSwizzleRank0Byte0, 22:20, scratch172, 17:15);
581  s(EmcPutermWidth, 31:31, scratch172, 18:18);
582  s(EmcPutermWidth, 3:0, scratch172, 22:19);
583  s(McEmemArbTimingRrd, 4:0, scratch172, 27:23);
584  s(EmcPmacroTxPwrd3, 23:20, scratch172, 31:28);
585  s(EmcSwizzleRank0Byte1, 2:0, scratch173, 2:0);
586  s(EmcSwizzleRank0Byte1, 6:4, scratch173, 5:3);
587  s(EmcSwizzleRank0Byte1, 10:8, scratch173, 8:6);
588  s(EmcSwizzleRank0Byte1, 14:12, scratch173, 11:9);
589  s(EmcSwizzleRank0Byte1, 18:16, scratch173, 14:12);
590  s(EmcSwizzleRank0Byte1, 22:20, scratch173, 17:15);
591  s(McEmemArbTimingR2R, 4:0, scratch173, 22:18);
592  s(McEmemArbTimingW2W, 4:0, scratch173, 27:23);
593  s(EmcPmacroTxPwrd3, 27:24, scratch173, 31:28);
594  s(EmcSwizzleRank0Byte2, 2:0, scratch174, 2:0);
595  s(EmcSwizzleRank0Byte2, 6:4, scratch174, 5:3);
596  s(EmcSwizzleRank0Byte2, 10:8, scratch174, 8:6);
597  s(EmcSwizzleRank0Byte2, 14:12, scratch174, 11:9);
598  s(EmcSwizzleRank0Byte2, 18:16, scratch174, 14:12);
599  s(EmcSwizzleRank0Byte2, 22:20, scratch174, 17:15);
600  s(EmcPmacroTxPwrd3, 29:28, scratch174, 19:18);
601  s(EmcPmacroTxSelClkSrc0, 11:0, scratch174, 31:20);
602  s(EmcSwizzleRank0Byte3, 2:0, scratch175, 2:0);
603  s(EmcSwizzleRank0Byte3, 6:4, scratch175, 5:3);
604  s(EmcSwizzleRank0Byte3, 10:8, scratch175, 8:6);
605  s(EmcSwizzleRank0Byte3, 14:12, scratch175, 11:9);
606  s(EmcSwizzleRank0Byte3, 18:16, scratch175, 14:12);
607  s(EmcSwizzleRank0Byte3, 22:20, scratch175, 17:15);
608  s(EmcPmacroTxSelClkSrc0, 27:16, scratch175, 29:18);
609  s(EmcPmacroTxSelClkSrc1, 1:0, scratch175, 31:30);
610  s(EmcSwizzleRank1Byte0, 2:0, scratch176, 2:0);
611  s(EmcSwizzleRank1Byte0, 6:4, scratch176, 5:3);
612  s(EmcSwizzleRank1Byte0, 10:8, scratch176, 8:6);
613  s(EmcSwizzleRank1Byte0, 14:12, scratch176, 11:9);
614  s(EmcSwizzleRank1Byte0, 18:16, scratch176, 14:12);
615  s(EmcSwizzleRank1Byte0, 22:20, scratch176, 17:15);
616  s(EmcPmacroTxSelClkSrc1, 11:2, scratch176, 27:18);
617  s(EmcPmacroTxSelClkSrc1, 19:16, scratch176, 31:28);
618  s(EmcSwizzleRank1Byte1, 2:0, scratch177, 2:0);
619  s(EmcSwizzleRank1Byte1, 6:4, scratch177, 5:3);
620  s(EmcSwizzleRank1Byte1, 10:8, scratch177, 8:6);
621  s(EmcSwizzleRank1Byte1, 14:12, scratch177, 11:9);
622  s(EmcSwizzleRank1Byte1, 18:16, scratch177, 14:12);
623  s(EmcSwizzleRank1Byte1, 22:20, scratch177, 17:15);
624  s(EmcPmacroTxSelClkSrc1, 27:20, scratch177, 25:18);
625  s(EmcPmacroTxSelClkSrc3, 5:0, scratch177, 31:26);
626  s(EmcSwizzleRank1Byte2, 2:0, scratch178, 2:0);
627  s(EmcSwizzleRank1Byte2, 6:4, scratch178, 5:3);
628  s(EmcSwizzleRank1Byte2, 10:8, scratch178, 8:6);
629  s(EmcSwizzleRank1Byte2, 14:12, scratch178, 11:9);
630  s(EmcSwizzleRank1Byte2, 18:16, scratch178, 14:12);
631  s(EmcSwizzleRank1Byte2, 22:20, scratch178, 17:15);
632  s(EmcPmacroTxSelClkSrc3, 11:6, scratch178, 23:18);
633  s(EmcPmacroTxSelClkSrc3, 23:16, scratch178, 31:24);
634  s(EmcSwizzleRank1Byte3, 2:0, scratch179, 2:0);
635  s(EmcSwizzleRank1Byte3, 6:4, scratch179, 5:3);
636  s(EmcSwizzleRank1Byte3, 10:8, scratch179, 8:6);
637  s(EmcSwizzleRank1Byte3, 14:12, scratch179, 11:9);
638  s(EmcSwizzleRank1Byte3, 18:16, scratch179, 14:12);
639  s(EmcSwizzleRank1Byte3, 22:20, scratch179, 17:15);
640  s(EmcPmacroTxSelClkSrc3, 27:24, scratch179, 21:18);
641  s(EmcPmacroTxSelClkSrc2, 9:0, scratch179, 31:22);
642  s(EmcPmacroCmdBrickCtrlFdpd, 17:0, scratch180, 17:0);
643  s(EmcPmacroTxSelClkSrc2, 11:10, scratch180, 19:18);
644  s(EmcPmacroTxSelClkSrc2, 27:16, scratch180, 31:20);
645  s(EmcPmacroDataBrickCtrlFdpd, 17:0, scratch181, 17:0);
646  s(EmcPmacroTxSelClkSrc4, 11:0, scratch181, 29:18);
647  s(EmcPmacroTxSelClkSrc4, 17:16, scratch181, 31:30);
648  s(EmcFbioCfg7, 16:0, scratch182, 16:0);
649  s(McEmemArbRefpbBankCtrl, 6:0, scratch182, 23:17);
650  s(McEmemArbRefpbBankCtrl, 14:8, scratch182, 30:24);
651  s(McEmemArbRefpbBankCtrl, 31:31, scratch182, 31:31);
652  s(EmcDynSelfRefControl, 15:0, scratch183, 15:0);
653  s(EmcDynSelfRefControl, 31:31, scratch183, 16:16);
654  s(EmcPmacroTxSelClkSrc4, 27:18, scratch183, 26:17);
655  s(EmcPmacroTxSelClkSrc5, 4:0, scratch183, 31:27);
656  s(EmcDllCfg1, 16:0, scratch184, 16:0);
657  s(EmcPmacroTxSelClkSrc5, 11:5, scratch184, 23:17);
658  s(EmcPmacroTxSelClkSrc5, 23:16, scratch184, 31:24);
659  s(EmcPmacroPadCfgCtrl, 1:0, scratch185, 1:0);
660  s(EmcPmacroPadCfgCtrl, 6:5, scratch185, 3:2);
661  s(EmcPmacroPadCfgCtrl, 11:9, scratch185, 6:4);
662  s(EmcPmacroPadCfgCtrl, 13:13, scratch185, 7:7);
663  s(EmcPmacroPadCfgCtrl, 17:16, scratch185, 9:8);
664  s(EmcPmacroPadCfgCtrl, 21:20, scratch185, 11:10);
665  s(EmcPmacroPadCfgCtrl, 25:24, scratch185, 13:12);
666  s(EmcPmacroPadCfgCtrl, 30:28, scratch185, 16:14);
667  s(EmcPmacroTxSelClkSrc5, 27:24, scratch185, 20:17);
668  s(EmcPmacroCmdPadTxCtrl, 1:0, scratch185, 22:21);
669  s(EmcPmacroCmdPadTxCtrl, 5:4, scratch185, 24:23);
670  s(EmcPmacroCmdPadTxCtrl, 9:8, scratch185, 26:25);
671  s(EmcPmacroCmdPadTxCtrl, 13:12, scratch185, 28:27);
672  s(EmcPmacroCmdPadTxCtrl, 16:16, scratch185, 29:29);
673  s(EmcPmacroCmdPadTxCtrl, 21:20, scratch185, 31:30);
674  s(EmcRefresh, 15:0, scratch186, 15:0);
675  s(EmcCmdQ, 4:0, scratch186, 20:16);
676  s(EmcCmdQ, 10:8, scratch186, 23:21);
677  s(EmcCmdQ, 14:12, scratch186, 26:24);
678  s(EmcCmdQ, 28:24, scratch186, 31:27);
679  s(EmcAcpdControl, 15:0, scratch187, 15:0);
680  s(EmcAutoCalVrefSel1, 15:0, scratch187, 31:16);
681  s(EmcXm2CompPadCtrl, 1:0, scratch188, 1:0);
682  s(EmcXm2CompPadCtrl, 6:3, scratch188, 5:2);
683  s(EmcXm2CompPadCtrl, 9:9, scratch188, 6:6);
684  s(EmcXm2CompPadCtrl, 19:11, scratch188, 15:7);
685  s(EmcCfgDigDllPeriod, 15:0, scratch188, 31:16);
686  s(EmcCfgDigDll_1, 15:0, scratch189, 15:0);
687  s(EmcPreRefreshReqCnt, 15:0, scratch189, 31:16);
688  s(EmcPmacroCmdPadTxCtrl, 27:24, scratch190, 19:16);
689  s(EmcPmacroDataPadTxCtrl, 1:0, scratch190, 21:20);
690  s(EmcPmacroDataPadTxCtrl, 5:4, scratch190, 23:22);
691  s(EmcPmacroDataPadTxCtrl, 9:8, scratch190, 25:24);
692  s(EmcPmacroDataPadTxCtrl, 13:12, scratch190, 27:26);
693  s(EmcPmacroDataPadTxCtrl, 16:16, scratch190, 28:28);
694  s(EmcPmacroDataPadTxCtrl, 21:20, scratch190, 30:29);
695  s(EmcPmacroDataPadTxCtrl, 24:24, scratch190, 31:31);
696  s(EmcPmacroDataPadTxCtrl, 27:25, scratch191, 2:0);
697 
698  s(EmcPinGpio, 1:0, scratch8, 31:30);
699  s(EmcPinGpioEn, 1:0, scratch9, 31:30);
700  s(EmcDevSelect, 1:0, scratch10, 31:30);
701  s(EmcZcalWarmColdBootEnables, 1:0, scratch11, 31:30);
702  s(EmcCfgDigDllPeriodWarmBoot, 1:0, scratch12, 31:30);
703  s32(EmcBctSpare13, scratch31);
704  s32(EmcBctSpare12, scratch32);
705  s32(EmcBctSpare7, scratch33);
706  s32(EmcBctSpare6, scratch40);
707  s32(EmcBctSpare5, scratch42);
708  s32(EmcBctSpare4, scratch44);
709  s32(SwizzleRankByteEncode, scratch45);
710  s32(EmcBctSpare2, scratch46);
711  s32(EmcBctSpare1, scratch47);
712  s32(EmcBctSpare0, scratch48);
713  s32(EmcBctSpare9, scratch50);
714  s32(EmcBctSpare8, scratch51);
715  s32(BootRomPatchData, scratch56);
716  s32(BootRomPatchControl, scratch57);
717  s(McClkenOverrideAllWarmBoot, 0:0, scratch58, 31:31);
718  s(EmcClkenOverrideAllWarmBoot, 0:0, scratch59, 30:30);
719  s(EmcMrsWarmBootEnable, 0:0, scratch59, 31:31);
720  s(ClearClk2Mc1, 0:0, scratch60, 30:30);
721  s(EmcWarmBootExtraModeRegWriteEnable, 0:0, scratch60, 31:31);
722  s(ClkRstControllerPllmMisc2OverrideEnable, 0:0, scratch61, 30:30);
723  s(EmcDbgWriteMux, 0:0, scratch61, 31:31);
724  s(EmcExtraRefreshNum, 2:0, scratch62, 31:29);
725  s(PmcIoDpd3ReqWait, 2:0, scratch68, 30:28);
726  s(AhbArbitrationXbarCtrlMemInitDone, 0:0, scratch68, 31:31);
727  s(MemoryType, 2:0, scratch69, 30:28);
728  s(PmcIoDpd4ReqWait, 2:0, scratch70, 30:28);
729  s(EmcTimingControlWait, 7:0, scratch86, 31:24);
730  s(EmcZcalWarmBootWait, 7:0, scratch87, 31:24);
731  s(WarmBootWait, 7:0, scratch88, 31:24);
732  s(EmcPinProgramWait, 7:0, scratch89, 31:24);
733  s(EmcAutoCalWait, 9:0, scratch101, 31:22);
734  s(SwizzleRankByteEncode, 15:0, scratch190, 15:0);
735 
736  switch (sdram->MemoryType) {
739  s(EmcMrwLpddr2ZcalWarmBoot, 23:16, scratch5, 7:0);
740  s(EmcMrwLpddr2ZcalWarmBoot, 7:0, scratch5, 15:8);
741  s(EmcWarmBootMrwExtra, 23:16, scratch5, 23:16);
742  s(EmcWarmBootMrwExtra, 7:0, scratch5, 31:24);
743  s(EmcMrwLpddr2ZcalWarmBoot, 31:30, scratch6, 1:0);
744  s(EmcWarmBootMrwExtra, 31:30, scratch6, 3:2);
745  s(EmcMrwLpddr2ZcalWarmBoot, 27:26, scratch6, 5:4);
746  s(EmcWarmBootMrwExtra, 27:26, scratch6, 7:6);
747  s(EmcMrw6, 27:0, scratch8, 27:0);
748  s(EmcMrw6, 31:30, scratch8, 29:28);
749  s(EmcMrw8, 27:0, scratch9, 27:0);
750  s(EmcMrw8, 31:30, scratch9, 29:28);
751  s(EmcMrw9, 27:0, scratch10, 27:0);
752  s(EmcMrw9, 31:30, scratch10, 29:28);
753  s(EmcMrw10, 27:0, scratch11, 27:0);
754  s(EmcMrw10, 31:30, scratch11, 29:28);
755  s(EmcMrw12, 27:0, scratch12, 27:0);
756  s(EmcMrw12, 31:30, scratch12, 29:28);
757  s(EmcMrw13, 27:0, scratch13, 27:0);
758  s(EmcMrw13, 31:30, scratch13, 29:28);
759  s(EmcMrw14, 27:0, scratch14, 27:0);
760  s(EmcMrw14, 31:30, scratch14, 29:28);
761  s(EmcMrw1, 7:0, scratch15, 7:0);
762  s(EmcMrw1, 23:16, scratch15, 15:8);
763  s(EmcMrw1, 27:26, scratch15, 17:16);
764  s(EmcMrw1, 31:30, scratch15, 19:18);
765  s(EmcWarmBootMrwExtra, 7:0, scratch16, 7:0);
766  s(EmcWarmBootMrwExtra, 23:16, scratch16, 15:8);
767  s(EmcWarmBootMrwExtra, 27:26, scratch16, 17:16);
768  s(EmcWarmBootMrwExtra, 31:30, scratch16, 19:18);
769  s(EmcMrw2, 7:0, scratch17, 7:0);
770  s(EmcMrw2, 23:16, scratch17, 15:8);
771  s(EmcMrw2, 27:26, scratch17, 17:16);
772  s(EmcMrw2, 31:30, scratch17, 19:18);
773  s(EmcMrw3, 7:0, scratch18, 7:0);
774  s(EmcMrw3, 23:16, scratch18, 15:8);
775  s(EmcMrw3, 27:26, scratch18, 17:16);
776  s(EmcMrw3, 31:30, scratch18, 19:18);
777  s(EmcMrw4, 7:0, scratch19, 7:0);
778  s(EmcMrw4, 23:16, scratch19, 15:8);
779  s(EmcMrw4, 27:26, scratch19, 17:16);
780  s(EmcMrw4, 31:30, scratch19, 19:18);
781  break;
783  s(EmcMrs, 13:0, scratch5, 13:0);
784  s(EmcEmrs, 13:0, scratch5, 27:14);
785  s(EmcMrs, 21:20, scratch5, 29:28);
786  s(EmcMrs, 31:30, scratch5, 31:30);
787  s(EmcEmrs2, 13:0, scratch8, 13:0);
788  s(EmcEmrs3, 13:0, scratch8, 27:14);
789  s(EmcEmrs, 21:20, scratch8, 29:28);
790  s(EmcWarmBootMrsExtra, 13:0, scratch9, 13:0);
791  s(EmcEmrs, 31:30, scratch9, 15:14);
792  s(EmcEmrs2, 21:20, scratch9, 17:16);
793  s(EmcEmrs2, 31:30, scratch9, 19:18);
794  s(EmcEmrs3, 21:20, scratch9, 21:20);
795  s(EmcEmrs3, 31:30, scratch9, 23:22);
796  s(EmcWarmBootMrsExtra, 31:30, scratch9, 25:24);
797  s(EmcWarmBootMrsExtra, 21:20, scratch9, 27:26);
798  s(EmcZqCalDdr3WarmBoot, 31:30, scratch9, 29:28);
799  s(EmcMrs, 27:26, scratch10, 1:0);
800  s(EmcEmrs, 27:26, scratch10, 3:2);
801  s(EmcEmrs2, 27:26, scratch10, 5:4);
802  s(EmcEmrs3, 27:26, scratch10, 7:6);
803  s(EmcWarmBootMrsExtra, 27:27, scratch10, 8:8);
804  s(EmcWarmBootMrsExtra, 26:26, scratch10, 9:9);
805  s(EmcZqCalDdr3WarmBoot, 0:0, scratch10, 10:10);
806  s(EmcZqCalDdr3WarmBoot, 4:4, scratch10, 11:11);
807  break;
808  default:
809  printk(BIOS_CRIT, "ERROR: %s() unrecognized MemoryType %d!\n",
810  __func__, sdram->MemoryType);
811  }
812 
813  s32(EmcCmdMappingByte, secure_scratch8);
814  s32(EmcPmacroBrickMapping0, secure_scratch9);
815  s32(EmcPmacroBrickMapping1, secure_scratch10);
816  s32(EmcPmacroBrickMapping2, secure_scratch11);
817  s32(McVideoProtectGpuOverride0, secure_scratch12);
818  s(EmcCmdMappingCmd0_0, 6:0, secure_scratch13, 6:0);
819  s(EmcCmdMappingCmd0_0, 14:8, secure_scratch13, 13:7);
820  s(EmcCmdMappingCmd0_0, 22:16, secure_scratch13, 20:14);
821  s(EmcCmdMappingCmd0_0, 30:24, secure_scratch13, 27:21);
822  s(McVideoProtectBomAdrHi, 1:0, secure_scratch13, 29:28);
823  s(McVideoProtectWriteAccess, 1:0, secure_scratch13, 31:30);
824  s(EmcCmdMappingCmd0_1, 6:0, secure_scratch14, 6:0);
825  s(EmcCmdMappingCmd0_1, 14:8, secure_scratch14, 13:7);
826  s(EmcCmdMappingCmd0_1, 22:16, secure_scratch14, 20:14);
827  s(EmcCmdMappingCmd0_1, 30:24, secure_scratch14, 27:21);
828  s(McSecCarveoutAdrHi, 1:0, secure_scratch14, 29:28);
829  s(McMtsCarveoutAdrHi, 1:0, secure_scratch14, 31:30);
830  s(EmcCmdMappingCmd1_0, 6:0, secure_scratch15, 6:0);
831  s(EmcCmdMappingCmd1_0, 14:8, secure_scratch15, 13:7);
832  s(EmcCmdMappingCmd1_0, 22:16, secure_scratch15, 20:14);
833  s(EmcCmdMappingCmd1_0, 30:24, secure_scratch15, 27:21);
834  s(McGeneralizedCarveout5BomHi, 1:0, secure_scratch15, 29:28);
835  s(McGeneralizedCarveout3BomHi, 1:0, secure_scratch15, 31:30);
836  s(EmcCmdMappingCmd1_1, 6:0, secure_scratch16, 6:0);
837  s(EmcCmdMappingCmd1_1, 14:8, secure_scratch16, 13:7);
838  s(EmcCmdMappingCmd1_1, 22:16, secure_scratch16, 20:14);
839  s(EmcCmdMappingCmd1_1, 30:24, secure_scratch16, 27:21);
840  s(McGeneralizedCarveout2BomHi, 1:0, secure_scratch16, 29:28);
841  s(McGeneralizedCarveout4BomHi, 1:0, secure_scratch16, 31:30);
842  s(EmcCmdMappingCmd2_0, 6:0, secure_scratch17, 6:0);
843  s(EmcCmdMappingCmd2_0, 14:8, secure_scratch17, 13:7);
844  s(EmcCmdMappingCmd2_0, 22:16, secure_scratch17, 20:14);
845  s(EmcCmdMappingCmd2_0, 30:24, secure_scratch17, 27:21);
846  s(McGeneralizedCarveout1BomHi, 1:0, secure_scratch17, 29:28);
847  s(EmcAdrCfg, 0:0, secure_scratch17, 30:30);
848  s(EmcFbioSpare, 1:1, secure_scratch17, 31:31);
849  s(EmcCmdMappingCmd2_1, 6:0, secure_scratch18, 6:0);
850  s(EmcCmdMappingCmd2_1, 14:8, secure_scratch18, 13:7);
851  s(EmcCmdMappingCmd2_1, 22:16, secure_scratch18, 20:14);
852  s(EmcCmdMappingCmd2_1, 30:24, secure_scratch18, 27:21);
853  s(EmcFbioCfg8, 15:15, secure_scratch18, 28:28);
854  s(McEmemAdrCfg, 0:0, secure_scratch18, 29:29);
855  s(McSecCarveoutProtectWriteAccess, 0:0, secure_scratch18, 30:30);
856  s(McMtsCarveoutRegCtrl, 0:0, secure_scratch18, 31:31);
857  s(EmcCmdMappingCmd3_0, 6:0, secure_scratch19, 6:0);
858  s(EmcCmdMappingCmd3_0, 14:8, secure_scratch19, 13:7);
859  s(EmcCmdMappingCmd3_0, 22:16, secure_scratch19, 20:14);
860  s(EmcCmdMappingCmd3_0, 30:24, secure_scratch19, 27:21);
861  s(McGeneralizedCarveout2Cfg0, 6:3, secure_scratch19, 31:28);
862  s(EmcCmdMappingCmd3_1, 6:0, secure_scratch20, 6:0);
863  s(EmcCmdMappingCmd3_1, 14:8, secure_scratch20, 13:7);
864  s(EmcCmdMappingCmd3_1, 22:16, secure_scratch20, 20:14);
865  s(EmcCmdMappingCmd3_1, 30:24, secure_scratch20, 27:21);
866  s(McGeneralizedCarveout2Cfg0, 10:7, secure_scratch20, 31:28);
867  s(McGeneralizedCarveout4Cfg0, 26:0, secure_scratch39, 26:0);
868  s(McGeneralizedCarveout2Cfg0, 17:14, secure_scratch39, 30:27);
869  s(McVideoProtectVprOverride, 0:0, secure_scratch39, 31:31);
870  s(McGeneralizedCarveout5Cfg0, 26:0, secure_scratch40, 26:0);
871  s(McGeneralizedCarveout2Cfg0, 21:18, secure_scratch40, 30:27);
872  s(McVideoProtectVprOverride, 1:1, secure_scratch40, 31:31);
873  s(EmcCmdMappingCmd0_2, 6:0, secure_scratch41, 6:0);
874  s(EmcCmdMappingCmd0_2, 14:8, secure_scratch41, 13:7);
875  s(EmcCmdMappingCmd0_2, 22:16, secure_scratch41, 20:14);
876  s(EmcCmdMappingCmd0_2, 27:24, secure_scratch41, 24:21);
877  s(McGeneralizedCarveout1Cfg0, 6:3, secure_scratch41, 28:25);
878  s(McGeneralizedCarveout2Cfg0, 13:11, secure_scratch41, 31:29);
879  s(EmcCmdMappingCmd1_2, 6:0, secure_scratch42, 6:0);
880  s(EmcCmdMappingCmd1_2, 14:8, secure_scratch42, 13:7);
881  s(EmcCmdMappingCmd1_2, 22:16, secure_scratch42, 20:14);
882  s(EmcCmdMappingCmd1_2, 27:24, secure_scratch42, 24:21);
883  s(McGeneralizedCarveout1Cfg0, 13:7, secure_scratch42, 31:25);
884  s(EmcCmdMappingCmd2_2, 6:0, secure_scratch43, 6:0);
885  s(EmcCmdMappingCmd2_2, 14:8, secure_scratch43, 13:7);
886  s(EmcCmdMappingCmd2_2, 22:16, secure_scratch43, 20:14);
887  s(EmcCmdMappingCmd2_2, 27:24, secure_scratch43, 24:21);
888  s(McGeneralizedCarveout1Cfg0, 17:14, secure_scratch43, 28:25);
889  s(McGeneralizedCarveout3Cfg0, 13:11, secure_scratch43, 31:29);
890  s(EmcCmdMappingCmd3_2, 6:0, secure_scratch44, 6:0);
891  s(EmcCmdMappingCmd3_2, 14:8, secure_scratch44, 13:7);
892  s(EmcCmdMappingCmd3_2, 22:16, secure_scratch44, 20:14);
893  s(EmcCmdMappingCmd3_2, 27:24, secure_scratch44, 24:21);
894  s(McGeneralizedCarveout1Cfg0, 21:18, secure_scratch44, 28:25);
895  s(McVideoProtectVprOverride, 3:2, secure_scratch44, 30:29);
896  s(McVideoProtectVprOverride, 6:6, secure_scratch44, 31:31);
897  s(McEmemAdrCfgChannelMask, 31:9, secure_scratch45, 22:0);
898  s(McEmemAdrCfgDev0, 2:0, secure_scratch45, 25:23);
899  s(McEmemAdrCfgDev0, 9:8, secure_scratch45, 27:26);
900  s(McEmemAdrCfgDev0, 19:16, secure_scratch45, 31:28);
901  s(McEmemAdrCfgBankMask0, 31:10, secure_scratch46, 21:0);
902  s(McEmemAdrCfgDev1, 2:0, secure_scratch46, 24:22);
903  s(McEmemAdrCfgDev1, 9:8, secure_scratch46, 26:25);
904  s(McEmemAdrCfgDev1, 19:16, secure_scratch46, 30:27);
905  s(McVideoProtectVprOverride, 7:7, secure_scratch46, 31:31);
906  s(McEmemAdrCfgBankMask1, 31:10, secure_scratch47, 21:0);
907  s(McGeneralizedCarveout3Cfg0, 10:3, secure_scratch47, 29:22);
908  s(McVideoProtectVprOverride, 9:8, secure_scratch47, 31:30);
909  s(McEmemAdrCfgBankMask2, 31:10, secure_scratch48, 21:0);
910  s(McGeneralizedCarveout3Cfg0, 21:14, secure_scratch48, 29:22);
911  s(McVideoProtectVprOverride, 11:11, secure_scratch48, 30:30);
912  s(McVideoProtectVprOverride, 14:14, secure_scratch48, 31:31);
913  s(McVideoProtectGpuOverride1, 15:0, secure_scratch49, 15:0);
914  s(McEmemCfg, 13:0, secure_scratch49, 29:16);
915  s(McEmemCfg, 31:31, secure_scratch49, 30:30);
916  s(McVideoProtectVprOverride, 15:15, secure_scratch49, 31:31);
917  s(McGeneralizedCarveout3Bom, 31:17, secure_scratch50, 14:0);
918  s(McGeneralizedCarveout1Bom, 31:17, secure_scratch50, 29:15);
919  s(McVideoProtectVprOverride, 18:17, secure_scratch50, 31:30);
920  s(McGeneralizedCarveout4Bom, 31:17, secure_scratch51, 14:0);
921  s(McGeneralizedCarveout2Bom, 31:17, secure_scratch51, 29:15);
922  s(McVideoProtectVprOverride, 20:19, secure_scratch51, 31:30);
923  s(McGeneralizedCarveout5Bom, 31:17, secure_scratch52, 14:0);
924  s(McVideoProtectBom, 31:20, secure_scratch52, 26:15);
925  s(McVideoProtectVprOverride, 23:21, secure_scratch52, 29:27);
926  s(McVideoProtectVprOverride, 26:26, secure_scratch52, 30:30);
927  s(McVideoProtectVprOverride, 29:29, secure_scratch52, 31:31);
928  s(McVideoProtectSizeMb, 11:0, secure_scratch53, 11:0);
929  s(McSecCarveoutBom, 31:20, secure_scratch53, 23:12);
930  s(McVideoProtectVprOverride, 31:30, secure_scratch53, 25:24);
931  s(McVideoProtectVprOverride1, 1:0, secure_scratch53, 27:26);
932  s(McVideoProtectVprOverride1, 7:4, secure_scratch53, 31:28);
933  s(McSecCarveoutSizeMb, 11:0, secure_scratch54, 11:0);
934  s(McMtsCarveoutBom, 31:20, secure_scratch54, 23:12);
935  s(McVideoProtectVprOverride1, 15:8, secure_scratch54, 31:24);
936  s(McMtsCarveoutSizeMb, 11:0, secure_scratch55, 11:0);
937  s(McGeneralizedCarveout4Size128kb, 11:0, secure_scratch55, 23:12);
938  s(McVideoProtectVprOverride1, 16:16, secure_scratch55, 24:24);
939  s(McGeneralizedCarveout2Cfg0, 2:0, secure_scratch55, 27:25);
940  s(McGeneralizedCarveout2Cfg0, 25:22, secure_scratch55, 31:28);
941  s(McGeneralizedCarveout3Size128kb, 11:0, secure_scratch56, 11:0);
942  s(McGeneralizedCarveout2Size128kb, 11:0, secure_scratch56, 23:12);
943  s(McGeneralizedCarveout2Cfg0, 26:26, secure_scratch56, 24:24);
944  s(McGeneralizedCarveout1Cfg0, 2:0, secure_scratch56, 27:25);
945  s(McGeneralizedCarveout1Cfg0, 25:22, secure_scratch56, 31:28);
946  s(McGeneralizedCarveout1Size128kb, 11:0, secure_scratch57, 11:0);
947  s(McGeneralizedCarveout5Size128kb, 11:0, secure_scratch57, 23:12);
948  s(McGeneralizedCarveout1Cfg0, 26:26, secure_scratch57, 24:24);
949  s(McGeneralizedCarveout3Cfg0, 2:0, secure_scratch57, 27:25);
950  s(McGeneralizedCarveout3Cfg0, 25:22, secure_scratch57, 31:28);
951  s(McGeneralizedCarveout3Cfg0, 26:26, secure_scratch58, 0:0);
952 
953  s32(McGeneralizedCarveout1Access0, secure_scratch59);
954  s32(McGeneralizedCarveout1Access1, secure_scratch60);
955  s32(McGeneralizedCarveout1Access2, secure_scratch61);
956  s32(McGeneralizedCarveout1Access3, secure_scratch62);
957  s32(McGeneralizedCarveout1Access4, secure_scratch63);
958  s32(McGeneralizedCarveout2Access0, secure_scratch64);
959  s32(McGeneralizedCarveout2Access1, secure_scratch65);
960  s32(McGeneralizedCarveout2Access2, secure_scratch66);
961  s32(McGeneralizedCarveout2Access3, secure_scratch67);
962  s32(McGeneralizedCarveout2Access4, secure_scratch68);
963  s32(McGeneralizedCarveout3Access0, secure_scratch69);
964  s32(McGeneralizedCarveout3Access1, secure_scratch70);
965  s32(McGeneralizedCarveout3Access2, secure_scratch71);
966  s32(McGeneralizedCarveout3Access3, secure_scratch72);
967  s32(McGeneralizedCarveout3Access4, secure_scratch73);
968  s32(McGeneralizedCarveout4Access0, secure_scratch74);
969  s32(McGeneralizedCarveout4Access1, secure_scratch75);
970  s32(McGeneralizedCarveout4Access2, secure_scratch76);
971  s32(McGeneralizedCarveout4Access3, secure_scratch77);
972  s32(McGeneralizedCarveout4Access4, secure_scratch78);
973  s32(McGeneralizedCarveout5Access0, secure_scratch79);
974  s32(McGeneralizedCarveout5Access1, secure_scratch80);
975  s32(McGeneralizedCarveout5Access2, secure_scratch81);
976  s32(McGeneralizedCarveout5Access3, secure_scratch82);
977  s32(McGeneralizedCarveout1ForceInternalAccess0, secure_scratch84);
978  s32(McGeneralizedCarveout1ForceInternalAccess1, secure_scratch85);
979  s32(McGeneralizedCarveout1ForceInternalAccess2, secure_scratch86);
980  s32(McGeneralizedCarveout1ForceInternalAccess3, secure_scratch87);
981  s32(McGeneralizedCarveout1ForceInternalAccess4, secure_scratch88);
982  s32(McGeneralizedCarveout2ForceInternalAccess0, secure_scratch89);
983  s32(McGeneralizedCarveout2ForceInternalAccess1, secure_scratch90);
984  s32(McGeneralizedCarveout2ForceInternalAccess2, secure_scratch91);
985  s32(McGeneralizedCarveout2ForceInternalAccess3, secure_scratch92);
986  s32(McGeneralizedCarveout2ForceInternalAccess4, secure_scratch93);
987  s32(McGeneralizedCarveout3ForceInternalAccess0, secure_scratch94);
988  s32(McGeneralizedCarveout3ForceInternalAccess1, secure_scratch95);
989  s32(McGeneralizedCarveout3ForceInternalAccess2, secure_scratch96);
990  s32(McGeneralizedCarveout3ForceInternalAccess3, secure_scratch97);
991  s32(McGeneralizedCarveout3ForceInternalAccess4, secure_scratch98);
992  s32(McGeneralizedCarveout4ForceInternalAccess0, secure_scratch99);
993  s32(McGeneralizedCarveout4ForceInternalAccess1, secure_scratch100);
994  s32(McGeneralizedCarveout4ForceInternalAccess2, secure_scratch101);
995  s32(McGeneralizedCarveout4ForceInternalAccess3, secure_scratch102);
996  s32(McGeneralizedCarveout4ForceInternalAccess4, secure_scratch103);
997  s32(McGeneralizedCarveout5ForceInternalAccess0, secure_scratch104);
998  s32(McGeneralizedCarveout5ForceInternalAccess1, secure_scratch105);
999  s32(McGeneralizedCarveout5ForceInternalAccess2, secure_scratch106);
1000  s32(McGeneralizedCarveout5ForceInternalAccess3, secure_scratch107);
1001 
1002  /* Locking PMC secure scratch register (8 ~ 15) for writing */
1003  c(0x5555, sec_disable2, 15:0);
1004  /* Locking PMC secure scratch register (4~ 7) for both reading and writing */
1005  c(0xff, sec_disable, 19:12);
1006 
1007  c32(0, scratch2);
1008  s(PllMInputDivider, 7:0, scratch2, 7:0);
1009  s(PllMFeedbackDivider, 7:0, scratch2, 15:8);
1010  s(PllMPostDivider, 4:0, scratch2, 20:16);
1011  s(PllMKVCO, 0:0, scratch2, 21:21);
1012  s(PllMKCP, 1:0, scratch2, 23:22);
1013 
1014  c32(0, scratch35);
1015  s(PllMSetupControl, 15:0, scratch35, 15:0);
1016 
1017  c32(0, scratch3);
1018  s(PllMInputDivider, 7:0, scratch3, 7:0);
1019  c(0x3e, scratch3, 15:8);
1020  c(0, scratch3, 20:16);
1021  s(PllMKVCO, 0:0, scratch3, 21:21);
1022  s(PllMKCP, 1:0, scratch3, 23:22);
1023 
1024  c32(0, scratch36);
1025  s(PllMSetupControl, 23:0, scratch36, 23:0);
1026 
1027  c32(0, scratch4);
1028  s(PllMStableTime, 9:0, scratch4, 9:0);
1029 }
#define printk(level,...)
Definition: stdlib.h:16
#define BIOS_CRIT
BIOS_CRIT - Recovery unlikely.
Definition: loglevel.h:56
static struct tegra_pmc_regs * pmc
Definition: clock.c:19
@ TEGRA_PMC_BASE
Definition: addressmap.h:51
Defines the SDRAM parameter structure.
Definition: emi.h:15
uint32_t MemoryType
Definition: sdram_param.h:56
u32 scratch106
Definition: pmc.h:286
u32 secure_scratch56
Definition: pmc.h:258
u32 secure_scratch43
Definition: pmc.h:245
u32 scratch22
Definition: pmc.h:73
u32 scratch31
Definition: pmc.h:101
u32 secure_scratch68
Definition: pmc.h:270
u32 scratch112
Definition: pmc.h:292
u32 scratch29
Definition: pmc.h:99
u32 scratch104
Definition: pmc.h:284
u32 scratch82
Definition: pmc.h:262
u32 scratch187
Definition: pmc.h:427
u32 secure_scratch50
Definition: pmc.h:252
u32 scratch154
Definition: pmc.h:394
u32 scratch132
Definition: pmc.h:372
u32 scratch35
Definition: pmc.h:105
u32 secure_scratch94
Definition: pmc.h:555
u32 scratch89
Definition: pmc.h:269
u32 scratch46
Definition: pmc.h:162
u32 secure_scratch16
Definition: pmc.h:209
u32 scratch161
Definition: pmc.h:401
u32 secure_scratch96
Definition: pmc.h:557
u32 secure_scratch19
Definition: pmc.h:212
u32 scratch125
Definition: pmc.h:365
u32 scratch27
Definition: pmc.h:97
u32 scratch30
Definition: pmc.h:100
u32 scratch8
Definition: pmc.h:59
u32 scratch151
Definition: pmc.h:391
u32 secure_scratch59
Definition: pmc.h:261
u32 scratch56
Definition: pmc.h:236
u32 scratch183
Definition: pmc.h:423
u32 scratch87
Definition: pmc.h:267
u32 secure_scratch86
Definition: pmc.h:547
u32 scratch91
Definition: pmc.h:271
u32 scratch185
Definition: pmc.h:425
u32 scratch98
Definition: pmc.h:278
u32 sec_disable2
Definition: pmc.h:196
u32 secure_scratch49
Definition: pmc.h:251
u32 scratch95
Definition: pmc.h:275
u32 scratch6
Definition: pmc.h:57
u32 scratch62
Definition: pmc.h:242
u32 secure_scratch65
Definition: pmc.h:267
u32 secure_scratch85
Definition: pmc.h:546
u32 secure_scratch60
Definition: pmc.h:262
u32 scratch174
Definition: pmc.h:414
u32 secure_scratch53
Definition: pmc.h:255
u32 secure_scratch100
Definition: pmc.h:561
u32 secure_scratch105
Definition: pmc.h:566
u32 secure_scratch89
Definition: pmc.h:550
u32 scratch163
Definition: pmc.h:403
u32 scratch77
Definition: pmc.h:257
u32 scratch159
Definition: pmc.h:399
u32 scratch145
Definition: pmc.h:385
u32 scratch134
Definition: pmc.h:374
u32 secure_scratch51
Definition: pmc.h:253
u32 secure_scratch20
Definition: pmc.h:213
u32 scratch97
Definition: pmc.h:277
u32 secure_scratch95
Definition: pmc.h:556
u32 scratch76
Definition: pmc.h:256
u32 scratch40
Definition: pmc.h:110
u32 secure_scratch40
Definition: pmc.h:242
u32 secure_scratch106
Definition: pmc.h:567
u32 secure_scratch67
Definition: pmc.h:269
u32 scratch148
Definition: pmc.h:388
u32 scratch153
Definition: pmc.h:393
u32 scratch157
Definition: pmc.h:397
u32 scratch24
Definition: pmc.h:94
u32 secure_scratch10
Definition: pmc.h:203
u32 scratch149
Definition: pmc.h:389
u32 scratch180
Definition: pmc.h:420
u32 secure_scratch48
Definition: pmc.h:250
u32 secure_scratch64
Definition: pmc.h:266
u32 scratch92
Definition: pmc.h:272
u32 scratch23
Definition: pmc.h:74
u32 scratch147
Definition: pmc.h:387
u32 scratch156
Definition: pmc.h:396
u32 secure_scratch13
Definition: pmc.h:206
u32 scratch71
Definition: pmc.h:251
u32 scratch166
Definition: pmc.h:406
u32 scratch169
Definition: pmc.h:409
u32 scratch135
Definition: pmc.h:375
u32 scratch32
Definition: pmc.h:102
u32 scratch150
Definition: pmc.h:390
u32 scratch28
Definition: pmc.h:98
u32 scratch19
Definition: pmc.h:70
u32 scratch115
Definition: pmc.h:295
u32 scratch140
Definition: pmc.h:380
u32 scratch113
Definition: pmc.h:293
u32 secure_scratch45
Definition: pmc.h:247
u32 secure_scratch76
Definition: pmc.h:278
u32 scratch63
Definition: pmc.h:243
u32 scratch64
Definition: pmc.h:244
u32 scratch11
Definition: pmc.h:62
u32 scratch100
Definition: pmc.h:280
u32 scratch9
Definition: pmc.h:60
u32 secure_scratch103
Definition: pmc.h:564
u32 secure_scratch73
Definition: pmc.h:275
u32 scratch13
Definition: pmc.h:64
u32 scratch165
Definition: pmc.h:405
u32 secure_scratch17
Definition: pmc.h:210
u32 scratch143
Definition: pmc.h:383
u32 secure_scratch47
Definition: pmc.h:249
u32 scratch158
Definition: pmc.h:398
u32 secure_scratch91
Definition: pmc.h:552
u32 scratch146
Definition: pmc.h:386
u32 scratch189
Definition: pmc.h:429
u32 scratch83
Definition: pmc.h:263
u32 scratch126
Definition: pmc.h:366
u32 scratch103
Definition: pmc.h:283
u32 scratch66
Definition: pmc.h:246
u32 scratch188
Definition: pmc.h:428
u32 scratch176
Definition: pmc.h:416
u32 scratch48
Definition: pmc.h:164
u32 secure_scratch81
Definition: pmc.h:542
u32 secure_scratch75
Definition: pmc.h:277
u32 scratch93
Definition: pmc.h:273
u32 scratch129
Definition: pmc.h:369
u32 scratch81
Definition: pmc.h:261
u32 secure_scratch57
Definition: pmc.h:259
u32 scratch17
Definition: pmc.h:68
u32 scratch2
Definition: pmc.h:53
u32 scratch61
Definition: pmc.h:241
u32 secure_scratch39
Definition: pmc.h:241
u32 scratch152
Definition: pmc.h:392
u32 secure_scratch66
Definition: pmc.h:268
u32 secure_scratch98
Definition: pmc.h:559
u32 scratch136
Definition: pmc.h:376
u32 scratch124
Definition: pmc.h:364
u32 scratch94
Definition: pmc.h:274
u32 scratch114
Definition: pmc.h:294
u32 scratch170
Definition: pmc.h:410
u32 scratch42
Definition: pmc.h:112
u32 scratch99
Definition: pmc.h:279
u32 scratch133
Definition: pmc.h:373
u32 scratch65
Definition: pmc.h:245
u32 scratch78
Definition: pmc.h:258
u32 scratch47
Definition: pmc.h:163
u32 secure_scratch88
Definition: pmc.h:549
u32 scratch138
Definition: pmc.h:378
u32 scratch101
Definition: pmc.h:281
u32 secure_scratch58
Definition: pmc.h:260
u32 scratch111
Definition: pmc.h:291
u32 scratch102
Definition: pmc.h:282
u32 scratch130
Definition: pmc.h:370
u32 scratch74
Definition: pmc.h:254
u32 scratch110
Definition: pmc.h:290
u32 scratch128
Definition: pmc.h:368
u32 secure_scratch55
Definition: pmc.h:257
u32 secure_scratch90
Definition: pmc.h:551
u32 secure_scratch44
Definition: pmc.h:246
u32 scratch18
Definition: pmc.h:69
u32 scratch184
Definition: pmc.h:424
u32 scratch59
Definition: pmc.h:239
u32 secure_scratch77
Definition: pmc.h:279
u32 secure_scratch87
Definition: pmc.h:548
u32 scratch50
Definition: pmc.h:166
u32 scratch58
Definition: pmc.h:238
u32 secure_scratch41
Definition: pmc.h:243
u32 secure_scratch18
Definition: pmc.h:211
u32 scratch131
Definition: pmc.h:371
u32 scratch25
Definition: pmc.h:95
u32 scratch182
Definition: pmc.h:422
u32 secure_scratch84
Definition: pmc.h:545
u32 scratch178
Definition: pmc.h:418
u32 scratch127
Definition: pmc.h:367
u32 scratch26
Definition: pmc.h:96
u32 scratch67
Definition: pmc.h:247
u32 scratch155
Definition: pmc.h:395
u32 scratch45
Definition: pmc.h:161
u32 scratch90
Definition: pmc.h:270
u32 secure_scratch101
Definition: pmc.h:562
u32 secure_scratch93
Definition: pmc.h:554
u32 secure_scratch46
Definition: pmc.h:248
u32 scratch172
Definition: pmc.h:412
u32 scratch70
Definition: pmc.h:250
u32 scratch79
Definition: pmc.h:259
u32 scratch72
Definition: pmc.h:252
u32 scratch86
Definition: pmc.h:266
u32 scratch69
Definition: pmc.h:249
u32 secure_scratch70
Definition: pmc.h:272
u32 secure_scratch99
Definition: pmc.h:560
u32 secure_scratch82
Definition: pmc.h:543
u32 scratch190
Definition: pmc.h:430
u32 secure_scratch69
Definition: pmc.h:271
u32 secure_scratch74
Definition: pmc.h:276
u32 secure_scratch72
Definition: pmc.h:274
u32 secure_scratch61
Definition: pmc.h:263
u32 scratch162
Definition: pmc.h:402
u32 secure_scratch54
Definition: pmc.h:256
u32 scratch85
Definition: pmc.h:265
u32 secure_scratch12
Definition: pmc.h:205
u32 secure_scratch79
Definition: pmc.h:281
u32 scratch16
Definition: pmc.h:67
u32 scratch3
Definition: pmc.h:54
u32 secure_scratch92
Definition: pmc.h:553
u32 scratch179
Definition: pmc.h:419
u32 scratch177
Definition: pmc.h:417
u32 secure_scratch71
Definition: pmc.h:273
u32 scratch107
Definition: pmc.h:287
u32 secure_scratch14
Definition: pmc.h:207
u32 scratch51
Definition: pmc.h:167
u32 scratch44
Definition: pmc.h:160
u32 scratch5
Definition: pmc.h:56
u32 scratch123
Definition: pmc.h:363
u32 scratch60
Definition: pmc.h:240
u32 secure_scratch104
Definition: pmc.h:565
u32 scratch4
Definition: pmc.h:55
u32 scratch137
Definition: pmc.h:377
u32 scratch139
Definition: pmc.h:379
u32 scratch186
Definition: pmc.h:426
u32 scratch191
Definition: pmc.h:431
u32 scratch164
Definition: pmc.h:404
u32 scratch108
Definition: pmc.h:288
u32 secure_scratch97
Definition: pmc.h:558
u32 secure_scratch9
Definition: pmc.h:202
u32 scratch68
Definition: pmc.h:248
u32 scratch96
Definition: pmc.h:276
u32 scratch171
Definition: pmc.h:411
u32 secure_scratch11
Definition: pmc.h:204
u32 scratch105
Definition: pmc.h:285
u32 scratch88
Definition: pmc.h:268
u32 scratch12
Definition: pmc.h:63
u32 scratch144
Definition: pmc.h:384
u32 scratch168
Definition: pmc.h:408
u32 secure_scratch15
Definition: pmc.h:208
u32 scratch36
Definition: pmc.h:106
u32 secure_scratch107
Definition: pmc.h:568
u32 scratch80
Definition: pmc.h:260
u32 scratch109
Definition: pmc.h:289
u32 scratch141
Definition: pmc.h:381
u32 secure_scratch8
Definition: pmc.h:201
u32 scratch14
Definition: pmc.h:65
u32 secure_scratch102
Definition: pmc.h:563
u32 scratch57
Definition: pmc.h:237
u32 scratch33
Definition: pmc.h:103
u32 scratch10
Definition: pmc.h:61
u32 scratch15
Definition: pmc.h:66
u32 sec_disable
Definition: pmc.h:32
u32 scratch167
Definition: pmc.h:407
u32 scratch75
Definition: pmc.h:255
u32 scratch173
Definition: pmc.h:413
u32 scratch84
Definition: pmc.h:264
u32 scratch160
Definition: pmc.h:400
u32 scratch7
Definition: pmc.h:58
u32 secure_scratch52
Definition: pmc.h:254
u32 secure_scratch62
Definition: pmc.h:264
u32 scratch142
Definition: pmc.h:382
u32 scratch73
Definition: pmc.h:253
u32 secure_scratch78
Definition: pmc.h:280
u32 secure_scratch80
Definition: pmc.h:541
u32 secure_scratch42
Definition: pmc.h:244
u32 scratch181
Definition: pmc.h:421
u32 scratch175
Definition: pmc.h:415
u32 secure_scratch63
Definition: pmc.h:265
@ NvBootMemoryType_LpDdr2
Definition: sdram_param.h:30
@ NvBootMemoryType_Ddr3
Definition: sdram_param.h:33
void sdram_lp0_save_params(const struct sdram_params *sdram)
Definition: sdram_lp0.c:24
@ NvBootMemoryType_LpDdr4
Definition: sdram_param.h:36
#define s(param, src_bits, pmcreg, dst_bits)
#define c32(value, pmcreg)
#define c(value, pmcreg, dst_bits)
#define s32(param, pmcreg)