5 * Install of build option: Memory
7 * Contains AMD AGESA install macros and test conditions. Output is the
8 * defaults tables reflecting the User's build options selection.
10 * @xrefitem bom "File Content Label" "Release Content"
12 * @e sub-project: Options
13 * @e \$Revision: 49545 $ @e \$Date: 2011-03-25 05:58:58 +0800 (Fri, 25 Mar 2011) $
15 /*****************************************************************************
17 * Copyright (c) 2011, Advanced Micro Devices, Inc.
18 * All rights reserved.
20 * Redistribution and use in source and binary forms, with or without
21 * modification, are permitted provided that the following conditions are met:
22 * * Redistributions of source code must retain the above copyright
23 * notice, this list of conditions and the following disclaimer.
24 * * Redistributions in binary form must reproduce the above copyright
25 * notice, this list of conditions and the following disclaimer in the
26 * documentation and/or other materials provided with the distribution.
27 * * Neither the name of Advanced Micro Devices, Inc. nor the names of
28 * its contributors may be used to endorse or promote products derived
29 * from this software without specific prior written permission.
31 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
32 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
33 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
34 * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
35 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
36 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
37 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
38 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
39 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
40 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 ***************************************************************************/
44 #ifndef _OPTION_MEMORY_INSTALL_H_
45 #define _OPTION_MEMORY_INSTALL_H_
47 #ifndef RUN_BROKEN_AGESA_TESTS
48 #define RUN_BROKEN_AGESA_TESTS 0
51 /*-------------------------------------------------------------------------------
52 * This option file is designed to be included into the platform solution install
53 * file. The platform solution install file will define the options status.
54 * Check to validate the definition
57 /*----------------------------------------------------------------------------------
58 * FEATURE BLOCK FUNCTIONS
60 * This section defines function names that depend upon options that are selected
61 * in the platform solution install file.
64 IN OUT MEM_NB_BLOCK *NBPtr
71 IN MEM_MAIN_DATA_BLOCK *MMPtr
77 BOOLEAN MemMDefRetFalse (
78 IN MEM_MAIN_DATA_BLOCK *MMPtr
84 /* -----------------------------------------------------------------------------*/
88 * This function initializes the northbridge block for dimm identification translator
90 * @param[in,out] *NBPtr - Pointer to the MEM_NB_BLOCK
91 * @param[in,out] *MemPtr - Pointer to the MEM_DATA_STRUCT
92 * @param[in,out] NodeID - ID of current node to construct
93 * @return TRUE - This is the correct constructor for the targeted node.
94 * @return FALSE - This isn't the correct constructor for the targeted node.
96 BOOLEAN MemNIdentifyDimmConstructorRetDef (
97 IN OUT MEM_NB_BLOCK *NBPtr,
98 IN OUT MEM_DATA_STRUCT *MemPtr,
104 /*----------------------------------------------------------------------------------
105 * TABLE FEATURE BLOCK FUNCTIONS
107 * This section defines function names that depend upon options that are selected
108 * in the platform solution install file.
110 UINT8 MemFTableDefRet (
111 IN OUT MEM_TABLE_ALIAS **MTPtr
116 /*----------------------------------------------------------------------------------
117 * FEATURE S3 BLOCK FUNCTIONS
119 * This section defines function names that depend upon options that are selected
120 * in the platform solution install file.
122 BOOLEAN MemFS3DefConstructorRet (
123 IN OUT VOID *S3NBPtr,
124 IN OUT MEM_DATA_STRUCT *MemPtr,
131 #if (OPTION_MEMCTLR_DR == TRUE)
132 #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE))
133 #if (OPTION_S3_MEM_SUPPORT == TRUE)
134 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockDr;
135 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DR MemS3ResumeConstructNBBlockDr
137 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DR MemFS3DefConstructorRet
140 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DR MemFS3DefConstructorRet
142 #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE)
143 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorDr;
144 #define MEM_IDENDIMM_DR MemNIdentifyDimmConstructorDr
146 #define MEM_IDENDIMM_DR MemNIdentifyDimmConstructorRetDef
150 #if (OPTION_MEMCTLR_DA == TRUE || OPTION_MEMCTLR_Ni == TRUE || OPTION_MEMCTLR_RB == TRUE || OPTION_MEMCTLR_PH == TRUE)
151 #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE))
152 #if (OPTION_S3_MEM_SUPPORT == TRUE)
153 #if (OPTION_MEMCTLR_Ni == TRUE)
154 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockNi;
155 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_Ni MemS3ResumeConstructNBBlockNi
157 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_Ni MemFS3DefConstructorRet
159 #if (OPTION_MEMCTLR_DA == TRUE)
160 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockDA;
161 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DA MemS3ResumeConstructNBBlockDA
163 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DA MemFS3DefConstructorRet
165 #if (OPTION_MEMCTLR_PH == TRUE)
166 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockPh;
167 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_PH MemS3ResumeConstructNBBlockPh
169 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_PH MemFS3DefConstructorRet
171 #if (OPTION_MEMCTLR_RB == TRUE)
172 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockRb;
173 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_RB MemS3ResumeConstructNBBlockRb
175 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_RB MemFS3DefConstructorRet
179 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DA MemFS3DefConstructorRet
180 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_Ni MemFS3DefConstructorRet
181 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_RB MemFS3DefConstructorRet
182 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_PH MemFS3DefConstructorRet
184 #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE)
185 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorDA;
186 #define MEM_IDENDIMM_DA MemNIdentifyDimmConstructorDA
187 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorRb;
188 #define MEM_IDENDIMM_RB MemNIdentifyDimmConstructorRb
189 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorPh;
190 #define MEM_IDENDIMM_PH MemNIdentifyDimmConstructorPh
192 #define MEM_IDENDIMM_DA MemNIdentifyDimmConstructorRetDef
193 #define MEM_IDENDIMM_RB MemNIdentifyDimmConstructorRetDef
194 #define MEM_IDENDIMM_PH MemNIdentifyDimmConstructorRetDef
198 #if (OPTION_MEMCTLR_OR == TRUE)
199 #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE))
200 #if (OPTION_S3_MEM_SUPPORT == TRUE)
201 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockOr;
202 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_OR MemS3ResumeConstructNBBlockOr
204 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_OR MemFS3DefConstructorRet
207 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_OR MemFS3DefConstructorRet
209 #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE)
210 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorOr;
211 #define MEM_IDENDIMM_OR MemNIdentifyDimmConstructorOr
213 #define MEM_IDENDIMM_OR MemNIdentifyDimmConstructorRetDef
217 #if (OPTION_MEMCTLR_HY == TRUE)
218 #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE))
219 #if (OPTION_S3_MEM_SUPPORT == TRUE)
220 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockHy;
221 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_HY MemS3ResumeConstructNBBlockHy
223 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_HY MemFS3DefConstructorRet
226 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_HY MemFS3DefConstructorRet
228 #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE)
229 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorHy;
230 #define MEM_IDENDIMM_HY MemNIdentifyDimmConstructorHy
232 #define MEM_IDENDIMM_HY MemNIdentifyDimmConstructorRetDef
236 #if (OPTION_MEMCTLR_C32 == TRUE)
237 #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE))
238 #if (OPTION_S3_MEM_SUPPORT == TRUE)
239 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockC32;
240 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_C32 MemS3ResumeConstructNBBlockC32
242 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_C32 MemFS3DefConstructorRet
245 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_C32 MemFS3DefConstructorRet
247 #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE)
248 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorC32;
249 #define MEM_IDENDIMM_C32 MemNIdentifyDimmConstructorC32
251 #define MEM_IDENDIMM_C32 MemNIdentifyDimmConstructorRetDef
255 #if (OPTION_MEMCTLR_LN == TRUE)
256 #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE))
257 #if (OPTION_S3_MEM_SUPPORT == TRUE)
258 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockLN;
259 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_LN MemS3ResumeConstructNBBlockLN
261 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_LN MemFS3DefConstructorRet
264 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_LN MemFS3DefConstructorRet
266 #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE)
267 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorLN;
268 #define MEM_IDENDIMM_LN MemNIdentifyDimmConstructorLN
270 #define MEM_IDENDIMM_LN MemNIdentifyDimmConstructorRetDef
274 #if (OPTION_MEMCTLR_ON == TRUE)
275 #if ((AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_S3SAVE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE))
276 #if (OPTION_S3_MEM_SUPPORT == TRUE)
277 extern MEM_RESUME_CONSTRUCTOR MemS3ResumeConstructNBBlockON;
278 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON MemS3ResumeConstructNBBlockON
280 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON MemFS3DefConstructorRet
283 #define MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON MemFS3DefConstructorRet
285 #if (AGESA_ENTRY_INIT_GENERAL_SERVICES == TRUE)
286 extern MEM_IDENDIMM_CONSTRUCTOR MemNIdentifyDimmConstructorON;
287 #define MEM_IDENDIMM_ON MemNIdentifyDimmConstructorON
289 #define MEM_IDENDIMM_ON MemNIdentifyDimmConstructorRetDef
293 /*----------------------------------------------------------------------------------
294 * NORTHBRIDGE BLOCK CONSTRUCTOR AND INITIALIZER FUNCTION DEFAULT ASSIGNMENTS
296 *----------------------------------------------------------------------------------
298 #define MEM_NB_SUPPORT_DR
299 #define MEM_NB_SUPPORT_RB
300 #define MEM_NB_SUPPORT_DA
301 #define MEM_NB_SUPPORT_Ni
302 #define MEM_NB_SUPPORT_PH
303 #define MEM_NB_SUPPORT_HY
304 #define MEM_NB_SUPPORT_LN
305 #define MEM_NB_SUPPORT_OR
306 #define MEM_NB_SUPPORT_C32
307 #define MEM_NB_SUPPORT_ON
308 #define MEM_NB_SUPPORT_END { MEM_NB_SUPPORT_STRUCT_VERSION, 0, 0, 0, 0, 0 }
310 #if (AGESA_ENTRY_INIT_POST == TRUE)
311 /*----------------------------------------------------------------------------------
312 * FLOW CONTROL FUNCTION
314 * This section selects the function that controls the memory initialization sequence
315 * based upon the number of processor families that the BIOS will support.
318 extern MEM_FLOW_CFG MemMFlowDef;
319 #if (OPTION_MEMCTLR_DR == TRUE)
320 extern MEM_FLOW_CFG MemMFlowDr;
321 #define MEM_MAIN_FLOW_CONTROL_PTR_Dr MemMFlowDr,
323 #define MEM_MAIN_FLOW_CONTROL_PTR_Dr MemMFlowDef,
325 #if (OPTION_MEMCTLR_DA == TRUE)
326 extern MEM_FLOW_CFG MemMFlowDA;
327 #define MEM_MAIN_FLOW_CONTROL_PTR_DA MemMFlowDA,
329 #define MEM_MAIN_FLOW_CONTROL_PTR_DA MemMFlowDef,
331 #if (OPTION_MEMCTLR_HY == TRUE)
332 extern MEM_FLOW_CFG MemMFlowHy;
333 #define MEM_MAIN_FLOW_CONTROL_PTR_Hy MemMFlowHy,
335 #define MEM_MAIN_FLOW_CONTROL_PTR_Hy MemMFlowDef,
337 #if (OPTION_MEMCTLR_OR == TRUE)
338 extern MEM_FLOW_CFG MemMFlowOr;
339 #define MEM_MAIN_FLOW_CONTROL_PTR_OR MemMFlowOr,
341 #define MEM_MAIN_FLOW_CONTROL_PTR_OR MemMFlowDef,
343 #if (OPTION_MEMCTLR_LN == TRUE)
344 extern MEM_FLOW_CFG MemMFlowLN;
345 #define MEM_MAIN_FLOW_CONTROL_PTR_LN MemMFlowLN,
347 #define MEM_MAIN_FLOW_CONTROL_PTR_LN MemMFlowDef,
349 #if (OPTION_MEMCTLR_C32 == TRUE)
350 extern MEM_FLOW_CFG MemMFlowC32;
351 #define MEM_MAIN_FLOW_CONTROL_PTR_C32 MemMFlowC32,
353 #define MEM_MAIN_FLOW_CONTROL_PTR_C32 MemMFlowDef,
355 #if (OPTION_MEMCTLR_ON == TRUE)
356 extern MEM_FLOW_CFG MemMFlowON;
357 #define MEM_MAIN_FLOW_CONTROL_PTR_ON MemMFlowON,
359 #define MEM_MAIN_FLOW_CONTROL_PTR_ON MemMFlowDef,
361 #if (OPTION_MEMCTLR_Ni == TRUE)
362 extern MEM_FLOW_CFG MemMFlowDA;
363 #define MEM_MAIN_FLOW_CONTROL_PTR_Ni MemMFlowDA,
365 #define MEM_MAIN_FLOW_CONTROL_PTR_Ni MemMFlowDef,
367 #if (OPTION_MEMCTLR_RB == TRUE)
368 extern MEM_FLOW_CFG MemMFlowRb;
369 #define MEM_MAIN_FLOW_CONTROL_PTR_RB MemMFlowRb,
371 #define MEM_MAIN_FLOW_CONTROL_PTR_RB MemMFlowDef,
373 #if (OPTION_MEMCTLR_PH == TRUE)
374 extern MEM_FLOW_CFG MemMFlowPh;
375 #define MEM_MAIN_FLOW_CONTROL_PTR_PH MemMFlowPh,
377 #define MEM_MAIN_FLOW_CONTROL_PTR_PH MemMFlowDef,
380 MEM_FLOW_CFG* memFlowControlInstalled[] = {
381 MEM_MAIN_FLOW_CONTROL_PTR_Dr
382 MEM_MAIN_FLOW_CONTROL_PTR_DA
383 MEM_MAIN_FLOW_CONTROL_PTR_RB
384 MEM_MAIN_FLOW_CONTROL_PTR_PH
385 MEM_MAIN_FLOW_CONTROL_PTR_Hy
386 MEM_MAIN_FLOW_CONTROL_PTR_OR
387 MEM_MAIN_FLOW_CONTROL_PTR_LN
388 MEM_MAIN_FLOW_CONTROL_PTR_C32
389 MEM_MAIN_FLOW_CONTROL_PTR_ON
390 MEM_MAIN_FLOW_CONTROL_PTR_Ni
394 #if (OPTION_ONLINE_SPARE == TRUE)
395 extern OPTION_MEM_FEATURE_MAIN MemMOnlineSpare;
396 #define MEM_MAIN_FEATURE_ONLINE_SPARE MemMOnlineSpare
397 extern OPTION_MEM_FEATURE_NB MemFOnlineSpare;
398 #define MEM_FEATURE_ONLINE_SPARE MemFOnlineSpare
400 #define MEM_MAIN_FEATURE_ONLINE_SPARE MemMDefRet
401 #define MEM_FEATURE_ONLINE_SPARE MemFDefRet
404 #if (OPTION_MEM_RESTORE == TRUE)
405 extern OPTION_MEM_FEATURE_MAIN MemMContextSave;
406 extern OPTION_MEM_FEATURE_MAIN MemMContextRestore;
407 #define MEM_MAIN_FEATURE_MEM_SAVE MemMContextSave
408 #define MEM_MAIN_FEATURE_MEM_RESTORE MemMContextRestore
410 #define MEM_MAIN_FEATURE_MEM_SAVE MemMDefRet
411 #define MEM_MAIN_FEATURE_MEM_RESTORE MemMDefRetFalse
414 #if (OPTION_BANK_INTERLEAVE == TRUE)
415 extern OPTION_MEM_FEATURE_NB MemFInterleaveBanks;
416 #define MEM_FEATURE_BANK_INTERLEAVE MemFInterleaveBanks
417 extern OPTION_MEM_FEATURE_NB MemFUndoInterleaveBanks;
418 #define MEM_FEATURE_UNDO_BANK_INTERLEAVE MemFUndoInterleaveBanks
420 #define MEM_FEATURE_BANK_INTERLEAVE MemFDefRet
421 #define MEM_FEATURE_UNDO_BANK_INTERLEAVE MemFDefRet
424 #if (OPTION_NODE_INTERLEAVE == TRUE)
425 extern OPTION_MEM_FEATURE_MAIN MemMInterleaveNodes;
426 #define MEM_MAIN_FEATURE_NODE_INTERLEAVE MemMInterleaveNodes
427 extern OPTION_MEM_FEATURE_NB MemFCheckInterleaveNodes;
428 extern OPTION_MEM_FEATURE_NB MemFInterleaveNodes;
429 #define MEM_FEATURE_NODE_INTERLEAVE_CHECK MemFCheckInterleaveNodes
430 #define MEM_FEATURE_NODE_INTERLEAVE MemFInterleaveNodes
432 #define MEM_FEATURE_NODE_INTERLEAVE_CHECK MemFDefRet
433 #define MEM_FEATURE_NODE_INTERLEAVE MemFDefRet
434 #define MEM_MAIN_FEATURE_NODE_INTERLEAVE MemMDefRet
437 #if (OPTION_DCT_INTERLEAVE == TRUE)
438 extern OPTION_MEM_FEATURE_NB MemFInterleaveChannels;
439 #define MEM_FEATURE_CHANNEL_INTERLEAVE MemFInterleaveChannels
441 #define MEM_FEATURE_CHANNEL_INTERLEAVE MemFDefRet
444 #if (OPTION_ECC == TRUE)
445 extern OPTION_MEM_FEATURE_MAIN MemMEcc;
446 #define MEM_MAIN_FEATURE_ECC MemMEcc
447 extern OPTION_MEM_FEATURE_NB MemFCheckECC;
448 extern OPTION_MEM_FEATURE_NB MemFInitECC;
449 #define MEM_FEATURE_CK_ECC MemFCheckECC
450 #define MEM_FEATURE_ECC MemFInitECC
451 #define MEM_FEATURE_ECCX8 MemMDefRet
453 #define MEM_MAIN_FEATURE_ECC MemMDefRet
454 #define MEM_FEATURE_CK_ECC MemFDefRet
455 #define MEM_FEATURE_ECC MemFDefRet
456 #define MEM_FEATURE_ECCX8 MemMDefRet
459 extern OPTION_MEM_FEATURE_MAIN MemMMctMemClr;
460 #define MEM_MAIN_FEATURE_MEM_CLEAR MemMMctMemClr
462 #if (OPTION_DMI == TRUE)
463 #if (OPTION_DDR3 == TRUE)
464 extern OPTION_MEM_FEATURE_MAIN MemFDMISupport3;
465 #define MEM_MAIN_FEATURE_MEM_DMI MemFDMISupport3
467 extern OPTION_MEM_FEATURE_MAIN MemFDMISupport2;
468 #define MEM_MAIN_FEATURE_MEM_DMI MemFDMISupport2
471 #define MEM_MAIN_FEATURE_MEM_DMI MemMDefRet
474 #if (OPTION_DDR3 == TRUE)
475 extern OPTION_MEM_FEATURE_NB MemFOnDimmThermal;
476 extern OPTION_MEM_FEATURE_MAIN MemMLvDdr3;
477 extern OPTION_MEM_FEATURE_NB MemFLvDdr3;
478 #define MEM_FEATURE_ONDIMMTHERMAL MemFOnDimmThermal
479 #define MEM_MAIN_FEATURE_LVDDR3 MemMLvDdr3
480 #define MEM_FEATURE_LVDDR3 MemFLvDdr3
482 #define MEM_FEATURE_ONDIMMTHERMAL MemFDefRet
483 #define MEM_MAIN_FEATURE_LVDDR3 MemMDefRet
484 #define MEM_FEATURE_LVDDR3 MemFDefRet
487 extern OPTION_MEM_FEATURE_NB MemFInterleaveRegion;
488 #define MEM_FEATURE_REGION_INTERLEAVE MemFInterleaveRegion
490 extern OPTION_MEM_FEATURE_MAIN MemMUmaAlloc;
491 #define MEM_MAIN_FEATURE_UMAALLOC MemMUmaAlloc
493 extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining;
494 #if (OPTION_PARALLEL_TRAINING == TRUE)
495 extern OPTION_MEM_FEATURE_MAIN MemMParallelTraining;
496 #define MEM_MAIN_FEATURE_TRAINING MemMParallelTraining
498 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
501 #if (OPTION_DIMM_EXCLUDE == TRUE)
502 extern OPTION_MEM_FEATURE_MAIN MemMRASExcludeDIMM;
503 #define MEM_MAIN_FEATURE_DIMM_EXCLUDE MemMRASExcludeDIMM
504 extern OPTION_MEM_FEATURE_NB MemFRASExcludeDIMM;
505 #define MEM_FEATURE_DIMM_EXCLUDE MemFRASExcludeDIMM
507 #define MEM_FEATURE_DIMM_EXCLUDE MemFDefRet
508 #define MEM_MAIN_FEATURE_DIMM_EXCLUDE MemMDefRet
511 /*----------------------------------------------------------------------------------
512 * TECHNOLOGY BLOCK CONSTRUCTOR FUNCTION ASSIGNMENTS
514 *----------------------------------------------------------------------------------
516 #if OPTION_DDR2 == TRUE
517 extern MEM_TECH_CONSTRUCTOR MemConstructTechBlock2;
518 #define MEM_TECH_CONSTRUCTOR_DDR2 MemConstructTechBlock2,
519 #if (OPTION_HW_DRAM_INIT == TRUE)
520 extern MEM_TECH_FEAT MemTDramInitHw;
521 #define MEM_TECH_FEATURE_HW_DRAMINIT MemTDramInitHw
523 #define MEM_TECH_FEATURE_HW_DRAMINIT MemTFeatDef
525 #if (OPTION_SW_DRAM_INIT == TRUE)
526 #define MEM_TECH_FEATURE_SW_DRAMINIT MemTFeatDef
528 #define MEM_TECH_FEATURE_SW_DRAMINIT MemTFeatDef
531 #define MEM_TECH_CONSTRUCTOR_DDR2
533 #if OPTION_DDR3 == TRUE
534 extern MEM_TECH_CONSTRUCTOR MemConstructTechBlock3;
535 #define MEM_TECH_CONSTRUCTOR_DDR3 MemConstructTechBlock3,
536 #if (OPTION_HW_DRAM_INIT == TRUE)
537 extern MEM_TECH_FEAT MemTDramInitHw;
538 #define MEM_TECH_FEATURE_HW_DRAMINIT MemTDramInitHw
540 #define MEM_TECH_FEATURE_HW_DRAMINIT MemTFeatDef
542 #if (OPTION_SW_DRAM_INIT == TRUE)
543 #define MEM_TECH_FEATURE_SW_DRAMINIT MemTDramInitSw3
545 #define MEM_TECH_FEATURE_SW_DRAMINIT MemTFeatDef
548 #define MEM_TECH_CONSTRUCTOR_DDR3
551 /*---------------------------------------------------------------------------------------------------
554 * This section instantiates a feature block structure for each memory controller installed
555 * by the platform solution install file.
556 *---------------------------------------------------------------------------------------------------
559 /*---------------------------------------------------------------------------------------------------
560 * DEERHOUND FEATURE BLOCK
561 *---------------------------------------------------------------------------------------------------
563 #if (OPTION_MEMCTLR_DR == TRUE)
565 #undef MEM_TECH_FEATURE_DRAMINIT
566 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_HW_DRAMINIT
569 #undef MEM_TECH_FEATURE_DRAMINIT
570 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT
573 #undef MEM_TECH_FEATURE_CPG
574 #define MEM_TECH_FEATURE_CPG MemFDefRet
576 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
577 extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb;
578 #undef MEM_TECH_FEATURE_HWRXEN
579 #define MEM_TECH_FEATURE_HWRXEN MemNInitDqsTrainRcvrEnHwNb
581 extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb;
582 #undef MEM_TECH_FEATURE_HWRXEN
583 #define MEM_TECH_FEATURE_HWRXEN MemNDisableDqsTrainRcvrEnHwNb
586 #undef MEM_MAIN_FEATURE_TRAINING
587 #undef MEM_FEATURE_TRAINING
588 // extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining;
589 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
590 extern OPTION_MEM_FEATURE_NB MemFStandardTraining;
591 #define MEM_FEATURE_TRAINING MemFStandardTraining
593 MEM_FEAT_BLOCK_NB MemFeatBlockDr = {
594 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
595 MEM_FEATURE_ONLINE_SPARE,
596 MEM_FEATURE_BANK_INTERLEAVE,
597 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
598 MEM_FEATURE_NODE_INTERLEAVE_CHECK,
599 MEM_FEATURE_NODE_INTERLEAVE,
600 MEM_FEATURE_CHANNEL_INTERLEAVE,
604 MEM_FEATURE_TRAINING,
607 MEM_TECH_FEATURE_DRAMINIT,
608 MEM_FEATURE_DIMM_EXCLUDE,
610 MEM_TECH_FEATURE_CPG,
611 MEM_TECH_FEATURE_HWRXEN
614 #undef MEM_NB_SUPPORT_DR
615 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockDR;
616 extern MEM_INITIALIZER MemNInitDefaultsDR;
619 #define MEM_NB_SUPPORT_DR { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockDR, MemNInitDefaultsDR, &MemFeatBlockDr, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DR, MEM_IDENDIMM_DR },
620 #endif // OPTION_MEMCTRL_DR
622 /*---------------------------------------------------------------------------------------------------
623 * DASHOUND FEATURE BLOCK
624 *---------------------------------------------------------------------------------------------------
626 #if (OPTION_MEMCTLR_DA == TRUE || OPTION_MEMCTLR_Ni == TRUE || OPTION_MEMCTLR_RB == TRUE || OPTION_MEMCTLR_PH == TRUE)
628 #undef MEM_TECH_FEATURE_DRAMINIT
629 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_HW_DRAMINIT
632 #undef MEM_TECH_FEATURE_DRAMINIT
633 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT
636 #undef MEM_TECH_FEATURE_CPG
637 #define MEM_TECH_FEATURE_CPG MemFDefRet
639 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
640 extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb;
641 #undef MEM_TECH_FEATURE_HWRXEN
642 #define MEM_TECH_FEATURE_HWRXEN MemNInitDqsTrainRcvrEnHwNb
644 extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb;
645 #undef MEM_TECH_FEATURE_HWRXEN
646 #define MEM_TECH_FEATURE_HWRXEN MemNDisableDqsTrainRcvrEnHwNb
649 #undef MEM_MAIN_FEATURE_TRAINING
650 #undef MEM_FEATURE_TRAINING
651 // extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining;
652 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
653 extern OPTION_MEM_FEATURE_NB MemFStandardTraining;
654 #define MEM_FEATURE_TRAINING MemFStandardTraining
656 #if (OPTION_MEMCTLR_Ni == TRUE)
657 MEM_FEAT_BLOCK_NB MemFeatBlockNi = {
658 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
660 MEM_FEATURE_BANK_INTERLEAVE,
661 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
664 MEM_FEATURE_CHANNEL_INTERLEAVE,
665 MEM_FEATURE_REGION_INTERLEAVE,
668 MEM_FEATURE_TRAINING,
671 MEM_TECH_FEATURE_DRAMINIT,
672 MEM_FEATURE_DIMM_EXCLUDE,
674 MEM_TECH_FEATURE_CPG,
675 MEM_TECH_FEATURE_HWRXEN
678 #undef MEM_NB_SUPPORT_Ni
679 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockNi;
680 extern MEM_INITIALIZER MemNInitDefaultsNi;
682 #define MEM_NB_SUPPORT_Ni { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockNi, MemNInitDefaultsNi, &MemFeatBlockNi, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_Ni, MEM_IDENDIMM_DA },
685 #if (OPTION_MEMCTLR_PH == TRUE)
686 MEM_FEAT_BLOCK_NB MemFeatBlockPh = {
687 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
689 MEM_FEATURE_BANK_INTERLEAVE,
690 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
693 MEM_FEATURE_CHANNEL_INTERLEAVE,
694 MEM_FEATURE_REGION_INTERLEAVE,
697 MEM_FEATURE_TRAINING,
700 MEM_TECH_FEATURE_DRAMINIT,
701 MEM_FEATURE_DIMM_EXCLUDE,
703 MEM_TECH_FEATURE_CPG,
704 MEM_TECH_FEATURE_HWRXEN
707 #undef MEM_NB_SUPPORT_PH
708 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockPh;
709 extern MEM_INITIALIZER MemNInitDefaultsPh;
711 #define MEM_NB_SUPPORT_PH { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockPh, MemNInitDefaultsPh, &MemFeatBlockPh, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_PH, MEM_IDENDIMM_PH },
714 #if (OPTION_MEMCTLR_RB == TRUE)
715 MEM_FEAT_BLOCK_NB MemFeatBlockRb = {
716 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
718 MEM_FEATURE_BANK_INTERLEAVE,
719 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
722 MEM_FEATURE_CHANNEL_INTERLEAVE,
723 MEM_FEATURE_REGION_INTERLEAVE,
726 MEM_FEATURE_TRAINING,
729 MEM_TECH_FEATURE_DRAMINIT,
730 MEM_FEATURE_DIMM_EXCLUDE,
732 MEM_TECH_FEATURE_CPG,
733 MEM_TECH_FEATURE_HWRXEN
736 #undef MEM_NB_SUPPORT_RB
737 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockRb;
738 extern MEM_INITIALIZER MemNInitDefaultsRb;
740 #define MEM_NB_SUPPORT_RB { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockRb, MemNInitDefaultsRb, &MemFeatBlockRb, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_RB, MEM_IDENDIMM_RB },
743 #if (OPTION_MEMCTLR_DA == TRUE)
744 MEM_FEAT_BLOCK_NB MemFeatBlockDA = {
745 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
747 MEM_FEATURE_BANK_INTERLEAVE,
748 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
751 MEM_FEATURE_CHANNEL_INTERLEAVE,
752 MEM_FEATURE_REGION_INTERLEAVE,
755 MEM_FEATURE_TRAINING,
758 MEM_TECH_FEATURE_DRAMINIT,
759 MEM_FEATURE_DIMM_EXCLUDE,
761 MEM_TECH_FEATURE_CPG,
762 MEM_TECH_FEATURE_HWRXEN
765 #undef MEM_NB_SUPPORT_DA
766 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockDA;
767 extern MEM_INITIALIZER MemNInitDefaultsDA;
769 #define MEM_NB_SUPPORT_DA { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockDA, MemNInitDefaultsDA, &MemFeatBlockDA, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DA, MEM_IDENDIMM_DA },
771 #endif // OPTION_MEMCTRL_DA
773 /*---------------------------------------------------------------------------------------------------
774 * HYDRA FEATURE BLOCK
775 *---------------------------------------------------------------------------------------------------
777 #if (OPTION_MEMCTLR_HY == TRUE)
779 #undef MEM_TECH_FEATURE_DRAMINIT
780 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_HW_DRAMINIT
783 #undef MEM_TECH_FEATURE_DRAMINIT
784 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT
787 #undef MEM_TECH_FEATURE_CPG
788 #define MEM_TECH_FEATURE_CPG MemFDefRet
790 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
791 extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb;
792 #undef MEM_TECH_FEATURE_HWRXEN
793 #define MEM_TECH_FEATURE_HWRXEN MemNInitDqsTrainRcvrEnHwNb
795 extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb;
796 #undef MEM_TECH_FEATURE_HWRXEN
797 #define MEM_TECH_FEATURE_HWRXEN MemNDisableDqsTrainRcvrEnHwNb
801 #undef MEM_MAIN_FEATURE_TRAINING
802 #undef MEM_FEATURE_TRAINING
803 // extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining;
804 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
805 extern OPTION_MEM_FEATURE_NB MemFStandardTraining;
806 #define MEM_FEATURE_TRAINING MemFStandardTraining
808 MEM_FEAT_BLOCK_NB MemFeatBlockHy = {
809 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
810 MEM_FEATURE_ONLINE_SPARE,
811 MEM_FEATURE_BANK_INTERLEAVE,
812 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
813 MEM_FEATURE_NODE_INTERLEAVE_CHECK,
814 MEM_FEATURE_NODE_INTERLEAVE,
815 MEM_FEATURE_CHANNEL_INTERLEAVE,
819 MEM_FEATURE_TRAINING,
821 MEM_FEATURE_ONDIMMTHERMAL,
822 MEM_TECH_FEATURE_DRAMINIT,
823 MEM_FEATURE_DIMM_EXCLUDE,
825 MEM_TECH_FEATURE_CPG,
826 MEM_TECH_FEATURE_HWRXEN
829 #undef MEM_NB_SUPPORT_HY
830 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockHY;
831 extern MEM_INITIALIZER MemNInitDefaultsHY;
832 #define MEM_NB_SUPPORT_HY { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockHY, MemNInitDefaultsHY, &MemFeatBlockHy, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_HY, MEM_IDENDIMM_HY },
833 #endif // OPTION_MEMCTRL_HY
834 /*---------------------------------------------------------------------------------------------------
835 * LLANO FEATURE BLOCK
836 *---------------------------------------------------------------------------------------------------
838 #if (OPTION_MEMCTLR_LN == TRUE)
840 #undef MEM_TECH_FEATURE_DRAMINIT
841 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_HW_DRAMINIT
844 #undef MEM_TECH_FEATURE_DRAMINIT
845 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT
848 #if (OPTION_EARLY_SAMPLES == TRUE)
849 extern OPTION_MEM_FEATURE_NB MemNInitEarlySampleSupportLN;
850 #define MEM_EARLY_SAMPLE_SUPPORT MemNInitEarlySampleSupportLN
852 #define MEM_EARLY_SAMPLE_SUPPORT MemFDefRet
855 #if (OPTION_CONTINOUS_PATTERN_GENERATION == TRUE)
856 extern OPTION_MEM_FEATURE_NB MemNInitCPGClientNb;
857 #undef MEM_TECH_FEATURE_CPG
858 #define MEM_TECH_FEATURE_CPG MemNInitCPGClientNb
860 #undef MEM_TECH_FEATURE_CPG
861 #define MEM_TECH_FEATURE_CPG MemFDefRet
864 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
865 extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb;
866 #undef MEM_TECH_FEATURE_HWRXEN
867 #define MEM_TECH_FEATURE_HWRXEN MemNInitDqsTrainRcvrEnHwNb
869 extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb;
870 #undef MEM_TECH_FEATURE_HWRXEN
871 #define MEM_TECH_FEATURE_HWRXEN MemNDisableDqsTrainRcvrEnHwNb
874 #undef MEM_MAIN_FEATURE_TRAINING
875 #undef MEM_FEATURE_TRAINING
876 // extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining;
877 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
878 extern OPTION_MEM_FEATURE_NB MemFStandardTraining;
879 #define MEM_FEATURE_TRAINING MemFStandardTraining
881 MEM_FEAT_BLOCK_NB MemFeatBlockLn = {
882 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
884 MEM_FEATURE_BANK_INTERLEAVE,
885 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
888 MEM_FEATURE_CHANNEL_INTERLEAVE,
889 MEM_FEATURE_REGION_INTERLEAVE,
892 MEM_FEATURE_TRAINING,
894 MEM_FEATURE_ONDIMMTHERMAL,
895 MEM_TECH_FEATURE_DRAMINIT,
896 MEM_FEATURE_DIMM_EXCLUDE,
897 MEM_EARLY_SAMPLE_SUPPORT,
898 MEM_TECH_FEATURE_CPG,
899 MEM_TECH_FEATURE_HWRXEN
901 #undef MEM_NB_SUPPORT_LN
902 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockLN;
903 extern MEM_INITIALIZER MemNInitDefaultsLN;
904 #define MEM_NB_SUPPORT_LN { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockLN, MemNInitDefaultsLN, &MemFeatBlockLn, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_LN, MEM_IDENDIMM_LN },
906 #endif // OPTION_MEMCTRL_LN
908 /*---------------------------------------------------------------------------------------------------
909 * ONTARIO FEATURE BLOCK
910 *---------------------------------------------------------------------------------------------------
912 #if (OPTION_MEMCTLR_ON == TRUE)
914 #undef MEM_TECH_FEATURE_DRAMINIT
915 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_HW_DRAMINIT
918 #undef MEM_TECH_FEATURE_DRAMINIT
919 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT
922 #if (OPTION_CONTINOUS_PATTERN_GENERATION == TRUE)
923 extern OPTION_MEM_FEATURE_NB MemNInitCPGClientNb;
924 #undef MEM_TECH_FEATURE_CPG
925 #define MEM_TECH_FEATURE_CPG MemNInitCPGClientNb
927 #undef MEM_TECH_FEATURE_CPG
928 #define MEM_TECH_FEATURE_CPG MemFDefRet
931 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
932 extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb;
933 #undef MEM_TECH_FEATURE_HWRXEN
934 #define MEM_TECH_FEATURE_HWRXEN MemNInitDqsTrainRcvrEnHwNb
936 extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb;
937 #undef MEM_TECH_FEATURE_HWRXEN
938 #define MEM_TECH_FEATURE_HWRXEN MemNDisableDqsTrainRcvrEnHwNb
941 #undef MEM_MAIN_FEATURE_TRAINING
942 #undef MEM_FEATURE_TRAINING
943 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
944 extern OPTION_MEM_FEATURE_NB MemFStandardTraining;
945 #define MEM_FEATURE_TRAINING MemFStandardTraining
947 #if (OPTION_EARLY_SAMPLES == TRUE)
948 extern OPTION_MEM_FEATURE_NB MemNInitEarlySampleSupportON;
949 #define MEM_EARLY_SAMPLE_SUPPORT MemNInitEarlySampleSupportON
951 #define MEM_EARLY_SAMPLE_SUPPORT MemFDefRet
954 MEM_FEAT_BLOCK_NB MemFeatBlockOn = {
955 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
957 MEM_FEATURE_BANK_INTERLEAVE,
958 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
965 MEM_FEATURE_TRAINING,
967 MEM_FEATURE_ONDIMMTHERMAL,
968 MEM_TECH_FEATURE_DRAMINIT,
969 MEM_FEATURE_DIMM_EXCLUDE,
970 MEM_EARLY_SAMPLE_SUPPORT,
971 MEM_TECH_FEATURE_CPG,
972 MEM_TECH_FEATURE_HWRXEN
975 #undef MEM_NB_SUPPORT_ON
976 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockON;
977 extern MEM_INITIALIZER MemNInitDefaultsON;
978 #define MEM_NB_SUPPORT_ON { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockON, MemNInitDefaultsON, &MemFeatBlockOn, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON, MEM_IDENDIMM_ON },
980 #endif // OPTION_MEMCTRL_ON
982 /*---------------------------------------------------------------------------------------------------
983 * OROCHI FEATURE BLOCK
984 *---------------------------------------------------------------------------------------------------
986 #if (OPTION_MEMCTLR_OR == TRUE)
988 #undef MEM_TECH_FEATURE_DRAMINIT
989 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_HW_DRAMINIT
992 #undef MEM_MAIN_FEATURE_LVDDR3
993 extern OPTION_MEM_FEATURE_MAIN MemMLvDdr3PerformanceEnhPre;
994 #define MEM_MAIN_FEATURE_LVDDR3 MemMLvDdr3PerformanceEnhPre
995 #undef MEM_TECH_FEATURE_DRAMINIT
996 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT
999 #if (OPTION_G34_SOCKET_SUPPORT || OPTION_C32_SOCKET_SUPPORT)
1000 #undef MEM_FEATURE_REGION_INTERLEAVE
1001 #define MEM_FEATURE_REGION_INTERLEAVE MemFDefRet
1004 #if (OPTION_EARLY_SAMPLES == TRUE)
1005 extern OPTION_MEM_FEATURE_NB MemNInitEarlySampleSupportOr;
1006 #define MEM_EARLY_SAMPLE_SUPPORT MemNInitEarlySampleSupportOr
1008 #define MEM_EARLY_SAMPLE_SUPPORT MemFDefRet
1011 #if (OPTION_CONTINOUS_PATTERN_GENERATION == TRUE)
1012 extern OPTION_MEM_FEATURE_NB MemNInitCPGUnb;
1013 #undef MEM_TECH_FEATURE_CPG
1014 #define MEM_TECH_FEATURE_CPG MemNInitCPGUnb
1016 #undef MEM_TECH_FEATURE_CPG
1017 #define MEM_TECH_FEATURE_CPG MemFDefRet
1020 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1021 extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb;
1022 #undef MEM_TECH_FEATURE_HWRXEN
1023 #define MEM_TECH_FEATURE_HWRXEN MemNInitDqsTrainRcvrEnHwNb
1025 extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb;
1026 #undef MEM_TECH_FEATURE_HWRXEN
1027 #define MEM_TECH_FEATURE_HWRXEN MemNDisableDqsTrainRcvrEnHwNb
1031 #undef MEM_MAIN_FEATURE_TRAINING
1032 #undef MEM_FEATURE_TRAINING
1033 // extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining;
1034 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
1035 extern OPTION_MEM_FEATURE_NB MemFStandardTraining;
1036 #define MEM_FEATURE_TRAINING MemFStandardTraining
1038 MEM_FEAT_BLOCK_NB MemFeatBlockOr = {
1039 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
1040 MEM_FEATURE_ONLINE_SPARE,
1041 MEM_FEATURE_BANK_INTERLEAVE,
1042 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
1043 MEM_FEATURE_NODE_INTERLEAVE_CHECK,
1044 MEM_FEATURE_NODE_INTERLEAVE,
1045 MEM_FEATURE_CHANNEL_INTERLEAVE,
1046 MEM_FEATURE_REGION_INTERLEAVE,
1049 MEM_FEATURE_TRAINING,
1051 MEM_FEATURE_ONDIMMTHERMAL,
1052 MEM_TECH_FEATURE_DRAMINIT,
1053 MEM_FEATURE_DIMM_EXCLUDE,
1054 MEM_EARLY_SAMPLE_SUPPORT,
1055 MEM_TECH_FEATURE_CPG,
1056 MEM_TECH_FEATURE_HWRXEN
1059 #undef MEM_NB_SUPPORT_OR
1060 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockOR;
1061 extern MEM_INITIALIZER MemNInitDefaultsOR;
1062 #define MEM_NB_SUPPORT_OR { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockOR, MemNInitDefaultsOR, &MemFeatBlockOr, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_OR, MEM_IDENDIMM_OR },
1063 #endif // OPTION_MEMCTRL_OR
1065 /*---------------------------------------------------------------------------------------------------
1067 *---------------------------------------------------------------------------------------------------
1069 #if (OPTION_MEMCTLR_C32 == TRUE)
1071 #undef MEM_TECH_FEATURE_DRAMINIT
1072 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_HW_DRAMINIT
1075 #undef MEM_TECH_FEATURE_DRAMINIT
1076 #define MEM_TECH_FEATURE_DRAMINIT MEM_TECH_FEATURE_SW_DRAMINIT
1079 #undef MEM_TECH_FEATURE_CPG
1080 #define MEM_TECH_FEATURE_CPG MemFDefRet
1082 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1083 extern OPTION_MEM_FEATURE_NB MemNInitDqsTrainRcvrEnHwNb;
1084 #undef MEM_TECH_FEATURE_HWRXEN
1085 #define MEM_TECH_FEATURE_HWRXEN MemNInitDqsTrainRcvrEnHwNb
1087 extern OPTION_MEM_FEATURE_NB MemNDisableDqsTrainRcvrEnHwNb;
1088 #define MEM_TECH_FEATURE_HWRXEN MemNDisableDqsTrainRcvrEnHwNb
1091 #undef MEM_MAIN_FEATURE_TRAINING
1092 #undef MEM_FEATURE_TRAINING
1093 // extern OPTION_MEM_FEATURE_MAIN MemMStandardTraining;
1094 #define MEM_MAIN_FEATURE_TRAINING MemMStandardTraining
1095 extern OPTION_MEM_FEATURE_NB MemFStandardTraining;
1096 #define MEM_FEATURE_TRAINING MemFStandardTraining
1098 MEM_FEAT_BLOCK_NB MemFeatBlockC32 = {
1099 MEM_FEAT_BLOCK_NB_STRUCT_VERSION,
1100 MEM_FEATURE_ONLINE_SPARE,
1101 MEM_FEATURE_BANK_INTERLEAVE,
1102 MEM_FEATURE_UNDO_BANK_INTERLEAVE,
1103 MEM_FEATURE_NODE_INTERLEAVE_CHECK,
1104 MEM_FEATURE_NODE_INTERLEAVE,
1105 MEM_FEATURE_CHANNEL_INTERLEAVE,
1109 MEM_FEATURE_TRAINING,
1111 MEM_FEATURE_ONDIMMTHERMAL,
1112 MEM_TECH_FEATURE_DRAMINIT,
1113 MEM_FEATURE_DIMM_EXCLUDE,
1115 MEM_TECH_FEATURE_CPG,
1116 MEM_TECH_FEATURE_HWRXEN
1119 #undef MEM_NB_SUPPORT_C32
1120 extern MEM_NB_CONSTRUCTOR MemConstructNBBlockC32;
1121 extern MEM_INITIALIZER MemNInitDefaultsC32;
1122 #define MEM_NB_SUPPORT_C32 { MEM_NB_SUPPORT_STRUCT_VERSION, MemConstructNBBlockC32, MemNInitDefaultsC32, &MemFeatBlockC32, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_C32, MEM_IDENDIMM_C32 },
1123 #endif // OPTION_MEMCTRL_C32
1125 /*---------------------------------------------------------------------------------------------------
1126 * MAIN FEATURE BLOCK
1127 *---------------------------------------------------------------------------------------------------
1129 MEM_FEAT_BLOCK_MAIN MemFeatMain = {
1130 MEM_FEAT_BLOCK_MAIN_STRUCT_VERSION,
1131 MEM_MAIN_FEATURE_TRAINING,
1132 MEM_MAIN_FEATURE_DIMM_EXCLUDE,
1133 MEM_MAIN_FEATURE_ONLINE_SPARE,
1134 MEM_MAIN_FEATURE_NODE_INTERLEAVE,
1135 MEM_MAIN_FEATURE_ECC,
1136 MEM_MAIN_FEATURE_MEM_CLEAR,
1137 MEM_MAIN_FEATURE_MEM_DMI,
1138 MEM_MAIN_FEATURE_LVDDR3,
1139 MEM_MAIN_FEATURE_UMAALLOC,
1140 MEM_MAIN_FEATURE_MEM_SAVE,
1141 MEM_MAIN_FEATURE_MEM_RESTORE
1145 /*---------------------------------------------------------------------------------------------------
1146 * Technology Training SPECIFIC CONFIGURATION
1149 *---------------------------------------------------------------------------------------------------
1151 #define MEM_TECH_TRAINING_FEAT_NULL_TERNMIATOR 0
1152 #if OPTION_MEMCTLR_DR
1153 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceDr;
1155 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1156 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1157 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1158 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1159 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1160 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1161 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTDqsTrainRcvrEnHwPass1
1162 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTDqsTrainRcvrEnHwPass2
1163 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTTrainDQSEdgeDetect
1165 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1166 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1167 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1168 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTTrainDQSEdgeDetect
1170 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTFeatDef
1173 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1174 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTTrainRcvrEnSwPass1
1176 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1178 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1179 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1181 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1183 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1184 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTTrainDQSEdgeDetectSw
1186 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1188 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1189 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1191 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1193 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
1194 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTTrainMaxLatency
1196 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1198 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR2Dr = {
1199 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1200 TECH_TRAIN_ENTER_HW_TRN_DDR2,
1201 TECH_TRAIN_SW_WL_DDR2,
1202 TECH_TRAIN_HW_WL_P1_DDR2,
1203 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2,
1204 TECH_TRAIN_HW_WL_P2_DDR2,
1205 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2,
1206 TECH_TRAIN_EXIT_HW_TRN_DDR2,
1207 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2,
1208 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2,
1209 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2,
1210 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2,
1211 TECH_TRAIN_MAX_RD_LAT_DDR2,
1212 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2
1214 extern OPTION_MEM_FEATURE_NB MemNDQSTiming2Nb;
1215 #define NB_TRAIN_FLOW_DDR2 MemNDQSTiming2Nb
1216 extern OPTION_MEM_FEATURE_NB memNSequenceDDR2ServerNb;
1217 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR2ServerNb, memNEnableTrainSequenceDr, &memTechTrainingFeatSequenceDDR2Dr },
1219 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1220 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1221 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1222 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1223 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1224 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1225 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1226 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1227 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1228 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1229 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1230 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1231 #define NB_TRAIN_FLOW_DDR2 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
1232 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1235 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
1236 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTPreparePhyAssistedTraining
1237 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
1238 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTExitPhyAssistedTraining
1239 #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE)
1240 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTWriteLevelizationHw3Pass1
1241 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTWriteLevelizationHw3Pass2
1243 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
1244 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
1246 #if (OPTION_SW_WRITE_LEV_TRAINING == TRUE)
1247 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1249 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1251 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1252 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTDqsTrainRcvrEnHwPass1
1253 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTDqsTrainRcvrEnHwPass2
1254 #if (OPTION_HW_DQS_REC_EN_SEED_TRAINING == TRUE)
1255 #undef TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1256 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTRdPosWithRxEnDlySeeds3
1258 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1259 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1261 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
1265 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1266 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1267 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1268 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1270 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
1273 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1274 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainRcvrEnSwPass1
1276 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1278 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1279 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainOptRcvrEnSwPass1
1281 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1283 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1284 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
1286 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1288 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1289 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
1291 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1293 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
1294 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTTrainMaxLatency
1296 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
1298 // extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb;
1299 #define NB_TRAIN_FLOW_DDR3 MemNDQSTiming3Nb
1300 // extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb;
1301 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceDr;
1302 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3Dr = {
1303 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1304 TECH_TRAIN_ENTER_HW_TRN_DDR3,
1305 TECH_TRAIN_SW_WL_DDR3,
1306 TECH_TRAIN_HW_WL_P1_DDR3,
1307 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
1308 TECH_TRAIN_HW_WL_P2_DDR3,
1309 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
1310 TECH_TRAIN_EXIT_HW_TRN_DDR3,
1311 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
1312 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
1313 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
1314 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
1315 TECH_TRAIN_MAX_RD_LAT_DDR3,
1316 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1318 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR3Nb, memNEnableTrainSequenceDr, &memTechTrainingFeatSequenceDDR3Dr },
1320 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
1321 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
1322 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
1323 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef
1324 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
1325 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
1326 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1327 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1328 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1329 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1330 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1331 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1332 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1333 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
1334 #define NB_TRAIN_FLOW_DDR3 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
1335 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1338 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1339 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1342 #if (OPTION_MEMCTLR_DA || OPTION_MEMCTLR_Ni || OPTION_MEMCTLR_PH || OPTION_MEMCTLR_RB)
1344 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1345 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1346 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1347 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1348 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1349 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1350 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTDqsTrainRcvrEnHwPass1
1351 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTDqsTrainRcvrEnHwPass2
1352 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTTrainDQSEdgeDetect
1354 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1355 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1356 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1357 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTTrainDQSEdgeDetect
1359 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTFeatDef
1362 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1363 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTTrainRcvrEnSwPass1
1365 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1367 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1368 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1370 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1372 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1373 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTTrainDQSEdgeDetectSw
1375 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1377 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1378 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1380 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1382 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
1383 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTTrainMaxLatency
1385 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1387 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR2DA = {
1388 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1389 TECH_TRAIN_ENTER_HW_TRN_DDR2,
1390 TECH_TRAIN_SW_WL_DDR2,
1391 TECH_TRAIN_HW_WL_P1_DDR2,
1392 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2,
1393 TECH_TRAIN_HW_WL_P2_DDR2,
1394 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2,
1395 TECH_TRAIN_EXIT_HW_TRN_DDR2,
1396 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2,
1397 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2,
1398 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2,
1399 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2,
1400 TECH_TRAIN_MAX_RD_LAT_DDR2,
1401 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2
1403 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR2PH = {
1404 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1405 TECH_TRAIN_ENTER_HW_TRN_DDR2,
1406 TECH_TRAIN_SW_WL_DDR2,
1407 TECH_TRAIN_HW_WL_P1_DDR2,
1408 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2,
1409 TECH_TRAIN_HW_WL_P2_DDR2,
1410 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2,
1411 TECH_TRAIN_EXIT_HW_TRN_DDR2,
1412 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2,
1413 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2,
1414 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2,
1415 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2,
1416 TECH_TRAIN_MAX_RD_LAT_DDR2,
1417 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2
1419 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR2Rb = {
1420 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1421 TECH_TRAIN_ENTER_HW_TRN_DDR2,
1422 TECH_TRAIN_SW_WL_DDR2,
1423 TECH_TRAIN_HW_WL_P1_DDR2,
1424 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2,
1425 TECH_TRAIN_HW_WL_P2_DDR2,
1426 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2,
1427 TECH_TRAIN_EXIT_HW_TRN_DDR2,
1428 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2,
1429 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2,
1430 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2,
1431 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2,
1432 TECH_TRAIN_MAX_RD_LAT_DDR2,
1433 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2
1435 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR2Ni = {
1436 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1437 TECH_TRAIN_ENTER_HW_TRN_DDR2,
1438 TECH_TRAIN_SW_WL_DDR2,
1439 TECH_TRAIN_HW_WL_P1_DDR2,
1440 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2,
1441 TECH_TRAIN_HW_WL_P2_DDR2,
1442 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2,
1443 TECH_TRAIN_EXIT_HW_TRN_DDR2,
1444 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2,
1445 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2,
1446 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2,
1447 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2,
1448 TECH_TRAIN_MAX_RD_LAT_DDR2,
1449 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2
1451 extern OPTION_MEM_FEATURE_NB MemNDQSTiming2Nb;
1452 #define NB_TRAIN_FLOW_DDR2 MemNDQSTiming2Nb
1453 extern OPTION_MEM_FEATURE_NB memNSequenceDDR2ServerNb;
1454 #if (OPTION_MEMCTLR_DA)
1455 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceDA
1456 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR2ServerNb, memNEnableTrainSequenceDA, &memTechTrainingFeatSequenceDDR2DA },
1458 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1460 #if (OPTION_MEMCTLR_PH)
1461 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequencePh
1462 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR2ServerNb, memNEnableTrainSequencePh, &memTechTrainingFeatSequenceDDR2PH },
1464 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1466 #if (OPTION_MEMCTLR_RB)
1467 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceRb
1468 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR2ServerNb, memNEnableTrainSequenceRb, &memTechTrainingFeatSequenceDDR2Rb },
1470 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1473 #if (OPTION_MEMCTLR_Ni)
1474 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceNi
1475 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_Ni { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR2ServerNb, memNEnableTrainSequenceNi, &memTechTrainingFeatSequenceDDR2Ni },
1477 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1480 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1481 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1482 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1483 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1484 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1485 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1486 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1487 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1488 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1489 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1490 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1491 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1492 #define NB_TRAIN_FLOW_DDR2 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
1493 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1494 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_Ni { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1495 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1496 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1499 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
1500 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTPreparePhyAssistedTraining
1501 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
1502 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTExitPhyAssistedTraining
1503 #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE)
1504 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTWriteLevelizationHw3Pass1
1505 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTWriteLevelizationHw3Pass2
1507 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
1508 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
1510 #if (OPTION_SW_WRITE_LEV_TRAINING == TRUE)
1511 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1513 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1515 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1516 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
1517 #undef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
1519 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1520 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
1521 #undef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
1523 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1524 #if (OPTION_HW_DQS_REC_EN_SEED_TRAINING == TRUE)
1525 #undef TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1526 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1528 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1529 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1531 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
1535 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1536 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1537 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1538 #undef TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1539 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1541 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
1544 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1545 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainRcvrEnSwPass1
1547 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1549 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1550 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainOptRcvrEnSwPass1
1552 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1554 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1555 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
1557 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1559 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1560 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
1562 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1564 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
1565 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTTrainMaxLatency
1567 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
1569 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3DA = {
1570 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1571 TECH_TRAIN_ENTER_HW_TRN_DDR3,
1572 TECH_TRAIN_SW_WL_DDR3,
1573 TECH_TRAIN_HW_WL_P1_DDR3,
1574 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
1575 TECH_TRAIN_HW_WL_P2_DDR3,
1576 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
1577 TECH_TRAIN_EXIT_HW_TRN_DDR3,
1578 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
1579 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
1580 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
1581 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
1582 TECH_TRAIN_MAX_RD_LAT_DDR3,
1583 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1585 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3Ph = {
1586 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1587 TECH_TRAIN_ENTER_HW_TRN_DDR3,
1588 TECH_TRAIN_SW_WL_DDR3,
1589 TECH_TRAIN_HW_WL_P1_DDR3,
1590 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
1591 TECH_TRAIN_HW_WL_P2_DDR3,
1592 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
1593 TECH_TRAIN_EXIT_HW_TRN_DDR3,
1594 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
1595 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
1596 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
1597 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
1598 TECH_TRAIN_MAX_RD_LAT_DDR3,
1599 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1601 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3Rb = {
1602 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1603 TECH_TRAIN_ENTER_HW_TRN_DDR3,
1604 TECH_TRAIN_SW_WL_DDR3,
1605 TECH_TRAIN_HW_WL_P1_DDR3,
1606 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
1607 TECH_TRAIN_HW_WL_P2_DDR3,
1608 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
1609 TECH_TRAIN_EXIT_HW_TRN_DDR3,
1610 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
1611 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
1612 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
1613 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
1614 TECH_TRAIN_MAX_RD_LAT_DDR3,
1615 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1617 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3Ni = {
1618 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1619 TECH_TRAIN_ENTER_HW_TRN_DDR3,
1620 TECH_TRAIN_SW_WL_DDR3,
1621 TECH_TRAIN_HW_WL_P1_DDR3,
1622 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
1623 TECH_TRAIN_HW_WL_P2_DDR3,
1624 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
1625 TECH_TRAIN_EXIT_HW_TRN_DDR3,
1626 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
1627 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
1628 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
1629 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
1630 TECH_TRAIN_MAX_RD_LAT_DDR3,
1631 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1633 // extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb;
1634 #define NB_TRAIN_FLOW_DDR3 MemNDQSTiming3Nb
1635 // extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb;
1636 #if (OPTION_MEMCTLR_DA)
1637 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceDA;
1638 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR3Nb, memNEnableTrainSequenceDA, &memTechTrainingFeatSequenceDDR3DA },
1640 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1642 #if (OPTION_MEMCTLR_PH)
1643 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequencePh;
1644 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR3Nb, memNEnableTrainSequencePh, &memTechTrainingFeatSequenceDDR3Ph },
1646 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1648 #if (OPTION_MEMCTLR_RB)
1649 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceRb;
1650 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR3Nb, memNEnableTrainSequenceRb, &memTechTrainingFeatSequenceDDR3Rb },
1652 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1654 #if (OPTION_MEMCTLR_Ni)
1655 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceNi;
1656 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_Ni {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR3Nb, memNEnableTrainSequenceNi, &memTechTrainingFeatSequenceDDR3Ni },
1658 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_Ni { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1661 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
1662 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
1663 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef
1664 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
1665 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
1666 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
1667 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1668 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1669 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1670 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1671 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1672 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1673 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1674 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
1675 #define NB_TRAIN_FLOW_DDR3 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
1676 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_Ni { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1677 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1678 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1679 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1682 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_Ni { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1683 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_Ni { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1684 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1685 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DA { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1686 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1687 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_PH { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1688 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1689 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_RB { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1692 #if OPTION_MEMCTLR_HY
1693 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceHy;
1695 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1696 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1697 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1698 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1699 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1700 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1701 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTDqsTrainRcvrEnHwPass1
1702 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTDqsTrainRcvrEnHwPass2
1703 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTTrainDQSEdgeDetect
1705 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1706 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1707 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1708 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTTrainDQSEdgeDetect
1710 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTFeatDef
1713 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1714 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTTrainRcvrEnSwPass1
1716 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1718 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1719 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1721 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1723 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1724 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTTrainDQSEdgeDetectSw
1726 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1728 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1729 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1731 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1733 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
1734 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTTrainMaxLatency
1736 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1738 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR2Hy = {
1739 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1740 TECH_TRAIN_ENTER_HW_TRN_DDR2,
1741 TECH_TRAIN_SW_WL_DDR2,
1742 TECH_TRAIN_HW_WL_P1_DDR2,
1743 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2,
1744 TECH_TRAIN_HW_WL_P2_DDR2,
1745 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2,
1746 TECH_TRAIN_EXIT_HW_TRN_DDR2,
1747 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2,
1748 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2,
1749 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2,
1750 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2,
1751 TECH_TRAIN_MAX_RD_LAT_DDR2,
1752 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2
1754 extern OPTION_MEM_FEATURE_NB MemNDQSTiming2Nb;
1755 #define NB_TRAIN_FLOW_DDR2 MemNDQSTiming2Nb
1756 extern OPTION_MEM_FEATURE_NB memNSequenceDDR2ServerNb;
1757 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_HY {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR2ServerNb, memNEnableTrainSequenceHy, &memTechTrainingFeatSequenceDDR2Hy },
1759 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1760 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1761 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1762 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1763 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1764 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1765 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1766 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1767 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1768 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1769 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1770 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1771 #define NB_TRAIN_FLOW_DDR2 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
1772 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_HY { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1775 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
1776 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTPreparePhyAssistedTraining
1777 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
1778 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTExitPhyAssistedTraining
1779 #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE)
1780 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTWriteLevelizationHw3Pass1
1781 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTWriteLevelizationHw3Pass2
1783 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
1784 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
1786 #if (OPTION_SW_WRITE_LEV_TRAINING == TRUE)
1787 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1789 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1791 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1792 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
1793 #undef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
1795 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1796 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
1797 #undef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
1799 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1800 #if (OPTION_HW_DQS_REC_EN_SEED_TRAINING == TRUE)
1801 #undef TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1802 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1804 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1805 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1807 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
1811 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1812 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1813 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1814 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1816 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
1819 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1820 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainRcvrEnSwPass1
1822 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1824 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1825 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainOptRcvrEnSwPass1
1827 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1829 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1830 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
1832 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1834 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1835 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
1837 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1839 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
1840 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTTrainMaxLatency
1842 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
1844 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3Hy = {
1845 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1846 TECH_TRAIN_ENTER_HW_TRN_DDR3,
1847 TECH_TRAIN_SW_WL_DDR3,
1848 TECH_TRAIN_HW_WL_P1_DDR3,
1849 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
1850 TECH_TRAIN_HW_WL_P2_DDR3,
1851 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
1852 TECH_TRAIN_EXIT_HW_TRN_DDR3,
1853 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
1854 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
1855 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
1856 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
1857 TECH_TRAIN_MAX_RD_LAT_DDR3,
1858 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
1860 // extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb;
1861 #define NB_TRAIN_FLOW_DDR3 MemNDQSTiming3Nb
1862 // extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb;
1863 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_HY {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR3Nb, memNEnableTrainSequenceHy, &memTechTrainingFeatSequenceDDR3Hy },
1865 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
1866 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
1867 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
1868 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef
1869 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
1870 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
1871 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1872 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1873 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1874 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1875 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1876 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1877 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
1878 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
1879 #define NB_TRAIN_FLOW_DDR3 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
1880 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_HY { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1883 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_HY { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1884 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_HY { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1887 #if OPTION_MEMCTLR_C32
1888 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceC32;
1890 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1891 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1892 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1893 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1894 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1895 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1896 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTDqsTrainRcvrEnHwPass1
1897 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTDqsTrainRcvrEnHwPass2
1898 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2 MemTTrainDQSEdgeDetect
1900 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1901 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1902 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1903 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1905 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
1908 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1909 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTTrainRcvrEnSwPass1
1911 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1913 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
1914 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1916 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1918 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1919 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTTrainDQSEdgeDetectSw
1921 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1923 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1924 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1926 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1928 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
1929 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTTrainMaxLatency
1931 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1933 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR2C32 = {
1934 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
1935 TECH_TRAIN_ENTER_HW_TRN_DDR2,
1936 TECH_TRAIN_SW_WL_DDR2,
1937 TECH_TRAIN_HW_WL_P1_DDR2,
1938 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2,
1939 TECH_TRAIN_HW_WL_P2_DDR2,
1940 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2,
1941 TECH_TRAIN_EXIT_HW_TRN_DDR2,
1942 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2,
1943 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2,
1944 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2,
1945 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2,
1946 TECH_TRAIN_MAX_RD_LAT_DDR2,
1947 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR2
1949 extern OPTION_MEM_FEATURE_NB MemNDQSTiming2Nb;
1950 #define NB_TRAIN_FLOW_DDR2 MemNDQSTiming2Nb
1951 extern OPTION_MEM_FEATURE_NB memNSequenceDDR2ServerNb;
1952 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_C32 {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR2ServerNb, memNEnableTrainSequenceC32, &memTechTrainingFeatSequenceDDR2C32 },
1954 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
1955 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
1956 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
1957 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
1958 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
1959 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1960 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
1961 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1962 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
1963 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1964 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
1965 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
1966 #define NB_TRAIN_FLOW_DDR2 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
1967 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_C32 { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
1970 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
1971 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTPreparePhyAssistedTraining
1972 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
1973 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTExitPhyAssistedTraining
1974 #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE)
1975 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTWriteLevelizationHw3Pass1
1976 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTWriteLevelizationHw3Pass2
1978 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
1979 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
1981 #if (OPTION_SW_WRITE_LEV_TRAINING == TRUE)
1982 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1984 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
1986 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
1987 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
1988 #undef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
1990 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
1991 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
1992 #undef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
1994 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
1995 #if (OPTION_HW_DQS_REC_EN_SEED_TRAINING == TRUE)
1996 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
1998 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
1999 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2001 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2005 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2006 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2007 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2008 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2010 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2013 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2014 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainRcvrEnSwPass1
2016 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2018 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2019 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainOptRcvrEnSwPass1
2021 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2023 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2024 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2026 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2028 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2029 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2031 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2033 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
2034 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTTrainMaxLatency
2036 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2038 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3C32 = {
2039 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
2040 TECH_TRAIN_ENTER_HW_TRN_DDR3,
2041 TECH_TRAIN_SW_WL_DDR3,
2042 TECH_TRAIN_HW_WL_P1_DDR3,
2043 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
2044 TECH_TRAIN_HW_WL_P2_DDR3,
2045 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
2046 TECH_TRAIN_EXIT_HW_TRN_DDR3,
2047 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
2048 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
2049 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
2050 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
2051 TECH_TRAIN_MAX_RD_LAT_DDR3,
2052 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
2054 // extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb;
2055 #define NB_TRAIN_FLOW_DDR3 MemNDQSTiming3Nb
2056 // extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb;
2057 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_C32 {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR3Nb, memNEnableTrainSequenceC32, &memTechTrainingFeatSequenceDDR3C32 },
2059 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
2060 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
2061 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
2062 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef
2063 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
2064 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
2065 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2066 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2067 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2068 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2069 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2070 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2071 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2072 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2073 #define NB_TRAIN_FLOW_DDR3 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
2074 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_C32 { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2077 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_C32 { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2078 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_C32 { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2082 #if OPTION_MEMCTLR_LN
2083 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
2084 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
2085 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
2086 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
2087 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
2088 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2089 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
2090 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2091 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2092 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
2093 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
2094 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
2095 #define NB_TRAIN_FLOW_DDR2 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
2096 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_LN { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2097 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceLN;
2099 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
2100 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
2101 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
2102 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTExitPhyAssistedTrainingClient3
2103 #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE)
2104 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTWriteLevelizationHw3Pass1
2105 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTWriteLevelizationHw3Pass2
2107 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
2108 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
2110 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2111 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
2112 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
2113 #undef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
2115 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTDqsTrainRcvrEnHwPass1
2116 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
2117 #undef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
2119 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTDqsTrainRcvrEnHwPass2
2120 #if (OPTION_HW_DQS_REC_EN_SEED_TRAINING == TRUE)
2121 #undef TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
2122 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTRdPosWithRxEnDlySeeds3
2124 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2125 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2127 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2131 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2132 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2133 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2134 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2136 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2139 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2140 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainRcvrEnSwPass1
2142 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2144 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2145 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainOptRcvrEnSwPass1
2147 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2149 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2150 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2152 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2154 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2155 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2157 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2159 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
2160 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTTrainMaxLatency
2162 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2164 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3LN = {
2165 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
2166 TECH_TRAIN_ENTER_HW_TRN_DDR3,
2167 TECH_TRAIN_SW_WL_DDR3,
2168 TECH_TRAIN_HW_WL_P1_DDR3,
2169 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
2170 TECH_TRAIN_HW_WL_P2_DDR3,
2171 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
2172 TECH_TRAIN_EXIT_HW_TRN_DDR3,
2173 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
2174 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
2175 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
2176 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
2177 TECH_TRAIN_MAX_RD_LAT_DDR3,
2178 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
2180 // extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb;
2181 #define NB_TRAIN_FLOW_DDR3 MemNDQSTiming3Nb
2182 // extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb;
2183 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_LN {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, memNSequenceDDR3Nb, memNEnableTrainSequenceLN, &memTechTrainingFeatSequenceDDR3LN },
2185 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
2186 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
2187 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
2188 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef
2189 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
2190 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
2191 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2192 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2193 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2194 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2195 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2196 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2197 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2198 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2199 #define NB_TRAIN_FLOW_DDR3 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
2200 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_LN { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2203 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_LN { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2204 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_LN { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2208 #if OPTION_MEMCTLR_OR
2209 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceOr;
2210 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
2211 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
2212 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
2213 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
2214 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
2215 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2216 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
2217 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2218 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2219 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
2220 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
2221 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
2222 #define NB_TRAIN_FLOW_DDR2 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
2223 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_OR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2225 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
2226 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTPreparePhyAssistedTraining
2227 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
2228 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTExitPhyAssistedTraining
2229 #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE)
2230 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTWriteLevelizationHw3Pass1
2231 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTWriteLevelizationHw3Pass2
2233 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
2234 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
2236 #if (OPTION_SW_WRITE_LEV_TRAINING == TRUE)
2237 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2239 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2241 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
2242 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
2243 #undef TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3
2245 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTDqsTrainRcvrEnHwPass1
2246 #ifdef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
2247 #undef TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3
2249 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTDqsTrainRcvrEnHwPass2
2250 #if (OPTION_HW_DQS_REC_EN_SEED_TRAINING == TRUE)
2251 #undef TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
2252 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTRdPosWithRxEnDlySeeds3
2254 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2255 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2257 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2261 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2262 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2263 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2264 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2266 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2269 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2270 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2272 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2274 #undef TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3
2275 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2276 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2278 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2280 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2281 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2283 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2285 #undef TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3
2286 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2287 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2289 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2291 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
2292 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTTrainMaxLatency
2294 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2296 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3OR = {
2297 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
2298 TECH_TRAIN_ENTER_HW_TRN_DDR3,
2299 TECH_TRAIN_SW_WL_DDR3,
2300 TECH_TRAIN_HW_WL_P1_DDR3,
2301 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
2302 TECH_TRAIN_HW_WL_P2_DDR3,
2303 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
2304 TECH_TRAIN_EXIT_HW_TRN_DDR3,
2305 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
2306 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
2307 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
2308 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
2309 TECH_TRAIN_MAX_RD_LAT_DDR3,
2310 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
2312 // extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb;
2313 #define NB_TRAIN_FLOW_DDR3 MemNDQSTiming3Nb
2314 // extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb;
2315 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_OR {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR3Nb, memNEnableTrainSequenceOr, &memTechTrainingFeatSequenceDDR3OR },
2317 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
2318 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
2319 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
2320 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef
2321 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
2322 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
2323 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2324 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2325 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2326 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2327 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2328 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2329 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2330 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2331 #define NB_TRAIN_FLOW_DDR3 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
2332 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_OR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2335 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_OR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2336 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_OR { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2340 #if OPTION_MEMCTLR_ON
2341 extern OPTION_MEM_FEATURE_NB memNEnableTrainSequenceON;
2342 #define TECH_TRAIN_ENTER_HW_TRN_DDR2 MemTFeatDef
2343 #define TECH_TRAIN_EXIT_HW_TRN_DDR2 MemTFeatDef
2344 #define TECH_TRAIN_HW_WL_P1_DDR2 MemTFeatDef
2345 #define TECH_TRAIN_HW_WL_P2_DDR2 MemTFeatDef
2346 #define TECH_TRAIN_SW_WL_DDR2 MemTFeatDef
2347 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2348 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR2 MemTFeatDef
2349 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2350 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR2 MemTFeatDef
2351 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
2352 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR2 MemTFeatDef
2353 #define TECH_TRAIN_MAX_RD_LAT_DDR2 MemTFeatDef
2354 #define NB_TRAIN_FLOW_DDR2 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
2355 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_ON { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2357 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
2358 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
2359 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
2360 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTExitPhyAssistedTrainingClient3
2361 #if (OPTION_HW_WRITE_LEV_TRAINING == TRUE)
2362 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTWriteLevelizationHw3Pass1
2363 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTWriteLevelizationHw3Pass2
2365 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
2366 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
2368 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2369 #if (OPTION_HW_DQS_REC_EN_TRAINING == TRUE)
2370 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTDqsTrainRcvrEnHwPass1
2371 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTDqsTrainRcvrEnHwPass2
2372 #if (OPTION_HW_DQS_REC_EN_SEED_TRAINING == TRUE)
2373 #undef TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
2374 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTRdPosWithRxEnDlySeeds3
2376 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2377 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2379 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2383 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2384 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2385 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE || OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2386 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTTrainDQSEdgeDetect
2388 #define TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3 MemTFeatDef
2391 #if (OPTION_NON_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2392 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainRcvrEnSwPass1
2394 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2396 #undef TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3
2397 #if (OPTION_OPT_SW_DQS_REC_EN_TRAINING == TRUE)
2398 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTTrainOptRcvrEnSwPass1
2400 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2402 #if (OPTION_NON_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2403 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2405 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2407 #if (OPTION_OPT_SW_RD_WR_POS_TRAINING == TRUE)
2408 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTTrainDQSEdgeDetectSw
2410 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2412 #if (OPTION_MAX_RD_LAT_TRAINING == TRUE)
2413 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTTrainMaxLatency
2415 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2417 MEM_TECH_FEAT_BLOCK memTechTrainingFeatSequenceDDR3ON = {
2418 MEM_TECH_FEAT_BLOCK_STRUCT_VERSION,
2419 TECH_TRAIN_ENTER_HW_TRN_DDR3,
2420 TECH_TRAIN_SW_WL_DDR3,
2421 TECH_TRAIN_HW_WL_P1_DDR3,
2422 TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3,
2423 TECH_TRAIN_HW_WL_P2_DDR3,
2424 TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3,
2425 TECH_TRAIN_EXIT_HW_TRN_DDR3,
2426 TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3,
2427 TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3,
2428 TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3,
2429 TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3,
2430 TECH_TRAIN_MAX_RD_LAT_DDR3,
2431 TECH_TRAIN_HW_DQS_REC_EN_SEED_DDR3
2433 // extern OPTION_MEM_FEATURE_NB MemNDQSTiming3Nb;
2434 #define NB_TRAIN_FLOW_DDR3 MemNDQSTiming3Nb
2435 // extern OPTION_MEM_FEATURE_NB memNSequenceDDR3Nb;
2436 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON {MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION,memNSequenceDDR3Nb, memNEnableTrainSequenceON, &memTechTrainingFeatSequenceDDR3ON },
2438 #undef TECH_TRAIN_ENTER_HW_TRN_DDR3
2439 #define TECH_TRAIN_ENTER_HW_TRN_DDR3 MemTFeatDef
2440 #undef TECH_TRAIN_EXIT_HW_TRN_DDR3
2441 #define TECH_TRAIN_EXIT_HW_TRN_DDR3 MemTFeatDef
2442 #define TECH_TRAIN_HW_WL_P1_DDR3 MemTFeatDef
2443 #define TECH_TRAIN_HW_WL_P2_DDR3 MemTFeatDef
2444 #define TECH_TRAIN_SW_WL_DDR3 MemTFeatDef
2445 #define TECH_TRAIN_HW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2446 #define TECH_TRAIN_HW_DQS_REC_EN_P2_DDR3 MemTFeatDef
2447 #define TECH_TRAIN_NON_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2448 #define TECH_TRAIN_OPT_SW_DQS_REC_EN_P1_DDR3 MemTFeatDef
2449 #define TECH_TRAIN_NON_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2450 #define TECH_TRAIN_OPT_SW_RD_WR_POS_DDR3 MemTFeatDef
2451 #define TECH_TRAIN_MAX_RD_LAT_DDR3 MemTFeatDef
2452 #define NB_TRAIN_FLOW_DDR3 (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue
2453 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2456 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_ON { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2457 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON { MEM_TECH_TRAIN_SEQUENCE_STRUCT_VERSION, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefTrue, (BOOLEAN (*) (MEM_NB_BLOCK*)) memDefFalse, 0 },
2460 #define MEM_TECH_ENABLE_TRAINING_SEQUENCE_END { MEM_NB_SUPPORT_STRUCT_VERSION, 0, 0, 0 }
2461 MEM_FEAT_TRAIN_SEQ memTrainSequenceDDR2[] = {
2462 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DR
2463 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_DA
2464 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_HY
2465 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_LN
2466 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_C32
2467 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_ON
2468 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_Ni
2469 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_OR
2470 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_PH
2471 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR2_RB
2472 MEM_TECH_ENABLE_TRAINING_SEQUENCE_END
2475 MEM_FEAT_TRAIN_SEQ memTrainSequenceDDR3[] = {
2476 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DR
2477 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_DA
2478 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_HY
2479 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_LN
2480 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_C32
2481 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_ON
2482 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_Ni
2483 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_OR
2484 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_PH
2485 MEM_TECH_ENABLE_TRAINING_SEQUENCE_DDR3_RB
2486 MEM_TECH_ENABLE_TRAINING_SEQUENCE_END
2488 /*---------------------------------------------------------------------------------------------------
2489 * NB TRAINING FLOW CONTROL
2492 *---------------------------------------------------------------------------------------------------
2494 OPTION_MEM_FEATURE_NB* memNTrainFlowControl[] = { // Training flow control
2498 /*---------------------------------------------------------------------------------------------------
2502 *---------------------------------------------------------------------------------------------------
2504 MEM_TECH_CONSTRUCTOR* memTechInstalled[] = { // Types of technology installed
2505 MEM_TECH_CONSTRUCTOR_DDR2
2506 MEM_TECH_CONSTRUCTOR_DDR3
2509 /*---------------------------------------------------------------------------------------------------
2510 * PLATFORM SPECIFIC BLOCK FORM FACTOR DEFINITION
2513 *---------------------------------------------------------------------------------------------------
2515 #if OPTION_MEMCTLR_HY
2518 #define PLAT_SP_HY_FF_UDIMM2 MemPConstructPsUDef,
2520 #define PLAT_SP_HY_FF_UDIMM2 MemPConstructPsUDef,
2523 #define PLAT_SP_HY_FF_UDIMM3 MemPConstructPsUHy3,
2525 #define PLAT_SP_HY_FF_UDIMM3 MemPConstructPsUDef,
2528 #define PLAT_SP_HY_FF_UDIMM2 MemPConstructPsUDef,
2529 #define PLAT_SP_HY_FF_UDIMM3 MemPConstructPsUDef,
2533 #define PLAT_SP_HY_FF_RDIMM2 MemPConstructPsUDef,
2535 #define PLAT_SP_HY_FF_RDIMM2 MemPConstructPsUDef,
2538 #define PLAT_SP_HY_FF_RDIMM3 MemPConstructPsRHy3,
2540 #define PLAT_SP_HY_FF_RDIMM3 MemPConstructPsUDef,
2543 #define PLAT_SP_HY_FF_RDIMM2 MemPConstructPsUDef,
2544 #define PLAT_SP_HY_FF_RDIMM3 MemPConstructPsUDef,
2548 #define PLAT_SP_HY_FF_SDIMM2 MemPConstructPsUDef,
2550 #define PLAT_SP_HY_FF_SDIMM2 MemPConstructPsUDef,
2553 #define PLAT_SP_HY_FF_SDIMM3 MemPConstructPsSHy3,
2555 #define PLAT_SP_HY_FF_SDIMM3 MemPConstructPsUDef,
2558 #define PLAT_SP_HY_FF_SDIMM2 MemPConstructPsUDef,
2559 #define PLAT_SP_HY_FF_SDIMM3 MemPConstructPsUDef,
2562 #define PLAT_SP_HY_FF_SDIMM2 MemPConstructPsUDef,
2563 #define PLAT_SP_HY_FF_RDIMM2 MemPConstructPsUDef,
2564 #define PLAT_SP_HY_FF_UDIMM2 MemPConstructPsUDef,
2565 #define PLAT_SP_HY_FF_SDIMM3 MemPConstructPsUDef,
2566 #define PLAT_SP_HY_FF_RDIMM3 MemPConstructPsUDef,
2567 #define PLAT_SP_HY_FF_UDIMM3 MemPConstructPsUDef,
2569 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledHy[MAX_FF_TYPES] = {
2570 PLAT_SP_HY_FF_UDIMM2
2571 PLAT_SP_HY_FF_RDIMM2
2572 PLAT_SP_HY_FF_SDIMM2
2573 PLAT_SP_HY_FF_UDIMM3
2574 PLAT_SP_HY_FF_RDIMM3
2575 PLAT_SP_HY_FF_SDIMM3
2578 #if OPTION_MEMCTLR_DR
2581 extern MEM_PLAT_SPEC_CFG MemPConstructPsUDr2;
2582 #define PLAT_SP_DR_FF_UDIMM2 MemPConstructPsUDr2,
2584 #define PLAT_SP_DR_FF_UDIMM2 MemPConstructPsUDef,
2587 #define PLAT_SP_DR_FF_UDIMM3 MemPConstructPsUDr3,
2589 #define PLAT_SP_DR_FF_UDIMM3 MemPConstructPsUDef,
2592 #define PLAT_SP_DR_FF_UDIMM2 MemPConstructPsUDef,
2593 #define PLAT_SP_DR_FF_UDIMM3 MemPConstructPsUDef,
2597 extern MEM_PLAT_SPEC_CFG MemPConstructPsRDr2;
2598 #define PLAT_SP_DR_FF_RDIMM2 MemPConstructPsRDr2,
2600 #define PLAT_SP_DR_FF_RDIMM2 MemPConstructPsUDef,
2603 #define PLAT_SP_DR_FF_RDIMM3 MemPConstructPsRDr3,
2605 #define PLAT_SP_DR_FF_RDIMM3 MemPConstructPsUDef,
2608 #define PLAT_SP_DR_FF_RDIMM2 MemPConstructPsUDef,
2609 #define PLAT_SP_DR_FF_RDIMM3 MemPConstructPsUDef,
2613 #define PLAT_SP_DR_FF_SDIMM2 MemPConstructPsUDef,
2615 #define PLAT_SP_DR_FF_SDIMM2 MemPConstructPsUDef,
2618 #define PLAT_SP_DR_FF_SDIMM3 MemPConstructPsSDr3,
2620 #define PLAT_SP_DR_FF_SDIMM3 MemPConstructPsUDef,
2623 #define PLAT_SP_DR_FF_SDIMM2 MemPConstructPsUDef,
2624 #define PLAT_SP_DR_FF_SDIMM3 MemPConstructPsUDef,
2627 #define PLAT_SP_DR_FF_SDIMM2 MemPConstructPsUDef,
2628 #define PLAT_SP_DR_FF_RDIMM2 MemPConstructPsUDef,
2629 #define PLAT_SP_DR_FF_UDIMM2 MemPConstructPsUDef,
2630 #define PLAT_SP_DR_FF_SDIMM3 MemPConstructPsUDef,
2631 #define PLAT_SP_DR_FF_RDIMM3 MemPConstructPsUDef,
2632 #define PLAT_SP_DR_FF_UDIMM3 MemPConstructPsUDef,
2634 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledDR[MAX_FF_TYPES] = {
2635 PLAT_SP_DR_FF_UDIMM2
2636 PLAT_SP_DR_FF_RDIMM2
2637 PLAT_SP_DR_FF_SDIMM2
2638 PLAT_SP_DR_FF_UDIMM3
2639 PLAT_SP_DR_FF_RDIMM3
2640 PLAT_SP_DR_FF_SDIMM3
2643 #if (OPTION_MEMCTLR_DA == TRUE)
2646 #define PLAT_SP_DA_FF_UDIMM2 MemPConstructPsUDef,
2648 #define PLAT_SP_DA_FF_UDIMM2 MemPConstructPsUDef,
2651 #define PLAT_SP_DA_FF_UDIMM3 MemPConstructPsUDA3,
2653 #define PLAT_SP_DA_FF_UDIMM3 MemPConstructPsUDef,
2656 #define PLAT_SP_DA_FF_UDIMM2 MemPConstructPsUDef,
2657 #define PLAT_SP_DA_FF_UDIMM3 MemPConstructPsUDef,
2661 #define PLAT_SP_DA_FF_RDIMM2 MemPConstructPsUDef,
2663 #define PLAT_SP_DA_FF_RDIMM2 MemPConstructPsUDef,
2666 #define PLAT_SP_DA_FF_RDIMM3 MemPConstructPsUDef,
2668 #define PLAT_SP_DA_FF_RDIMM3 MemPConstructPsUDef,
2671 #define PLAT_SP_DA_FF_RDIMM2 MemPConstructPsUDef,
2672 #define PLAT_SP_DA_FF_RDIMM3 MemPConstructPsUDef,
2676 #define PLAT_SP_DA_FF_SDIMM2 MemPConstructPsSDA2,
2678 #define PLAT_SP_DA_FF_SDIMM2 MemPConstructPsUDef,
2681 #define PLAT_SP_DA_FF_SDIMM3 MemPConstructPsSDA3,
2683 #define PLAT_SP_DA_FF_SDIMM3 MemPConstructPsUDef,
2686 #define PLAT_SP_DA_FF_SDIMM2 MemPConstructPsUDef,
2687 #define PLAT_SP_DA_FF_SDIMM3 MemPConstructPsUDef,
2690 #define PLAT_SP_DA_FF_SDIMM2 MemPConstructPsUDef,
2691 #define PLAT_SP_DA_FF_RDIMM2 MemPConstructPsUDef,
2692 #define PLAT_SP_DA_FF_UDIMM2 MemPConstructPsUDef,
2693 #define PLAT_SP_DA_FF_SDIMM3 MemPConstructPsUDef,
2694 #define PLAT_SP_DA_FF_RDIMM3 MemPConstructPsUDef,
2695 #define PLAT_SP_DA_FF_UDIMM3 MemPConstructPsUDef,
2697 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledDA[MAX_FF_TYPES] = {
2698 PLAT_SP_DA_FF_UDIMM2
2699 PLAT_SP_DA_FF_RDIMM2
2700 PLAT_SP_DA_FF_SDIMM2
2701 PLAT_SP_DA_FF_UDIMM3
2702 PLAT_SP_DA_FF_RDIMM3
2703 PLAT_SP_DA_FF_SDIMM3
2706 #if (OPTION_MEMCTLR_Ni == TRUE)
2707 #define PLAT_SP_NI_FF_SDIMM2 MemPConstructPsUDef,
2708 #define PLAT_SP_NI_FF_RDIMM2 MemPConstructPsUDef,
2709 #define PLAT_SP_NI_FF_UDIMM2 MemPConstructPsUDef,
2710 #define PLAT_SP_NI_FF_SDIMM3 MemPConstructPsSNi3,
2711 #define PLAT_SP_NI_FF_RDIMM3 MemPConstructPsUDef,
2712 #define PLAT_SP_NI_FF_UDIMM3 MemPConstructPsUNi3,
2714 #define PLAT_SP_NI_FF_SDIMM2 MemPConstructPsUDef,
2715 #define PLAT_SP_NI_FF_RDIMM2 MemPConstructPsUDef,
2716 #define PLAT_SP_NI_FF_UDIMM2 MemPConstructPsUDef,
2717 #define PLAT_SP_NI_FF_SDIMM3 MemPConstructPsUDef,
2718 #define PLAT_SP_NI_FF_RDIMM3 MemPConstructPsUDef,
2719 #define PLAT_SP_NI_FF_UDIMM3 MemPConstructPsUDef,
2721 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledNi[MAX_FF_TYPES] = {
2722 PLAT_SP_NI_FF_UDIMM2
2723 PLAT_SP_NI_FF_RDIMM2
2724 PLAT_SP_NI_FF_SDIMM2
2725 PLAT_SP_NI_FF_UDIMM3
2726 PLAT_SP_NI_FF_RDIMM3
2727 PLAT_SP_NI_FF_SDIMM3
2730 #if (OPTION_MEMCTLR_PH == TRUE)
2731 #define PLAT_SP_PH_FF_SDIMM2 MemPConstructPsUDef,
2732 #define PLAT_SP_PH_FF_RDIMM2 MemPConstructPsUDef,
2733 #define PLAT_SP_PH_FF_UDIMM2 MemPConstructPsUDef,
2734 #define PLAT_SP_PH_FF_SDIMM3 MemPConstructPsSPh3,
2735 #define PLAT_SP_PH_FF_RDIMM3 MemPConstructPsUDef,
2736 #define PLAT_SP_PH_FF_UDIMM3 MemPConstructPsUPh3,
2738 #define PLAT_SP_PH_FF_SDIMM2 MemPConstructPsUDef,
2739 #define PLAT_SP_PH_FF_RDIMM2 MemPConstructPsUDef,
2740 #define PLAT_SP_PH_FF_UDIMM2 MemPConstructPsUDef,
2741 #define PLAT_SP_PH_FF_SDIMM3 MemPConstructPsUDef,
2742 #define PLAT_SP_PH_FF_RDIMM3 MemPConstructPsUDef,
2743 #define PLAT_SP_PH_FF_UDIMM3 MemPConstructPsUDef,
2745 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledPh[MAX_FF_TYPES] = {
2746 PLAT_SP_PH_FF_UDIMM2
2747 PLAT_SP_PH_FF_RDIMM2
2748 PLAT_SP_PH_FF_SDIMM2
2749 PLAT_SP_PH_FF_UDIMM3
2750 PLAT_SP_PH_FF_RDIMM3
2751 PLAT_SP_PH_FF_SDIMM3
2754 #if (OPTION_MEMCTLR_RB == TRUE)
2755 #define PLAT_SP_RB_FF_SDIMM2 MemPConstructPsUDef,
2756 #define PLAT_SP_RB_FF_RDIMM2 MemPConstructPsUDef,
2757 #define PLAT_SP_RB_FF_UDIMM2 MemPConstructPsUDef,
2758 #define PLAT_SP_RB_FF_SDIMM3 MemPConstructPsSRb3,
2759 #define PLAT_SP_RB_FF_RDIMM3 MemPConstructPsUDef,
2760 #define PLAT_SP_RB_FF_UDIMM3 MemPConstructPsURb3,
2762 #define PLAT_SP_RB_FF_SDIMM2 MemPConstructPsUDef,
2763 #define PLAT_SP_RB_FF_RDIMM2 MemPConstructPsUDef,
2764 #define PLAT_SP_RB_FF_UDIMM2 MemPConstructPsUDef,
2765 #define PLAT_SP_RB_FF_SDIMM3 MemPConstructPsUDef,
2766 #define PLAT_SP_RB_FF_RDIMM3 MemPConstructPsUDef,
2767 #define PLAT_SP_RB_FF_UDIMM3 MemPConstructPsUDef,
2769 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledRb[MAX_FF_TYPES] = {
2770 PLAT_SP_RB_FF_UDIMM2
2771 PLAT_SP_RB_FF_RDIMM2
2772 PLAT_SP_RB_FF_SDIMM2
2773 PLAT_SP_RB_FF_UDIMM3
2774 PLAT_SP_RB_FF_RDIMM3
2775 PLAT_SP_RB_FF_SDIMM3
2778 #if OPTION_MEMCTLR_LN
2781 #define PLAT_SP_LN_FF_UDIMM3 MemPConstructPsULN3,
2783 #define PLAT_SP_LN_FF_UDIMM3 MemPConstructPsUDef,
2786 #define PLAT_SP_LN_FF_UDIMM3 MemPConstructPsUDef,
2790 #define PLAT_SP_LN_FF_SDIMM3 MemPConstructPsSLN3,
2792 #define PLAT_SP_LN_FF_SDIMM3 MemPConstructPsUDef,
2795 #define PLAT_SP_LN_FF_SDIMM3 MemPConstructPsUDef,
2798 #define PLAT_SP_LN_FF_SDIMM3 MemPConstructPsUDef,
2799 #define PLAT_SP_LN_FF_UDIMM3 MemPConstructPsUDef,
2801 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledLN[] = {
2802 PLAT_SP_LN_FF_SDIMM3
2803 PLAT_SP_LN_FF_UDIMM3
2807 #if OPTION_MEMCTLR_C32
2810 #define PLAT_SP_C32_FF_UDIMM2 MemPConstructPsUDef,
2812 #define PLAT_SP_C32_FF_UDIMM2 MemPConstructPsUDef,
2815 #define PLAT_SP_C32_FF_UDIMM3 MemPConstructPsUC32_3,
2817 #define PLAT_SP_C32_FF_UDIMM3 MemPConstructPsUDef,
2820 #define PLAT_SP_C32_FF_UDIMM2 MemPConstructPsUDef,
2821 #define PLAT_SP_C32_FF_UDIMM3 MemPConstructPsUDef,
2825 #define PLAT_SP_C32_FF_RDIMM2 MemPConstructPsUDef,
2827 #define PLAT_SP_C32_FF_RDIMM2 MemPConstructPsUDef,
2830 #define PLAT_SP_C32_FF_RDIMM3 MemPConstructPsRC32_3,
2832 #define PLAT_SP_C32_FF_RDIMM3 MemPConstructPsUDef,
2835 #define PLAT_SP_C32_FF_RDIMM2 MemPConstructPsUDef,
2836 #define PLAT_SP_C32_FF_RDIMM3 MemPConstructPsUDef,
2839 #define PLAT_SP_C32_FF_SDIMM2 MemPConstructPsUDef,
2840 #define PLAT_SP_C32_FF_SDIMM3 MemPConstructPsUDef,
2843 #define PLAT_SP_C32_FF_SDIMM2 MemPConstructPsUDef,
2844 #define PLAT_SP_C32_FF_RDIMM2 MemPConstructPsUDef,
2845 #define PLAT_SP_C32_FF_UDIMM2 MemPConstructPsUDef,
2846 #define PLAT_SP_C32_FF_SDIMM3 MemPConstructPsUDef,
2847 #define PLAT_SP_C32_FF_RDIMM3 MemPConstructPsUDef,
2848 #define PLAT_SP_C32_FF_UDIMM3 MemPConstructPsUDef,
2850 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledC32[MAX_FF_TYPES] = {
2851 PLAT_SP_C32_FF_UDIMM2
2852 PLAT_SP_C32_FF_RDIMM2
2853 PLAT_SP_C32_FF_SDIMM2
2854 PLAT_SP_C32_FF_UDIMM3
2855 PLAT_SP_C32_FF_RDIMM3
2856 PLAT_SP_C32_FF_SDIMM3
2859 #if OPTION_MEMCTLR_ON
2862 #define PLAT_SP_ON_FF_UDIMM3 MemPConstructPsUON3,
2864 #define PLAT_SP_ON_FF_UDIMM3 MemPConstructPsUDef,
2867 #define PLAT_SP_ON_FF_UDIMM3 MemPConstructPsUDef,
2871 #define PLAT_SP_ON_FF_SDIMM3 MemPConstructPsSON3,
2873 #define PLAT_SP_ON_FF_SDIMM3 MemPConstructPsUDef,
2876 #define PLAT_SP_ON_FF_SDIMM3 MemPConstructPsUDef,
2879 #define PLAT_SP_ON_FF_SDIMM3 MemPConstructPsUDef,
2880 #define PLAT_SP_ON_FF_UDIMM3 MemPConstructPsUDef,
2882 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledON[] = {
2883 PLAT_SP_ON_FF_SDIMM3
2884 PLAT_SP_ON_FF_UDIMM3
2888 /*---------------------------------------------------------------------------------------------------
2889 * PLATFORM-SPECIFIC CONFIGURATION
2892 *---------------------------------------------------------------------------------------------------
2895 #if OPTION_MEMCTLR_DR
2898 #define PSC_DR_UDIMM_DDR2 //MemAGetPsCfgUDr2
2900 #define PSC_DR_UDIMM_DDR2
2903 #define PSC_DR_UDIMM_DDR3 MemAGetPsCfgUDr3,
2905 #define PSC_DR_UDIMM_DDR3
2910 #define PSC_DR_RDIMM_DDR2 MemAGetPsCfgRDr2,
2912 #define PSC_DR_RDIMM_DDR2
2915 #define PSC_DR_RDIMM_DDR3 MemAGetPsCfgRDr3,
2917 #define PSC_DR_RDIMM_DDR3
2922 #define PSC_DR_SODIMM_DDR2 //MemAGetPsCfgSDr2
2924 #define PSC_DR_SODIMM_DDR2
2927 #define PSC_DR_SODIMM_DDR3 //MemAGetPsCfgSDr3
2929 #define PSC_DR_SODIMM_DDR3
2934 #if (OPTION_MEMCTLR_DA == TRUE || OPTION_MEMCTLR_Ni == TRUE || OPTION_MEMCTLR_RB == TRUE || OPTION_MEMCTLR_PH == TRUE)
2935 #if OPTION_MEMCTLR_Ni
2936 #define PSC_NI_UDIMM_DDR2
2937 #define PSC_NI_UDIMM_DDR3 MemAGetPsCfgUNi3,
2938 #define PSC_NI_RDIMM_DDR2
2939 #define PSC_NI_RDIMM_DDR3
2940 #define PSC_NI_SODIMM_DDR2
2941 #define PSC_NI_SODIMM_DDR3 MemAGetPsCfgSNi3,
2943 #if OPTION_MEMCTLR_PH
2944 #define PSC_PH_UDIMM_DDR2
2945 #define PSC_PH_UDIMM_DDR3 MemAGetPsCfgUPh3,
2946 #define PSC_PH_RDIMM_DDR2
2947 #define PSC_PH_RDIMM_DDR3
2948 #define PSC_PH_SODIMM_DDR2
2949 #define PSC_PH_SODIMM_DDR3 MemAGetPsCfgSPh3,
2951 #if OPTION_MEMCTLR_RB
2952 #define PSC_RB_UDIMM_DDR2
2953 #define PSC_RB_UDIMM_DDR3 MemAGetPsCfgURb3,
2954 #define PSC_RB_RDIMM_DDR2
2955 #define PSC_RB_RDIMM_DDR3
2956 #define PSC_RB_SODIMM_DDR2
2957 #define PSC_RB_SODIMM_DDR3 MemAGetPsCfgSRb3,
2959 #if OPTION_MEMCTLR_DA
2962 #define PSC_DA_UDIMM_DDR2 //MemAGetPsCfgUDr2
2964 #define PSC_DA_UDIMM_DDR2
2967 #define PSC_DA_UDIMM_DDR3 MemAGetPsCfgUDA3,
2969 #define PSC_DA_UDIMM_DDR3
2974 #define PSC_DA_RDIMM_DDR2
2976 #define PSC_DA_RDIMM_DDR2
2979 #define PSC_DA_RDIMM_DDR3
2981 #define PSC_DA_RDIMM_DDR3
2986 #define PSC_DA_SODIMM_DDR2 MemAGetPsCfgSDA2,
2988 #define PSC_DA_SODIMM_DDR2
2991 #define PSC_DA_SODIMM_DDR3 MemAGetPsCfgSDA3,
2993 #define PSC_DA_SODIMM_DDR3
2999 #if OPTION_MEMCTLR_HY
3002 #define PSC_HY_UDIMM_DDR2 //MemAGetPsCfgUDr2,
3004 #define PSC_HY_UDIMM_DDR2
3007 #define PSC_HY_UDIMM_DDR3 MemAGetPsCfgUHy3,
3009 #define PSC_HY_UDIMM_DDR3
3014 #define PSC_HY_RDIMM_DDR2
3016 #define PSC_HY_RDIMM_DDR2
3019 #define PSC_HY_RDIMM_DDR3 MemAGetPsCfgRHy3,
3021 #define PSC_HY_RDIMM_DDR3
3026 #define PSC_HY_SODIMM_DDR2 //MemAGetPsCfgSHy2,
3028 #define PSC_HY_SODIMM_DDR2
3031 #define PSC_HY_SODIMM_DDR3 //MemAGetPsCfgSHy3,
3033 #define PSC_HY_SODIMM_DDR3
3038 #if OPTION_MEMCTLR_C32
3041 #define PSC_C32_UDIMM_DDR2 //MemAGetPsCfgUDr2,
3043 #define PSC_C32_UDIMM_DDR2
3046 #define PSC_C32_UDIMM_DDR3 MemAGetPsCfgUC32_3,
3048 #define PSC_C32_UDIMM_DDR3
3053 #define PSC_C32_RDIMM_DDR2
3055 #define PSC_C32_RDIMM_DDR2
3058 #define PSC_C32_RDIMM_DDR3 MemAGetPsCfgRC32_3,
3060 #define PSC_C32_RDIMM_DDR3
3065 #define PSC_C32_SODIMM_DDR2 //MemAGetPsCfgSC32_2,
3067 #define PSC_C32_SODIMM_DDR2
3070 #define PSC_C32_SODIMM_DDR3 //MemAGetPsCfgSC32_3,
3072 #define PSC_C32_SODIMM_DDR3
3077 #if OPTION_MEMCTLR_LN
3080 #define PSC_LN_UDIMM_DDR2 //MemAGetPsCfgULN2,
3082 #define PSC_LN_UDIMM_DDR2
3085 #define PSC_LN_UDIMM_DDR3 MemAGetPsCfgULN3,
3087 #define PSC_LN_UDIMM_DDR3
3092 #define PSC_LN_RDIMM_DDR2
3094 #define PSC_LN_RDIMM_DDR2
3097 #define PSC_LN_RDIMM_DDR3 //MemAGetPsCfgRLN3,
3099 #define PSC_LN_RDIMM_DDR3
3104 #define PSC_LN_SODIMM_DDR2 //MemAGetPsCfgSLN2,
3106 #define PSC_LN_SODIMM_DDR2
3109 #define PSC_LN_SODIMM_DDR3 MemAGetPsCfgSLN3,
3111 #define PSC_LN_SODIMM_DDR3
3116 #if OPTION_MEMCTLR_OR
3119 #define PSC_OR_UDIMM_DDR2 //MemAGetPsCfgUOr2,
3121 #define PSC_OR_UDIMM_DDR2
3124 #define PSC_OR_UDIMM_DDR3 //MemAGetPsCfgUOr3,
3126 #define PSC_OR_UDIMM_DDR3
3131 #define PSC_OR_RDIMM_DDR2
3133 #define PSC_OR_RDIMM_DDR2
3136 #define PSC_OR_RDIMM_DDR3 //MemAGetPsCfgROr3,
3138 #define PSC_OR_RDIMM_DDR3
3143 #define PSC_OR_SODIMM_DDR2 //MemAGetPsCfgSOr2,
3145 #define PSC_OR_SODIMM_DDR2
3148 #define PSC_OR_SODIMM_DDR3 //MemAGetPsCfgSOr3,
3150 #define PSC_OR_SODIMM_DDR3
3155 #if OPTION_MEMCTLR_ON
3158 #define PSC_ON_UDIMM_DDR2 //MemAGetPsCfgUON2,
3160 #define PSC_ON_UDIMM_DDR2
3163 #define PSC_ON_UDIMM_DDR3 MemAGetPsCfgUON3,
3165 #define PSC_ON_UDIMM_DDR3
3170 #define PSC_ON_RDIMM_DDR2
3172 #define PSC_ON_RDIMM_DDR2
3175 #define PSC_ON_RDIMM_DDR3 //MemAGetPsCfgRON3,
3177 #define PSC_ON_RDIMM_DDR3
3182 #define PSC_ON_SODIMM_DDR2 //MemAGetPsCfgSON2,
3184 #define PSC_ON_SODIMM_DDR2
3187 #define PSC_ON_SODIMM_DDR3 MemAGetPsCfgSON3,
3189 #define PSC_ON_SODIMM_DDR3
3194 /*----------------------------------------------------------------------
3195 * DEFAULT PSCFG DEFINITIONS
3197 *----------------------------------------------------------------------
3200 #ifndef PSC_DR_UDIMM_DDR2
3201 #define PSC_DR_UDIMM_DDR2
3203 #ifndef PSC_DR_RDIMM_DDR2
3204 #define PSC_DR_RDIMM_DDR2
3206 #ifndef PSC_DR_SODIMM_DDR2
3207 #define PSC_DR_SODIMM_DDR2
3209 #ifndef PSC_DR_UDIMM_DDR3
3210 #define PSC_DR_UDIMM_DDR3
3212 #ifndef PSC_DR_RDIMM_DDR3
3213 #define PSC_DR_RDIMM_DDR3
3215 #ifndef PSC_DR_SODIMM_DDR3
3216 #define PSC_DR_SODIMM_DDR3
3218 #ifndef PSC_RB_UDIMM_DDR2
3219 #define PSC_RB_UDIMM_DDR2
3221 #ifndef PSC_RB_RDIMM_DDR2
3222 #define PSC_RB_RDIMM_DDR2
3224 #ifndef PSC_RB_SODIMM_DDR2
3225 #define PSC_RB_SODIMM_DDR2
3227 #ifndef PSC_RB_UDIMM_DDR3
3228 #define PSC_RB_UDIMM_DDR3
3230 #ifndef PSC_RB_RDIMM_DDR3
3231 #define PSC_RB_RDIMM_DDR3
3233 #ifndef PSC_RB_SODIMM_DDR3
3234 #define PSC_RB_SODIMM_DDR3
3236 #ifndef PSC_DA_UDIMM_DDR2
3237 #define PSC_DA_UDIMM_DDR2
3239 #ifndef PSC_DA_RDIMM_DDR2
3240 #define PSC_DA_RDIMM_DDR2
3242 #ifndef PSC_DA_SODIMM_DDR2
3243 #define PSC_DA_SODIMM_DDR2
3245 #ifndef PSC_DA_UDIMM_DDR3
3246 #define PSC_DA_UDIMM_DDR3
3248 #ifndef PSC_DA_RDIMM_DDR3
3249 #define PSC_DA_RDIMM_DDR3
3251 #ifndef PSC_DA_SODIMM_DDR3
3252 #define PSC_DA_SODIMM_DDR3
3254 #ifndef PSC_NI_UDIMM_DDR2
3255 #define PSC_NI_UDIMM_DDR2
3257 #ifndef PSC_NI_RDIMM_DDR2
3258 #define PSC_NI_RDIMM_DDR2
3260 #ifndef PSC_NI_SODIMM_DDR2
3261 #define PSC_NI_SODIMM_DDR2
3263 #ifndef PSC_NI_UDIMM_DDR3
3264 #define PSC_NI_UDIMM_DDR3
3266 #ifndef PSC_NI_RDIMM_DDR3
3267 #define PSC_NI_RDIMM_DDR3
3269 #ifndef PSC_NI_SODIMM_DDR3
3270 #define PSC_NI_SODIMM_DDR3
3272 #ifndef PSC_PH_UDIMM_DDR2
3273 #define PSC_PH_UDIMM_DDR2
3275 #ifndef PSC_PH_RDIMM_DDR2
3276 #define PSC_PH_RDIMM_DDR2
3278 #ifndef PSC_PH_SODIMM_DDR2
3279 #define PSC_PH_SODIMM_DDR2
3281 #ifndef PSC_PH_UDIMM_DDR3
3282 #define PSC_PH_UDIMM_DDR3
3284 #ifndef PSC_PH_RDIMM_DDR3
3285 #define PSC_PH_RDIMM_DDR3
3287 #ifndef PSC_PH_SODIMM_DDR3
3288 #define PSC_PH_SODIMM_DDR3
3290 #ifndef PSC_HY_UDIMM_DDR2
3291 #define PSC_HY_UDIMM_DDR2
3293 #ifndef PSC_HY_RDIMM_DDR2
3294 #define PSC_HY_RDIMM_DDR2
3296 #ifndef PSC_HY_SODIMM_DDR2
3297 #define PSC_HY_SODIMM_DDR2
3299 #ifndef PSC_HY_UDIMM_DDR3
3300 #define PSC_HY_UDIMM_DDR3
3302 #ifndef PSC_HY_RDIMM_DDR3
3303 #define PSC_HY_RDIMM_DDR3
3305 #ifndef PSC_HY_SODIMM_DDR3
3306 #define PSC_HY_SODIMM_DDR3
3308 #ifndef PSC_LN_UDIMM_DDR2
3309 #define PSC_LN_UDIMM_DDR2
3311 #ifndef PSC_LN_RDIMM_DDR2
3312 #define PSC_LN_RDIMM_DDR2
3314 #ifndef PSC_LN_SODIMM_DDR2
3315 #define PSC_LN_SODIMM_DDR2
3317 #ifndef PSC_LN_UDIMM_DDR3
3318 #define PSC_LN_UDIMM_DDR3
3320 #ifndef PSC_LN_RDIMM_DDR3
3321 #define PSC_LN_RDIMM_DDR3
3323 #ifndef PSC_LN_SODIMM_DDR3
3324 #define PSC_LN_SODIMM_DDR3
3326 #ifndef PSC_OR_UDIMM_DDR2
3327 #define PSC_OR_UDIMM_DDR2
3329 #ifndef PSC_OR_RDIMM_DDR2
3330 #define PSC_OR_RDIMM_DDR2
3332 #ifndef PSC_OR_SODIMM_DDR2
3333 #define PSC_OR_SODIMM_DDR2
3335 #ifndef PSC_OR_UDIMM_DDR3
3336 #define PSC_OR_UDIMM_DDR3
3338 #ifndef PSC_OR_RDIMM_DDR3
3339 #define PSC_OR_RDIMM_DDR3
3341 #ifndef PSC_OR_SODIMM_DDR3
3342 #define PSC_OR_SODIMM_DDR3
3344 #ifndef PSC_C32_UDIMM_DDR3
3345 #define PSC_C32_UDIMM_DDR3
3347 #ifndef PSC_C32_RDIMM_DDR3
3348 #define PSC_C32_RDIMM_DDR3
3350 #ifndef PSC_ON_UDIMM_DDR2
3351 #define PSC_ON_UDIMM_DDR2
3353 #ifndef PSC_ON_RDIMM_DDR2
3354 #define PSC_ON_RDIMM_DDR2
3356 #ifndef PSC_ON_SODIMM_DDR2
3357 #define PSC_ON_SODIMM_DDR2
3359 #ifndef PSC_ON_UDIMM_DDR3
3360 #define PSC_ON_UDIMM_DDR3
3362 #ifndef PSC_ON_RDIMM_DDR3
3363 #define PSC_ON_RDIMM_DDR3
3365 #ifndef PSC_ON_SODIMM_DDR3
3366 #define PSC_ON_SODIMM_DDR3
3369 MEM_PLATFORM_CFG* memPlatformTypeInstalled[] = {
3401 CONST UINTN SIZE_OF_PLATFORM = (sizeof (memPlatformTypeInstalled) / sizeof (MEM_PLATFORM_CFG*));
3402 /* SIZE_OF_PLATFORM is not defined when the preprocessor runs
3403 * Removing this test for coreboot.
3405 #if RUN_BROKEN_AGESA_TESTS
3406 #if SIZE_OF_PLATFORM > MAX_PLATFORM_TYPES
3407 #error Size of memPlatformTypeInstalled array larger than MAX_PLATFORM_TYPES
3411 /*---------------------------------------------------------------------------------------------------
3412 * EXTRACTABLE PLATFORM SPECIFIC CONFIGURATION
3415 *---------------------------------------------------------------------------------------------------
3417 #define MEM_PSC_FLOW_BLOCK_END NULL
3418 #define PSC_TBL_END NULL
3419 #define MEM_PSC_FLOW_DEFTRUE (BOOLEAN (*) (MEM_NB_BLOCK*, MEM_PSC_TABLE_BLOCK *)) memDefTrue
3421 #if OPTION_MEMCTLR_OR
3423 #if OPTION_AM3_SOCKET_SUPPORT
3424 extern PSC_TBL_ENTRY MaxFreqTblEntUAM3;
3425 #define PSC_TBL_OR_UDIMM3_MAX_FREQ_AM3 &MaxFreqTblEntUAM3,
3426 extern PSC_TBL_ENTRY DramTermTblEntUAM3;
3427 #define PSC_TBL_OR_UDIMM3_DRAM_TERM_AM3 &DramTermTblEntUAM3,
3428 extern PSC_TBL_ENTRY OdtPat1DTblEntUAM3;
3429 #define PSC_TBL_OR_UDIMM3_ODT_PAT_1D_AM3 &OdtPat1DTblEntUAM3,
3430 extern PSC_TBL_ENTRY OdtPat2DTblEntUAM3;
3431 #define PSC_TBL_OR_UDIMM3_ODT_PAT_2D_AM3 &OdtPat2DTblEntUAM3,
3432 extern PSC_TBL_ENTRY OdtPat3DTblEntUAM3;
3433 #define PSC_TBL_OR_UDIMM3_ODT_PAT_3D_AM3 &OdtPat3DTblEntUAM3,
3434 extern PSC_TBL_ENTRY SAOTblEntUAM3;
3435 #define PSC_TBL_OR_UDIMM3_SAO_AM3 &SAOTblEntUAM3,
3436 extern PSC_TBL_ENTRY ClkDisMapEntUAM3;
3437 #define PSC_TBL_OR_UDIMM3_CLK_DIS_AM3 &ClkDisMapEntUAM3,
3439 #if OPTION_C32_SOCKET_SUPPORT
3440 extern PSC_TBL_ENTRY MaxFreqTblEntUC32;
3441 #define PSC_TBL_OR_UDIMM3_MAX_FREQ_C32 &MaxFreqTblEntUC32,
3442 extern PSC_TBL_ENTRY DramTermTblEntUC32;
3443 #define PSC_TBL_OR_UDIMM3_DRAM_TERM_C32 &DramTermTblEntUC32,
3444 extern PSC_TBL_ENTRY OdtPat1DTblEntUC32;
3445 #define PSC_TBL_OR_UDIMM3_ODT_PAT_1D_C32 &OdtPat1DTblEntUC32,
3446 extern PSC_TBL_ENTRY OdtPat2DTblEntUC32;
3447 #define PSC_TBL_OR_UDIMM3_ODT_PAT_2D_C32 &OdtPat2DTblEntUC32,
3448 extern PSC_TBL_ENTRY OdtPat3DTblEntUC32;
3449 #define PSC_TBL_OR_UDIMM3_ODT_PAT_3D_C32 &OdtPat3DTblEntUC32,
3450 extern PSC_TBL_ENTRY SAOTblEntUC32;
3451 #define PSC_TBL_OR_UDIMM3_SAO_C32 &SAOTblEntUC32,
3452 extern PSC_TBL_ENTRY ClkDisMapEntUC32;
3453 #define PSC_TBL_OR_UDIMM3_CLK_DIS_C32 &ClkDisMapEntUC32,
3454 extern PSC_TBL_ENTRY ClkDisMap3DEntUC32;
3455 #define PSC_TBL_OR_UDIMM3_CLK_DIS_3D_C32 &ClkDisMap3DEntUC32,
3457 #if OPTION_G34_SOCKET_SUPPORT
3458 extern PSC_TBL_ENTRY MaxFreqTblEntUG34;
3459 #define PSC_TBL_OR_UDIMM3_MAX_FREQ_G34 &MaxFreqTblEntUG34,
3460 extern PSC_TBL_ENTRY DramTermTblEntUG34;
3461 #define PSC_TBL_OR_UDIMM3_DRAM_TERM_G34 &DramTermTblEntUG34,
3462 extern PSC_TBL_ENTRY OdtPat1DTblEntUG34;
3463 #define PSC_TBL_OR_UDIMM3_ODT_PAT_1D_G34 &OdtPat1DTblEntUG34,
3464 extern PSC_TBL_ENTRY OdtPat2DTblEntUG34;
3465 #define PSC_TBL_OR_UDIMM3_ODT_PAT_2D_G34 &OdtPat2DTblEntUG34,
3466 extern PSC_TBL_ENTRY OdtPat3DTblEntUG34;
3467 #define PSC_TBL_OR_UDIMM3_ODT_PAT_3D_G34 &OdtPat3DTblEntUG34,
3468 extern PSC_TBL_ENTRY SAOTblEntUG34;
3469 #define PSC_TBL_OR_UDIMM3_SAO_G34 &SAOTblEntUG34,
3470 extern PSC_TBL_ENTRY ClkDisMapEntUG34;
3471 #define PSC_TBL_OR_UDIMM3_CLK_DIS_G34 &ClkDisMapEntUG34,
3475 #if OPTION_C32_SOCKET_SUPPORT
3476 extern PSC_TBL_ENTRY MaxFreqTblEntRC32;
3477 #define PSC_TBL_OR_RDIMM3_MAX_FREQ_C32 &MaxFreqTblEntRC32,
3478 extern PSC_TBL_ENTRY DramTermTblEntRC32;
3479 #define PSC_TBL_OR_RDIMM3_DRAM_TERM_C32 &DramTermTblEntRC32,
3480 extern PSC_TBL_ENTRY OdtPat1DTblEntRC32;
3481 #define PSC_TBL_OR_RDIMM3_ODT_PAT_1D_C32 &OdtPat1DTblEntRC32,
3482 extern PSC_TBL_ENTRY OdtPat2DTblEntRC32;
3483 #define PSC_TBL_OR_RDIMM3_ODT_PAT_2D_C32 &OdtPat2DTblEntRC32,
3484 extern PSC_TBL_ENTRY OdtPat3DTblEntRC32;
3485 #define PSC_TBL_OR_RDIMM3_ODT_PAT_3D_C32 &OdtPat3DTblEntRC32,
3486 extern PSC_TBL_ENTRY SAOTblEntRC32;
3487 #define PSC_TBL_OR_RDIMM3_SAO_C32 &SAOTblEntRC32,
3488 extern PSC_TBL_ENTRY RC2IBTTblEntRC32;
3489 #define PSC_TBL_OR_RDIMM3_RC2IBT_C32 &RC2IBTTblEntRC32,
3490 extern PSC_TBL_ENTRY RC10OpSpdTblEntRC32;
3491 #define PSC_TBL_OR_RDIMM3_RC10OPSPD_C32 &RC10OpSpdTblEntRC32,
3492 extern PSC_TBL_ENTRY ClkDisMapEntRC32;
3493 #define PSC_TBL_OR_RDIMM3_CLK_DIS_C32 &ClkDisMapEntRC32,
3495 #if OPTION_G34_SOCKET_SUPPORT
3496 extern PSC_TBL_ENTRY MaxFreqTblEntRG34;
3497 #define PSC_TBL_OR_RDIMM3_MAX_FREQ_G34 &MaxFreqTblEntRG34,
3498 extern PSC_TBL_ENTRY DramTermTblEntRG34;
3499 #define PSC_TBL_OR_RDIMM3_DRAM_TERM_G34 &DramTermTblEntRG34,
3500 extern PSC_TBL_ENTRY OdtPat1DTblEntRG34;
3501 #define PSC_TBL_OR_RDIMM3_ODT_PAT_1D_G34 &OdtPat1DTblEntRG34,
3502 extern PSC_TBL_ENTRY OdtPat2DTblEntRG34;
3503 #define PSC_TBL_OR_RDIMM3_ODT_PAT_2D_G34 &OdtPat2DTblEntRG34,
3504 extern PSC_TBL_ENTRY OdtPat3DTblEntRG34;
3505 #define PSC_TBL_OR_RDIMM3_ODT_PAT_3D_G34 &OdtPat3DTblEntRG34,
3506 extern PSC_TBL_ENTRY SAOTblEntRG34;
3507 #define PSC_TBL_OR_RDIMM3_SAO_G34 &SAOTblEntRG34,
3508 extern PSC_TBL_ENTRY RC2IBTTblEntRG34;
3509 #define PSC_TBL_OR_RDIMM3_RC2IBT_G34 &RC2IBTTblEntRG34,
3510 extern PSC_TBL_ENTRY RC10OpSpdTblEntRG34;
3511 #define PSC_TBL_OR_RDIMM3_RC10OPSPD_G34 &RC10OpSpdTblEntRG34,
3512 extern PSC_TBL_ENTRY ClkDisMapEntRG34;
3513 #define PSC_TBL_OR_RDIMM3_CLK_DIS_G34 &ClkDisMapEntRG34,
3516 //#if OPTION_SODIMMS
3518 //#if OPTION_LRDIMMS
3519 // #if OPTION_C32_SOCKET_SUPPORT
3520 // extern PSC_TBL_ENTRY MaxFreqTblEntLRC32;
3521 // #define PSC_TBL_OR_LRDIMM3_MAX_FREQ_C32 &MaxFreqTblEntLRC32,
3522 // extern PSC_TBL_ENTRY DramTermTblEntLRC32;
3523 // #define PSC_TBL_OR_LRDIMM3_DRAM_TERM_C32 &DramTermTblEntLRC32,
3524 // extern PSC_TBL_ENTRY OdtPat1DTblEntRC32;
3525 // #define PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_C32 &OdtPat1DTblEntLRC32,
3526 // extern PSC_TBL_ENTRY OdtPat2DTblEntRC32;
3527 // #define PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_C32 &OdtPat2DTblEntLRC32,
3528 // extern PSC_TBL_ENTRY OdtPat3DTblEntRC32;
3529 // #define PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_C32 &OdtPat3DTblEntLRC32,
3530 // extern PSC_TBL_ENTRY SAOTblEntRC32;
3531 // #define PSC_TBL_OR_LRDIMM3_SAO_C32 &SAOTblEntLRC32,
3532 // extern PSC_TBL_ENTRY IBTTblEntLRC32;
3533 // #define PSC_TBL_OR_LRDIMM3_IBT_C32 &IBTTblEntLRC32,
3534 // extern PSC_TBL_ENTRY ClkDisMapEntLRC32;
3535 // #define PSC_TBL_OR_LRDIMM3_CLK_DIS_C32 &ClkDisMapEntLRC32,
3537 // #if OPTION_G34_SOCKET_SUPPORT
3538 // extern PSC_TBL_ENTRY MaxFreqTblEntLRG34;
3539 // #define PSC_TBL_OR_LRDIMM3_MAX_FREQ_G34 &MaxFreqTblEntLRG34,
3540 // extern PSC_TBL_ENTRY DramTermTblEntLRG34;
3541 // #define PSC_TBL_OR_LRDIMM3_DRAM_TERM_G34 &DramTermTblEntLRG34,
3542 // extern PSC_TBL_ENTRY OdtPat1DTblEntRG34;
3543 // #define PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_G34 &OdtPat1DTblEntLRG34,
3544 // extern PSC_TBL_ENTRY OdtPat2DTblEntRG34;
3545 // #define PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_G34 &OdtPat2DTblEntLRG34,
3546 // extern PSC_TBL_ENTRY OdtPat3DTblEntRG34;
3547 // #define PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_G34 &OdtPat3DTblEntLRG34,
3548 // extern PSC_TBL_ENTRY SAOTblEntRG34;
3549 // #define PSC_TBL_OR_LRDIMM3_SAO_G34 &SAOTblEntLRG34,
3550 // extern PSC_TBL_ENTRY IBTTblEntLRG34;
3551 // #define PSC_TBL_OR_LRDIMM3_IBT_G34 &IBTTblEntLRG34,
3552 // extern PSC_TBL_ENTRY ClkDisMapEntLRG34;
3553 // #define PSC_TBL_OR_LRDIMM3_CLK_DIS_G34 &ClkDisMapEntLRG34,
3556 extern PSC_TBL_ENTRY MR0WrTblEntry;
3557 #define PSC_TBL_OR_MR0_WR &MR0WrTblEntry,
3558 extern PSC_TBL_ENTRY MR0CLTblEntry;
3559 #define PSC_TBL_OR_MR0_CL &MR0CLTblEntry,
3560 extern PSC_TBL_ENTRY OrDdr3CKETriEnt;
3561 #define PSC_TBL_OR_CKE_TRI &OrDdr3CKETriEnt,
3562 extern PSC_TBL_ENTRY OrDdr3ODTTri3DEnt;
3563 #define PSC_TBL_OR_ODT_TRI_3D &OrDdr3ODTTri3DEnt,
3564 extern PSC_TBL_ENTRY OrDdr3ODTTriEnt;
3565 #define PSC_TBL_OR_ODT_TRI &OrDdr3ODTTriEnt,
3566 extern PSC_TBL_ENTRY OrUDdr3CSTriEnt;
3567 #define PSC_TBL_OR_UDIMM3_CS_TRI &OrUDdr3CSTriEnt,
3568 extern PSC_TBL_ENTRY OrDdr3CSTriEnt;
3569 #define PSC_TBL_OR_CS_TRI &OrDdr3CSTriEnt,
3570 extern PSC_TBL_ENTRY OrLRDdr3ODTTri3DEnt;
3571 #define PSC_TBL_OR_LRDIMM3_ODT_TRI_3D &OrLRDdr3ODTTri3DEnt,
3572 extern PSC_TBL_ENTRY OrLRDdr3ODTTriEnt;
3573 #define PSC_TBL_OR_LRDIMM3_ODT_TRI &OrLRDdr3ODTTriEnt,
3575 #ifndef PSC_TBL_OR_UDIMM3_MAX_FREQ_AM3
3576 #define PSC_TBL_OR_UDIMM3_MAX_FREQ_AM3
3578 #ifndef PSC_TBL_OR_UDIMM3_MAX_FREQ_C32
3579 #define PSC_TBL_OR_UDIMM3_MAX_FREQ_C32
3581 #ifndef PSC_TBL_OR_UDIMM3_MAX_FREQ_G34
3582 #define PSC_TBL_OR_UDIMM3_MAX_FREQ_G34
3584 #ifndef PSC_TBL_OR_UDIMM3_DRAM_TERM_AM3
3585 #define PSC_TBL_OR_UDIMM3_DRAM_TERM_AM3
3587 #ifndef PSC_TBL_OR_UDIMM3_DRAM_TERM_C32
3588 #define PSC_TBL_OR_UDIMM3_DRAM_TERM_C32
3590 #ifndef PSC_TBL_OR_UDIMM3_DRAM_TERM_G34
3591 #define PSC_TBL_OR_UDIMM3_DRAM_TERM_G34
3593 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_1D_AM3
3594 #define PSC_TBL_OR_UDIMM3_ODT_PAT_1D_AM3
3596 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_1D_C32
3597 #define PSC_TBL_OR_UDIMM3_ODT_PAT_1D_C32
3599 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_1D_G34
3600 #define PSC_TBL_OR_UDIMM3_ODT_PAT_1D_G34
3602 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_2D_AM3
3603 #define PSC_TBL_OR_UDIMM3_ODT_PAT_2D_AM3
3605 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_2D_C32
3606 #define PSC_TBL_OR_UDIMM3_ODT_PAT_2D_C32
3608 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_2D_G34
3609 #define PSC_TBL_OR_UDIMM3_ODT_PAT_2D_G34
3611 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_3D_AM3
3612 #define PSC_TBL_OR_UDIMM3_ODT_PAT_3D_AM3
3614 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_3D_C32
3615 #define PSC_TBL_OR_UDIMM3_ODT_PAT_3D_C32
3617 #ifndef PSC_TBL_OR_UDIMM3_ODT_PAT_3D_G34
3618 #define PSC_TBL_OR_UDIMM3_ODT_PAT_3D_G34
3620 #ifndef PSC_TBL_OR_UDIMM3_SAO_AM3
3621 #define PSC_TBL_OR_UDIMM3_SAO_AM3
3623 #ifndef PSC_TBL_OR_UDIMM3_SAO_C32
3624 #define PSC_TBL_OR_UDIMM3_SAO_C32
3626 #ifndef PSC_TBL_OR_UDIMM3_SAO_G34
3627 #define PSC_TBL_OR_UDIMM3_SAO_G34
3629 #ifndef PSC_TBL_OR_RDIMM3_MAX_FREQ_AM3
3630 #define PSC_TBL_OR_RDIMM3_MAX_FREQ_AM3
3632 #ifndef PSC_TBL_OR_RDIMM3_MAX_FREQ_C32
3633 #define PSC_TBL_OR_RDIMM3_MAX_FREQ_C32
3635 #ifndef PSC_TBL_OR_RDIMM3_MAX_FREQ_G34
3636 #define PSC_TBL_OR_RDIMM3_MAX_FREQ_G34
3638 #ifndef PSC_TBL_OR_RDIMM3_DRAM_TERM_AM3
3639 #define PSC_TBL_OR_RDIMM3_DRAM_TERM_AM3
3641 #ifndef PSC_TBL_OR_RDIMM3_DRAM_TERM_C32
3642 #define PSC_TBL_OR_RDIMM3_DRAM_TERM_C32
3644 #ifndef PSC_TBL_OR_RDIMM3_DRAM_TERM_G34
3645 #define PSC_TBL_OR_RDIMM3_DRAM_TERM_G34
3647 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_1D_AM3
3648 #define PSC_TBL_OR_RDIMM3_ODT_PAT_1D_AM3
3650 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_1D_C32
3651 #define PSC_TBL_OR_RDIMM3_ODT_PAT_1D_C32
3653 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_1D_G34
3654 #define PSC_TBL_OR_RDIMM3_ODT_PAT_1D_G34
3656 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_2D_AM3
3657 #define PSC_TBL_OR_RDIMM3_ODT_PAT_2D_AM3
3659 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_2D_C32
3660 #define PSC_TBL_OR_RDIMM3_ODT_PAT_2D_C32
3662 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_2D_G34
3663 #define PSC_TBL_OR_RDIMM3_ODT_PAT_2D_G34
3665 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_3D_AM3
3666 #define PSC_TBL_OR_RDIMM3_ODT_PAT_3D_AM3
3668 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_3D_C32
3669 #define PSC_TBL_OR_RDIMM3_ODT_PAT_3D_C32
3671 #ifndef PSC_TBL_OR_RDIMM3_ODT_PAT_3D_G34
3672 #define PSC_TBL_OR_RDIMM3_ODT_PAT_3D_G34
3674 #ifndef PSC_TBL_OR_RDIMM3_SAO_AM3
3675 #define PSC_TBL_OR_RDIMM3_SAO_AM3
3677 #ifndef PSC_TBL_OR_RDIMM3_SAO_C32
3678 #define PSC_TBL_OR_RDIMM3_SAO_C32
3680 #ifndef PSC_TBL_OR_RDIMM3_SAO_G34
3681 #define PSC_TBL_OR_RDIMM3_SAO_G34
3683 #ifndef PSC_TBL_OR_RDIMM3_RC2IBT_AM3
3684 #define PSC_TBL_OR_RDIMM3_RC2IBT_AM3
3686 #ifndef PSC_TBL_OR_RDIMM3_RC2IBT_C32
3687 #define PSC_TBL_OR_RDIMM3_RC2IBT_C32
3689 #ifndef PSC_TBL_OR_RDIMM3_RC2IBT_G34
3690 #define PSC_TBL_OR_RDIMM3_RC2IBT_G34
3692 #ifndef PSC_TBL_OR_RDIMM3_RC10OPSPD_AM3
3693 #define PSC_TBL_OR_RDIMM3_RC10OPSPD_AM3
3695 #ifndef PSC_TBL_OR_RDIMM3_RC10OPSPD_C32
3696 #define PSC_TBL_OR_RDIMM3_RC10OPSPD_C32
3698 #ifndef PSC_TBL_OR_RDIMM3_RC10OPSPD_G34
3699 #define PSC_TBL_OR_RDIMM3_RC10OPSPD_G34
3701 #ifndef PSC_TBL_OR_LRDIMM3_MAX_FREQ_C32
3702 #define PSC_TBL_OR_LRDIMM3_MAX_FREQ_C32
3704 #ifndef PSC_TBL_OR_LRDIMM3_MAX_FREQ_G34
3705 #define PSC_TBL_OR_LRDIMM3_MAX_FREQ_G34
3707 #ifndef PSC_TBL_OR_LRDIMM3_DRAM_TERM_C32
3708 #define PSC_TBL_OR_LRDIMM3_DRAM_TERM_C32
3710 #ifndef PSC_TBL_OR_LRDIMM3_DRAM_TERM_G34
3711 #define PSC_TBL_OR_LRDIMM3_DRAM_TERM_G34
3713 #ifndef PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_C32
3714 #define PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_C32
3716 #ifndef PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_G34
3717 #define PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_G34
3719 #ifndef PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_C32
3720 #define PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_C32
3722 #ifndef PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_G34
3723 #define PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_G34
3725 #ifndef PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_C32
3726 #define PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_C32
3728 #ifndef PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_G34
3729 #define PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_G34
3731 #ifndef PSC_TBL_OR_LRDIMM3_SAO_C32
3732 #define PSC_TBL_OR_LRDIMM3_SAO_C32
3734 #ifndef PSC_TBL_OR_LRDIMM3_SAO_G34
3735 #define PSC_TBL_OR_LRDIMM3_SAO_G34
3737 #ifndef PSC_TBL_OR_LRDIMM3_IBT_C32
3738 #define PSC_TBL_OR_LRDIMM3_IBT_C32
3740 #ifndef PSC_TBL_OR_LRDIMM3_IBT_G34
3741 #define PSC_TBL_OR_LRDIMM3_IBT_G34
3743 #ifndef PSC_TBL_OR_UDIMM3_CLK_DIS_AM3
3744 #define PSC_TBL_OR_UDIMM3_CLK_DIS_AM3
3746 #ifndef PSC_TBL_OR_UDIMM3_CLK_DIS_C32
3747 #define PSC_TBL_OR_UDIMM3_CLK_DIS_C32
3749 #ifndef PSC_TBL_OR_UDIMM3_CLK_DIS_3D_C32
3750 #define PSC_TBL_OR_UDIMM3_CLK_DIS_3D_C32
3752 #ifndef PSC_TBL_OR_UDIMM3_CLK_DIS_G34
3753 #define PSC_TBL_OR_UDIMM3_CLK_DIS_G34
3755 #ifndef PSC_TBL_OR_RDIMM3_CLK_DIS_C32
3756 #define PSC_TBL_OR_RDIMM3_CLK_DIS_C32
3758 #ifndef PSC_TBL_OR_RDIMM3_CLK_DIS_G34
3759 #define PSC_TBL_OR_RDIMM3_CLK_DIS_G34
3761 #ifndef PSC_TBL_OR_LRDIMM3_CLK_DIS_C32
3762 #define PSC_TBL_OR_LRDIMM3_CLK_DIS_C32
3764 #ifndef PSC_TBL_OR_LRDIMM3_CLK_DIS_G34
3765 #define PSC_TBL_OR_LRDIMM3_CLK_DIS_G34
3768 PSC_TBL_ENTRY* memPSCTblMaxFreqArrayOR[] = {
3769 PSC_TBL_OR_UDIMM3_MAX_FREQ_AM3
3770 PSC_TBL_OR_UDIMM3_MAX_FREQ_C32
3771 PSC_TBL_OR_UDIMM3_MAX_FREQ_G34
3772 PSC_TBL_OR_RDIMM3_MAX_FREQ_AM3
3773 PSC_TBL_OR_RDIMM3_MAX_FREQ_C32
3774 PSC_TBL_OR_RDIMM3_MAX_FREQ_G34
3775 PSC_TBL_OR_LRDIMM3_MAX_FREQ_C32
3776 PSC_TBL_OR_LRDIMM3_MAX_FREQ_G34
3780 PSC_TBL_ENTRY* memPSCTblDramTermArrayOR[] = {
3781 PSC_TBL_OR_UDIMM3_DRAM_TERM_AM3
3782 PSC_TBL_OR_UDIMM3_DRAM_TERM_C32
3783 PSC_TBL_OR_UDIMM3_DRAM_TERM_G34
3784 PSC_TBL_OR_RDIMM3_DRAM_TERM_AM3
3785 PSC_TBL_OR_RDIMM3_DRAM_TERM_C32
3786 PSC_TBL_OR_RDIMM3_DRAM_TERM_G34
3787 PSC_TBL_OR_LRDIMM3_DRAM_TERM_C32
3788 PSC_TBL_OR_LRDIMM3_DRAM_TERM_G34
3792 PSC_TBL_ENTRY* memPSCTblODTPatArrayOR[] = {
3793 PSC_TBL_OR_UDIMM3_ODT_PAT_1D_AM3
3794 PSC_TBL_OR_UDIMM3_ODT_PAT_2D_AM3
3795 PSC_TBL_OR_UDIMM3_ODT_PAT_3D_AM3
3796 PSC_TBL_OR_RDIMM3_ODT_PAT_1D_AM3
3797 PSC_TBL_OR_RDIMM3_ODT_PAT_2D_AM3
3798 PSC_TBL_OR_RDIMM3_ODT_PAT_3D_AM3
3799 PSC_TBL_OR_UDIMM3_ODT_PAT_1D_C32
3800 PSC_TBL_OR_UDIMM3_ODT_PAT_2D_C32
3801 PSC_TBL_OR_UDIMM3_ODT_PAT_3D_C32
3802 PSC_TBL_OR_RDIMM3_ODT_PAT_1D_C32
3803 PSC_TBL_OR_RDIMM3_ODT_PAT_2D_C32
3804 PSC_TBL_OR_RDIMM3_ODT_PAT_3D_C32
3805 PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_C32
3806 PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_C32
3807 PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_C32
3808 PSC_TBL_OR_UDIMM3_ODT_PAT_1D_G34
3809 PSC_TBL_OR_UDIMM3_ODT_PAT_2D_G34
3810 PSC_TBL_OR_UDIMM3_ODT_PAT_3D_G34
3811 PSC_TBL_OR_RDIMM3_ODT_PAT_1D_G34
3812 PSC_TBL_OR_RDIMM3_ODT_PAT_2D_G34
3813 PSC_TBL_OR_RDIMM3_ODT_PAT_3D_G34
3814 PSC_TBL_OR_LRDIMM3_ODT_PAT_1D_G34
3815 PSC_TBL_OR_LRDIMM3_ODT_PAT_2D_G34
3816 PSC_TBL_OR_LRDIMM3_ODT_PAT_3D_G34
3820 PSC_TBL_ENTRY* memPSCTblSAOArrayOR[] = {
3821 PSC_TBL_OR_UDIMM3_SAO_AM3
3822 PSC_TBL_OR_UDIMM3_SAO_C32
3823 PSC_TBL_OR_UDIMM3_SAO_G34
3824 PSC_TBL_OR_RDIMM3_SAO_AM3
3825 PSC_TBL_OR_RDIMM3_SAO_C32
3826 PSC_TBL_OR_RDIMM3_SAO_G34
3827 PSC_TBL_OR_LRDIMM3_SAO_C32
3828 PSC_TBL_OR_LRDIMM3_SAO_G34
3832 PSC_TBL_ENTRY* memPSCTblMR0WRArrayOR[] = {
3837 PSC_TBL_ENTRY* memPSCTblMR0CLArrayOR[] = {
3842 PSC_TBL_ENTRY* memPSCTblRC2IBTArrayOR[] = {
3843 PSC_TBL_OR_RDIMM3_RC2IBT_AM3
3844 PSC_TBL_OR_RDIMM3_RC2IBT_C32
3845 PSC_TBL_OR_RDIMM3_RC2IBT_G34
3849 PSC_TBL_ENTRY* memPSCTblRC10OPSPDArrayOR[] = {
3850 PSC_TBL_OR_RDIMM3_RC10OPSPD_AM3
3851 PSC_TBL_OR_RDIMM3_RC10OPSPD_C32
3852 PSC_TBL_OR_RDIMM3_RC10OPSPD_G34
3856 PSC_TBL_ENTRY* memPSCTblLRIBTArrayOR[] = {
3857 PSC_TBL_OR_LRDIMM3_IBT_C32
3858 PSC_TBL_OR_LRDIMM3_IBT_G34
3862 PSC_TBL_ENTRY* memPSCTblGenArrayOR[] = {
3863 PSC_TBL_OR_UDIMM3_CLK_DIS_AM3
3864 PSC_TBL_OR_UDIMM3_CLK_DIS_C32
3865 PSC_TBL_OR_UDIMM3_CLK_DIS_3D_C32
3866 PSC_TBL_OR_UDIMM3_CLK_DIS_G34
3867 PSC_TBL_OR_RDIMM3_CLK_DIS_C32
3868 PSC_TBL_OR_RDIMM3_CLK_DIS_G34
3869 PSC_TBL_OR_LRDIMM3_CLK_DIS_C32
3870 PSC_TBL_OR_LRDIMM3_CLK_DIS_G34
3872 PSC_TBL_OR_ODT_TRI_3D
3874 PSC_TBL_OR_LRDIMM3_ODT_TRI_3D
3875 PSC_TBL_OR_LRDIMM3_ODT_TRI
3876 PSC_TBL_OR_UDIMM3_CS_TRI
3881 MEM_PSC_TABLE_BLOCK memPSCTblBlockOr = {
3882 (PSC_TBL_ENTRY **)&memPSCTblMaxFreqArrayOR,
3883 (PSC_TBL_ENTRY **)&memPSCTblDramTermArrayOR,
3884 (PSC_TBL_ENTRY **)&memPSCTblODTPatArrayOR,
3885 (PSC_TBL_ENTRY **)&memPSCTblSAOArrayOR,
3886 (PSC_TBL_ENTRY **)&memPSCTblMR0WRArrayOR,
3887 (PSC_TBL_ENTRY **)&memPSCTblMR0CLArrayOR,
3888 (PSC_TBL_ENTRY **)&memPSCTblRC2IBTArrayOR,
3889 (PSC_TBL_ENTRY **)&memPSCTblRC10OPSPDArrayOR,
3890 (PSC_TBL_ENTRY **)&memPSCTblLRIBTArrayOR,
3893 (PSC_TBL_ENTRY **)&memPSCTblGenArrayOR
3896 extern MEM_PSC_FLOW MemPGetMaxFreqSupported;
3897 #define PSC_FLOW_OR_MAX_FREQ MemPGetMaxFreqSupported
3898 extern MEM_PSC_FLOW MemPGetRttNomWr;
3899 #define PSC_FLOW_OR_DRAM_TERM MemPGetRttNomWr
3900 extern MEM_PSC_FLOW MemPGetODTPattern;
3901 #define PSC_FLOW_OR_ODT_PATTERN MemPGetODTPattern
3902 extern MEM_PSC_FLOW MemPGetSAO;
3903 #define PSC_FLOW_OR_SAO MemPGetSAO
3904 extern MEM_PSC_FLOW MemPGetMR0WrCL;
3905 #define PSC_FLOW_OR_MR0_WRCL MemPGetMR0WrCL
3907 extern MEM_PSC_FLOW MemPGetRC2IBT;
3908 #define PSC_FLOW_OR_RC2_IBT MemPGetRC2IBT
3909 extern MEM_PSC_FLOW MemPGetRC10OpSpd;
3910 #define PSC_FLOW_OR_RC10_OPSPD MemPGetRC10OpSpd
3912 //#if OPTION_LRDIMMS
3913 //extern MEM_PSC_FLOW MemPGetLRIBT;
3914 //#define PSC_FLOW_OR_LR_IBT MemPGetLRIBT
3915 //extern MEM_PSC_FLOW MemPGetLRNPR;
3916 //#define PSC_FLOW_OR_LR_NPR MemPGetLRNPR
3917 //extern MEM_PSC_FLOW MemPGetLRNLR;
3918 //#define PSC_FLOW_OR_LR_NLR MemPGetLRNLR
3920 #ifndef PSC_FLOW_OR_MAX_FREQ
3921 #define PSC_FLOW_OR_MAX_FREQ MEM_PSC_FLOW_DEFTRUE
3923 #ifndef PSC_FLOW_OR_DRAM_TERM
3924 #define PSC_FLOW_OR_DRAM_TERM MEM_PSC_FLOW_DEFTRUE
3926 #ifndef PSC_FLOW_OR_ODT_PATTERN
3927 #define PSC_FLOW_OR_ODT_PATTERN MEM_PSC_FLOW_DEFTRUE
3929 #ifndef PSC_FLOW_OR_SAO
3930 #define PSC_FLOW_OR_SAO MEM_PSC_FLOW_DEFTRUE
3932 #ifndef PSC_FLOW_OR_MR0_WRCL
3933 #define PSC_FLOW_OR_MR0_WRCL MEM_PSC_FLOW_DEFTRUE
3935 #ifndef PSC_FLOW_OR_RC2_IBT
3936 #define PSC_FLOW_OR_RC2_IBT MEM_PSC_FLOW_DEFTRUE
3938 #ifndef PSC_FLOW_OR_RC10_OPSPD
3939 #define PSC_FLOW_OR_RC10_OPSPD MEM_PSC_FLOW_DEFTRUE
3941 #ifndef PSC_FLOW_OR_LR_IBT
3942 #define PSC_FLOW_OR_LR_IBT MEM_PSC_FLOW_DEFTRUE
3944 #ifndef PSC_FLOW_OR_LR_NPR
3945 #define PSC_FLOW_OR_LR_NPR MEM_PSC_FLOW_DEFTRUE
3947 #ifndef PSC_FLOW_OR_LR_NLR
3948 #define PSC_FLOW_OR_LR_NLR MEM_PSC_FLOW_DEFTRUE
3950 MEM_PSC_FLOW_BLOCK memPlatSpecFlowOR = {
3952 PSC_FLOW_OR_MAX_FREQ,
3953 PSC_FLOW_OR_DRAM_TERM,
3954 PSC_FLOW_OR_ODT_PATTERN,
3956 PSC_FLOW_OR_MR0_WRCL,
3957 PSC_FLOW_OR_RC2_IBT,
3958 PSC_FLOW_OR_RC10_OPSPD,
3963 #define MEM_PSC_FLOW_BLOCK_OR &memPlatSpecFlowOR,
3965 #define MEM_PSC_FLOW_BLOCK_OR
3969 MEM_PSC_FLOW_BLOCK* memPlatSpecFlowArray[] = {
3970 MEM_PSC_FLOW_BLOCK_OR
3971 MEM_PSC_FLOW_BLOCK_END
3974 /*---------------------------------------------------------------------------------------------------
3978 *---------------------------------------------------------------------------------------------------
3980 #if (OPTION_LRDIMMS == TRUE)
3981 #if (OPTION_MEMCTLR_OR == TRUE)
3982 extern MEM_TECH_FEAT MemTLrdimmConstructor3;
3983 #define MEM_TECH_FEATURE_LRDIMM_INIT &MemTLrdimmConstructor3
3984 #else //#if (OPTION_MEMCTLR_OR == FALSE)
3985 #define MEM_TECH_FEATURE_LRDIMM_INIT MemTFeatDef
3987 #else //#if (OPTION_LRDIMMS == FALSE)
3988 #define MEM_TECH_FEATURE_LRDIMM_INIT MemTFeatDef
3990 MEM_TECH_LRDIMM memLrdimmSupported = {
3991 MEM_TECH_LRDIMM_STRUCT_VERSION,
3992 MEM_TECH_FEATURE_LRDIMM_INIT
3995 /*---------------------------------------------------------------------------------------------------
3999 *---------------------------------------------------------------------------------------------------
4001 MEM_FLOW_CFG* memFlowControlInstalled[] = {
4004 /*---------------------------------------------------------------------------------------------------
4005 * NB TRAINING FLOW CONTROL
4008 *---------------------------------------------------------------------------------------------------
4010 OPTION_MEM_FEATURE_NB* memNTrainFlowControl[] = { // Training flow control
4013 /*---------------------------------------------------------------------------------------------------
4014 * DEFAULT TECHNOLOGY BLOCK
4017 *---------------------------------------------------------------------------------------------------
4019 MEM_TECH_CONSTRUCTOR* memTechInstalled[] = { // Types of technology installed
4023 /*---------------------------------------------------------------------------------------------------
4024 * DEFAULT TECHNOLOGY MAP
4027 *---------------------------------------------------------------------------------------------------
4029 UINT8 MemoryTechnologyMap[MAX_SOCKETS_SUPPORTED] = {0, 0, 0, 0, 0, 0, 0, 0};
4031 /*---------------------------------------------------------------------------------------------------
4032 * DEFAULT MAIN FEATURE BLOCK
4033 *---------------------------------------------------------------------------------------------------
4035 MEM_FEAT_BLOCK_MAIN MemFeatMain = {
4039 /*---------------------------------------------------------------------------------------------------
4040 * DEFAULT NORTHBRIDGE SUPPORT LIST
4043 *---------------------------------------------------------------------------------------------------
4045 #if (OPTION_MEMCTLR_DR == TRUE)
4046 #undef MEM_NB_SUPPORT_DR
4047 #define MEM_NB_SUPPORT_DR { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DR, MEM_IDENDIMM_DR },
4049 #if (OPTION_MEMCTLR_RB == TRUE)
4050 #undef MEM_NB_SUPPORT_RB
4051 #define MEM_NB_SUPPORT_RB { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_RB, MEM_IDENDIMM_RB },
4053 #if (OPTION_MEMCTLR_DA == TRUE)
4054 #undef MEM_NB_SUPPORT_DA
4055 #define MEM_NB_SUPPORT_DA { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_DA, MEM_IDENDIMM_DA },
4057 #if (OPTION_MEMCTLR_PH == TRUE)
4058 #undef MEM_NB_SUPPORT_PH
4059 #define MEM_NB_SUPPORT_PH { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_PH, MEM_IDENDIMM_PH },
4061 #if (OPTION_MEMCTLR_HY == TRUE)
4062 #undef MEM_NB_SUPPORT_HY
4063 #define MEM_NB_SUPPORT_HY { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_HY, MEM_IDENDIMM_HY },
4065 #if (OPTION_MEMCTLR_C32 == TRUE)
4066 #undef MEM_NB_SUPPORT_C32
4067 #define MEM_NB_SUPPORT_C32 { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_C32, MEM_IDENDIMM_C32 },
4069 #if (OPTION_MEMCTLR_LN == TRUE)
4070 #undef MEM_NB_SUPPORT_LN
4071 #define MEM_NB_SUPPORT_LN { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_LN, MEM_IDENDIMM_LN },
4073 #if (OPTION_MEMCTLR_ON == TRUE)
4074 #undef MEM_NB_SUPPORT_ON
4075 #define MEM_NB_SUPPORT_ON { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_ON, MEM_IDENDIMM_ON },
4077 #if (OPTION_MEMCTLR_OR == TRUE)
4078 #undef MEM_NB_SUPPORT_OR
4079 #define MEM_NB_SUPPORT_OR { MEM_NB_SUPPORT_STRUCT_VERSION, NULL, NULL, NULL, MEM_FEATURE_S3_RESUME_CONSTRUCTOR_OR, MEM_IDENDIMM_OR },
4081 /*---------------------------------------------------------------------------------------------------
4082 * DEFAULT Technology Training
4085 *---------------------------------------------------------------------------------------------------
4088 MEM_TECH_FEAT_BLOCK memTechTrainingFeatDDR2 = {
4091 MEM_FEAT_TRAIN_SEQ memTrainSequenceDDR2[] = {
4096 MEM_TECH_FEAT_BLOCK memTechTrainingFeatDDR3 = {
4099 MEM_FEAT_TRAIN_SEQ memTrainSequenceDDR3[] = {
4103 /*---------------------------------------------------------------------------------------------------
4104 * DEFAULT Platform Specific list
4107 *---------------------------------------------------------------------------------------------------
4109 #if (OPTION_MEMCTLR_DR == TRUE)
4110 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledDr[MAX_FF_TYPES] = {
4114 #if (OPTION_MEMCTLR_RB == TRUE)
4115 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledRb[MAX_FF_TYPES] = {
4119 #if (OPTION_MEMCTLR_DA == TRUE)
4120 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledDA[MAX_FF_TYPES] = {
4124 #if (OPTION_MEMCTLR_Ni == TRUE)
4125 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledNi[MAX_FF_TYPES] = {
4129 #if (OPTION_MEMCTLR_PH == TRUE)
4130 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledPh[MAX_FF_TYPES] = {
4134 #if (OPTION_MEMCTLR_LN == TRUE)
4135 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledLN[MAX_FF_TYPES] = {
4139 #if (OPTION_MEMCTLR_HY == TRUE)
4140 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledHy[MAX_FF_TYPES] = {
4144 #if (OPTION_MEMCTLR_OR == TRUE)
4145 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledOr[MAX_FF_TYPES] = {
4149 #if (OPTION_MEMCTLR_C32 == TRUE)
4150 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledC32[MAX_FF_TYPES] = {
4154 #if (OPTION_MEMCTLR_ON == TRUE)
4155 MEM_PLAT_SPEC_CFG* memPlatSpecFFInstalledON[MAX_FF_TYPES] = {
4159 /*----------------------------------------------------------------------
4160 * DEFAULT PSCFG DEFINITIONS
4162 *----------------------------------------------------------------------
4164 MEM_PLATFORM_CFG* memPlatformTypeInstalled[] = {
4168 /*----------------------------------------------------------------------
4169 * EXTRACTABLE PLATFORM SPECIFIC CONFIGURATION
4171 *----------------------------------------------------------------------
4173 MEM_PSC_FLOW_BLOCK* memPlatSpecFlowArray[] = {
4177 MEM_TECH_LRDIMM memLrdimmSupported = {
4178 MEM_TECH_LRDIMM_STRUCT_VERSION,
4183 /*---------------------------------------------------------------------------------------------------
4184 * NORTHBRIDGE SUPPORT LIST
4187 *---------------------------------------------------------------------------------------------------
4189 MEM_NB_SUPPORT memNBInstalled[] = {
4202 #endif // _OPTION_MEMORY_INSTALL_H_