5 * Install of family 15h support
7 * This file generates the defaults tables for family 15h processors.
9 * @xrefitem bom "File Content Label" "Release Content"
11 * @e sub-project: Core
12 * @e \$Revision: 37150 $ @e \$Date: 2010-08-31 23:53:37 +0800 (Tue, 31 Aug 2010) $
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 * ***************************************************************************
46 #ifndef _OPTION_FAMILY_15H_INSTALL_H_
47 #define _OPTION_FAMILY_15H_INSTALL_H_
50 * Pull in family specific services based on entry point
54 * Common Family 15h routines
56 extern F_GET_EARLY_INIT_TABLE GetF15EarlyInitOnCoreTable;
57 extern F_IS_NB_PSTATE_ENABLED F15IsNbPstateEnabled;
60 * Install family 15h model 0 support
62 #ifdef OPTION_FAMILY15H_OR
63 #if OPTION_FAMILY15H_OR == TRUE
64 extern F_CPU_GET_IDD_MAX F15GetProcIddMax;
65 extern F_CPU_GET_NB_PSTATE_INFO F15GetNbPstateInfo;
66 extern F_CPU_IS_NBCOF_INIT_NEEDED F15CommonGetNbCofVidUpdate;
67 extern F_CPU_DISABLE_PSTATE F15DisablePstate;
68 extern F_CPU_TRANSITION_PSTATE F15TransitionPstate;
69 extern F_CPU_GET_TSC_RATE F15GetTscRate;
70 extern F_CPU_GET_NB_FREQ F15GetCurrentNbFrequency;
71 extern F_CPU_AP_INITIAL_LAUNCH F15LaunchApCore;
72 extern F_CPU_NUMBER_OF_BRANDSTRING_CORES F15CommonGetNumberOfCoresForBrandstring;
73 extern F_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE F15GetApMailboxFromHardware;
74 extern F_CPU_SET_AP_CORE_NUMBER F15SetApCoreNumber;
75 extern F_CPU_GET_AP_CORE_NUMBER F15GetApCoreNumber;
76 extern F_CPU_TRANSFER_AP_CORE_NUMBER F15TransferApCoreNumber;
77 extern F_CORE_ID_POSITION_IN_INITIAL_APIC_ID F15CpuAmdCoreIdPositionInInitialApicId;
78 extern F_CPU_SAVE_FEATURES F15SaveFeatures;
79 extern F_CPU_WRITE_FEATURES F15WriteFeatures;
80 extern F_CPU_SET_WARM_RESET_FLAG F15SetAgesaWarmResetFlag;
81 extern F_CPU_GET_WARM_RESET_FLAG F15GetAgesaWarmResetFlag;
82 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF15CacheInfo;
83 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF15SysPmTable;
84 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF15WheaInitData;
85 extern F_CPU_SET_CFOH_REG SetF15CacheFlushOnHaltRegister;
86 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetEmptyArray;
87 extern F_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO F15GetPlatformTypeSpecificInfo;
88 extern F_NEXT_LINK_HAS_HTFPY_FEATS F15NextLinkHasHtPhyFeats;
89 extern F_SET_HT_PHY_REGISTER F15SetHtPhyRegister;
90 extern F_GET_NEXT_HT_LINK_FEATURES F15GetNextHtLinkFeatures;
91 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF15OrMicroCodePatchesStruct;
92 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF15OrMicrocodeEquivalenceTable;
93 extern CONST REGISTER_TABLE ROMDATA F15OrPciRegisterTable;
94 extern CONST REGISTER_TABLE ROMDATA F15OrMsrRegisterTable;
95 extern CONST REGISTER_TABLE ROMDATA F15OrSharedMsrRegisterTable;
96 extern CONST REGISTER_TABLE ROMDATA F15OrHtPhyRegisterTable;
97 extern CONST REGISTER_TABLE ROMDATA F15PciRegisterTable;
98 extern CONST REGISTER_TABLE ROMDATA F15MsrRegisterTable;
99 extern CONST REGISTER_TABLE ROMDATA F15HtPhyRegisterTable;
100 extern CONST REGISTER_TABLE ROMDATA F15MultiLinkPciRegisterTable;
101 extern CONST REGISTER_TABLE ROMDATA F15SingleLinkPciRegisterTable;
102 extern CONST REGISTER_TABLE ROMDATA F15WorkaroundsTable;
103 extern CONST PACKAGE_HTLINK_MAP_ITEM ROMDATA HtFam15PackageLinkMap[];
106 * Core Pair and core pair primary determination table.
108 * The two fields from the core pair hardware register can be used to determine whether
109 * even number cores are primary or all cores are primary. It can be extended if it is
110 * decided to have other configs as well. The other logically possible value sets are BitMapMapping,
111 * but they are currently not supported by the processor.
113 CONST CORE_PAIR_MAP ROMDATA HtFam15CorePairMapping[] =
115 {1, 1, EvenCoresMapping}, ///< 1 Compute Unit with 2 cores
116 {3, 3, EvenCoresMapping}, ///< 2 Compute Units both with 2 Cores
117 {7, 7, EvenCoresMapping}, ///< 3 Compute Units all with 2 Cores
118 {0xF, 0xF, EvenCoresMapping}, ///< 4 Compute Units all with 2 Cores
119 {1, 0, AllCoresMapping}, ///< 1 Compute Unit with 1 core
120 {3, 0, AllCoresMapping}, ///< 2 Compute Units both with 1 Core
121 {7, 0, AllCoresMapping}, ///< 3 Compute Units all with 1 Core
122 {0xF, 0, AllCoresMapping}, ///< 4 Compute Units all with 1 Core
123 {HT_LIST_TERMINAL, HT_LIST_TERMINAL, MaxComputeUnitMapping} ///< End
127 #if USES_REGISTER_TABLES == TRUE
128 CONST REGISTER_TABLE ROMDATA *F15OrRegisterTables[] =
130 #if BASE_FAMILY_PCI == TRUE
131 &F15PciRegisterTable,
133 #if MODEL_SPECIFIC_PCI == TRUE
134 &F15MultiLinkPciRegisterTable,
136 #if MODEL_SPECIFIC_PCI == TRUE
137 &F15OrPciRegisterTable,
139 #if BASE_FAMILY_MSR == TRUE
140 &F15MsrRegisterTable,
142 #if MODEL_SPECIFIC_MSR == TRUE
143 &F15OrMsrRegisterTable,
145 #if MODEL_SPECIFIC_MSR == TRUE
146 &F15OrSharedMsrRegisterTable,
148 #if MODEL_SPECIFIC_HT_PCI == TRUE
149 &F15HtPhyRegisterTable,
151 #if MODEL_SPECIFIC_HT_PCI == TRUE
152 &F15OrHtPhyRegisterTable,
154 #if BASE_FAMILY_WORKAROUNDS == TRUE
155 &F15WorkaroundsTable,
162 #if USES_REGISTER_TABLES == TRUE
163 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F15OrTableEntryTypeDescriptors[] =
165 {MsrRegister, SetRegisterForMsrEntry},
166 {PciRegister, SetRegisterForPciEntry},
167 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
168 {HtPhyRegister, SetRegisterForHtPhyEntry},
169 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
170 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
171 {HtPhyFreqRegister, SetRegisterForHtPhyFreqEntry},
172 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
173 {HtHostPciRegister, SetRegisterForHtHostEntry},
174 {HtHostPerfPciRegister, SetRegisterForHtHostPerfEntry},
175 {HtTokenPciRegister, SetRegisterForHtLinkTokenEntry},
176 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
177 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
178 {CompUnitCountsPciRegister, SetRegisterForComputeUnitCountsEntry},
179 {TokenPciRegister, SetRegisterForTokenPciEntry},
180 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
181 {HtLinkPciRegister, SetRegisterForHtLinkPciEntry},
183 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
187 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF15OrServices =
190 #if DISABLE_PSTATE == TRUE
193 (PF_CPU_DISABLE_PSTATE) CommonAssert,
195 #if TRANSITION_PSTATE == TRUE
198 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
200 #if PROC_IDD_MAX == TRUE
203 (PF_CPU_GET_IDD_MAX) CommonAssert,
205 #if GET_TSC_RATE == TRUE
208 (PF_CPU_GET_TSC_RATE) CommonAssert,
210 #if GET_NB_FREQ == TRUE
211 F15GetCurrentNbFrequency,
213 (PF_CPU_GET_NB_FREQ) CommonAssert,
215 #if GET_NB_FREQ == TRUE
218 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
220 #if IS_NBCOF_INIT_NEEDED == TRUE
221 F15CommonGetNbCofVidUpdate,
223 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
225 #if AP_INITIAL_LAUNCH == TRUE
228 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
230 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
231 F15CommonGetNumberOfCoresForBrandstring,
233 (PF_CPU_NUMBER_OF_BRANDSTRING_CORES) CommonAssert,
235 #if GET_AP_MAILBOX_FROM_HW == TRUE
236 F15GetApMailboxFromHardware,
238 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
240 #if SET_AP_CORE_NUMBER == TRUE
243 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
245 #if GET_AP_CORE_NUMBER == TRUE
248 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
250 #if TRANSFER_AP_CORE_NUMBER == TRUE
251 F15TransferApCoreNumber,
253 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
255 #if ID_POSITION_INITIAL_APICID == TRUE
256 F15CpuAmdCoreIdPositionInInitialApicId,
258 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
260 #if SAVE_FEATURES == TRUE
262 (PF_CPU_SAVE_FEATURES) CommonVoid,
264 (PF_CPU_SAVE_FEATURES) CommonAssert,
266 #if WRITE_FEATURES == TRUE
268 (PF_CPU_WRITE_FEATURES) CommonVoid,
270 (PF_CPU_WRITE_FEATURES) CommonAssert,
272 #if SET_WARM_RESET_FLAG == TRUE
273 F15SetAgesaWarmResetFlag,
275 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
277 #if GET_WARM_RESET_FLAG == TRUE
278 F15GetAgesaWarmResetFlag,
280 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
282 #if BRAND_STRING1 == TRUE
283 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonVoid,
285 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
287 #if BRAND_STRING2 == TRUE
288 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonVoid,
290 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
292 #if GET_PATCHES == TRUE
293 GetF15OrMicroCodePatchesStruct,
295 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
297 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
298 GetF15OrMicrocodeEquivalenceTable,
300 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
302 #if GET_CACHE_INFO == TRUE
305 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
307 #if GET_SYSTEM_PM_TABLE == TRUE
310 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
312 #if GET_WHEA_INIT == TRUE
315 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
317 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
318 F15GetPlatformTypeSpecificInfo,
320 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
322 #if IS_NB_PSTATE_ENABLED == TRUE
323 F15IsNbPstateEnabled,
325 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
327 #if (BASE_FAMILY_HT_PCI == TRUE)
328 F15NextLinkHasHtPhyFeats,
330 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
332 #if (BASE_FAMILY_HT_PCI == TRUE)
335 (PF_SET_HT_PHY_REGISTER) CommonAssert,
337 #if BASE_FAMILY_PCI == TRUE
338 F15GetNextHtLinkFeatures,
340 (PF_GET_NEXT_HT_LINK_FEATURES) CommonAssert,
342 #if USES_REGISTER_TABLES == TRUE
343 (REGISTER_TABLE **) F15OrRegisterTables,
347 #if USES_REGISTER_TABLES == TRUE
348 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F15OrTableEntryTypeDescriptors,
352 #if MODEL_SPECIFIC_HT_PCI == TRUE
353 (PACKAGE_HTLINK_MAP) &HtFam15PackageLinkMap,
357 (CORE_PAIR_MAP *) &HtFam15CorePairMapping,
359 #if AGESA_ENTRY_INIT_EARLY == TRUE
360 GetF15EarlyInitOnCoreTable
362 (PF_GET_EARLY_INIT_TABLE) CommonVoid
368 #define OR_RECOVERY_SOCKETS 1
369 #define OR_RECOVERY_MODULES 1
370 extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF15OrLogicalIdAndRev;
371 #define OPT_F15_OR_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF15OrLogicalIdAndRev,
372 #ifndef ADVCFG_PLATFORM_SOCKETS
373 #define ADVCFG_PLATFORM_SOCKETS OR_SOCKETS
375 #if ADVCFG_PLATFORM_SOCKETS < OR_SOCKETS
376 #undef ADVCFG_PLATFORM_SOCKETS
377 #define ADVCFG_PLATFORM_SOCKETS OR_SOCKETS
380 #ifndef ADVCFG_PLATFORM_MODULES
381 #define ADVCFG_PLATFORM_MODULES OR_MODULES
383 #if ADVCFG_PLATFORM_MODULES < OR_MODULES
384 #undef ADVCFG_PLATFORM_MODULES
385 #define ADVCFG_PLATFORM_MODULES OR_MODULES
389 #if GET_PATCHES == TRUE
390 #define F15_OR_UCODE_09
392 #if AGESA_ENTRY_INIT_EARLY == TRUE
393 #if OPTION_EARLY_SAMPLES == TRUE
394 extern CONST MICROCODE_PATCHES_4K ROMDATA CpuF15OrMicrocodePatch06000009;
395 #undef F15_OR_UCODE_09
396 #define F15_OR_UCODE_09 &CpuF15OrMicrocodePatch06000009,
400 CONST MICROCODE_PATCHES_4K ROMDATA *CpuF15OrMicroCodePatchArray[] =
406 CONST UINT8 ROMDATA CpuF15OrNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF15OrMicroCodePatchArray) / sizeof (CpuF15OrMicroCodePatchArray[0])) - 1);
409 #define OPT_F15_OR_CPU {AMD_FAMILY_15_OR, &cpuF15OrServices},
411 #else // OPTION_FAMILY15H_OR == TRUE
412 #define OPT_F15_OR_CPU
413 #define OPT_F15_OR_ID
414 #endif // OPTION_FAMILY15H_OR == TRUE
415 #else // defined (OPTION_FAMILY15H_OR)
416 #define OPT_F15_OR_CPU
417 #define OPT_F15_OR_ID
418 #endif // defined (OPTION_FAMILY15H_OR)
421 * Install unknown family 15h support
425 #if USES_REGISTER_TABLES == TRUE
426 CONST REGISTER_TABLE ROMDATA *F15UnknownRegisterTables[] =
428 #if BASE_FAMILY_PCI == TRUE
429 &F15PciRegisterTable,
431 #if BASE_FAMILY_MSR == TRUE
432 &F15MsrRegisterTable,
434 #if BASE_FAMILY_HT_PCI == TRUE
435 &F15HtPhyRegisterTable,
437 #if OPTION_MULTISOCKET == TRUE
438 #if MODEL_SPECIFIC_PCI == TRUE
439 &F15MultiLinkPciRegisterTable,
442 #if OPTION_MULTISOCKET == FALSE
443 #if MODEL_SPECIFIC_PCI == TRUE
444 &F15SingleLinkPciRegisterTable,
447 #if BASE_FAMILY_WORKAROUNDS == TRUE
448 &F15WorkaroundsTable,
455 #if USES_REGISTER_TABLES == TRUE
456 CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F15UnknownTableEntryTypeDescriptors[] =
458 {MsrRegister, SetRegisterForMsrEntry},
459 {PciRegister, SetRegisterForPciEntry},
460 {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
461 {HtPhyRegister, SetRegisterForHtPhyEntry},
462 {HtPhyRangeRegister, SetRegisterForHtPhyRangeEntry},
463 {DeemphasisRegister, SetRegisterForDeemphasisEntry},
464 {ProfileFixup, SetRegisterForPerformanceProfileEntry},
465 {HtHostPciRegister, SetRegisterForHtHostEntry},
466 {HtHostPerfPciRegister, SetRegisterForHtHostPerfEntry},
467 {HtTokenPciRegister, (PF_DO_TABLE_ENTRY)CommonVoid},
468 {CoreCountsPciRegister, SetRegisterForCoreCountsPerformanceEntry},
469 {ProcCountsPciRegister, SetRegisterForProcessorCountsEntry},
470 {CompUnitCountsPciRegister, SetRegisterForComputeUnitCountsEntry},
471 {HtFeatPciRegister, SetRegisterForHtFeaturePciEntry},
473 {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
478 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF15UnknownServices =
481 #if DISABLE_PSTATE == TRUE
484 (PF_CPU_DISABLE_PSTATE) CommonAssert,
486 #if TRANSITION_PSTATE == TRUE
489 (PF_CPU_TRANSITION_PSTATE) CommonAssert,
491 #if PROC_IDD_MAX == TRUE
492 (PF_CPU_GET_IDD_MAX) CommonReturnFalse,
494 (PF_CPU_GET_IDD_MAX) CommonAssert,
496 #if GET_TSC_RATE == TRUE
499 (PF_CPU_GET_TSC_RATE) CommonAssert,
501 #if GET_NB_FREQ == TRUE
502 F15GetCurrentNbFrequency,
504 (PF_CPU_GET_NB_FREQ) CommonAssert,
506 #if GET_NB_FREQ == TRUE
509 (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
511 #if IS_NBCOF_INIT_NEEDED == TRUE
512 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonReturnFalse,
514 (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
516 #if AP_INITIAL_LAUNCH == TRUE
519 (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
521 #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
522 (PF_CPU_NUMBER_OF_BRANDSTRING_CORES) CommonVoid,
524 (PF_CPU_NUMBER_OF_BRANDSTRING_CORES) CommonAssert,
526 #if GET_AP_MAILBOX_FROM_HW == TRUE
527 F15GetApMailboxFromHardware,
529 (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
531 #if SET_AP_CORE_NUMBER == TRUE
534 (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
536 #if GET_AP_CORE_NUMBER == TRUE
539 (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
541 #if TRANSFER_AP_CORE_NUMBER == TRUE
542 F15TransferApCoreNumber,
544 (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
546 #if ID_POSITION_INITIAL_APICID == TRUE
547 F15CpuAmdCoreIdPositionInInitialApicId,
549 (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
551 #if SAVE_FEATURES == TRUE
553 (PF_CPU_SAVE_FEATURES) CommonVoid,
555 (PF_CPU_SAVE_FEATURES) CommonAssert,
557 #if WRITE_FEATURES == TRUE
559 (PF_CPU_WRITE_FEATURES) CommonVoid,
561 (PF_CPU_WRITE_FEATURES) CommonAssert,
563 #if SET_WARM_RESET_FLAG == TRUE
564 F15SetAgesaWarmResetFlag,
566 (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
568 #if GET_WARM_RESET_FLAG == TRUE
569 F15GetAgesaWarmResetFlag,
571 (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
573 #if BRAND_STRING1 == TRUE
574 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonVoid,
576 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
578 #if BRAND_STRING2 == TRUE
579 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonVoid,
581 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
583 #if GET_PATCHES == TRUE
586 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
588 #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
591 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
593 #if GET_CACHE_INFO == TRUE
596 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
598 #if GET_SYSTEM_PM_TABLE == TRUE
601 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
603 #if GET_WHEA_INIT == TRUE
606 (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
608 #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
609 F15GetPlatformTypeSpecificInfo,
611 (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
613 #if IS_NB_PSTATE_ENABLED == TRUE
614 F15IsNbPstateEnabled,
616 (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
618 #if (BASE_FAMILY_HT_PCI == TRUE)
619 F15NextLinkHasHtPhyFeats,
621 (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
623 #if (BASE_FAMILY_HT_PCI == TRUE)
626 (PF_SET_HT_PHY_REGISTER) CommonVoid,
628 #if BASE_FAMILY_PCI == TRUE
629 F15GetNextHtLinkFeatures,
631 (PF_GET_NEXT_HT_LINK_FEATURES) CommonAssert,
633 #if USES_REGISTER_TABLES == TRUE
634 (REGISTER_TABLE **) F15UnknownRegisterTables,
638 #if USES_REGISTER_TABLES == TRUE
639 (TABLE_ENTRY_TYPE_DESCRIPTOR *) F15UnknownTableEntryTypeDescriptors,
646 #if AGESA_ENTRY_INIT_EARLY == TRUE
647 GetF15EarlyInitOnCoreTable
649 (PF_GET_EARLY_INIT_TABLE) CommonVoid
653 // Family 15h maximum base address is 48 bits. Limit BLDCFG to 48 bits, if appropriate.
654 #if (FAMILY_MMIO_BASE_MASK < 0xFFFF000000000000ull)
655 #undef FAMILY_MMIO_BASE_MASK
656 #define FAMILY_MMIO_BASE_MASK (0xFFFF000000000000ull)
660 #undef OPT_F15_ID_TABLE
661 #define OPT_F15_ID_TABLE {0x15, {AMD_FAMILY_15, AMD_F15_UNKNOWN}, F15LogicalIdTable, (sizeof (F15LogicalIdTable) / sizeof (F15LogicalIdTable[0]))},
662 #define OPT_F15_UNKNOWN_CPU {AMD_FAMILY_15, &cpuF15UnknownServices},
665 #define OPT_F15_TABLE OPT_F15_OR_CPU OPT_F15_UNKNOWN_CPU
668 #if OPTION_G34_SOCKET_SUPPORT == TRUE
669 #define F15_G34_BRANDSTRING1 NULL,
670 #define F15_G34_BRANDSTRING2 NULL,
672 #define F15_G34_BRANDSTRING1
673 #define F15_G34_BRANDSTRING2
675 #if OPTION_C32_SOCKET_SUPPORT == TRUE
676 #define F15_C32_BRANDSTRING1 NULL,
677 #define F15_C32_BRANDSTRING2 NULL,
679 #define F15_C32_BRANDSTRING1
680 #define F15_C32_BRANDSTRING2
682 #if OPTION_AM3_SOCKET_SUPPORT == TRUE
683 #define F15_AM3_BRANDSTRING1 NULL,
684 #define F15_AM3_BRANDSTRING2 NULL,
686 #define F15_AM3_BRANDSTRING1
687 #define F15_AM3_BRANDSTRING2
690 #if BRAND_STRING1 == TRUE
691 CONST CPU_BRAND_TABLE ROMDATA *F15BrandIdString1Tables[] =
698 CONST UINT8 F15BrandIdString1TableCount = (sizeof (F15BrandIdString1Tables) / sizeof (F15BrandIdString1Tables[0]));
701 #if BRAND_STRING2 == TRUE
702 CONST CPU_BRAND_TABLE ROMDATA *F15BrandIdString2Tables[] =
709 CONST UINT8 F15BrandIdString2TableCount = (sizeof (F15BrandIdString2Tables) / sizeof (F15BrandIdString2Tables[0]));
712 CONST PF_CPU_GET_SUBFAMILY_ID_ARRAY ROMDATA F15LogicalIdTable[] =
717 #endif // _OPTION_FAMILY_15H_INSTALL_H_