5 * Initializers for Family 10h northbridge support.
7 * @xrefitem bom "File Content Label" "Release Content"
9 * @e sub-project: HyperTransport
10 * @e \$Revision: 56279 $ @e \$Date: 2011-07-11 13:11:28 -0600 (Mon, 11 Jul 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.
41 * ***************************************************************************
46 *----------------------------------------------------------------------------
49 *----------------------------------------------------------------------------
54 #include "OptionsHt.h"
59 #include "CommonReturns.h"
60 #include "htNbCoherent.h"
61 #include "htNbCoherentFam10.h"
62 #include "htNbNonCoherent.h"
63 #include "htNbNonCoherentFam10.h"
64 #include "htNbOptimization.h"
65 #include "htNbOptimizationFam10.h"
66 #include "htNbSystemFam10.h"
67 #include "htNbUtilities.h"
68 #include "htNbUtilitiesFam10.h"
69 #include "cpuFamRegisters.h"
74 #define FILECODE PROC_HT_FAM10_HTNBFAM10_FILECODE
76 extern OPTION_HT_CONFIGURATION OptionHtConfiguration;
78 /*----------------------------------------------------------------------------
79 * DEFINITIONS AND MACROS
81 *----------------------------------------------------------------------------
84 /*----------------------------------------------------------------------------
85 * TYPEDEFS AND STRUCTURES
87 *----------------------------------------------------------------------------
89 /*----------------------------------------------------------------------------
90 * PROTOTYPES OF LOCAL FUNCTIONS
92 *----------------------------------------------------------------------------
95 /***************************************************************************
96 *** FAMILY/NORTHBRIDGE SPECIFIC FUNCTIONS ***
97 ***************************************************************************/
100 * Map Northbridge links to package links for Family 10h, Rev D, multi-module.
102 * Unfortunately, there is no way to do this except to type the BKDG text into this data structure.
103 * Note that there is one entry per package external sublink and each connected internal link.
105 CONST PACKAGE_HTLINK_MAP_ITEM ROMDATA HtFam10RevDPackageLinkMap[] =
107 {0, 0, 0}, ///< Module zero, link 0: package link 0
108 {4, 0, 4}, ///< Module zero, link 4: package link 4
109 {0, 1, 1}, ///< Module one, link 0: package link 1
110 {4, 1, 5}, ///< Module one, link 4: package link 5
111 {3, 0, 2}, ///< Module zero, link 3: package link 2
112 {7, 0, 6}, ///< Module zero, link 7: package link 6
113 {2, 0, 3}, ///< Module zero, link 2: package link 3
114 {1, 1, 7}, ///< Module one, link 1: package link 7
115 {1, 0, HT_LIST_MATCH_INTERNAL_LINK_0}, ///< Internal Link
116 {5, 0, HT_LIST_MATCH_INTERNAL_LINK_1}, ///< Internal Link
117 {6, 0, HT_LIST_MATCH_INTERNAL_LINK_2}, ///< Internal Link
118 {2, 1, HT_LIST_MATCH_INTERNAL_LINK_0}, ///< Internal Link
119 {6, 1, HT_LIST_MATCH_INTERNAL_LINK_1}, ///< Internal Link
120 {5, 1, HT_LIST_MATCH_INTERNAL_LINK_2}, ///< Internal Link
121 {HT_LIST_TERMINAL, HT_LIST_TERMINAL, HT_LIST_TERMINAL}, ///< End
125 * A default Ignore Link list for rev D to power off the 3rd internal sublink.
127 STATIC CONST IGNORE_LINK ROMDATA Fam10RevDIgnoreLinkList[] = {
128 {HT_LIST_MATCH_ANY, HT_LIST_MATCH_INTERNAL_LINK_2, POWERED_OFF},
133 * Initial construction data for Family 10h North Bridge, default, full features.
135 CONST NORTHBRIDGE ROMDATA HtFam10NbDefault =
142 DisableRoutingTables,
143 VerifyLinkIsCoherent,
146 WriteFullRoutingTable,
148 Fam10IsExceededCapable,
150 (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
151 HandleSpecialNodeCase,
153 VerifyLinkIsNonCoherent,
154 Fam10SetConfigAddrMap,
155 Fam10NorthBridgeFreqMask,
159 SetLinkUnitIdClumping,
160 Fam10WriteTrafficDistribution,
161 Fam10WriteLinkPairDistribution,
162 (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
163 Fam10BufferOptimizations,
164 Fam10GetNumCoresOnNode,
165 SetTotalNodesAndCores,
168 ReadTrueLinkFailStatus,
174 Fam10RetrieveMailbox,
176 (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
177 (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,
183 ((AMD_FAMILY_10) & ~(AMD_FAMILY_10_HY | AMD_FAMILY_10_PH)),
192 * Initial construction data for Family 10h North Bridge, default, full features.
194 CONST NORTHBRIDGE ROMDATA HtFam10RevDNbDefault =
201 DisableRoutingTables,
202 VerifyLinkIsCoherent,
205 WriteFullRoutingTable,
207 Fam10IsExceededCapable,
209 (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
210 HandleSpecialNodeCase,
212 VerifyLinkIsNonCoherent,
213 Fam10SetConfigAddrMap,
214 Fam10RevDNorthBridgeFreqMask,
218 SetLinkUnitIdClumping,
219 Fam10WriteTrafficDistribution,
220 Fam10WriteLinkPairDistribution,
221 (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
222 Fam10RevDBufferOptimizations,
223 Fam10RevDGetNumCoresOnNode,
224 SetTotalNodesAndCores,
227 ReadTrueLinkFailStatus,
233 Fam10RetrieveMailbox,
235 (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
236 (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,
243 (PACKAGE_HTLINK_MAP) &HtFam10RevDPackageLinkMap,
245 (IGNORE_LINK *)&Fam10RevDIgnoreLinkList,
251 * Initial construction data for Family 10h North Bridge, default, full features.
253 CONST NORTHBRIDGE ROMDATA HtFam10RevENbDefault =
260 DisableRoutingTables,
261 VerifyLinkIsCoherent,
264 WriteFullRoutingTable,
266 Fam10IsExceededCapable,
268 (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
269 HandleSpecialNodeCase,
271 VerifyLinkIsNonCoherent,
272 Fam10SetConfigAddrMap,
273 Fam10NorthBridgeFreqMask,
277 SetLinkUnitIdClumping,
278 Fam10WriteTrafficDistribution,
279 Fam10WriteLinkPairDistribution,
280 (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
281 Fam10BufferOptimizations,
282 Fam10RevDGetNumCoresOnNode,
283 SetTotalNodesAndCores,
286 ReadTrueLinkFailStatus,
292 Fam10RetrieveMailbox,
294 (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
295 (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,
310 * Initial construction data for Family 10h North Bridge, for non-coherent only builds.
312 CONST NORTHBRIDGE ROMDATA HtFam10NbNonCoherentOnly =
315 (PF_WRITE_ROUTING_TABLE)CommonVoid,
316 (PF_WRITE_NODEID)CommonVoid,
317 (PF_READ_DEFAULT_LINK)CommonReturnZero8,
318 (PF_ENABLE_ROUTING_TABLES)CommonVoid,
319 (PF_DISABLE_ROUTING_TABLES)CommonVoid,
320 (PF_VERIFY_LINK_IS_COHERENT)CommonReturnFalse,
321 (PF_READ_TOKEN)CommonReturnZero8,
322 (PF_WRITE_TOKEN)CommonVoid,
323 (PF_WRITE_FULL_ROUTING_TABLE)CommonVoid,
324 (PF_IS_ILLEGAL_TYPE_MIX)CommonReturnFalse,
325 (PF_IS_EXCEEDED_CAPABLE)CommonReturnFalse,
326 (PF_STOP_LINK)CommonVoid,
327 (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
328 (PF_HANDLE_SPECIAL_NODE_CASE)CommonReturnFalse,
330 VerifyLinkIsNonCoherent,
331 Fam10SetConfigAddrMap,
332 Fam10NorthBridgeFreqMask,
336 SetLinkUnitIdClumping,
337 (PF_WRITE_TRAFFIC_DISTRIBUTION)CommonVoid,
338 (PF_WRITE_LINK_PAIR_DISTRIBUTION)CommonVoid,
339 (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
340 Fam10BufferOptimizations,
341 Fam10GetNumCoresOnNode,
342 SetTotalNodesAndCores,
345 ReadTrueLinkFailStatus,
351 Fam10RetrieveMailbox,
353 (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
354 (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,
360 ((AMD_FAMILY_10) & ~(AMD_FAMILY_10_HY | AMD_FAMILY_10_PH)),
369 * Initial construction data for Family 10h North Bridge, for RevD compatible non-coherent only builds.
371 CONST NORTHBRIDGE ROMDATA HtFam10RevDNbNonCoherentOnly =
374 (PF_WRITE_ROUTING_TABLE)CommonVoid,
375 (PF_WRITE_NODEID)CommonVoid,
376 (PF_READ_DEFAULT_LINK)CommonReturnZero8,
377 (PF_ENABLE_ROUTING_TABLES)CommonVoid,
378 (PF_DISABLE_ROUTING_TABLES)CommonVoid,
379 (PF_VERIFY_LINK_IS_COHERENT)CommonReturnFalse,
380 (PF_READ_TOKEN)CommonReturnZero8,
381 (PF_WRITE_TOKEN)CommonVoid,
382 (PF_WRITE_FULL_ROUTING_TABLE)CommonVoid,
383 (PF_IS_ILLEGAL_TYPE_MIX)CommonReturnFalse,
384 (PF_IS_EXCEEDED_CAPABLE)CommonReturnFalse,
385 (PF_STOP_LINK)CommonVoid,
386 (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
387 (PF_HANDLE_SPECIAL_NODE_CASE)CommonReturnFalse,
389 VerifyLinkIsNonCoherent,
390 Fam10SetConfigAddrMap,
391 Fam10RevDNorthBridgeFreqMask,
395 SetLinkUnitIdClumping,
396 (PF_WRITE_TRAFFIC_DISTRIBUTION)CommonVoid,
397 (PF_WRITE_LINK_PAIR_DISTRIBUTION)CommonVoid,
398 (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
399 Fam10BufferOptimizations,
400 Fam10RevDGetNumCoresOnNode,
401 SetTotalNodesAndCores,
404 ReadTrueLinkFailStatus,
410 Fam10RetrieveMailbox,
412 (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
413 (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,
428 * Initial construction data for Family 10h North Bridge, for RevE compatible non-coherent only builds.
430 CONST NORTHBRIDGE ROMDATA HtFam10RevENbNonCoherentOnly =
433 (PF_WRITE_ROUTING_TABLE)CommonVoid,
434 (PF_WRITE_NODEID)CommonVoid,
435 (PF_READ_DEFAULT_LINK)CommonReturnZero8,
436 (PF_ENABLE_ROUTING_TABLES)CommonVoid,
437 (PF_DISABLE_ROUTING_TABLES)CommonVoid,
438 (PF_VERIFY_LINK_IS_COHERENT)CommonReturnFalse,
439 (PF_READ_TOKEN)CommonReturnZero8,
440 (PF_WRITE_TOKEN)CommonVoid,
441 (PF_WRITE_FULL_ROUTING_TABLE)CommonVoid,
442 (PF_IS_ILLEGAL_TYPE_MIX)CommonReturnFalse,
443 (PF_IS_EXCEEDED_CAPABLE)CommonReturnFalse,
444 (PF_STOP_LINK)CommonVoid,
445 (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
446 (PF_HANDLE_SPECIAL_NODE_CASE)CommonReturnFalse,
448 VerifyLinkIsNonCoherent,
449 Fam10SetConfigAddrMap,
450 Fam10NorthBridgeFreqMask,
454 SetLinkUnitIdClumping,
455 (PF_WRITE_TRAFFIC_DISTRIBUTION)CommonVoid,
456 (PF_WRITE_LINK_PAIR_DISTRIBUTION)CommonVoid,
457 (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
458 Fam10BufferOptimizations,
459 Fam10RevDGetNumCoresOnNode,
460 SetTotalNodesAndCores,
463 ReadTrueLinkFailStatus,
469 Fam10RetrieveMailbox,
471 (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
472 (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,