AGESA F15: AMD family15 AGESA code
[coreboot.git] / src / vendorcode / amd / agesa / f15 / Include / OptionCpbInstall.h
1 /* $NoKeywords:$ */
2 /**
3  * @file
4  *
5  * Install of build option: Core Performance Boost
6  *
7  * Contains AMD AGESA install macros and test conditions. Output is the
8  * defaults tables reflecting the User's build options selection.
9  *
10  * @xrefitem bom "File Content Label" "Release Content"
11  * @e project:      AGESA
12  * @e sub-project:  Options
13  * @e \$Revision: 46389 $   @e \$Date: 2011-01-31 20:22:49 -0700 (Mon, 31 Jan 2011) $
14  */
15 /*****************************************************************************
16  *
17  * Copyright (C) 2012 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 #ifndef _OPTION_CPB_INSTALL_H_
46 #define _OPTION_CPB_INSTALL_H_
47
48 #include "cpuCpb.h"
49
50 /*  This option is designed to be included into the platform solution install
51  *  file. The platform solution install file will define the options status.
52  *  Check to validate the definition
53  */
54 #define OPTION_CPB_FEAT
55 #define F10_CPB_SUPPORT
56 #define F12_CPB_SUPPORT
57 #define F14_ON_CPB_SUPPORT
58 #define F15_OR_CPB_SUPPORT
59
60 #if OPTION_CPB == TRUE
61   #if (AGESA_ENTRY_INIT_EARLY == TRUE) || (AGESA_ENTRY_INIT_LATE == TRUE) || (AGESA_ENTRY_INIT_LATE_RESTORE == TRUE)
62     // Family 10h
63     #ifdef OPTION_FAMILY10H
64       #if OPTION_FAMILY10H == TRUE
65         #if OPTION_FAMILY10H_PH == TRUE
66           extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeatureCpb;
67           #undef OPTION_CPB_FEAT
68           #define OPTION_CPB_FEAT &CpuFeatureCpb,
69           extern CONST CPB_FAMILY_SERVICES ROMDATA F10CpbSupport;
70           #undef F10_CPB_SUPPORT
71           #define F10_CPB_SUPPORT {AMD_FAMILY_10_PH, &F10CpbSupport},
72         #endif
73       #endif
74     #endif
75
76     // Family 12h
77     #ifdef OPTION_FAMILY12H
78       #if OPTION_FAMILY12H == TRUE
79         #if OPTION_FAMILY12H_LN == TRUE
80           extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeatureCpb;
81           #undef OPTION_CPB_FEAT
82           #define OPTION_CPB_FEAT &CpuFeatureCpb,
83           extern CONST CPB_FAMILY_SERVICES ROMDATA F12CpbSupport;
84           #undef F12_CPB_SUPPORT
85           #define F12_CPB_SUPPORT {AMD_FAMILY_12_LN, &F12CpbSupport},
86           #if OPTION_EARLY_SAMPLES == TRUE
87             #if (AGESA_ENTRY_INIT_EARLY == TRUE)
88               extern F_F12_ES_CPB_INIT F12LnA1CpbHook;
89
90               CONST F12_ES_CPB_SUPPORT ROMDATA F12EarlySampleCpbSupport =
91               {
92                 F12LnA1CpbHook
93               };
94             #else
95               CONST F12_ES_CPB_SUPPORT ROMDATA F12EarlySampleCpbSupport =
96               {
97                 (PF_F12_ES_CPB_INIT) CommonVoid
98               };
99             #endif
100           #else
101             CONST F12_ES_CPB_SUPPORT ROMDATA F12EarlySampleCpbSupport =
102             {
103               (PF_F12_ES_CPB_INIT) CommonVoid
104             };
105           #endif
106         #endif
107       #endif
108     #endif
109
110     // Family 14h
111     #ifdef OPTION_FAMILY14H
112       #if OPTION_FAMILY14H == TRUE
113         #if OPTION_FAMILY14H_ON == TRUE
114           extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeatureCpb;
115           #undef OPTION_CPB_FEAT
116           #define OPTION_CPB_FEAT &CpuFeatureCpb,
117           extern CONST CPB_FAMILY_SERVICES ROMDATA F14OnCpbSupport;
118           #undef F14_ON_CPB_SUPPORT
119           #define F14_ON_CPB_SUPPORT {AMD_FAMILY_14_ON, &F14OnCpbSupport},
120         #endif
121       #endif
122     #endif
123
124     // Family 15h
125     #ifdef OPTION_FAMILY15H
126       #if OPTION_FAMILY15H == TRUE
127         #if (OPTION_FAMILY15H_OR == TRUE)
128           extern CONST CPU_FEATURE_DESCRIPTOR ROMDATA CpuFeatureCpb;
129           #undef OPTION_CPB_FEAT
130           #define OPTION_CPB_FEAT &CpuFeatureCpb,
131           extern CONST CPB_FAMILY_SERVICES ROMDATA F15OrCpbSupport;
132           #undef F15_OR_CPB_SUPPORT
133           #define F15_OR_CPB_SUPPORT {AMD_FAMILY_15_OR, &F15OrCpbSupport},
134
135           #if OPTION_EARLY_SAMPLES == TRUE
136             extern F_F15_OR_ES_IS_CPB_SUPPORTED F15OrIsCpbDisabledEarlySample;
137
138             CONST F15_OR_ES_CPB_SUPPORT ROMDATA F15OrEarlySampleCpbSupport =
139             {
140               F15OrIsCpbDisabledEarlySample
141             };
142           #else
143             CONST F15_OR_ES_CPB_SUPPORT ROMDATA F15OrEarlySampleCpbSupport =
144             {
145               (PF_F15_OR_ES_IS_CPB_SUPPORTED) CommonVoid
146             };
147           #endif
148         #endif
149       #endif
150     #endif
151
152   #endif
153 #endif
154
155 CONST CPU_SPECIFIC_SERVICES_XLAT ROMDATA CpbFamilyServiceArray[] =
156 {
157   F10_CPB_SUPPORT
158   F12_CPB_SUPPORT
159   F14_ON_CPB_SUPPORT
160   F15_OR_CPB_SUPPORT
161   {0, NULL}
162 };
163
164 CONST CPU_FAMILY_SUPPORT_TABLE ROMDATA CpbFamilyServiceTable =
165 {
166   (sizeof (CpbFamilyServiceArray) / sizeof (CPU_SPECIFIC_SERVICES_XLAT)),
167   &CpbFamilyServiceArray[0]
168 };
169
170 #endif  // _OPTION_CPB_INSTALL_H_