Fix breaking the build after removing files in tthe previous checkin.
[coreboot.git] / src / vendorcode / amd / agesa / Include / OptionFamily14hInstall.h
1 /* $NoKeywords:$ */
2 /**
3  * @file
4  *
5  * Install of family 14h support
6  *
7  * This file generates the default tables for family 14h processors.
8  *
9  * @xrefitem bom "File Content Label" "Release Content"
10  * @e project:      AGESA
11  * @e sub-project:  Core
12  * @e \$Revision: 37854 $   @e \$Date: 2010-09-14 06:35:39 +0800 (Tue, 14 Sep 2010) $
13  */
14 /*
15  *****************************************************************************
16  *
17  * Copyright (c) 2011, Advanced Micro Devices, Inc.
18  * All rights reserved.
19  * 
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.
30  * 
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.
41  * 
42  * ***************************************************************************
43  *
44  */
45
46 #ifndef _OPTION_FAMILY_14H_INSTALL_H_
47 #define _OPTION_FAMILY_14H_INSTALL_H_
48
49
50 #include "OptionFamily14hEarlySample.h"
51
52 /*
53  * Common Family 14h routines
54  */
55 extern F_CPU_DISABLE_PSTATE F14DisablePstate;
56 extern F_CPU_TRANSITION_PSTATE F14TransitionPstate;
57 extern F_CPU_GET_TSC_RATE F14GetTscRate;
58 extern F_CPU_GET_NB_FREQ F14GetCurrentNbFrequency;
59 extern F_CPU_GET_NB_PSTATE_INFO F14GetNbPstateInfo;
60 extern F_CPU_IS_NBCOF_INIT_NEEDED F14GetNbCofVidUpdate;
61 extern F_CPU_AP_INITIAL_LAUNCH F14LaunchApCore;
62 extern F_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE F14GetApMailboxFromHardware;
63 extern F_CPU_GET_AP_CORE_NUMBER F14GetApCoreNumber;
64 extern F_CORE_ID_POSITION_IN_INITIAL_APIC_ID F14CpuAmdCoreIdPositionInInitialApicId;
65 extern F_CPU_SET_WARM_RESET_FLAG F14SetAgesaWarmResetFlag;
66 extern F_CPU_GET_WARM_RESET_FLAG F14GetAgesaWarmResetFlag;
67 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14BrandIdString1;
68 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14BrandIdString2;
69 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14CacheInfo;
70 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14SysPmTable;
71 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14WheaInitData;
72 extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetEmptyArray;
73 extern F_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO F14GetPlatformTypeSpecificInfo;
74 extern F_CPU_GET_IDD_MAX F14GetProcIddMax;
75 extern CONST REGISTER_TABLE ROMDATA F14PciRegisterTable;
76 extern CONST REGISTER_TABLE ROMDATA F14PerCorePciRegisterTable;
77 extern CONST REGISTER_TABLE ROMDATA F14MsrRegisterTable;
78 extern F_CPU_NUMBER_OF_BRANDSTRING_CORES F14GetNumberOfCoresForBrandstring;
79 extern F_GET_EARLY_INIT_TABLE GetF14OnEarlyInitOnCoreTable;
80 extern F_IS_NB_PSTATE_ENABLED F14IsNbPstateEnabled;
81 #if OPTION_EARLY_SAMPLES == TRUE
82   extern CONST REGISTER_TABLE ROMDATA F14EarlySampleMsrRegisterTable;
83 #endif
84
85
86 /*
87  * Install family 14h model 0 support
88  */
89 #ifdef OPTION_FAMILY14H_ON
90   #if OPTION_FAMILY14H_ON == TRUE
91     extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14OnMicroCodePatchesStruct;
92     extern F_CPU_GET_FAMILY_SPECIFIC_ARRAY GetF14OnMicrocodeEquivalenceTable;
93
94     #if USES_REGISTER_TABLES == TRUE
95       CONST REGISTER_TABLE ROMDATA *F14OnRegisterTables[] =
96       {
97         #if BASE_FAMILY_PCI == TRUE
98           &F14PciRegisterTable,
99         #endif
100         #if BASE_FAMILY_PCI == TRUE
101           &F14PerCorePciRegisterTable,
102         #endif
103         #if BASE_FAMILY_MSR == TRUE
104           &F14MsrRegisterTable,
105           #if OPTION_EARLY_SAMPLES == TRUE
106             &F14EarlySampleMsrRegisterTable,
107           #endif
108         #endif
109         // the end.
110         NULL
111       };
112     #endif
113
114     #if USES_REGISTER_TABLES == TRUE
115       CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F14OnTableEntryTypeDescriptors[] =
116       {
117         {MsrRegister, SetRegisterForMsrEntry},
118         {PciRegister, SetRegisterForPciEntry},
119         {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
120         // End
121         {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
122       };
123     #endif
124
125     CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF14OnServices =
126     {
127       0,
128       #if DISABLE_PSTATE == TRUE
129         F14DisablePstate,
130       #else
131         (PF_CPU_DISABLE_PSTATE) CommonAssert,
132       #endif
133       #if TRANSITION_PSTATE == TRUE
134         F14TransitionPstate,
135       #else
136         (PF_CPU_TRANSITION_PSTATE) CommonAssert,
137       #endif
138       #if PROC_IDD_MAX == TRUE
139         F14GetProcIddMax,
140       #else
141         (PF_CPU_GET_IDD_MAX) CommonAssert,
142       #endif
143       #if GET_TSC_RATE == TRUE
144         F14GetTscRate,
145       #else
146         (PF_CPU_GET_TSC_RATE) CommonAssert,
147       #endif
148       #if GET_NB_FREQ == TRUE
149         F14GetCurrentNbFrequency,
150       #else
151         (PF_CPU_GET_NB_FREQ) CommonAssert,
152       #endif
153       #if GET_NB_FREQ == TRUE
154         F14GetNbPstateInfo,
155       #else
156         (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
157       #endif
158       #if IS_NBCOF_INIT_NEEDED == TRUE
159         F14GetNbCofVidUpdate,
160       #else
161         (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
162       #endif
163       #if AP_INITIAL_LAUNCH == TRUE
164         F14LaunchApCore,
165       #else
166         (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
167       #endif
168       #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
169         F14GetNumberOfCoresForBrandstring,
170       #else
171         (PF_CPU_NUMBER_OF_BRANDSTRING_CORES) CommonAssert,
172       #endif
173       #if GET_AP_MAILBOX_FROM_HW == TRUE
174         F14GetApMailboxFromHardware,
175       #else
176         (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
177       #endif
178       #if SET_AP_CORE_NUMBER == TRUE
179         (PF_CPU_SET_AP_CORE_NUMBER) CommonVoid,
180       #else
181         (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
182       #endif
183       #if GET_AP_CORE_NUMBER == TRUE
184         F14GetApCoreNumber,
185       #else
186         (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
187       #endif
188       #if TRANSFER_AP_CORE_NUMBER == TRUE
189         (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonVoid,
190       #else
191         (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
192       #endif
193       #if ID_POSITION_INITIAL_APICID == TRUE
194         F14CpuAmdCoreIdPositionInInitialApicId,
195       #else
196         (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
197       #endif
198       #if SAVE_FEATURES == TRUE
199         (PF_CPU_SAVE_FEATURES) CommonVoid,
200       #else
201         (PF_CPU_SAVE_FEATURES) CommonAssert,
202       #endif
203       #if WRITE_FEATURES == TRUE
204         (PF_CPU_WRITE_FEATURES) CommonVoid,
205       #else
206         (PF_CPU_WRITE_FEATURES) CommonAssert,
207       #endif
208       #if SET_WARM_RESET_FLAG == TRUE
209         F14SetAgesaWarmResetFlag,
210       #else
211         (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
212       #endif
213       #if GET_WARM_RESET_FLAG == TRUE
214         F14GetAgesaWarmResetFlag,
215       #else
216         (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
217       #endif
218       #if BRAND_STRING1 == TRUE
219         GetF14BrandIdString1,
220       #else
221         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
222       #endif
223       #if BRAND_STRING2 == TRUE
224         GetF14BrandIdString2,
225       #else
226         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
227       #endif
228       #if GET_PATCHES == TRUE
229         GetF14OnMicroCodePatchesStruct,
230       #else
231         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
232       #endif
233       #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
234         GetF14OnMicrocodeEquivalenceTable,
235       #else
236         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
237       #endif
238       #if GET_CACHE_INFO == TRUE
239         GetF14CacheInfo,
240       #else
241         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
242       #endif
243       #if GET_SYSTEM_PM_TABLE == TRUE
244         GetF14SysPmTable,
245       #else
246         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
247       #endif
248       #if GET_WHEA_INIT == TRUE
249         GetF14WheaInitData,
250       #else
251         (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
252       #endif
253       #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
254         F14GetPlatformTypeSpecificInfo,
255       #else
256         (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
257       #endif
258       #if IS_NB_PSTATE_ENABLED == TRUE
259         F14IsNbPstateEnabled,
260       #else
261         (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
262       #endif
263       #if (BASE_FAMILY_HT_PCI == TRUE)
264         (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
265       #else
266         (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
267       #endif
268       #if (BASE_FAMILY_HT_PCI == TRUE)
269         (PF_SET_HT_PHY_REGISTER) CommonVoid,
270       #else
271         (PF_SET_HT_PHY_REGISTER) CommonAssert,
272       #endif
273       #if BASE_FAMILY_PCI == TRUE
274         (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
275       #else
276         (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
277       #endif
278       #if USES_REGISTER_TABLES == TRUE
279         (REGISTER_TABLE **) F14OnRegisterTables,
280       #else
281         NULL,
282       #endif
283       #if USES_REGISTER_TABLES == TRUE
284         (TABLE_ENTRY_TYPE_DESCRIPTOR *) F14OnTableEntryTypeDescriptors,
285       #else
286         NULL,
287       #endif
288       #if MODEL_SPECIFIC_HT_PCI == TRUE
289         NULL,
290       #else
291         NULL,
292       #endif
293       NULL,
294       InitCacheDisabled,
295       #if AGESA_ENTRY_INIT_EARLY == TRUE
296         GetF14OnEarlyInitOnCoreTable
297       #else
298         (PF_GET_EARLY_INIT_TABLE) CommonVoid
299       #endif
300     };
301
302     #define ON_SOCKETS 1
303     #define ON_MODULES 1
304     #define ON_RECOVERY_SOCKETS 1
305     #define ON_RECOVERY_MODULES 1
306     extern F_CPU_GET_SUBFAMILY_ID_ARRAY GetF14OnLogicalIdAndRev;
307     #define OPT_F14_ON_ID (PF_CPU_GET_SUBFAMILY_ID_ARRAY) GetF14OnLogicalIdAndRev,
308     #ifndef ADVCFG_PLATFORM_SOCKETS
309       #define ADVCFG_PLATFORM_SOCKETS ON_SOCKETS
310     #else
311       #if ADVCFG_PLATFORM_SOCKETS < ON_SOCKETS
312         #undef ADVCFG_PLATFORM_SOCKETS
313         #define ADVCFG_PLATFORM_SOCKETS ON_SOCKETS
314       #endif
315     #endif
316     #ifndef ADVCFG_PLATFORM_MODULES
317       #define ADVCFG_PLATFORM_MODULES ON_MODULES
318     #else
319       #if ADVCFG_PLATFORM_MODULES < ON_MODULES
320         #undef ADVCFG_PLATFORM_MODULES
321         #define ADVCFG_PLATFORM_MODULES ON_MODULES
322       #endif
323     #endif
324
325     #if GET_PATCHES == TRUE
326       #define F14_ON_UCODE_0B
327       #define F14_ON_UCODE_1A
328       #define F14_ON_UCODE_25
329
330       // If a patch is required for recovery mode to function properly, add a
331       // conditional for AGESA_ENTRY_INIT_RECOVERY, and pull it in.
332       #if AGESA_ENTRY_INIT_EARLY == TRUE
333         #if OPTION_EARLY_SAMPLES == TRUE
334           extern  CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch0500000B;
335           #undef F14_ON_UCODE_0B
336           #define F14_ON_UCODE_0B &CpuF14MicrocodePatch0500000B,
337
338           extern  CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch0500001A;
339           #undef F14_ON_UCODE_1A
340           #define F14_ON_UCODE_1A &CpuF14MicrocodePatch0500001A,
341         #endif
342         extern  CONST MICROCODE_PATCHES ROMDATA CpuF14MicrocodePatch05000025;
343         #undef F14_ON_UCODE_25
344         #define F14_ON_UCODE_25 &CpuF14MicrocodePatch05000025,
345       #endif
346
347       CONST MICROCODE_PATCHES ROMDATA *CpuF14OnMicroCodePatchArray[] =
348       {
349         F14_ON_UCODE_0B
350         F14_ON_UCODE_1A
351         F14_ON_UCODE_25
352         NULL
353       };
354
355       CONST UINT8 ROMDATA CpuF14OnNumberOfMicrocodePatches = (UINT8) ((sizeof (CpuF14OnMicroCodePatchArray) / sizeof (CpuF14OnMicroCodePatchArray[0])) - 1);
356     #endif
357
358     #if OPTION_EARLY_SAMPLES == TRUE
359       extern F_F14_ES_GET_EARLY_INIT_TABLE GetF14OnEarlySampleEarlyInitTable;
360       extern F_F14_ES_NB_PSTATE_INIT F14NbPstateInitEarlySampleHook;
361       extern F_F14_ES_POWER_PLANE_INIT F14PowerPlaneInitEarlySampleHook;
362
363       CONST F14_ES_CORE_SUPPORT ROMDATA F14EarlySampleCoreSupport =
364       {
365         #if AGESA_ENTRY_INIT_EARLY == TRUE
366           GetF14OnEarlySampleEarlyInitTable,
367           F14PowerPlaneInitEarlySampleHook,
368         #else
369           (PF_F14_ES_GET_EARLY_INIT_TABLE) CommonAssert,
370           (PF_F14_ES_POWER_PLANE_INIT) CommonAssert,
371         #endif
372         #if (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_RECOVERY == TRUE)
373           F14NbPstateInitEarlySampleHook
374         #else
375           (PF_F14_ES_NB_PSTATE_INIT) CommonAssert
376         #endif
377       };
378     #else
379       CONST F14_ES_CORE_SUPPORT ROMDATA F14EarlySampleCoreSupport =
380       {
381         #if AGESA_ENTRY_INIT_EARLY == TRUE
382           (PF_F14_ES_GET_EARLY_INIT_TABLE) CommonVoid,
383           (PF_F14_ES_POWER_PLANE_INIT) CommonVoid,
384         #else
385           (PF_F14_ES_GET_EARLY_INIT_TABLE) CommonAssert,
386           (PF_F14_ES_POWER_PLANE_INIT) CommonAssert,
387         #endif
388         #if (AGESA_ENTRY_INIT_POST == TRUE) || (AGESA_ENTRY_INIT_RESUME == TRUE) || (AGESA_ENTRY_INIT_RECOVERY == TRUE)
389           (PF_F14_ES_NB_PSTATE_INIT) CommonVoid
390         #else
391           (PF_F14_ES_NB_PSTATE_INIT) CommonAssert
392         #endif
393       };
394     #endif
395
396     #define OPT_F14_ON_CPU {AMD_FAMILY_14_ON, &cpuF14OnServices},
397   #else  //  OPTION_FAMILY14H_ON == TRUE
398     #define OPT_F14_ON_CPU
399     #define OPT_F14_ON_ID
400   #endif  //  OPTION_FAMILY14H_ON == TRUE
401 #else  //  defined (OPTION_FAMILY14H_ON)
402   #define OPT_F14_ON_CPU
403   #define OPT_F14_ON_ID
404 #endif  //  defined (OPTION_FAMILY14H_ON)
405
406 /*
407  * Install unknown family 14h support
408  */
409
410 #if USES_REGISTER_TABLES == TRUE
411   CONST REGISTER_TABLE ROMDATA *F14UnknownRegisterTables[] =
412   {
413     #if BASE_FAMILY_PCI == TRUE
414       &F14PciRegisterTable,
415     #endif
416     #if BASE_FAMILY_PCI == TRUE
417       &F14PerCorePciRegisterTable,
418     #endif
419     #if BASE_FAMILY_MSR == TRUE
420       &F14MsrRegisterTable,
421     #endif
422     // the end.
423     NULL
424   };
425 #endif
426
427 #if USES_REGISTER_TABLES == TRUE
428   CONST TABLE_ENTRY_TYPE_DESCRIPTOR ROMDATA F14UnknownTableEntryTypeDescriptors[] =
429   {
430     {MsrRegister, SetRegisterForMsrEntry},
431     {PciRegister, SetRegisterForPciEntry},
432     {FamSpecificWorkaround, SetRegisterForFamSpecificWorkaroundEntry},
433     // End
434     {TableEntryTypeMax, (PF_DO_TABLE_ENTRY)CommonVoid}
435   };
436 #endif
437
438 CONST CPU_SPECIFIC_SERVICES ROMDATA cpuF14UnknownServices =
439 {
440   0,
441   #if DISABLE_PSTATE == TRUE
442     F14DisablePstate,
443   #else
444     (PF_CPU_DISABLE_PSTATE) CommonAssert,
445   #endif
446   #if TRANSITION_PSTATE == TRUE
447     F14TransitionPstate,
448   #else
449     (PF_CPU_TRANSITION_PSTATE) CommonAssert,
450   #endif
451   #if PROC_IDD_MAX == TRUE
452     (PF_CPU_GET_IDD_MAX) F14GetProcIddMax,
453   #else
454     (PF_CPU_GET_IDD_MAX) CommonAssert,
455   #endif
456   #if GET_TSC_RATE == TRUE
457     F14GetTscRate,
458   #else
459     (PF_CPU_GET_TSC_RATE) CommonAssert,
460   #endif
461   #if GET_NB_FREQ == TRUE
462     F14GetCurrentNbFrequency,
463   #else
464     (PF_CPU_GET_NB_FREQ) CommonAssert,
465   #endif
466   #if GET_NB_FREQ == TRUE
467     F14GetNbPstateInfo,
468   #else
469     (PF_CPU_GET_NB_PSTATE_INFO) CommonAssert,
470   #endif
471   #if IS_NBCOF_INIT_NEEDED == TRUE
472     F14GetNbCofVidUpdate,
473   #else
474     (PF_CPU_IS_NBCOF_INIT_NEEDED) CommonAssert,
475   #endif
476   #if AP_INITIAL_LAUNCH == TRUE
477     F14LaunchApCore,
478   #else
479     (PF_CPU_AP_INITIAL_LAUNCH) CommonAssert,
480   #endif
481   #if (BRAND_STRING1 == TRUE) || (BRAND_STRING2 == TRUE)
482     F14GetNumberOfCoresForBrandstring,
483   #else
484     (PF_CPU_NUMBER_OF_BRANDSTRING_CORES) CommonAssert,
485   #endif
486   #if GET_AP_MAILBOX_FROM_HW == TRUE
487     F14GetApMailboxFromHardware,
488   #else
489     (PF_CPU_AMD_GET_AP_MAILBOX_FROM_HARDWARE) CommonAssert,
490   #endif
491   #if SET_AP_CORE_NUMBER == TRUE
492     (PF_CPU_SET_AP_CORE_NUMBER) CommonVoid,
493   #else
494     (PF_CPU_SET_AP_CORE_NUMBER) CommonAssert,
495   #endif
496   #if GET_AP_CORE_NUMBER == TRUE
497     F14GetApCoreNumber,
498   #else
499     (PF_CPU_GET_AP_CORE_NUMBER) CommonAssert,
500   #endif
501   #if TRANSFER_AP_CORE_NUMBER == TRUE
502     (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonVoid,
503   #else
504     (PF_CPU_TRANSFER_AP_CORE_NUMBER) CommonAssert,
505   #endif
506   #if ID_POSITION_INITIAL_APICID == TRUE
507     F14CpuAmdCoreIdPositionInInitialApicId,
508   #else
509     (PF_CORE_ID_POSITION_IN_INITIAL_APIC_ID) CommonAssert,
510   #endif
511   #if SAVE_FEATURES == TRUE
512     (PF_CPU_SAVE_FEATURES) CommonVoid,
513   #else
514     (PF_CPU_SAVE_FEATURES) CommonAssert,
515   #endif
516   #if WRITE_FEATURES == TRUE
517     (PF_CPU_WRITE_FEATURES) CommonVoid,
518   #else
519     (PF_CPU_WRITE_FEATURES) CommonAssert,
520   #endif
521   #if SET_WARM_RESET_FLAG == TRUE
522     F14SetAgesaWarmResetFlag,
523   #else
524     (PF_CPU_SET_WARM_RESET_FLAG) CommonAssert,
525   #endif
526   #if GET_WARM_RESET_FLAG == TRUE
527     F14GetAgesaWarmResetFlag,
528   #else
529     (PF_CPU_GET_WARM_RESET_FLAG) CommonAssert,
530   #endif
531   #if BRAND_STRING1 == TRUE
532     GetF14BrandIdString1,
533   #else
534     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
535   #endif
536   #if BRAND_STRING2 == TRUE
537     GetF14BrandIdString2,
538   #else
539     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
540   #endif
541   #if GET_PATCHES == TRUE
542     GetEmptyArray,
543   #else
544     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
545   #endif
546   #if GET_PATCHES_EQUIVALENCE_TABLE == TRUE
547     GetEmptyArray,
548   #else
549     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
550   #endif
551   #if GET_CACHE_INFO == TRUE
552     GetF14CacheInfo,
553   #else
554     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
555   #endif
556   #if GET_SYSTEM_PM_TABLE == TRUE
557     GetF14SysPmTable,
558   #else
559     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
560   #endif
561   #if GET_WHEA_INIT == TRUE
562     GetF14WheaInitData,
563   #else
564     (PF_CPU_GET_FAMILY_SPECIFIC_ARRAY) CommonAssert,
565   #endif
566   #if GET_PLATFORM_TYPE_SPECIFIC_INFO == TRUE
567     F14GetPlatformTypeSpecificInfo,
568   #else
569     (PF_CPU_GET_PLATFORM_TYPE_SPECIFIC_INFO) CommonAssert,
570   #endif
571   #if IS_NB_PSTATE_ENABLED == TRUE
572     F14IsNbPstateEnabled,
573   #else
574     (PF_IS_NB_PSTATE_ENABLED) CommonAssert,
575   #endif
576   #if (BASE_FAMILY_HT_PCI == TRUE)
577     (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonReturnFalse,
578   #else
579     (PF_NEXT_LINK_HAS_HTFPY_FEATS) CommonVoid,
580   #endif
581   #if (BASE_FAMILY_HT_PCI == TRUE)
582     (PF_SET_HT_PHY_REGISTER) CommonVoid,
583   #else
584     (PF_SET_HT_PHY_REGISTER) CommonVoid,
585   #endif
586   #if BASE_FAMILY_PCI == TRUE
587     (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
588   #else
589     (PF_GET_NEXT_HT_LINK_FEATURES) CommonReturnFalse,
590   #endif
591   #if USES_REGISTER_TABLES == TRUE
592     (REGISTER_TABLE **) F14UnknownRegisterTables,
593   #else
594     NULL,
595   #endif
596   #if USES_REGISTER_TABLES == TRUE
597     (TABLE_ENTRY_TYPE_DESCRIPTOR *) F14UnknownTableEntryTypeDescriptors,
598   #else
599     NULL,
600   #endif
601   #if MODEL_SPECIFIC_HT_PCI == TRUE
602     NULL,
603   #else
604     NULL,
605   #endif
606   NULL,
607   InitCacheDisabled,
608   #if AGESA_ENTRY_INIT_EARLY == TRUE
609     GetF14OnEarlyInitOnCoreTable
610   #else
611     (PF_GET_EARLY_INIT_TABLE) CommonVoid
612   #endif
613 };
614
615  // Family 14h maximum base address is 40 bits. Limit BLDCFG to 40 bits, if appropriate.
616 #if (FAMILY_MMIO_BASE_MASK < 0xFFFFFF0000000000ull)
617   #undef  FAMILY_MMIO_BASE_MASK
618   #define FAMILY_MMIO_BASE_MASK (0xFFFFFF0000000000ull)
619 #endif
620
621 #undef OPT_F14_ID_TABLE
622 #define OPT_F14_ID_TABLE {0x14, {AMD_FAMILY_14, AMD_F14_UNKNOWN}, F14LogicalIdTable, (sizeof (F14LogicalIdTable) / sizeof (F14LogicalIdTable[0]))},
623 #define OPT_F14_UNKNOWN_CPU {AMD_FAMILY_14, &cpuF14UnknownServices},
624
625 #undef OPT_F14_TABLE
626 #define OPT_F14_TABLE   OPT_F14_ON_CPU  OPT_F14_UNKNOWN_CPU
627
628 #if OPTION_FT1_SOCKET_SUPPORT == TRUE
629   extern CONST CPU_BRAND_TABLE ROMDATA F14OnBrandIdString1ArrayFt1;
630   extern CONST CPU_BRAND_TABLE ROMDATA F14OnBrandIdString2ArrayFt1;
631   #define F14_FT1_BRANDSTRING1 &F14OnBrandIdString1ArrayFt1,
632   #define F14_FT1_BRANDSTRING2 &F14OnBrandIdString2ArrayFt1,
633 #else
634   #define F14_FT1_BRANDSTRING1
635   #define F14_FT1_BRANDSTRING2
636 #endif
637
638 #if BRAND_STRING1 == TRUE
639   CONST CPU_BRAND_TABLE ROMDATA *F14BrandIdString1Tables[] =
640   {
641     F14_FT1_BRANDSTRING1
642   };
643
644   CONST UINT8 F14BrandIdString1TableCount = (sizeof (F14BrandIdString1Tables) / sizeof (F14BrandIdString1Tables[0]));
645 #endif
646
647 #if BRAND_STRING2 == TRUE
648   CONST CPU_BRAND_TABLE ROMDATA *F14BrandIdString2Tables[] =
649   {
650     F14_FT1_BRANDSTRING2
651   };
652
653   CONST UINT8 F14BrandIdString2TableCount = (sizeof (F14BrandIdString2Tables) / sizeof (F14BrandIdString2Tables[0]));
654 #endif
655
656 CONST PF_CPU_GET_SUBFAMILY_ID_ARRAY ROMDATA F14LogicalIdTable[] =
657 {
658   OPT_F14_ON_ID
659 };
660
661 #endif  // _OPTION_FAMILY_14H_INSTALL_H_