5 * Install of family 10h support
7 * This file generates the defaults tables for family 10h processors.
9 * @xrefitem bom "File Content Label" "Release Content"
11 * @e sub-project: Core
12 * @e \$Revision: 60726 $ @e \$Date: 2011-10-20 17:08:02 -0600 (Thu, 20 Oct 2011) $
14 /*****************************************************************************
16 * Copyright (C) 2012 Advanced Micro Devices, Inc.
17 * All rights reserved.
19 * Redistribution and use in source and binary forms, with or without
20 * modification, are permitted provided that the following conditions are met:
21 * * Redistributions of source code must retain the above copyright
22 * notice, this list of conditions and the following disclaimer.
23 * * Redistributions in binary form must reproduce the above copyright
24 * notice, this list of conditions and the following disclaimer in the
25 * documentation and/or other materials provided with the distribution.
26 * * Neither the name of Advanced Micro Devices, Inc. nor the names of
27 * its contributors may be used to endorse or promote products derived
28 * from this software without specific prior written permission.
30 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
31 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
32 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
33 * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
34 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
35 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
36 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
37 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
39 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 ***************************************************************************/
44 #ifndef _OPTION_FAMILY_10H_INSTALL_H_
45 #define _OPTION_FAMILY_10H_INSTALL_H_
48 * Common Family 10h routines
50 extern F_CPU_DISABLE_PSTATE F10DisablePstate;
51 extern F_CPU_TRANSITION_PSTATE F10TransitionPstate;
52 extern F_CPU_GET_TSC_RATE F10GetTscRate;
53 extern F_CPU_GET_NB_FREQ F10GetCurrentNbFrequency;
54 extern F_CPU_AP_INITIAL_LAUNCH F10LaunchApCore;
55 extern F_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE F10GetApMailboxFromHardware;
56 extern F_CPU_SET_AP_CORE_NUMBER F10SetApCoreNumber;
57 extern F_CPU_GET_AP_CORE_NUMBER F10GetApCoreNumber;
58 extern F_CPU_TRANSFER_AP_CORE_NUMBER F10TransferApCoreNumber;
59 extern F_CORE_ID_POSITION_IN_INITIAL_APIC_ID F10CpuAmdCoreIdPositionInInitialApicId;
60 extern F_CPU_SAVE_FEATURES F10SaveFeatures;
61 extern F_CPU_WRITE_FEATURES F10WriteFeatures;
62 extern F_CPU_SET_WARM_RESET_FLAG F10SetAgesaWarmResetFlag;
63 extern F_CPU_GET_WARM_RESET_FLAG F10GetAgesaWarmResetFlag;
64 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10BrandIdString1;
65 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10BrandIdString2;
66 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10CacheInfo;
67 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10SysPmTable;
68 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10WheaInitData;
69 extern F_CPU_SET_CFOH_REG SetF10CacheFlushOnHaltRegister;
70 extern F_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO F10GetPlatformTypeSpecificInfo;
71 extern F_NEXT_LINK_HAS_HTFPY_FEATS F10NextLinkHasHtPhyFeats;
72 extern F_SET_HT_PHY_REGISTER F10SetHtPhyRegister;
73 extern F_GET_NEXT_HT_LINK_FEATURES F10GetNextHtLinkFeatures;
74 extern CONST REGISTER_TABLE ROMDATA F10PciRegisterTable;
75 extern CONST REGISTER_TABLE ROMDATA F10MsrRegisterTable;
76 extern CONST REGISTER_TABLE ROMDATA F10HtPhyRegisterTable;
77 extern CONST REGISTER_TABLE ROMDATA F10MultiLinkPciRegisterTable;
78 extern CONST REGISTER_TABLE ROMDATA F10SingleLinkPciRegisterTable;
79 extern CONST REGISTER_TABLE ROMDATA F10WorkaroundsTable;
80 extern F_GET_EARLY_INIT_TABLE GetF10EarlyInitOnCoreTable;
84 * Install family 10h model 5 support
86 #ifdef OPTION_FAMILY10H_BL
87 #if OPTION_FAMILY10H_BL == TRUE
88 extern CONST REGISTER_TABLE ROMDATA F10RevCPciRegisterTable;
89 extern CONST REGISTER_TABLE ROMDATA F10RevCMsrRegisterTable;
90 extern CONST REGISTER_TABLE ROMDATA F10RevCHtPhyRegisterTable;
91 extern CONST REGISTER_TABLE ROMDATA F10BlPciRegisterTable;
92 extern CONST REGISTER_TABLE ROMDATA F10BlMsrRegisterTable;
93 extern CONST REGISTER_TABLE ROMDATA F10BlHtPhyRegisterTable;
94 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10BlMicroCodePatchesStruct;
95 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10BlMicrocodeEquivalenceTable;
96 extern F_CPU_GET_IDD_MAX F10CommonRevCGetProcIddMax;
97 extern F_CPU_GET_NB_PSTATE_INFO F10CommonRevCGetNbPstateInfo;
98 extern F_CPU_GET_MIN_MAX_NB_FREQ F10RevCGetMinMaxNbFrequency;
99 extern F_CPU_IS_NBCOF_INIT_NEEDED F10CommonRevCGetNbCofVidUpdate;
100 extern F_IS_NB_PSTATE_ENABLED F10CommonRevCIsNbPstateEnabled;
101 extern F_CPU_NUMBER_OF_PHYSICAL_CORES F10CommonRevCGetNumberOfPhysicalCores;
103 #if USES_REGISTER_TABLES == TRUE
104 CONST REGISTER_TABLE ROMDATA *F10BlRegisterTables[] =
106 #if BASE_FAMILY_PCI == TRUE
107 &F10PciRegisterTable,
109 #if MODEL_SPECIFIC_PCI == TRUE
110 &F10SingleLinkPciRegisterTable,
112 #if MODEL_SPECIFIC_PCI == TRUE
113 &F10RevCPciRegisterTable,
115 #if MODEL_SPECIFIC_PCI == TRUE
116 &F10BlPciRegisterTable,
118 #if BASE_FAMILY_MSR == TRUE
119 &F10MsrRegisterTable,
121 #if MODEL_SPECIFIC_MSR == TRUE
122 &F10RevCMsrRegisterTable,
124 #if MODEL_SPECIFIC_MSR == TRUE
125 &F10BlMsrRegisterTable,
127 #if MODEL_SPECIFIC_HT_PCI == TRUE
128 &F10HtPhyRegisterTable,
130 #if MODEL_SPECIFIC_HT_PCI == TRUE
131 &F10RevCHtPhyRegisterTable,
133 #if MODEL_SPECIFIC_HT_PCI == TRUE
134 &F10BlHtPhyRegisterTable,
136 #if BASE_FAMILY_WORKAROUNDS == TRUE
137 &F10WorkaroundsTable,
144 #if USES_REGISTER_TABLES == TRUE
145 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F10BlTableEntryTypeDescriptors[] =
147 {MsrRegister, SetRegisterForMsrEntry},
148 {PciRegister, SetRegisterForPciEntry},
149 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
150 {HtPhyRegister, SetRegisterForHtPhyEntry},
151 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
152 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
153 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
154 {HtHostPciRegister, SetRegisterForHtHostEntry},
155 {HtTokenPciRegister, (PF_DO_TABLE_ENTRY)CommonVoid},
156 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
157 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
158 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
159 {HtPhyProfileRegister, SetRegisterForHtPhyProfileEntry},
161 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
165 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF10BlServices =
168 #if DISABLE_PSTATE == TRUE
171 (PF_CPU_DISABLE_PSTATE) CommonAssert,
173 #if TRANSITION_PSTATE == TRUE
176 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
178 #if PROC_IDD_MAX == TRUE
179 F10CommonRevCGetProcIddMax,
181 (PF_CPU_GET_IDD_MAX) CommonAssert,
183 #if GET_TSC_RATE == TRUE
186 (PF_CPU_GET_TSC_RATE) CommonAssert,
188 #if GET_NB_FREQ == TRUE
189 F10GetCurrentNbFrequency,
191 (PF_CPU_GET_NB_FREQ) CommonAssert,
193 #if GET_NB_FREQ == TRUE
194 F10RevCGetMinMaxNbFrequency,
196 (PF_CPU_GET_MIN_MAX_NB_FREQ) CommonAssert,
198 #if GET_NB_FREQ == TRUE
199 F10CommonRevCGetNbPstateInfo,
201 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
203 #if IS_NBCOF_INIT_NEEDED == TRUE
204 F10CommonRevCGetNbCofVidUpdate,
206 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
208 #if GET_NB_IDD_MAX == TRUE
209 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
211 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
213 #if AP_INITIAL_LAUNCH == TRUE
216 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
218 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
219 F10CommonRevCGetNumberOfPhysicalCores,
221 (PF_CPU_NUMBER_OF_PHYSICAL_CORES) CommonAssert,
223 #if GET_AP_MAILBOX_FROM_HW == TRUE
224 F10GetApMailboxFromHardware,
226 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
228 #if SET_AP_CORE_NUMBER == TRUE
231 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
233 #if GET_AP_CORE_NUMBER == TRUE
236 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
238 #if TRANSFER_AP_CORE_NUMBER == TRUE
239 F10TransferApCoreNumber,
241 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
243 #if ID_POSITION_INITIAL_APICID == TRUE
244 F10CpuAmdCoreIdPositionInInitialApicId,
246 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
248 #if SAVE_FEATURES == TRUE
251 (PF_CPU_SAVE_FEATURES) CommonAssert,
253 #if WRITE_FEATURES == TRUE
256 (PF_CPU_WRITE_FEATURES) CommonAssert,
258 #if SET_WARM_RESET_FLAG == TRUE
259 F10SetAgesaWarmResetFlag,
261 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
263 #if GET_WARM_RESET_FLAG == TRUE
264 F10GetAgesaWarmResetFlag,
266 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
268 #if BRAND_STRING1 == TRUE
269 GetF10BrandIdString1,
271 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
273 #if BRAND_STRING2 == TRUE
274 GetF10BrandIdString2,
276 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
278 #if GET_PATCHES == TRUE
279 GetF10BlMicroCodePatchesStruct,
281 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
283 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
284 GetF10BlMicrocodeEquivalenceTable,
286 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
288 #if GET_CACHE_INFO == TRUE
291 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
293 #if GET_SYSTEM_PM_TABLE == TRUE
296 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
298 #if GET_WHEA_INIT == TRUE
301 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
303 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
304 F10GetPlatformTypeSpecificInfo,
306 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
308 #if IS_NB_PSTATE_ENABLED == TRUE
309 F10CommonRevCIsNbPstateEnabled,
311 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
313 #if (BASE_FAMILY_HT_PCI == TRUE)
314 F10NextLinkHasHtPhyFeats,
316 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
318 #if (BASE_FAMILY_HT_PCI == TRUE)
321 (PF_SET_HT_PHY_REGISTER) CommonAssert,
323 #if BASE_FAMILY_PCI == TRUE
324 F10GetNextHtLinkFeatures,
326 (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
328 #if USES_REGISTER_TABLES == TRUE
329 (REGISTER_TABLE **) F10BlRegisterTables,
333 #if USES_REGISTER_TABLES == TRUE
334 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F10BlTableEntryTypeDescriptors,
341 #if AGESA_ENTRY_INIT_EARLY == TRUE
342 GetF10EarlyInitOnCoreTable
344 (PF_GET_EARLY_INIT_TABLE) CommonVoid
350 #define BL_RECOVERY_SOCKETS 1
351 #define BL_RECOVERY_MODULES 1
352 extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF10BlLogicalIdAndRev;
353 #define OPT_F10_BL_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF10BlLogicalIdAndRev,
354 #ifndef ADVCFG_PLATFORM_SOCKETS
355 #define ADVCFG_PLATFORM_SOCKETS BL_SOCKETS
357 #if ADVCFG_PLATFORM_SOCKETS < BL_SOCKETS
358 #undef ADVCFG_PLATFORM_SOCKETS
359 #define ADVCFG_PLATFORM_SOCKETS BL_SOCKETS
362 #ifndef ADVCFG_PLATFORM_MODULES
363 #define ADVCFG_PLATFORM_MODULES BL_MODULES
365 #if ADVCFG_PLATFORM_MODULES < BL_MODULES
366 #undef ADVCFG_PLATFORM_MODULES
367 #define ADVCFG_PLATFORM_MODULES BL_MODULES
371 #if GET_PATCHES == TRUE
372 #define F10_BL_UCODE_C6
373 #define F10_BL_UCODE_C8
375 // If a patch is required for recovery mode to function properly, add a
376 // conditional for AGESA_ENTRY_INIT_RECOVERY, and pull it in.
377 #if AGESA_ENTRY_INIT_EARLY == TRUE
378 #if OPTION_AM3_SOCKET_SUPPORT == TRUE
379 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000c6;
380 #undef F10_BL_UCODE_C6
381 #define F10_BL_UCODE_C6 &CpuF10MicrocodePatch010000c6,
383 #if (OPTION_S1G4_SOCKET_SUPPORT == TRUE) || (OPTION_AM3_SOCKET_SUPPORT == TRUE) || (OPTION_ASB2_SOCKET_SUPPORT == TRUE)
384 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000c8;
385 #undef F10_BL_UCODE_C8
386 #define F10_BL_UCODE_C8 &CpuF10MicrocodePatch010000c8,
390 CONST MICROCODE_PATCHES ROMDATA *CpuF10BlMicroCodePatchArray[] =
397 CONST UINT8 ROMDATA CpuF10BlNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF10BlMicroCodePatchArray) / sizeof (CpuF10BlMicroCodePatchArray[0])) - 1);
400 #define OPT_F10_BL_CPU {AMD_FAMILY_10_BL, &cpuF10BlServices},
402 #define OPT_F10_BL_CPU
403 #define OPT_F10_BL_ID
406 #define OPT_F10_BL_CPU
407 #define OPT_F10_BL_ID
411 * Install family 10h model 6 support
413 #ifdef OPTION_FAMILY10H_DA
414 #if OPTION_FAMILY10H_DA == TRUE
415 extern CONST REGISTER_TABLE ROMDATA F10RevCPciRegisterTable;
416 extern CONST REGISTER_TABLE ROMDATA F10RevCMsrRegisterTable;
417 extern CONST REGISTER_TABLE ROMDATA F10RevCHtPhyRegisterTable;
418 extern CONST REGISTER_TABLE ROMDATA F10DaPciRegisterTable;
419 extern CONST REGISTER_TABLE ROMDATA F10DaMsrRegisterTable;
420 extern CONST REGISTER_TABLE ROMDATA F10DaHtPhyRegisterTable;
421 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10DaMicroCodePatchesStruct;
422 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10DaMicrocodeEquivalenceTable;
423 extern F_CPU_GET_IDD_MAX F10CommonRevCGetProcIddMax;
424 extern F_CPU_GET_NB_PSTATE_INFO F10CommonRevCGetNbPstateInfo;
425 extern F_CPU_GET_MIN_MAX_NB_FREQ F10RevCGetMinMaxNbFrequency;
426 extern F_CPU_IS_NBCOF_INIT_NEEDED F10CommonRevCGetNbCofVidUpdate;
427 extern F_CPU_SET_CFOH_REG SetF10DaCacheFlushOnHaltRegister;
428 extern F_IS_NB_PSTATE_ENABLED F10CommonRevCIsNbPstateEnabled;
429 extern F_CPU_NUMBER_OF_PHYSICAL_CORES F10CommonRevCGetNumberOfPhysicalCores;
431 #if USES_REGISTER_TABLES == TRUE
432 CONST REGISTER_TABLE ROMDATA *F10DaRegisterTables[] =
434 #if BASE_FAMILY_PCI == TRUE
435 &F10PciRegisterTable,
437 #if MODEL_SPECIFIC_PCI == TRUE
438 &F10SingleLinkPciRegisterTable,
440 #if MODEL_SPECIFIC_PCI == TRUE
441 &F10RevCPciRegisterTable,
443 #if MODEL_SPECIFIC_PCI == TRUE
444 &F10DaPciRegisterTable,
446 #if BASE_FAMILY_MSR == TRUE
447 &F10MsrRegisterTable,
449 #if MODEL_SPECIFIC_MSR == TRUE
450 &F10RevCMsrRegisterTable,
452 #if MODEL_SPECIFIC_MSR == TRUE
453 &F10DaMsrRegisterTable,
455 #if MODEL_SPECIFIC_HT_PCI == TRUE
456 &F10HtPhyRegisterTable,
458 #if MODEL_SPECIFIC_HT_PCI == TRUE
459 &F10RevCHtPhyRegisterTable,
461 #if MODEL_SPECIFIC_HT_PCI == TRUE
462 &F10DaHtPhyRegisterTable,
464 #if BASE_FAMILY_WORKAROUNDS == TRUE
465 &F10WorkaroundsTable,
472 #if USES_REGISTER_TABLES == TRUE
473 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F10DaTableEntryTypeDescriptors[] =
475 {MsrRegister, SetRegisterForMsrEntry},
476 {PciRegister, SetRegisterForPciEntry},
477 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
478 {HtPhyRegister, SetRegisterForHtPhyEntry},
479 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
480 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
481 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
482 {HtHostPciRegister, SetRegisterForHtHostEntry},
483 {HtTokenPciRegister, (PF_DO_TABLE_ENTRY)CommonVoid},
484 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
485 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
486 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
487 {HtPhyProfileRegister, SetRegisterForHtPhyProfileEntry},
489 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
493 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF10DaServices =
496 #if DISABLE_PSTATE == TRUE
499 (PF_CPU_DISABLE_PSTATE) CommonAssert,
501 #if TRANSITION_PSTATE == TRUE
504 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
506 #if PROC_IDD_MAX == TRUE
507 F10CommonRevCGetProcIddMax,
509 (PF_CPU_GET_IDD_MAX) CommonAssert,
511 #if GET_TSC_RATE == TRUE
514 (PF_CPU_GET_TSC_RATE) CommonAssert,
516 #if GET_NB_FREQ == TRUE
517 F10GetCurrentNbFrequency,
519 (PF_CPU_GET_NB_FREQ) CommonAssert,
521 #if GET_NB_FREQ == TRUE
522 F10RevCGetMinMaxNbFrequency,
524 (PF_CPU_GET_MIN_MAX_NB_FREQ) CommonAssert,
526 #if GET_NB_FREQ == TRUE
527 F10CommonRevCGetNbPstateInfo,
529 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
531 #if IS_NBCOF_INIT_NEEDED == TRUE
532 F10CommonRevCGetNbCofVidUpdate,
534 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
536 #if GET_NB_IDD_MAX == TRUE
537 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
539 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
541 #if AP_INITIAL_LAUNCH == TRUE
544 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
546 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
547 F10CommonRevCGetNumberOfPhysicalCores,
549 (PF_CPU_NUMBER_OF_PHYSICAL_CORES) CommonAssert,
551 #if GET_AP_MAILBOX_FROM_HW == TRUE
552 F10GetApMailboxFromHardware,
554 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
556 #if SET_AP_CORE_NUMBER == TRUE
559 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
561 #if GET_AP_CORE_NUMBER == TRUE
564 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
566 #if TRANSFER_AP_CORE_NUMBER == TRUE
567 F10TransferApCoreNumber,
569 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
571 #if ID_POSITION_INITIAL_APICID == TRUE
572 F10CpuAmdCoreIdPositionInInitialApicId,
574 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
576 #if SAVE_FEATURES == TRUE
579 (PF_CPU_SAVE_FEATURES) CommonAssert,
581 #if WRITE_FEATURES == TRUE
584 (PF_CPU_WRITE_FEATURES) CommonAssert,
586 #if SET_WARM_RESET_FLAG == TRUE
587 F10SetAgesaWarmResetFlag,
589 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
591 #if GET_WARM_RESET_FLAG == TRUE
592 F10GetAgesaWarmResetFlag,
594 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
596 #if BRAND_STRING1 == TRUE
597 GetF10BrandIdString1,
599 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
601 #if BRAND_STRING2 == TRUE
602 GetF10BrandIdString2,
604 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
606 #if GET_PATCHES == TRUE
607 GetF10DaMicroCodePatchesStruct,
609 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
611 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
612 GetF10DaMicrocodeEquivalenceTable,
614 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
616 #if GET_CACHE_INFO == TRUE
619 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
621 #if GET_SYSTEM_PM_TABLE == TRUE
624 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
626 #if GET_WHEA_INIT == TRUE
629 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
631 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
632 F10GetPlatformTypeSpecificInfo,
634 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
636 #if IS_NB_PSTATE_ENABLED == TRUE
637 F10CommonRevCIsNbPstateEnabled,
639 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
641 #if (BASE_FAMILY_HT_PCI == TRUE)
642 F10NextLinkHasHtPhyFeats,
644 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
646 #if (BASE_FAMILY_HT_PCI == TRUE)
649 (PF_SET_HT_PHY_REGISTER) CommonAssert,
651 #if BASE_FAMILY_PCI == TRUE
652 F10GetNextHtLinkFeatures,
654 (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
656 #if USES_REGISTER_TABLES == TRUE
657 (REGISTER_TABLE **) F10DaRegisterTables,
661 #if USES_REGISTER_TABLES == TRUE
662 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F10DaTableEntryTypeDescriptors,
669 #if AGESA_ENTRY_INIT_EARLY == TRUE
670 GetF10EarlyInitOnCoreTable
672 (PF_GET_EARLY_INIT_TABLE) CommonVoid
678 #define DA_RECOVERY_SOCKETS 1
679 #define DA_RECOVERY_MODULES 1
680 extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF10DaLogicalIdAndRev;
681 #define OPT_F10_DA_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF10DaLogicalIdAndRev,
682 #ifndef ADVCFG_PLATFORM_SOCKETS
683 #define ADVCFG_PLATFORM_SOCKETS DA_SOCKETS
685 #if ADVCFG_PLATFORM_SOCKETS < DA_SOCKETS
686 #undef ADVCFG_PLATFORM_SOCKETS
687 #define ADVCFG_PLATFORM_SOCKETS DA_SOCKETS
690 #ifndef ADVCFG_PLATFORM_MODULES
691 #define ADVCFG_PLATFORM_MODULES DA_MODULES
693 #if ADVCFG_PLATFORM_MODULES < DA_MODULES
694 #undef ADVCFG_PLATFORM_MODULES
695 #define ADVCFG_PLATFORM_MODULES DA_MODULES
699 #if GET_PATCHES == TRUE
700 #define F10_DA_UCODE_C7
701 #define F10_DA_UCODE_C8
703 // If a patch is required for recovery mode to function properly, add a
704 // conditional for AGESA_ENTRY_INIT_RECOVERY, and pull it in.
705 #if AGESA_ENTRY_INIT_EARLY == TRUE
706 #if (OPTION_S1G3_SOCKET_SUPPORT == TRUE) || (OPTION_AM3_SOCKET_SUPPORT == TRUE)
707 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000c7;
708 #undef F10_DA_UCODE_C7
709 #define F10_DA_UCODE_C7 &CpuF10MicrocodePatch010000c7,
711 #if (OPTION_S1G4_SOCKET_SUPPORT == TRUE) || (OPTION_AM3_SOCKET_SUPPORT == TRUE) || (OPTION_ASB2_SOCKET_SUPPORT == TRUE)
712 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000c8;
713 #undef F10_DA_UCODE_C8
714 #define F10_DA_UCODE_C8 &CpuF10MicrocodePatch010000c8,
718 CONST MICROCODE_PATCHES ROMDATA *CpuF10DaMicroCodePatchArray[] =
725 CONST UINT8 ROMDATA CpuF10DaNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF10DaMicroCodePatchArray) / sizeof (CpuF10DaMicroCodePatchArray[0])) - 1);
728 #define OPT_F10_DA_CPU {AMD_FAMILY_10_DA, &cpuF10DaServices},
730 #define OPT_F10_DA_CPU
731 #define OPT_F10_DA_ID
734 #define OPT_F10_DA_CPU
735 #define OPT_F10_DA_ID
739 * Install family 10h models 8 & 9 support
741 #ifdef OPTION_FAMILY10H_HY
742 #if OPTION_FAMILY10H_HY == TRUE
743 extern CONST REGISTER_TABLE ROMDATA F10HyPciRegisterTable;
744 extern CONST REGISTER_TABLE ROMDATA F10HyMsrRegisterTable;
745 extern CONST REGISTER_TABLE ROMDATA F10HyHtPhyRegisterTable;
746 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10HyMicroCodePatchesStruct;
747 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10HyMicrocodeEquivalenceTable;
748 extern F_CPU_GET_IDD_MAX F10CommonRevDGetProcIddMax;
749 extern F_CPU_GET_NB_PSTATE_INFO F10CommonRevDGetNbPstateInfo;
750 extern F_CPU_GET_MIN_MAX_NB_FREQ F10RevDGetMinMaxNbFrequency;
751 extern F_CPU_IS_NBCOF_INIT_NEEDED F10CommonRevDGetNbCofVidUpdate;
752 extern CONST PACKAGE_HTLINK_MAP_ITEM ROMDATA HtFam10RevDPackageLinkMap[];
753 extern F_CPU_NUMBER_OF_PHYSICAL_CORES F10CommonRevDGetNumberOfPhysicalCores;
754 extern F_GET_EARLY_INIT_TABLE GetF10HyEarlyInitOnCoreTable;
756 #if USES_REGISTER_TABLES == TRUE
757 CONST REGISTER_TABLE ROMDATA *F10HyRegisterTables[] =
759 #if BASE_FAMILY_PCI == TRUE
760 &F10PciRegisterTable,
762 #if MODEL_SPECIFIC_PCI == TRUE
763 &F10MultiLinkPciRegisterTable,
765 #if MODEL_SPECIFIC_PCI == TRUE
766 &F10HyPciRegisterTable,
768 #if BASE_FAMILY_MSR == TRUE
769 &F10MsrRegisterTable,
771 #if MODEL_SPECIFIC_MSR == TRUE
772 &F10HyMsrRegisterTable,
774 #if MODEL_SPECIFIC_HT_PCI == TRUE
775 &F10HtPhyRegisterTable,
777 #if MODEL_SPECIFIC_HT_PCI == TRUE
778 &F10HyHtPhyRegisterTable,
780 #if BASE_FAMILY_WORKAROUNDS == TRUE
781 &F10WorkaroundsTable,
788 #if USES_REGISTER_TABLES == TRUE
789 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F10HyTableEntryTypeDescriptors[] =
791 {MsrRegister, SetRegisterForMsrEntry},
792 {PciRegister, SetRegisterForPciEntry},
793 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
794 {HtPhyRegister, SetRegisterForHtPhyEntry},
795 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
796 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
797 {HtPhyFreqRegister, SetRegisterForHtPhyFreqEntry},
798 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
799 {HtHostPciRegister, SetRegisterForHtHostEntry},
800 {HtTokenPciRegister, SetRegisterForHtLinkTokenEntry},
801 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
802 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
803 {TokenPciRegister, SetRegisterForTokenPciEntry},
804 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
805 {HtLinkPciRegister, SetRegisterForHtLinkPciEntry},
807 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
811 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF10HyServices =
814 #if DISABLE_PSTATE == TRUE
817 (PF_CPU_DISABLE_PSTATE) CommonAssert,
819 #if TRANSITION_PSTATE == TRUE
822 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
824 #if PROC_IDD_MAX == TRUE
825 F10CommonRevDGetProcIddMax,
827 (PF_CPU_GET_IDD_MAX) CommonAssert,
829 #if GET_TSC_RATE == TRUE
832 (PF_CPU_GET_TSC_RATE) CommonAssert,
834 #if GET_NB_FREQ == TRUE
835 F10GetCurrentNbFrequency,
837 (PF_CPU_GET_NB_FREQ) CommonAssert,
839 #if GET_NB_FREQ == TRUE
840 F10RevDGetMinMaxNbFrequency,
842 (PF_CPU_GET_MIN_MAX_NB_FREQ) CommonAssert,
844 #if GET_NB_FREQ == TRUE
845 F10CommonRevDGetNbPstateInfo,
847 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
849 #if IS_NBCOF_INIT_NEEDED == TRUE
850 F10CommonRevDGetNbCofVidUpdate,
852 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
854 #if GET_NB_IDD_MAX == TRUE
855 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
857 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
859 #if AP_INITIAL_LAUNCH == TRUE
862 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
864 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
865 F10CommonRevDGetNumberOfPhysicalCores,
867 (PF_CPU_NUMBER_OF_PHYSICAL_CORES) CommonAssert,
869 #if GET_AP_MAILBOX_FROM_HW == TRUE
870 F10GetApMailboxFromHardware,
872 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
874 #if SET_AP_CORE_NUMBER == TRUE
877 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
879 #if GET_AP_CORE_NUMBER == TRUE
882 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
884 #if TRANSFER_AP_CORE_NUMBER == TRUE
885 F10TransferApCoreNumber,
887 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
889 #if ID_POSITION_INITIAL_APICID == TRUE
890 F10CpuAmdCoreIdPositionInInitialApicId,
892 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
894 #if SAVE_FEATURES == TRUE
897 (PF_CPU_SAVE_FEATURES) CommonAssert,
899 #if WRITE_FEATURES == TRUE
902 (PF_CPU_WRITE_FEATURES) CommonAssert,
904 #if SET_WARM_RESET_FLAG == TRUE
905 F10SetAgesaWarmResetFlag,
907 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
909 #if GET_WARM_RESET_FLAG == TRUE
910 F10GetAgesaWarmResetFlag,
912 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
914 #if BRAND_STRING1 == TRUE
915 GetF10BrandIdString1,
917 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
919 #if BRAND_STRING2 == TRUE
920 GetF10BrandIdString2,
922 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
924 #if GET_PATCHES == TRUE
925 GetF10HyMicroCodePatchesStruct,
927 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
929 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
930 GetF10HyMicrocodeEquivalenceTable,
932 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
934 #if GET_CACHE_INFO == TRUE
937 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
939 #if GET_SYSTEM_PM_TABLE == TRUE
942 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
944 #if GET_WHEA_INIT == TRUE
947 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
949 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
950 F10GetPlatformTypeSpecificInfo,
952 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
954 #if IS_NB_PSTATE_ENABLED == TRUE
955 (PF_IS_NB_PSTATE_ENABLED) CommonReturnFalse,
957 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
959 #if (BASE_FAMILY_HT_PCI == TRUE)
960 F10NextLinkHasHtPhyFeats,
962 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
964 #if (BASE_FAMILY_HT_PCI == TRUE)
967 (PF_SET_HT_PHY_REGISTER) CommonAssert,
969 #if BASE_FAMILY_PCI == TRUE
970 F10GetNextHtLinkFeatures,
972 (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
974 #if USES_REGISTER_TABLES == TRUE
975 (REGISTER_TABLE **) F10HyRegisterTables,
979 #if USES_REGISTER_TABLES == TRUE
980 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F10HyTableEntryTypeDescriptors,
984 #if MODEL_SPECIFIC_HT_PCI == TRUE
985 (PACKAGE_HTLINK_MAP) &HtFam10RevDPackageLinkMap,
991 #if AGESA_ENTRY_INIT_EARLY == TRUE
992 #if OPTION_C32_SOCKET_SUPPORT == TRUE
993 GetF10HyEarlyInitOnCoreTable
995 GetF10EarlyInitOnCoreTable
998 (PF_GET_EARLY_INIT_TABLE) CommonVoid
1002 #define HY_SOCKETS 8
1003 #if (OPTION_G34_SOCKET_SUPPORT == TRUE)
1004 #define HY_MODULES 2
1006 #define HY_MODULES 1
1008 #define HY_RECOVERY_SOCKETS 1
1009 #define HY_RECOVERY_MODULES 1
1010 extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF10HyLogicalIdAndRev;
1011 #define OPT_F10_HY_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF10HyLogicalIdAndRev,
1012 #ifndef ADVCFG_PLATFORM_SOCKETS
1013 #define ADVCFG_PLATFORM_SOCKETS HY_SOCKETS
1015 #if ADVCFG_PLATFORM_SOCKETS < HY_SOCKETS
1016 #undef ADVCFG_PLATFORM_SOCKETS
1017 #define ADVCFG_PLATFORM_SOCKETS HY_SOCKETS
1020 #ifndef ADVCFG_PLATFORM_MODULES
1021 #define ADVCFG_PLATFORM_MODULES HY_MODULES
1023 #if ADVCFG_PLATFORM_MODULES < HY_MODULES
1024 #undef ADVCFG_PLATFORM_MODULES
1025 #define ADVCFG_PLATFORM_MODULES HY_MODULES
1029 #if GET_PATCHES == TRUE
1030 #define F10_HY_UCODE_D9
1031 #define F10_HY_UCODE_C5
1033 // If a patch is required for recovery mode to function properly, add a
1034 // conditional for AGESA_ENTRY_INIT_RECOVERY, and pull it in.
1035 #if AGESA_ENTRY_INIT_EARLY == TRUE
1036 #if OPTION_C32_SOCKET_SUPPORT == TRUE
1037 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000c5;
1038 #undef F10_HY_UCODE_C5
1039 #define F10_HY_UCODE_C5 &CpuF10MicrocodePatch010000c5,
1041 #if (OPTION_C32_SOCKET_SUPPORT == TRUE) || (OPTION_G34_SOCKET_SUPPORT == TRUE)
1042 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000d9;
1043 #undef F10_HY_UCODE_D9
1044 #define F10_HY_UCODE_D9 &CpuF10MicrocodePatch010000d9,
1048 CONST MICROCODE_PATCHES ROMDATA *CpuF10HyMicroCodePatchArray[] =
1055 CONST UINT8 ROMDATA CpuF10HyNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF10HyMicroCodePatchArray) / sizeof (CpuF10HyMicroCodePatchArray[0])) - 1);
1058 #define OPT_F10_HY_CPU {AMD_FAMILY_10_HY, &cpuF10HyServices},
1060 #define OPT_F10_HY_CPU
1061 #define OPT_F10_HY_ID
1064 #define OPT_F10_HY_CPU
1065 #define OPT_F10_HY_ID
1069 * Install family 10h model 10 support
1071 #ifdef OPTION_FAMILY10H_PH
1072 #if OPTION_FAMILY10H_PH == TRUE
1073 extern CONST REGISTER_TABLE ROMDATA F10RevEPciRegisterTable;
1074 extern CONST REGISTER_TABLE ROMDATA F10RevEMsrRegisterTable;
1075 extern CONST REGISTER_TABLE ROMDATA F10RevEHtPhyRegisterTable;
1076 extern CONST REGISTER_TABLE ROMDATA F10PhPciRegisterTable;
1077 extern CONST REGISTER_TABLE ROMDATA F10PhMsrRegisterTable;
1078 extern CONST REGISTER_TABLE ROMDATA F10PhHtPhyRegisterTable;
1079 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10PhMicroCodePatchesStruct;
1080 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10PhMicrocodeEquivalenceTable;
1081 extern F_CPU_GET_IDD_MAX F10CommonRevEGetProcIddMax;
1082 extern F_CPU_GET_NB_PSTATE_INFO F10CommonRevEGetNbPstateInfo;
1083 extern F_CPU_GET_MIN_MAX_NB_FREQ F10RevEGetMinMaxNbFrequency;
1084 extern F_CPU_IS_NBCOF_INIT_NEEDED F10CommonRevEGetNbCofVidUpdate;
1085 extern F_CPU_NUMBER_OF_PHYSICAL_CORES F10CommonRevEGetNumberOfPhysicalCores;
1087 #if USES_REGISTER_TABLES == TRUE
1088 CONST REGISTER_TABLE ROMDATA *F10PhRegisterTables[] =
1090 #if BASE_FAMILY_PCI == TRUE
1091 &F10PciRegisterTable,
1093 #if MODEL_SPECIFIC_PCI == TRUE
1094 &F10SingleLinkPciRegisterTable,
1096 #if MODEL_SPECIFIC_PCI == TRUE
1097 &F10RevEPciRegisterTable,
1099 #if BASE_FAMILY_MSR == TRUE
1100 &F10MsrRegisterTable,
1102 #if MODEL_SPECIFIC_MSR == TRUE
1103 &F10RevEMsrRegisterTable,
1105 #if MODEL_SPECIFIC_HT_PCI == TRUE
1106 &F10HtPhyRegisterTable,
1108 #if MODEL_SPECIFIC_HT_PCI == TRUE
1109 &F10RevEHtPhyRegisterTable,
1111 #if MODEL_SPECIFIC_HT_PCI == TRUE
1112 &F10PhHtPhyRegisterTable,
1114 #if BASE_FAMILY_WORKAROUNDS == TRUE
1115 &F10WorkaroundsTable,
1122 #if USES_REGISTER_TABLES == TRUE
1123 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F10PhTableEntryTypeDescriptors[] =
1125 {MsrRegister, SetRegisterForMsrEntry},
1126 {PciRegister, SetRegisterForPciEntry},
1127 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
1128 {HtPhyRegister, SetRegisterForHtPhyEntry},
1129 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
1130 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
1131 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
1132 {HtHostPciRegister, SetRegisterForHtHostEntry},
1133 {HtTokenPciRegister, (PF_DO_TABLE_ENTRY)CommonVoid},
1134 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
1135 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
1136 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
1137 {HtPhyProfileRegister, SetRegisterForHtPhyProfileEntry},
1139 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
1143 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF10PhServices =
1146 #if DISABLE_PSTATE == TRUE
1149 (PF_CPU_DISABLE_PSTATE) CommonAssert,
1151 #if TRANSITION_PSTATE == TRUE
1152 F10TransitionPstate,
1154 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
1156 #if PROC_IDD_MAX == TRUE
1157 F10CommonRevEGetProcIddMax,
1159 (PF_CPU_GET_IDD_MAX) CommonAssert,
1161 #if GET_TSC_RATE == TRUE
1164 (PF_CPU_GET_TSC_RATE) CommonAssert,
1166 #if GET_NB_FREQ == TRUE
1167 F10GetCurrentNbFrequency,
1169 (PF_CPU_GET_NB_FREQ) CommonAssert,
1171 #if GET_NB_FREQ == TRUE
1172 F10RevEGetMinMaxNbFrequency,
1174 (PF_CPU_GET_MIN_MAX_NB_FREQ) CommonAssert,
1176 #if GET_NB_FREQ == TRUE
1177 F10CommonRevEGetNbPstateInfo,
1179 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
1181 #if IS_NBCOF_INIT_NEEDED == TRUE
1182 F10CommonRevEGetNbCofVidUpdate,
1184 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
1186 #if GET_NB_IDD_MAX == TRUE
1187 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
1189 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
1191 #if AP_INITIAL_LAUNCH == TRUE
1194 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
1196 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
1197 F10CommonRevEGetNumberOfPhysicalCores,
1199 (PF_CPU_NUMBER_OF_PHYSICAL_CORES) CommonAssert,
1201 #if GET_AP_MAILBOX_FROM_HW == TRUE
1202 F10GetApMailboxFromHardware,
1204 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
1206 #if SET_AP_CORE_NUMBER == TRUE
1209 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
1211 #if GET_AP_CORE_NUMBER == TRUE
1214 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
1216 #if TRANSFER_AP_CORE_NUMBER == TRUE
1217 F10TransferApCoreNumber,
1219 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
1221 #if ID_POSITION_INITIAL_APICID == TRUE
1222 F10CpuAmdCoreIdPositionInInitialApicId,
1224 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
1226 #if SAVE_FEATURES == TRUE
1229 (PF_CPU_SAVE_FEATURES) CommonAssert,
1231 #if WRITE_FEATURES == TRUE
1234 (PF_CPU_WRITE_FEATURES) CommonAssert,
1236 #if SET_WARM_RESET_FLAG == TRUE
1237 F10SetAgesaWarmResetFlag,
1239 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
1241 #if GET_WARM_RESET_FLAG == TRUE
1242 F10GetAgesaWarmResetFlag,
1244 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
1246 #if BRAND_STRING1 == TRUE
1247 GetF10BrandIdString1,
1249 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1251 #if BRAND_STRING2 == TRUE
1252 GetF10BrandIdString2,
1254 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1256 #if GET_PATCHES == TRUE
1257 GetF10PhMicroCodePatchesStruct,
1259 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1261 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
1262 GetF10PhMicrocodeEquivalenceTable,
1264 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1266 #if GET_CACHE_INFO == TRUE
1269 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1271 #if GET_SYSTEM_PM_TABLE == TRUE
1274 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1276 #if GET_WHEA_INIT == TRUE
1279 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1281 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
1282 F10GetPlatformTypeSpecificInfo,
1284 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
1286 #if IS_NB_PSTATE_ENABLED == TRUE
1287 (PF_IS_NB_PSTATE_ENABLED) CommonReturnFalse,
1289 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
1291 #if (BASE_FAMILY_HT_PCI == TRUE)
1292 F10NextLinkHasHtPhyFeats,
1294 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
1296 #if (BASE_FAMILY_HT_PCI == TRUE)
1297 F10SetHtPhyRegister,
1299 (PF_SET_HT_PHY_REGISTER) CommonAssert,
1301 #if BASE_FAMILY_PCI == TRUE
1302 F10GetNextHtLinkFeatures,
1304 (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
1306 #if USES_REGISTER_TABLES == TRUE
1307 (REGISTER_TABLE **) F10PhRegisterTables,
1311 #if USES_REGISTER_TABLES == TRUE
1312 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F10PhTableEntryTypeDescriptors,
1319 #if AGESA_ENTRY_INIT_EARLY == TRUE
1320 GetF10EarlyInitOnCoreTable
1322 (PF_GET_EARLY_INIT_TABLE) CommonVoid
1326 #define PH_SOCKETS 1
1327 #define PH_MODULES 1
1328 #define PH_RECOVERY_SOCKETS 1
1329 #define PH_RECOVERY_MODULES 1
1330 extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF10PhLogicalIdAndRev;
1331 #define OPT_F10_PH_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF10PhLogicalIdAndRev,
1332 #ifndef ADVCFG_PLATFORM_SOCKETS
1333 #define ADVCFG_PLATFORM_SOCKETS PH_SOCKETS
1335 #if ADVCFG_PLATFORM_SOCKETS < PH_SOCKETS
1336 #undef ADVCFG_PLATFORM_SOCKETS
1337 #define ADVCFG_PLATFORM_SOCKETS PH_SOCKETS
1340 #ifndef ADVCFG_PLATFORM_MODULES
1341 #define ADVCFG_PLATFORM_MODULES PH_MODULES
1343 #if ADVCFG_PLATFORM_MODULES < PH_MODULES
1344 #undef ADVCFG_PLATFORM_MODULES
1345 #define ADVCFG_PLATFORM_MODULES PH_MODULES
1349 #if GET_PATCHES == TRUE
1350 #define F10_PH_UCODE_BF
1352 // If a patch is required for recovery mode to function properly, add a
1353 // conditional for AGESA_ENTRY_INIT_RECOVERY, and pull it in.
1354 #if AGESA_ENTRY_INIT_EARLY == TRUE
1355 #if OPTION_AM3_SOCKET_SUPPORT == TRUE
1356 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000bf;
1357 #undef F10_PH_UCODE_BF
1358 #define F10_PH_UCODE_BF &CpuF10MicrocodePatch010000bf,
1362 CONST MICROCODE_PATCHES ROMDATA *CpuF10PhMicroCodePatchArray[] =
1368 CONST UINT8 ROMDATA CpuF10PhNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF10PhMicroCodePatchArray) / sizeof (CpuF10PhMicroCodePatchArray[0])) - 1);
1371 #define OPT_F10_PH_CPU {AMD_FAMILY_10_PH, &cpuF10PhServices},
1373 #define OPT_F10_PH_CPU
1374 #define OPT_F10_PH_ID
1377 #define OPT_F10_PH_CPU
1378 #define OPT_F10_PH_ID
1383 * Install family 10h model 4 support
1385 #ifdef OPTION_FAMILY10H_RB
1386 #if OPTION_FAMILY10H_RB == TRUE
1387 extern CONST REGISTER_TABLE ROMDATA F10RevCPciRegisterTable;
1388 extern CONST REGISTER_TABLE ROMDATA F10RevCMsrRegisterTable;
1389 extern CONST REGISTER_TABLE ROMDATA F10RevCHtPhyRegisterTable;
1390 extern CONST REGISTER_TABLE ROMDATA F10RbPciRegisterTable;
1391 extern CONST REGISTER_TABLE ROMDATA F10RbMsrRegisterTable;
1392 extern CONST REGISTER_TABLE ROMDATA F10RbHtPhyRegisterTable;
1393 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10RbMicroCodePatchesStruct;
1394 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF10RbMicrocodeEquivalenceTable;
1395 extern F_CPU_GET_IDD_MAX F10CommonRevCGetProcIddMax;
1396 extern F_CPU_GET_NB_PSTATE_INFO F10CommonRevCGetNbPstateInfo;
1397 extern F_CPU_GET_MIN_MAX_NB_FREQ F10RevCGetMinMaxNbFrequency;
1398 extern F_CPU_IS_NBCOF_INIT_NEEDED F10CommonRevCGetNbCofVidUpdate;
1399 extern F_IS_NB_PSTATE_ENABLED F10CommonRevCIsNbPstateEnabled;
1400 extern F_CPU_NUMBER_OF_PHYSICAL_CORES F10CommonRevCGetNumberOfPhysicalCores;
1402 #if USES_REGISTER_TABLES == TRUE
1403 CONST REGISTER_TABLE ROMDATA *F10RbRegisterTables[] =
1405 #if BASE_FAMILY_PCI == TRUE
1406 &F10PciRegisterTable,
1408 #if MODEL_SPECIFIC_PCI == TRUE
1409 &F10MultiLinkPciRegisterTable,
1410 &F10SingleLinkPciRegisterTable,
1412 #if MODEL_SPECIFIC_PCI == TRUE
1413 &F10RevCPciRegisterTable,
1415 #if MODEL_SPECIFIC_PCI == TRUE
1416 &F10RbPciRegisterTable,
1418 #if BASE_FAMILY_MSR == TRUE
1419 &F10MsrRegisterTable,
1421 #if MODEL_SPECIFIC_MSR == TRUE
1422 &F10RevCMsrRegisterTable,
1424 #if MODEL_SPECIFIC_MSR == TRUE
1425 &F10RbMsrRegisterTable,
1427 #if MODEL_SPECIFIC_HT_PCI == TRUE
1428 &F10HtPhyRegisterTable,
1430 #if MODEL_SPECIFIC_HT_PCI == TRUE
1431 &F10RevCHtPhyRegisterTable,
1433 #if MODEL_SPECIFIC_HT_PCI == TRUE
1434 &F10RbHtPhyRegisterTable,
1436 #if BASE_FAMILY_WORKAROUNDS == TRUE
1437 &F10WorkaroundsTable,
1444 #if USES_REGISTER_TABLES == TRUE
1445 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F10RbTableEntryTypeDescriptors[] =
1447 {MsrRegister, SetRegisterForMsrEntry},
1448 {PciRegister, SetRegisterForPciEntry},
1449 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
1450 {HtPhyRegister, SetRegisterForHtPhyEntry},
1451 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
1452 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
1453 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
1454 {HtHostPciRegister, SetRegisterForHtHostEntry},
1455 {HtTokenPciRegister, SetRegisterForHtLinkTokenEntry},
1456 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
1457 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
1458 {TokenPciRegister, SetRegisterForTokenPciEntry},
1459 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
1460 {HtPhyProfileRegister, SetRegisterForHtPhyProfileEntry},
1462 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
1466 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF10RbServices =
1469 #if DISABLE_PSTATE == TRUE
1472 (PF_CPU_DISABLE_PSTATE) CommonAssert,
1474 #if TRANSITION_PSTATE == TRUE
1475 F10TransitionPstate,
1477 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
1479 #if PROC_IDD_MAX == TRUE
1480 F10CommonRevCGetProcIddMax,
1482 (PF_CPU_GET_IDD_MAX) CommonAssert,
1484 #if GET_TSC_RATE == TRUE
1487 (PF_CPU_GET_TSC_RATE) CommonAssert,
1489 #if GET_NB_FREQ == TRUE
1490 F10GetCurrentNbFrequency,
1492 (PF_CPU_GET_NB_FREQ) CommonAssert,
1494 #if GET_NB_FREQ == TRUE
1495 F10RevCGetMinMaxNbFrequency,
1497 (PF_CPU_GET_MIN_MAX_NB_FREQ) CommonAssert,
1499 #if GET_NB_FREQ == TRUE
1500 F10CommonRevCGetNbPstateInfo,
1502 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
1504 #if IS_NBCOF_INIT_NEEDED == TRUE
1505 F10CommonRevCGetNbCofVidUpdate,
1507 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
1509 #if GET_NB_IDD_MAX == TRUE
1510 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
1512 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
1514 #if AP_INITIAL_LAUNCH == TRUE
1517 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
1519 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
1520 F10CommonRevCGetNumberOfPhysicalCores,
1522 (PF_CPU_NUMBER_OF_PHYSICAL_CORES) CommonAssert,
1524 #if GET_AP_MAILBOX_FROM_HW == TRUE
1525 F10GetApMailboxFromHardware,
1527 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
1529 #if SET_AP_CORE_NUMBER == TRUE
1532 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
1534 #if GET_AP_CORE_NUMBER == TRUE
1537 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
1539 #if TRANSFER_AP_CORE_NUMBER == TRUE
1540 F10TransferApCoreNumber,
1542 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
1544 #if ID_POSITION_INITIAL_APICID == TRUE
1545 F10CpuAmdCoreIdPositionInInitialApicId,
1547 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
1549 #if SAVE_FEATURES == TRUE
1552 (PF_CPU_SAVE_FEATURES) CommonAssert,
1554 #if WRITE_FEATURES == TRUE
1557 (PF_CPU_WRITE_FEATURES) CommonAssert,
1559 #if SET_WARM_RESET_FLAG == TRUE
1560 F10SetAgesaWarmResetFlag,
1562 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
1564 #if GET_WARM_RESET_FLAG == TRUE
1565 F10GetAgesaWarmResetFlag,
1567 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
1569 #if BRAND_STRING1 == TRUE
1570 GetF10BrandIdString1,
1572 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1574 #if BRAND_STRING2 == TRUE
1575 GetF10BrandIdString2,
1577 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1579 #if GET_PATCHES == TRUE
1580 GetF10RbMicroCodePatchesStruct,
1582 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1584 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
1585 GetF10RbMicrocodeEquivalenceTable,
1587 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1589 #if GET_CACHE_INFO == TRUE
1592 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1594 #if GET_SYSTEM_PM_TABLE == TRUE
1597 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1599 #if GET_WHEA_INIT == TRUE
1602 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1604 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
1605 F10GetPlatformTypeSpecificInfo,
1607 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
1609 #if IS_NB_PSTATE_ENABLED == TRUE
1610 F10CommonRevCIsNbPstateEnabled,
1612 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
1614 #if (BASE_FAMILY_HT_PCI == TRUE)
1615 F10NextLinkHasHtPhyFeats,
1617 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
1619 #if (BASE_FAMILY_HT_PCI == TRUE)
1620 F10SetHtPhyRegister,
1622 (PF_SET_HT_PHY_REGISTER) CommonAssert,
1624 #if BASE_FAMILY_PCI == TRUE
1625 F10GetNextHtLinkFeatures,
1627 (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
1629 #if USES_REGISTER_TABLES == TRUE
1630 (REGISTER_TABLE **) F10RbRegisterTables,
1634 #if USES_REGISTER_TABLES == TRUE
1635 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F10RbTableEntryTypeDescriptors,
1642 #if AGESA_ENTRY_INIT_EARLY == TRUE
1643 GetF10EarlyInitOnCoreTable
1645 (PF_GET_EARLY_INIT_TABLE) CommonVoid
1649 #define RB_SOCKETS 8
1650 #define RB_MODULES 1
1651 #define RB_RECOVERY_SOCKETS 1
1652 #define RB_RECOVERY_MODULES 1
1653 extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF10RbLogicalIdAndRev;
1654 #define OPT_F10_RB_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF10RbLogicalIdAndRev,
1655 #ifndef ADVCFG_PLATFORM_SOCKETS
1656 #define ADVCFG_PLATFORM_SOCKETS RB_SOCKETS
1658 #if ADVCFG_PLATFORM_SOCKETS < RB_SOCKETS
1659 #undef ADVCFG_PLATFORM_SOCKETS
1660 #define ADVCFG_PLATFORM_SOCKETS RB_SOCKETS
1663 #ifndef ADVCFG_PLATFORM_MODULES
1664 #define ADVCFG_PLATFORM_MODULES RB_MODULES
1666 #if ADVCFG_PLATFORM_MODULES < RB_MODULES
1667 #undef ADVCFG_PLATFORM_MODULES
1668 #define ADVCFG_PLATFORM_MODULES RB_MODULES
1672 #if GET_PATCHES == TRUE
1673 #define F10_RB_UCODE_85
1674 #define F10_RB_UCODE_C6
1675 #define F10_RB_UCODE_C8
1677 // If a patch is required for recovery mode to function properly, add a
1678 // conditional for AGESA_ENTRY_INIT_RECOVERY, and pull it in.
1679 #if AGESA_ENTRY_INIT_EARLY == TRUE
1680 #if OPTION_AM3_SOCKET_SUPPORT == TRUE
1681 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch01000085;
1682 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000c6;
1683 extern CONST MICROCODE_PATCHES ROMDATA CpuF10MicrocodePatch010000c8;
1684 #undef F10_RB_UCODE_85
1685 #define F10_RB_UCODE_85 &CpuF10MicrocodePatch01000085,
1686 #undef F10_RB_UCODE_C6
1687 #define F10_RB_UCODE_C6 &CpuF10MicrocodePatch010000c6,
1688 #undef F10_RB_UCODE_C8
1689 #define F10_RB_UCODE_C8 &CpuF10MicrocodePatch010000c8,
1693 CONST MICROCODE_PATCHES ROMDATA *CpuF10RbMicroCodePatchArray[] =
1701 CONST UINT8 ROMDATA CpuF10RbNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF10RbMicroCodePatchArray) / sizeof (CpuF10RbMicroCodePatchArray[0])) - 1);
1704 #define OPT_F10_RB_CPU {AMD_FAMILY_10_RB, &cpuF10RbServices},
1706 #define OPT_F10_RB_CPU
1707 #define OPT_F10_RB_ID
1710 #define OPT_F10_RB_CPU
1711 #define OPT_F10_RB_ID
1716 * Install unknown family 10h support
1719 #if USES_REGISTER_TABLES == TRUE
1720 CONST REGISTER_TABLE ROMDATA *F10UnknownRegisterTables[] =
1722 #if BASE_FAMILY_PCI == TRUE
1723 &F10PciRegisterTable,
1725 #if BASE_FAMILY_MSR == TRUE
1726 &F10MsrRegisterTable,
1728 #if BASE_FAMILY_HT_PCI == TRUE
1729 &F10HtPhyRegisterTable,
1731 #if OPTION_MULTISOCKET == TRUE
1732 #if MODEL_SPECIFIC_PCI == TRUE
1733 &F10MultiLinkPciRegisterTable,
1736 #if OPTION_MULTISOCKET == FALSE
1737 #if MODEL_SPECIFIC_PCI == TRUE
1738 &F10SingleLinkPciRegisterTable,
1741 #if BASE_FAMILY_WORKAROUNDS == TRUE
1742 &F10WorkaroundsTable,
1749 #if USES_REGISTER_TABLES == TRUE
1750 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F10UnknownTableEntryTypeDescriptors[] =
1752 {MsrRegister, SetRegisterForMsrEntry},
1753 {PciRegister, SetRegisterForPciEntry},
1754 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
1755 {HtPhyRegister, SetRegisterForHtPhyEntry},
1756 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
1757 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
1758 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
1759 {HtHostPciRegister, SetRegisterForHtHostEntry},
1760 {HtTokenPciRegister, (PF_DO_TABLE_ENTRY)CommonVoid},
1761 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
1762 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
1763 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
1765 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
1770 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF10UnknownServices =
1773 #if DISABLE_PSTATE == TRUE
1776 (PF_CPU_DISABLE_PSTATE) CommonAssert,
1778 #if TRANSITION_PSTATE == TRUE
1779 F10TransitionPstate,
1781 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
1783 #if PROC_IDD_MAX == TRUE
1784 (PF_CPU_GET_IDD_MAX) CommonReturnFalse,
1786 (PF_CPU_GET_IDD_MAX) CommonAssert,
1788 #if GET_TSC_RATE == TRUE
1791 (PF_CPU_GET_TSC_RATE) CommonAssert,
1793 #if GET_NB_FREQ == TRUE
1794 F10GetCurrentNbFrequency,
1796 (PF_CPU_GET_NB_FREQ) CommonAssert,
1798 #if GET_NB_FREQ == TRUE
1799 (PF_CPU_GET_MIN_MAX_NB_FREQ) CommonReturnFalse,
1801 (PF_CPU_GET_MIN_MAX_NB_FREQ) CommonAssert,
1803 #if GET_NB_FREQ == TRUE
1804 (PF_CPU_GET_NB_PSTATE_INFO) CommonReturnFalse,
1806 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
1808 #if IS_NBCOF_INIT_NEEDED == TRUE
1809 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonReturnFalse,
1811 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
1813 #if GET_NB_IDD_MAX == TRUE
1814 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
1816 (PF_CPU_GET_NB_IDD_MAX) CommonAssert,
1818 #if AP_INITIAL_LAUNCH == TRUE
1821 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
1823 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
1824 (PF_CPU_NUMBER_OF_PHYSICAL_CORES) CommonReturnZero8,
1826 (PF_CPU_NUMBER_OF_PHYSICAL_CORES) CommonAssert,
1828 #if GET_AP_MAILBOX_FROM_HW == TRUE
1829 F10GetApMailboxFromHardware,
1831 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
1833 #if SET_AP_CORE_NUMBER == TRUE
1836 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
1838 #if GET_AP_CORE_NUMBER == TRUE
1841 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
1843 #if TRANSFER_AP_CORE_NUMBER == TRUE
1844 F10TransferApCoreNumber,
1846 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
1848 #if ID_POSITION_INITIAL_APICID == TRUE
1849 F10CpuAmdCoreIdPositionInInitialApicId,
1851 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
1853 #if SAVE_FEATURES == TRUE
1856 (PF_CPU_SAVE_FEATURES) CommonAssert,
1858 #if WRITE_FEATURES == TRUE
1861 (PF_CPU_WRITE_FEATURES) CommonAssert,
1863 #if SET_WARM_RESET_FLAG == TRUE
1864 F10SetAgesaWarmResetFlag,
1866 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
1868 #if GET_WARM_RESET_FLAG == TRUE
1869 F10GetAgesaWarmResetFlag,
1871 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
1873 #if BRAND_STRING1 == TRUE
1874 GetF10BrandIdString1,
1876 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1878 #if BRAND_STRING2 == TRUE
1879 GetF10BrandIdString2,
1881 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1883 #if GET_PATCHES == TRUE
1886 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1888 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
1891 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1893 #if GET_CACHE_INFO == TRUE
1896 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1898 #if GET_SYSTEM_PM_TABLE == TRUE
1901 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1903 #if GET_WHEA_INIT == TRUE
1906 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
1908 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
1909 F10GetPlatformTypeSpecificInfo,
1911 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
1913 #if IS_NB_PSTATE_ENABLED == TRUE
1914 (PF_IS_NB_PSTATE_ENABLED) CommonReturnFalse,
1916 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
1918 #if (BASE_FAMILY_HT_PCI == TRUE)
1919 F10NextLinkHasHtPhyFeats,
1921 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
1923 #if (BASE_FAMILY_HT_PCI == TRUE)
1924 F10SetHtPhyRegister,
1926 (PF_SET_HT_PHY_REGISTER) CommonVoid,
1928 #if BASE_FAMILY_PCI == TRUE
1929 F10GetNextHtLinkFeatures,
1931 (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
1933 #if USES_REGISTER_TABLES == TRUE
1934 (REGISTER_TABLE **) F10UnknownRegisterTables,
1938 #if USES_REGISTER_TABLES == TRUE
1939 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F10UnknownTableEntryTypeDescriptors,
1946 #if AGESA_ENTRY_INIT_EARLY == TRUE
1947 GetF10EarlyInitOnCoreTable
1949 (PF_GET_EARLY_INIT_TABLE) CommonVoid
1953 // Family 10h maximum base address is 48 bits. Limit BLDCFG to 48 bits, if appropriate.
1954 #if (FAMILY_MMIO_BASE_MASK < 0xFFFF000000000000ull)
1955 #undef FAMILY_MMIO_BASE_MASK
1956 #define FAMILY_MMIO_BASE_MASK (0xFFFF000000000000ull)
1959 #undef OPT_F10_ID_TABLE
1960 #define OPT_F10_ID_TABLE {0x10, {AMD_FAMILY_10, AMD_F10_UNKNOWN}, F10LogicalIdTable, (sizeof (F10LogicalIdTable) / sizeof (F10LogicalIdTable[0]))},
1961 #define OPT_F10_UNKNOWN_CPU {AMD_FAMILY_10, &cpuF10UnknownServices},
1963 #undef OPT_F10_TABLE
1964 #define OPT_F10_TABLE OPT_F10_BL_CPU OPT_F10_DA_CPU OPT_F10_HY_CPU OPT_F10_PH_CPU OPT_F10_RB_CPU OPT_F10_UNKNOWN_CPU
1966 #if OPTION_G34_SOCKET_SUPPORT == TRUE
1967 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString1ArrayG34;
1968 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString2ArrayG34;
1969 #define F10_G34_BRANDSTRING1 &F10BrandIdString1ArrayG34,
1970 #define F10_G34_BRANDSTRING2 &F10BrandIdString2ArrayG34,
1972 #define F10_G34_BRANDSTRING1
1973 #define F10_G34_BRANDSTRING2
1975 #if OPTION_C32_SOCKET_SUPPORT == TRUE
1976 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString1ArrayC32;
1977 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString2ArrayC32;
1978 #define F10_C32_BRANDSTRING1 &F10BrandIdString1ArrayC32,
1979 #define F10_C32_BRANDSTRING2 &F10BrandIdString2ArrayC32,
1981 #define F10_C32_BRANDSTRING1
1982 #define F10_C32_BRANDSTRING2
1984 #if OPTION_S1G3_SOCKET_SUPPORT == TRUE
1985 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString1ArrayS1g3;
1986 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString2ArrayS1g3;
1987 #define F10_S1G3_BRANDSTRING1 &F10BrandIdString1ArrayS1g3,
1988 #define F10_S1G3_BRANDSTRING2 &F10BrandIdString2ArrayS1g3,
1990 #define F10_S1G3_BRANDSTRING1
1991 #define F10_S1G3_BRANDSTRING2
1993 #if OPTION_S1G4_SOCKET_SUPPORT == TRUE
1994 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString1ArrayS1g4;
1995 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString2ArrayS1g4;
1996 #define F10_S1G4_BRANDSTRING1 &F10BrandIdString1ArrayS1g4,
1997 #define F10_S1G4_BRANDSTRING2 &F10BrandIdString2ArrayS1g4,
1999 #define F10_S1G4_BRANDSTRING1
2000 #define F10_S1G4_BRANDSTRING2
2002 #if OPTION_ASB2_SOCKET_SUPPORT == TRUE
2003 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString1ArrayAsb2;
2004 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString2ArrayAsb2;
2005 #define F10_ASB2_BRANDSTRING1 &F10BrandIdString1ArrayAsb2,
2006 #define F10_ASB2_BRANDSTRING2 &F10BrandIdString2ArrayAsb2,
2008 #define F10_ASB2_BRANDSTRING1
2009 #define F10_ASB2_BRANDSTRING2
2011 #if OPTION_AM3_SOCKET_SUPPORT == TRUE
2012 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString1ArrayAm3;
2013 extern CONST CPU_BRAND_TABLE ROMDATA F10BrandIdString2ArrayAm3;
2014 #define F10_AM3_BRANDSTRING1 &F10BrandIdString1ArrayAm3,
2015 #define F10_AM3_BRANDSTRING2 &F10BrandIdString2ArrayAm3,
2017 #define F10_AM3_BRANDSTRING1
2018 #define F10_AM3_BRANDSTRING2
2021 #if BRAND_STRING1 == TRUE
2022 CONST CPU_BRAND_TABLE ROMDATA *F10BrandIdString1Tables[] =
2024 F10_G34_BRANDSTRING1
2025 F10_C32_BRANDSTRING1
2026 F10_S1G3_BRANDSTRING1
2027 F10_S1G4_BRANDSTRING1
2028 F10_ASB2_BRANDSTRING1
2029 F10_AM3_BRANDSTRING1
2032 CONST UINT8 F10BrandIdString1TableCount = (sizeof (F10BrandIdString1Tables) / sizeof (F10BrandIdString1Tables[0]));
2035 #if BRAND_STRING2 == TRUE
2036 CONST CPU_BRAND_TABLE ROMDATA *F10BrandIdString2Tables[] =
2038 F10_G34_BRANDSTRING2
2039 F10_C32_BRANDSTRING2
2040 F10_S1G3_BRANDSTRING2
2041 F10_S1G4_BRANDSTRING2
2042 F10_ASB2_BRANDSTRING2
2043 F10_AM3_BRANDSTRING2
2046 CONST UINT8 F10BrandIdString2TableCount = (sizeof (F10BrandIdString2Tables) / sizeof (F10BrandIdString2Tables[0]));
2049 CONST PF_CPU_GET_SUBFAMILY_ID_ARRAY ROMDATA F10LogicalIdTable[] =
2058 #endif // _OPTION_FAMILY_10H_INSTALL_H_