AGESA F15: AMD family15 AGESA code
[coreboot.git] / src / vendorcode / amd / agesa / f15 / Proc / CPU / Family / 0x15 / OR / F15OrSingleLinkPciTables.c
1 /* $NoKeywords:$ */
2 /**
3  * @file
4  *
5  * AMD Family_15 Orochi PCI tables in Recommended Settings for Single Link Processors.
6  *
7  * @xrefitem bom "File Content Label" "Release Content"
8  * @e project:      AGESA
9  * @e sub-project:  CPU/Family/0x15/OR
10  * @e \$Revision: 41897 $   @e \$Date: 2010-11-12 12:39:18 +0800 (Fri, 12 Nov 2010) $
11  *
12  */
13 /*
14  ******************************************************************************
15  *
16  * Copyright (C) 2012 Advanced Micro Devices, Inc.
17  * All rights reserved.
18  *
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.
29  *
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.
40  *
41  ******************************************************************************
42  */
43
44 /*----------------------------------------------------------------------------------------
45  *                             M O D U L E S    U S E D
46  *----------------------------------------------------------------------------------------
47  */
48 #include "AGESA.h"
49 #include "Ids.h"
50 #include "cpuRegisters.h"
51 #include "Table.h"
52 #include "Filecode.h"
53 CODE_GROUP (G3_DXE)
54 RDATA_GROUP (G3_DXE)
55
56 #define FILECODE PROC_CPU_FAMILY_0X15_OR_F15ORSINGLELINKPCITABLES_FILECODE
57
58
59 /*----------------------------------------------------------------------------------------
60  *                   D E F I N I T I O N S    A N D    M A C R O S
61  *----------------------------------------------------------------------------------------
62  */
63
64 /*----------------------------------------------------------------------------------------
65  *                  T Y P E D E F S     A N D     S T R U C T U R E S
66  *----------------------------------------------------------------------------------------
67  */
68
69 /*----------------------------------------------------------------------------------------
70  *           P R O T O T Y P E S     O F     L O C A L     F U N C T I O N S
71  *----------------------------------------------------------------------------------------
72  */
73
74 /*----------------------------------------------------------------------------------------
75  *                          E X P O R T E D    F U N C T I O N S
76  *----------------------------------------------------------------------------------------
77  */
78
79 //  P C I    T a b l e s
80 // ----------------------
81
82 STATIC CONST TABLE_ENTRY_FIELDS ROMDATA F15OrSingleLinkPciRegisters[] =
83 {
84 // F0x68 - Link Transaction Control
85 // bit[14:13], BufPriRel = 01b
86   {
87     PciRegister,
88     {
89       AMD_FAMILY_15,                        // CpuFamily
90       AMD_F15_OR_ALL                           // CpuRevision
91     },
92     {AMD_PF_SINGLE_LINK},                     // platform Features
93     {{
94       MAKE_SBDFO (0, 0, 24, FUNC_0, 0x68),  // Address
95       0x00002000,                           // regData
96       0x00006000,                           // regMask
97     }}
98   },
99 // F0x68 - Link Transaction Control
100 // bit[24], DispRefModeEn = 0
101   {
102     PciRegister,
103     {
104       AMD_FAMILY_15,                        // CpuFamily
105       AMD_F15_OR_ALL                           // CpuRevision
106     },
107     {AMD_PF_ALL},                             // platform Features
108     {{
109       MAKE_SBDFO (0, 0, 24, FUNC_0, 0x68),  // Address
110       0x00000000,                           // regData
111       0x01000000,                           // regMask
112     }}
113   },
114 // F0x68 - Link Transaction Control
115 // bit[24], DispRefModeEn = 1 for UMA, but can only set it on the warm reset.
116   {
117     ProfileFixup,
118     {
119       AMD_FAMILY_15,                        // CpuFamily
120       AMD_F15_OR_ALL                           // CpuRevision
121     },
122     {AMD_PF_UMA},                     // platform Features
123     {{
124       PERFORMANCE_IS_WARM_RESET,
125       MAKE_SBDFO (0, 0, 24, FUNC_0, 0x68),  // Address
126       0x01000000,                           // regData
127       0x01000000,                           // regMask
128     }}
129   },
130   // F0x[F0,D0,B0,90] Link Base Buffer Count Register
131   // 27:25 FreeData: 0
132   // 24:20 FreeCmd: 8
133   // 19:18 RspData: 1
134   // 17:16 NpReqData: 0
135   // 15:12 ProbeCmd: 0
136   // 11:8 RspCmd: 2
137   // 7:5 PReq: 7
138   // 4:0 NpReqCmd: 14
139   {
140     HtHostPciRegister,
141     {
142       AMD_FAMILY_15,                        // CpuFamily
143       AMD_F15_OR_ALL                           // CpuRevision
144     },
145     {AMD_PF_SINGLE_LINK},
146     {{
147       (HT_HOST_AND | HT_HOST_FEAT_NONCOHERENT | HT_HOST_FEAT_GANGED), // Link Features
148       0x10,                                 // Address
149       0x008402EE,                           // Data
150       0x0FFFFFFF                            // Mask
151     }},
152   },
153   // F0x[F4,D4,B4,94] Link Base Buffer Count Register
154   // 28:27 IsocRspData: 0
155   // 26:25 IsocNpReqData: 0
156   // 24:22 IsocRspCmd: 0
157   // 21:19 IsocPReq: 0
158   // 18:16 IsocNpReqCmd: 1
159   {
160     HtHostPciRegister,
161     {
162       AMD_FAMILY_15,                        // CpuFamily
163       AMD_F15_OR_ALL                           // CpuRevision
164     },
165     {AMD_PF_SINGLE_LINK},
166     {{
167       (HT_HOST_AND | HT_HOST_FEAT_NONCOHERENT | HT_HOST_FEAT_GANGED), // Link Features
168       0x14,                                 // Address
169       0x00010000,                           // Data
170       0x1FFF0000                            // Mask
171     }},
172   },
173 // F0x170 - Link Extended Control Register - Link 0, sublink 0
174 // bit[8] LS2En = 1
175   {
176     PciRegister,
177     {
178       AMD_FAMILY_15,                        // CpuFamily
179       AMD_F15_OR_ALL                           // CpuRevision
180     },
181     {AMD_PF_SINGLE_LINK},                     // platform Features
182     {{
183       MAKE_SBDFO (0, 0, 24, FUNC_0, 0x170), // Address
184       0x00000100,                           // regData
185       0x00000100,                           // regMask
186     }}
187   },
188 // F2x118 - Memory Controller Configuration Low Register
189 // bits[13:12] MctPriIsoc = 10b
190 // bits[31:28] MctVarPriCntLmt = 0
191   {
192     PciRegister,
193     {
194       AMD_FAMILY_15,                      // CpuFamily
195       AMD_F15_OR_ALL                         // CpuRevision
196     },
197     { (AMD_PF_UMA | AMD_PF_UMA_IFCM) },        // platform Features
198     {{
199       MAKE_SBDFO (0, 0, 24, FUNC_2, 0x118),  // Address
200       0x00002000,                           // regData
201       0xF0003000,                           // regMask
202     }}
203   },
204 // F2x118 - Memory Controller Configuration Low Register
205 // bits[13:12] MctPriIsoc = 11b
206 // bits[31:28] MctVarPriCntLmt = 1
207   {
208     ProfileFixup,
209     {
210       AMD_FAMILY_15,                      // CpuFamily
211       AMD_F15_OR_ALL                         // CpuRevision
212     },
213     { (AMD_PF_UMA | AMD_PF_UMA_IFCM) },       // platform Features
214     {{
215       PERFORMANCE_MCT_ISOC_VARIABLE,        // Features
216       MAKE_SBDFO (0, 0, 24, FUNC_2, 0x118),  // Address
217       0x10003000,                           // regData
218       0xF0003000,                           // regMask
219     }}
220   },
221 // F3x140 - SRI_to_XCS Token Count
222 // bits[9:8] UpRspTok = 3
223 // bits[23:20] FreeTok = 10
224   {
225     PciRegister,
226     {
227       AMD_FAMILY_15,                      // CpuFamily
228       AMD_F15_OR_ALL                         // CpuRevision
229     },
230     {AMD_PF_SINGLE_LINK},                   // platform Features
231     {{
232       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x140), // Address
233       0x00A00300,                           // regData
234       0x00F00300,                           // regMask
235     }}
236   },
237 // F3x148 - Link to XCS Token Count
238 // bits[1:0] ReqTok0 = 2
239 // bits[3:2] PReqTok0 = 2
240 // bits[5:4] RspTok0 = 2
241 // bits[7:6] ProbeTok0 = 0
242 // bits[9:8] IsocReqTok0 = 1
243 // bits[11:10] IsocPreqTok0 = 0
244 // bits[13:12] IsocRspTok0 = 0
245 // bits[15:14] FreeTok[1:0] = 3
246 // bits[17:16] ReqTok1 = 0
247 // bits[19:18] PReqTok1 = 0
248 // bits[21:20] RspTok1 = 0
249 // bits[23:22] ProbeTok1= 0
250 // bits[24] IsocReqTok1 = 0
251 // bits[26] IsocPreqTok1 = 0
252 // bits[28] IsocRspTok1 = 0
253 // bits[31:30] FreeTok[3:2] = 0
254   {
255     HtTokenPciRegister,
256     {
257       AMD_FAMILY_15,                      // CpuFamily
258       AMD_F15_OR_ALL                         // CpuRevision
259     },
260     {AMD_PF_SINGLE_LINK},  // platformFeatures
261     {{
262       (COUNT_RANGE_ALL | COUNT_RANGE_NONE),    //SCM
263       PERFORMANCE_PROFILE_ALL,
264       (HT_HOST_AND | HT_HOST_FEAT_NONCOHERENT  | HT_HOST_FEAT_GANGED),
265       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x148), // Address
266       0x0000C12A,                           // regData
267       0xD5FFFFFF,                           // regMask
268     }}
269   },
270   // F3x158 - Link to XCS Token Count Registers
271   // bits [3:0]LnkToXcsDRToken = 0
272   {
273     PciRegister,
274     {
275       AMD_FAMILY_15,                      // CpuFamily
276       AMD_F15_OR_ALL                         // CpuRevision
277     },
278    {AMD_PF_SINGLE_LINK},
279     {{
280       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x158), // Address
281       0x00000000,
282       0x0000000F
283     }}
284   },
285   // F3x158 - Link to XCS Token Count Registers
286   // bits [3:0]LnkToXcsDRToken = 3
287   {
288     PciRegister,
289     {
290       AMD_FAMILY_15,                      // CpuFamily
291       AMD_F15_OR_ALL                         // CpuRevision
292     },
293     { (AMD_PF_AND | AMD_PF_SINGLE_LINK | AMD_PF_UMA) },
294     {{
295       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x158), // Address
296       0x00000003,
297       0x0000000F
298     }}
299   },
300   // F3x158 - Link to XCS Token Count Registers
301   // bits [3:0]LnkToXcsDRToken = 3
302   {
303     PciRegister,
304     {
305       AMD_FAMILY_15,                      // CpuFamily
306       AMD_F15_OR_ALL                         // CpuRevision
307     },
308     { (AMD_PF_AND | AMD_PF_SINGLE_LINK | AMD_PF_UMA_IFCM) },
309     {{
310       MAKE_SBDFO (0, 0, 24, FUNC_3, 0x158), // Address
311       0x00000003,
312       0x0000000F
313     }}
314   },
315 };
316
317 CONST REGISTER_TABLE ROMDATA F15OrSingleLinkPciRegisterTable = {
318   PrimaryCores,
319   (sizeof (F15OrSingleLinkPciRegisters) / sizeof (TABLE_ENTRY_FIELDS)),
320   F15OrSingleLinkPciRegisters,
321 };