aboutsummaryrefslogtreecommitdiff
path: root/src/vendorcode/amd/agesa/f12/Proc/HT
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/amd/agesa/f12/Proc/HT')
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/Makefile.inc2
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbFam12.c148
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.c141
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.h67
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/Makefile.inc8
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.c111
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.h561
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htGraph.h143
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.c241
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.h489
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.c263
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.h114
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.c539
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.h161
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.c393
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.h137
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htMain.c579
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htNb.c247
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htNb.h1133
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htNbCommonHardware.h122
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.c669
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.h297
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htPage.h64
-rw-r--r--src/vendorcode/amd/agesa/f12/Proc/HT/htTopologies.h71
24 files changed, 0 insertions, 6700 deletions
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/Makefile.inc b/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/Makefile.inc
deleted file mode 100644
index 3393a31432..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/Makefile.inc
+++ /dev/null
@@ -1,2 +0,0 @@
-libagesa-y += htNbFam12.c
-libagesa-y += htNbUtilitiesFam12.c
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbFam12.c b/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbFam12.c
deleted file mode 100644
index d75bd49181..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbFam12.c
+++ /dev/null
@@ -1,148 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * The initializer for Family 12h northbridge support.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44846 $ @e \$Date: 2011-01-07 13:21:05 +0800 (Fri, 07 Jan 2011) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "OptionsHt.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htNb.h"
-#include "CommonReturns.h"
-#include "htNbUtilitiesFam12.h"
-#include "cpuFamRegisters.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_FAM12_HTNBFAM12_FILECODE
-
-extern OPTION_HT_CONFIGURATION OptionHtConfiguration;
-
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS AND STRUCTURES
- *
- *----------------------------------------------------------------------------
- */
-/*----------------------------------------------------------------------------
- * PROTOTYPES OF LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/***************************************************************************
- *** FAMILY/NORTHBRIDGE SPECIFIC FUNCTIONS ***
- ***************************************************************************/
-
-
-/**
- * Initial construction data for no HT Northbridge.
- */
-CONST NORTHBRIDGE ROMDATA HtFam12Nb =
-{
- 1,
- (PF_WRITE_ROUTING_TABLE)CommonVoid,
- (PF_WRITE_NODEID)CommonVoid,
- (PF_READ_DEFAULT_LINK)CommonReturnZero8,
- (PF_ENABLE_ROUTING_TABLES)CommonVoid,
- (PF_DISABLE_ROUTING_TABLES)CommonVoid,
- (PF_VERIFY_LINK_IS_COHERENT)CommonReturnFalse,
- (PF_READ_TOKEN)CommonReturnZero8,
- (PF_WRITE_TOKEN)CommonVoid,
- (PF_WRITE_FULL_ROUTING_TABLE)CommonVoid,
- (PF_IS_ILLEGAL_TYPE_MIX)CommonReturnFalse,
- (PF_IS_EXCEEDED_CAPABLE)CommonReturnFalse,
- (PF_STOP_LINK)CommonVoid,
- (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
- (PF_HANDLE_SPECIAL_NODE_CASE)CommonReturnFalse,
- (PF_READ_SB_LINK)CommonReturnZero8,
- (PF_VERIFY_LINK_IS_NON_COHERENT)CommonReturnFalse,
- (PF_SET_CONFIG_ADDR_MAP)CommonVoid,
- (PF_NORTH_BRIDGE_FREQ_MASK)CommonReturnZero32,
- (PF_GATHER_LINK_FEATURES)CommonVoid,
- (PF_SET_LINK_REGANG)CommonVoid,
- (PF_SET_LINK_FREQUENCY)CommonVoid,
- (PF_SET_LINK_UNITID_CLUMPING)CommonVoid,
- (PF_WRITE_TRAFFIC_DISTRIBUTION)CommonVoid,
- (PF_WRITE_LINK_PAIR_DISTRIBUTION)CommonVoid,
- (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
- (PF_BUFFER_OPTIMIZATIONS)CommonVoid,
- Fam12GetNumCoresOnNode,
- (PF_SET_TOTAL_NODES_AND_CORES)CommonVoid,
- Fam12GetNodeCount,
- (PF_LIMIT_NODES)CommonVoid,
- (PF_READ_TRUE_LINK_FAIL_STATUS)CommonReturnFalse,
- (PF_GET_NEXT_LINK)CommonReturnZero32,
- (PF_GET_PACKAGE_LINK)CommonReturnZero8,
- (PF_MAKE_LINK_BASE)CommonReturnZero32,
- (PF_GET_MODULE_INFO)CommonVoid,
- (PF_POST_MAILBOX)CommonVoid,
- Fam12RetrieveMailbox,
- (PF_GET_SOCKET)CommonReturnZero8,
- (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
- (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,
- 0,
- 0,
- 0,
- TRUE,
- TRUE,
- AMD_FAMILY_12,
- NULL,
- 0,
- NULL,
- (PF_MAKE_KEY)CommonReturnZero64,
- NULL
-};
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.c b/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.c
deleted file mode 100644
index b0932923a7..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.c
+++ /dev/null
@@ -1,141 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Northbridge utility routines.
- *
- * These routines are needed for support of more than one feature area.
- * Collect them in this file so build options don't remove them.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htNb.h"
-#include "htNbCommonHardware.h"
-#include "htNbUtilitiesFam12.h"
-#include "Filecode.h"
-CODE_GROUP (G2_PEI)
-RDATA_GROUP (G2_PEI)
-
-#define FILECODE PROC_HT_FAM12_HTNBUTILITIESFAM12_FILECODE
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Return the number of cores (1 based count) on Node.
- *
- * @HtNbMethod{::F_GET_NUM_CORES_ON_NODE}
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Nb this northbridge
- *
- * @return the number of cores
- */
-UINT8
-Fam12GetNumCoresOnNode (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- )
-{
- UINT32 Cores;
- PCI_ADDR Reg;
-
- ASSERT ((Node < MAX_NODES));
- // Read CmpCap
- Reg.AddressValue = MAKE_SBDFO (MakePciSegmentFromNode (Node),
- MakePciBusFromNode (Node),
- MakePciDeviceFromNode (Node),
- CPU_NB_FUNC_03,
- REG_NB_CAPABILITY_3XE8);
-
- LibAmdPciReadBits (Reg, 13, 12, &Cores, Nb->ConfigHandle);
-
- return (UINT8) (Cores + 1);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get the Count (1 based) of Nodes in the system.
- *
- * @HtNbMethod{::F_GET_NODE_COUNT}
- *
- * This is intended to support AP Core HT init, since the Discovery State data is not
- * available (State->NodesDiscovered), there needs to be this way to find the number
- * of Nodes, which is just one.
- *
- * @param[in] Nb this northbridge
- *
- * @return The number of nodes
- */
-UINT8
-Fam12GetNodeCount (
- IN NORTHBRIDGE *Nb
- )
-{
- ASSERT (Nb != NULL);
- return (1);
-}
-
-AP_MAIL_INFO
-Fam12RetrieveMailbox (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- )
-{
- AP_MAIL_INFO NodeApMailBox;
- ASSERT (Nb != NULL);
- NodeApMailBox.Info = 0;
- return NodeApMailBox;
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.h b/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.h
deleted file mode 100644
index 14fc79be6c..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/Fam12/htNbUtilitiesFam12.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Northbridge utility routines.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_NB_UTILITIES_FAM12_H_
-#define _HT_NB_UTILITIES_FAM12_H_
-
-/**
- * Return the number of cores (1 based count) on Node.
- *
- */
-UINT8
-Fam12GetNumCoresOnNode (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-
-UINT8
-Fam12GetNodeCount (
- IN NORTHBRIDGE *Nb
- );
-
-AP_MAIL_INFO
-Fam12RetrieveMailbox (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-#endif // _HT_NB_UTILITIES_FAM12_H_
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/Makefile.inc b/src/vendorcode/amd/agesa/f12/Proc/HT/Makefile.inc
deleted file mode 100644
index f54568a1f1..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/Makefile.inc
+++ /dev/null
@@ -1,8 +0,0 @@
-libagesa-y += htFeat.c
-libagesa-y += htInterface.c
-libagesa-y += htInterfaceCoherent.c
-libagesa-y += htInterfaceGeneral.c
-libagesa-y += htInterfaceNonCoherent.c
-libagesa-y += htMain.c
-libagesa-y += htNb.c
-libagesa-y += htNotify.c
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.c
deleted file mode 100644
index 5f5d6c651d..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * HyperTransport features constructor.
- *
- * Initialize the set of available features.
- * This file implements build options using conditional compilation.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "OptionsHt.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "CommonReturns.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_HTFEAT_FILECODE
-extern CONST OPTION_HT_CONFIGURATION OptionHtConfiguration;
-
-/**
- * A no features Initializer.
- */
-CONST HT_FEATURES ROMDATA HtFeaturesNone =
-{
- (PF_COHERENT_DISCOVERY)CommonVoid,
- (PF_LOOKUP_COMPUTE_AND_LOAD_ROUTING_TABLES)CommonVoid,
- (PF_MAKE_HOP_COUNT_TABLE)CommonVoid,
- (PF_PROCESS_LINK)CommonVoid,
- (PF_GATHER_LINK_DATA)CommonVoid,
- (PF_SELECT_OPTIMAL_WIDTH_AND_FREQUENCY)CommonVoid,
- (PF_REGANG_LINKS)CommonVoid,
- (PF_SUBLINK_RATIO_FIXUP)CommonVoid,
- (PF_IS_COHERENT_RETRY_FIXUP)CommonReturnFalse,
- (PF_SET_LINK_DATA)CommonVoid,
- (PF_TRAFFIC_DISTRIBUTION)CommonVoid,
- (PF_SET_HT_CONTROL_REGISTER_BITS)CommonVoid,
- (PF_CONVERT_WIDTH_TO_BITS)CommonReturnZero8
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Provide the current Feature set implementation.
- *
- * Initialize using the installed initializer.
- *
- * @param[in] HtFeatures A feature object to initialize
- * @param[in] StdHeader Opaque handle to standard config header
-*/
-VOID
-NewHtFeatures (
- OUT HT_FEATURES *HtFeatures,
- IN AMD_CONFIG_PARAMS *StdHeader
- )
-{
- LibAmdMemCopy (
- (VOID *) HtFeatures,
- (VOID *) OptionHtConfiguration.HtOptionInternalFeatures ,
- (UINT32) (sizeof (HT_FEATURES)),
- StdHeader
- );
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.h
deleted file mode 100644
index 2a70be461a..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htFeat.h
+++ /dev/null
@@ -1,561 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * HT Features.
- *
- * This file provides definitions used in common by HT internal modules. The
- * data is private and not for external client access.
- * Definitions include the HT global internal state data structures, and
- * access to the available HT features from the main HT entry point.
- *
- * This file includes the feature constructor and feature support which is not
- * removed with various build options.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_FEAT_H_
-#define _HT_FEAT_H_
-
-/**
- * @page htimplfeat HT Features Implementation Guide
- *
- * HT Features provides access to the HT Feature set, in a manner that isolates
- * calling code from knowledge about the Feature set implementation or which
- * features are supported in the current build. In the case of feature sets, this
- * is mostly used for build options to reduce code size by removing unneeded features.
- *
- * @par Adding a Method to HT Features
- *
- * To add a new method to the HT Features, follow these steps.
- * <ul>
- * <li> Create a typedef for the Method with the correct parameters and return type.
- *
- * <ul>
- * <li> Name the method typedef (F_METHOD_NAME)(), where METHOD_NAME is the same name as the method table item,
- * but with "_"'s and UPPERCASE, rather than mixed case.
- * @n <tt> typedef VOID (F_METHOD_NAME)(); </tt> @n
- *
- * <li> Make a reference type for references to a method implementation:
- * @n <tt> /// Reference to a Method </tt>
- * @n <tt> typedef F_METHOD_NAME *PF_METHOD_NAME </tt> @n
- * </ul>
- *
- * <li> Provide a standard doxygen function preamble for the Method typedef. Begin the
- * detailed description by providing a reference to the method instances page by including
- * the lines below:
- * @code
- * *
- * * @HtFeatInstances.
- * *
- * @endcode
- * @note It is important to provide documentation for the method type, because the method may not
- * have an implementation in any families supported by the current package. @n
- *
- * <li> Add to the _HT_FEATURES struct an item for the Method:
- * @n <tt> PF_METHOD_NAME MethodName; ///< Method: description. </tt> @n
- * </ul>
- *
- * @par Implementing an HT Features Instance of the method.
- *
- * To implement an instance of a method for a specific feature follow these steps.
- *
- * - In appropriate files, implement the method with the return type and parameters
- * matching the method typedef.
- *
- * - Name the function MethodName().
- *
- * - Create a doxygen function preamble for the method instance. Begin the detailed description with
- * an Implements command to reference the method type and add this instance to the Method Instances page.
- * @code
- * *
- * * @HtFeatMethod{::F_METHOD_NAME}.
- * *
- * @endcode
- *
- * - To access other Ht feature routines or data as part of the method implementation, the function
- * must use HtFeatures->OtherMethod(). Do not directly access other HT feature
- * routines, because in the table there may be overrides or this routine may be shared by multiple configurations.
- *
- * - Add the instance to the HT_FEATURES instances.
- *
- * - If a configuration does not need an instance of the method use one of the CommonReturns from
- * CommonReturns.h with the same return type.
- *
- * @par Invoking HT Features Methods.
- *
- * The first step is carried out only once by the top level HT entry point.
- * @n @code
- * HT_FEATURES HtFeatures;
- * // Get the current HT Feature Set
- * NewHtFeatures (&HtFeatures);
- * State->HtFeatures = &HtFeatures;
- * @endcode
- *
- * The following example shows how to invoke a HT Features method.
- * @n @code
- * State->HtFeatures->MethodName ();
- * @endcode
- *
- */
-
-/*----------------------------------------------------------------------------
- * Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
- *
- *----------------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *-----------------------------------------------------------------------------
- */
-#define MAX_PLATFORM_LINKS 64
-#define MAX_LINK_PAIRS 4
-
-/* These following are internal definitions */
-#define ROUTE_TO_SELF 0x0F
-#define INVALID_LINK 0xCC /* Used in port list data structure to mark unused data entries.
- Can also be used for no Link found in a port list search */
-
-/* definitions for working with the port list structure */
-#define PORTLIST_TYPE_CPU 0
-#define PORTLIST_TYPE_IO 1
-
-/*
- * Hypertransport Capability definitions and macros
- *
- */
-
-#define HT_INTERFACE_CAP_SUBTYPE_MASK ((UINT32)0xE00000FF)
-#define HT_CAP_SUBTYPE_MASK ((UINT32)0xF80000FF)
-
-/* HT Host Capability */
-#define HT_HOST_CAPABILITY 1
-#define HT_HOST_CAP_SIZE 0x20
-
-/* Host CapabilityRegisters */
-#define HTHOST_LINK_CAPABILITY_REG 0x00
-#define HTHOST_LINK_CONTROL_REG 0x04
-#define HTHOST_FREQ_REV_REG 0x08
-#define HTHOST_REV_REV3 0x60
-#define HTHOST_FEATURE_CAP_REG 0x0C
-#define HTHOST_BUFFER_COUNT_REG 0x10
-#define HTHOST_ISOC_REG 0x14
-#define HTHOST_LINK_TYPE_REG 0x18
-#define HTHOST_FREQ_EXTENSION 0x1C
-#define HTHOST_TYPE_COHERENT 3
-#define HTHOST_TYPE_NONCOHERENT 7
-#define HTHOST_TYPE_MASK 0x1F
-
-/* HT Slave Capability (HT1 compat) */
-#define HT_SLAVE_CAPABILITY 0
-#define HTSLAVE_LINK01_OFFSET 4
-#define HTSLAVE_LINK_CONTROL_0_REG 4
-#define HTSLAVE_FREQ_REV_0_REG 0xC
-#define HTSLAVE_FEATURECAP_REG 0x10
-#define HT_CONTROL_CLEAR_CRC (~(3 << 8))
-#define HT_FREQUENCY_CLEAR_LINK_ERRORS (~(0x7 << 12))
-#define MAX_BUID 31
-
-/* HT3 gen Capability */
-#define HT_GEN3_CAPABILITY (0xD << 1)
-#define HTGEN3_LINK01_OFFSET 0x10
-#define HTGEN3_LINK_TRAINING_0_REG 0x10
-
-/* HT3 Retry Capability */
-#define HT_RETRY_CAPABILITY (0xC << 1)
-#define HTRETRY_CONTROL_REG 4
-
-/* Unit ID Clumping Capability */
-#define HT_UNITID_CAPABILITY (0x9 << 1)
-#define HTUNIT_SUPPORT_REG 4
-#define HTUNIT_ENABLE_REG 8
-#define HT_CLUMPING_PASSIVE 1
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS, STRUCTURES, ENUMS
- *
- *----------------------------------------------------------------------------
- */
-
-// Forward declarations.
-/// Used for forward reference.
-typedef struct _NORTHBRIDGE NORTHBRIDGE;
-/// Used for forward reference.
-typedef struct _HT_FEATURES HT_FEATURES;
-/// Used for forward reference.
-typedef struct _HT_INTERFACE HT_INTERFACE;
-
-/**
- * Coherent Init Data.
- *
- * Metrics representing the coherent fabric which was discovered: Degree of nodes, adjacency,
- * node numbering permutations, and the topology which it matched.
- */
-typedef struct {
- /** The number of coherent Links connected on each Node (the 'Degree' of the Node) */
- UINT8 SysDegree[MAX_NODES];
- /** The systems adjacency (sysMatrix[i][j] is true if Node_i has a Link to Node_j) */
- BOOLEAN SysMatrix[MAX_NODES][MAX_NODES];
-
- UINT8 DbDegree[MAX_NODES]; /**< Like sysDegree, but for the current database topology */
- BOOLEAN DbMatrix[MAX_NODES][MAX_NODES]; /**< Like sysMatrix, but for the current database topology */
-
- UINT8 Perm[MAX_NODES]; /**< The Node mapping from the system to the database */
- UINT8 ReversePerm[MAX_NODES]; /**< The Node mapping from the database to the system */
- UINT8 *MatchedTopology; /**< The topology that matched the current system or NULL */
-} COHERENT_FABRIC;
-
-/**
- * Represent the system as Links of matched port pairs.
- * A pair consists of a source Node, a Link to the destination Node, the
- * destination Node, and its Link back to source Node. The even indices are
- * the source Nodes and Links, and the odd indices are for the destination
- * Nodes and Links.
- * @note The Port pair 2*N and 2*N+1 are connected together to form a Link
- * (e.g. 0,1 and 8,9 are ports on either end of an HT Link) The lower number
- * port (2*N) is the source port. The device that owns the source port is
- * always the device closer to the BSP. (i.e. nearer the CPU in a
- * non-coherent chain, or the CPU with the lower NodeID).
- */
-typedef struct {
- /* This section is where the Link is in the system and how to find it */
- UINT8 Type; /**< 0 = CPU, 1 = Device, all others reserved */
- UINT8 Link; /**< 0-1 for devices, 0-7 for CPUs */
- UINT8 NodeID; /**< The Node, or a pointer to the devices parent Node */
- UINT8 HostLink; /**< For Devices, the root CPU's Link to the chain */
- UINT8 HostDepth; /**< Link Depth in chain, only used by devices */
- PCI_ADDR Pointer; /**< A pointer to the device's slave HT capability, so we don't have to keep searching */
-
- /* This section is for the final settings, which are written to hardware */
- BOOLEAN SelRegang; /**< Indicates to software regang Link, only used for CPU->CPU Links */
- UINT8 SelWidthIn; /**< Width in setting */
- UINT8 SelWidthOut; /**< Width out setting */
- UINT8 SelFrequency; /**< Frequency setting */
-
- /* This section is for keeping track of capabilities and possible configurations */
- BOOLEAN RegangCap; /**< Is the port capable of reganging? CPUs only */
- UINT32 PrvFrequencyCap; /**< Possible frequency settings */
- UINT8 PrvWidthInCap; /**< Possible Width setting */
- UINT8 PrvWidthOutCap; /**< Possible Width setting */
- UINT32 CompositeFrequencyCap; /**< Possible Link frequency setting */
- UINT32 ClumpingSupport; /**< Unit ID Clumping value (bit 0 = passive support) */
-} PORT_DESCRIPTOR;
-
-/// Reference to a set of PORT_DESCRIPTORs.
-typedef PORT_DESCRIPTOR (*PORT_LIST)[MAX_PLATFORM_LINKS*2];
-
-/**
- * Our global state data structure
- */
-typedef struct {
- AMD_HT_INTERFACE *HtBlock; /**< The input data structure. */
-
- UINT8 NodesDiscovered; /**< One less than the number of Nodes found in the system */
- UINT8 TotalLinks; /**< How many HT Links have we discovered so far. */
- UINT8 SysMpCap; /**< The maximum number of Nodes that all processors are capable of */
- AGESA_STATUS MaxEventClass; /**< The event class of the highest severity event generated */
-
- PORT_LIST PortList; /**< Represent the system as a set of Links, each two Ports. */
- COHERENT_FABRIC *Fabric; /**< Describe metrics about the coherent fabric.
- * Limited scope to CoherentInit(). */
- /* Data interface to other Agesa Modules */
- SOCKET_DIE_TO_NODE_MAP SocketDieToNodeMap; /**< For each Socket, Die the Node ids */
- NODE_TO_SOCKET_DIE_MAP NodeToSocketDieMap; /**< For each Node id, Socket and Die */
- HOP_COUNT_TABLE *HopCountTable; /**< Table of hops between nodes */
-
- /* Data for non-coherent initialization */
- UINT8 AutoBusCurrent; /**< The next bus number available */
- UINT8 UsedCfgMapEntries; /**< The next Config address Map set available, Limit 4 (F1X[EC:E0]) */
- BOOLEAN IsUsingRecoveryHt; /**< Manual BUID Swap List processing should assume that HT Recovery was used */
- BOOLEAN IsSetHtCrcFlood; /**< Enable setting of HT CRC Flood */
- BOOLEAN IsUsingUnitIdClumping; /**< Enable automatic Unit Id Clumping configuration. */
-
- HT_INTERFACE *HtInterface; /**< Interface for feature code to external parameters */
- HT_FEATURES *HtFeatures; /**< The current feature implementations */
- NORTHBRIDGE *Nb; /**< The current northbridge */
-
- PLATFORM_CONFIGURATION *PlatformConfiguration; /**< The platform specific configuration customizations */
- VOID *ConfigHandle; /**< Config Pointer, opaque handle for passing to lib */
-} STATE_DATA;
-
-//
-// Feature Method types
-//
-
-/**
- * Discover all coherent devices in the system.
- *
- * @HtFeatInstances.
- *
- * @param[in,out] State our global state
- *
- */
-typedef VOID F_COHERENT_DISCOVERY (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_COHERENT_DISCOVERY *PF_COHERENT_DISCOVERY;
-
-/**
- * Using the description of the fabric topology we discovered, try to find a match
- * among the supported topologies.
- *
- * @HtFeatInstances.
- *
- * @param[in,out] State the discovered fabric, degree matrix, permutation
- *
- */
-typedef VOID F_LOOKUP_COMPUTE_AND_LOAD_ROUTING_TABLES (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_LOOKUP_COMPUTE_AND_LOAD_ROUTING_TABLES *PF_LOOKUP_COMPUTE_AND_LOAD_ROUTING_TABLES;
-
-/**
- * Make a Hop Count Table for the installed topology.
- *
- * @HtFeatInstances.
- *
- * @param[in,out] State access topology, permutation, update hop table
- *
- */
-typedef VOID F_MAKE_HOP_COUNT_TABLE (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_MAKE_HOP_COUNT_TABLE *PF_MAKE_HOP_COUNT_TABLE;
-
-/**
- * Process a non-coherent Link.
- *
- * @HtFeatInstances.
- *
- * @param[in] Node Node on which to process nc init
- * @param[in] Link The non-coherent Link on that Node
- * @param[in] IsCompatChain Is this the chain with the southbridge? TRUE if yes.
- * @param[in,out] State our global state
- */
-typedef VOID F_PROCESS_LINK (
- IN UINT8 Node,
- IN UINT8 Link,
- IN BOOLEAN IsCompatChain,
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_PROCESS_LINK *PF_PROCESS_LINK;
-
-/**
- * Get Link features into system data structure.
- *
- * @HtFeatInstances.
- *
- * @param[in] State our global state, port list
- */
-typedef VOID F_GATHER_LINK_DATA (
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GATHER_LINK_DATA *PF_GATHER_LINK_DATA;
-
-/**
- * Optimize Links.
- *
- * @HtFeatInstances.
- *
- * @param[in,out] State Process and update portlist
- */
-typedef VOID F_SELECT_OPTIMAL_WIDTH_AND_FREQUENCY (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_SELECT_OPTIMAL_WIDTH_AND_FREQUENCY *PF_SELECT_OPTIMAL_WIDTH_AND_FREQUENCY;
-
-/**
- * Change the hardware state for all Links according to the now optimized data in the
- * port list data structure.
- *
- * @HtFeatInstances.
- *
- * @param[in] State our global state, port list
- */
-typedef VOID F_SET_LINK_DATA (
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_SET_LINK_DATA *PF_SET_LINK_DATA;
-
-/**
- * Retry must be enabled on all coherent links if it is enabled on any coherent links.
- *
- * @HtFeatInstances.
- *
- * @param[in,out] State global state, port frequency settings.
- *
- * @retval TRUE Fixup occurred, all coherent links HT1
- * @retval FALSE No changes
- */
-typedef BOOLEAN F_IS_COHERENT_RETRY_FIXUP (
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_IS_COHERENT_RETRY_FIXUP *PF_IS_COHERENT_RETRY_FIXUP;
-
-
-/**
- * Test the subLinks of a Link to see if they qualify to be reganged.
- *
- * @HtFeatInstances.
- *
- * @param[in,out] State Our global state
- */
-typedef VOID F_REGANG_LINKS (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_REGANG_LINKS *PF_REGANG_LINKS;
-
-/**
- * Iterate through all Links, checking the frequency of each subLink pair.
- *
- * @HtFeatInstances.
- *
- * @param[in,out] State Link state and port list
- *
- */
-typedef VOID F_SUBLINK_RATIO_FIXUP (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_SUBLINK_RATIO_FIXUP *PF_SUBLINK_RATIO_FIXUP;
-
-/**
- * Identify Links which can have traffic distribution.
- *
- * @HtFeatInstances.
- *
- * @param[in] State port list data
- */
-typedef VOID F_TRAFFIC_DISTRIBUTION (
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_TRAFFIC_DISTRIBUTION *PF_TRAFFIC_DISTRIBUTION;
-
-/**
- * Access HT Link Control Register.
- *
- * @HtFeatInstances.
- *
- * @param[in] Reg the PCI config address the control register
- * @param[in] HiBit the high bit number
- * @param[in] LoBit the low bit number
- * @param[in] Value the value to write to that bit range. Bit 0 => loBit.
- * @param[in] State Our state, config handle for lib
- */
-typedef VOID F_SET_HT_CONTROL_REGISTER_BITS (
- IN PCI_ADDR Reg,
- IN UINT8 HiBit,
- IN UINT8 LoBit,
- IN UINT32 *Value,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_SET_HT_CONTROL_REGISTER_BITS *PF_SET_HT_CONTROL_REGISTER_BITS;
-
-/**
- * Translate a desired width setting to the bits to set in the register field.
- *
- * @HtFeatInstances.
- *
- * @param[in] Value the width Value
- *
- * @return The bits for the register
- */
-typedef UINT8 F_CONVERT_WIDTH_TO_BITS (
- IN UINT8 Value
- );
-/// Reference to a method.
-typedef F_CONVERT_WIDTH_TO_BITS *PF_CONVERT_WIDTH_TO_BITS;
-
-/**
- * HT Feature Methods.
- *
- * Provides abstract methods which are bound to specific feature implementations.
- */
-struct _HT_FEATURES {
- PF_COHERENT_DISCOVERY CoherentDiscovery; /**< Method: Coherent Discovery. */
- PF_LOOKUP_COMPUTE_AND_LOAD_ROUTING_TABLES LookupComputeAndLoadRoutingTables;
- /**< Method: Route the discovered system */
- PF_MAKE_HOP_COUNT_TABLE MakeHopCountTable; /**< Method: Compute slit hop counts */
- PF_PROCESS_LINK ProcessLink; /**< Method: Process a non-coherent Link. */
- PF_GATHER_LINK_DATA GatherLinkData; /**< Method: Gather Link Capabilities and data. */
- PF_SELECT_OPTIMAL_WIDTH_AND_FREQUENCY SelectOptimalWidthAndFrequency;
- /**< Method: Optimize link features. */
- PF_REGANG_LINKS RegangLinks; /**< Method: Regang Sublinks. */
- PF_SUBLINK_RATIO_FIXUP SubLinkRatioFixup; /**< Method: Fix Sublink Frequency ratios */
- PF_IS_COHERENT_RETRY_FIXUP IsCoherentRetryFixup;
- /**< Method: Fix Retry mixed on coherent links. */
- PF_SET_LINK_DATA SetLinkData; /**< Method: Set optimized values. */
- PF_TRAFFIC_DISTRIBUTION TrafficDistribution; /**< Method: Detect and Initialize Traffic Distribution */
- PF_SET_HT_CONTROL_REGISTER_BITS SetHtControlRegisterBits; /**< Method: Access HT Link Control Reg. */
- PF_CONVERT_WIDTH_TO_BITS ConvertWidthToBits; /**< Method: Convert a bit width to the value used for register setting. */
-} ;
-
-/*----------------------------------------------------------------------------
- * Prototypes
- *
- *----------------------------------------------------------------------------
- */
-
-/**
- * Provide the current Feature set implementation.
- *
- * Add an implementation reference for the constructor, just to make sure the page is created.
- * @HtFeatMethod{_HT_FEATURES}.
- *
- */
-VOID
-NewHtFeatures (
- OUT HT_FEATURES *HtFeatures,
- IN AMD_CONFIG_PARAMS *StdHeader
- );
-
-
-#endif /* _HT_FEAT_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htGraph.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htGraph.h
deleted file mode 100644
index 9f8c104c7b..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htGraph.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Topology Interface.
- *
- * Contains interface to the topology data.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-#ifndef _HT_GRAPH_H_
-#define _HT_GRAPH_H_
-
-/**
- * @page htgraphdesign Graph Support routines
- *
- * These routines provide support for dealing with the graph representation
- * of the topologies, along with the routing table information for that topology.
- * The routing information is compressed and these routines currently decompress
- * 'on the fly'. A graph is represented as a set of routes. All the edges in the
- * graph are routes; a direct route from Node i to Node j exists in the graph IFF
- * there is an edge directly connecting Node i to Node j. All other routes designate
- * the edge which the route to that Node initially takes, by designating a Node
- * to which a direct connection exists. That is, the route to non-adjacent Node j
- * from Node i specifies Node k where Node i directly connects to Node k.
- *
- *@code
- * pseudo definition of compressed graph:
- * typedef struct
- * {
- * // First byte
- * UINT8 broadcast[8]:1; // that is, 8 1-bit values
- * // Second byte
- * UINT8 requestRoute:4; // [3:0]
- * UINT8 responseRoute:4; // [7:4]
- * } sRoute;
- * typedef struct
- * {
- * UINT8 size;
- * sRoute graph[size][size];
- * } sGraph;
- *@endcode
- */
-
-/*----------------------------------------------------------------------------
- * Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
- *
- *----------------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *-----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS, STRUCTURES, ENUMS
- *
- *----------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------
- * FUNCTIONS PROTOTYPE
- *
- *----------------------------------------------------------------------------
- */
-VOID
-GetAmdTopolist (
- OUT UINT8 ***List
- );
-
-UINT8
-GraphHowManyNodes (
- IN UINT8 *Graph
- );
-
-BOOLEAN
-GraphIsAdjacent (
- IN UINT8 *Graph,
- IN UINT8 NodeA,
- IN UINT8 NodeB
- );
-
-UINT8
-GraphGetRsp (
- IN UINT8 *Graph,
- IN UINT8 NodeA,
- IN UINT8 NodeB
- );
-
-UINT8
-GraphGetReq (
- IN UINT8 *Graph,
- IN UINT8 NodeA,
- IN UINT8 NodeB
- );
-
-UINT8
-GraphGetBc (
- IN UINT8 *Graph,
- IN UINT8 NodeA,
- IN UINT8 NodeB
- );
-
-#endif /* _HT_GRAPH_H_ */
-
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.c
deleted file mode 100644
index b0617b1d62..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.c
+++ /dev/null
@@ -1,241 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * External Interface implementation.
- *
- * Contains routines for implementing the interface to the client BIOS.
- * This file includes the interface access constructor.
- * This file implements build options using conditional compilation.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "AdvancedApi.h"
-#include "amdlib.h"
-#include "OptionsHt.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htInterface.h"
-#include "CommonReturns.h"
-#include "htInterfaceGeneral.h"
-#include "htInterfaceCoherent.h"
-#include "htInterfaceNonCoherent.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_HTINTERFACE_FILECODE
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-
-extern CONST OPTION_HT_CONFIGURATION OptionHtConfiguration;
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS AND STRUCTURES
- *
- *----------------------------------------------------------------------------
- */
-
-/**
- * The default initializer for the HT internal interface, full features.
- */
-CONST HT_INTERFACE ROMDATA HtInterfaceDefault =
-{
- GetCpu2CpuPcbLimits,
- GetSkipRegang,
- NewHopCountTable,
- GetOverrideBusNumbers,
- GetManualBuidSwapList,
- GetDeviceCapOverride,
- GetIoPcbLimits,
- GetSocketFromMap,
- GetIgnoreLink,
- PostMapToAp,
- NewNodeAndSocketTables,
- CleanMapsAfterError,
- SetNodeToSocketMap,
- GetMinNbCoreFreq
-};
-
-/**
- * The non-coherent only build option initializer for the HT internal interface.
- */
-CONST HT_INTERFACE ROMDATA HtInterfaceNonCoherentOnly =
-{
- (PF_GET_CPU_2_CPU_PCB_LIMITS)CommonVoid,
- (PF_GET_SKIP_REGANG)CommonReturnFalse,
- (PF_NEW_HOP_COUNT_TABLE)CommonVoid,
- GetOverrideBusNumbers,
- GetManualBuidSwapList,
- GetDeviceCapOverride,
- GetIoPcbLimits,
- GetSocketFromMap,
- GetIgnoreLink,
- PostMapToAp,
- NewNodeAndSocketTables,
- (PF_CLEAN_MAPS_AFTER_ERROR)CommonVoid,
- SetNodeToSocketMap,
- GetMinNbCoreFreq
-};
-
-/**
- * Topology Maps only feature build option initializer for the HT internal interface.
- */
-CONST HT_INTERFACE ROMDATA HtInterfaceMapsOnly =
-{
- (PF_GET_CPU_2_CPU_PCB_LIMITS)CommonVoid,
- (PF_GET_SKIP_REGANG)CommonReturnFalse,
- (PF_NEW_HOP_COUNT_TABLE)CommonVoid,
- (PF_GET_OVERRIDE_BUS_NUMBERS)CommonReturnFalse,
- (PF_GET_MANUAL_BUID_SWAP_LIST)CommonReturnFalse,
- (PF_GET_DEVICE_CAP_OVERRIDE)CommonVoid,
- (PF_GET_IO_PCB_LIMITS)CommonVoid,
- (PF_GET_SOCKET_FROM_MAP)CommonReturnZero8,
- (PF_GET_IGNORE_LINK)CommonReturnFalse,
- PostMapToAp,
- NewNodeAndSocketTables,
- (PF_CLEAN_MAPS_AFTER_ERROR)CommonVoid,
- SetNodeToSocketMap,
- (PF_GET_MIN_NB_CORE_FREQ)CommonReturnZero8
-};
-
-/**
- * No features build option initializer for the HT internal interface.
- */
-CONST HT_INTERFACE ROMDATA HtInterfaceNone =
-{
- (PF_GET_CPU_2_CPU_PCB_LIMITS)CommonVoid,
- (PF_GET_SKIP_REGANG)CommonReturnFalse,
- (PF_NEW_HOP_COUNT_TABLE)CommonVoid,
- (PF_GET_OVERRIDE_BUS_NUMBERS)CommonReturnFalse,
- (PF_GET_MANUAL_BUID_SWAP_LIST)CommonReturnFalse,
- (PF_GET_DEVICE_CAP_OVERRIDE)CommonVoid,
- (PF_GET_IO_PCB_LIMITS)CommonVoid,
- (PF_GET_SOCKET_FROM_MAP)CommonReturnZero8,
- (PF_GET_IGNORE_LINK)CommonReturnFalse,
- (PF_POST_MAP_TO_AP)CommonVoid,
- (PF_NEW_NODE_AND_SOCKET_TABLES)CommonVoid,
- (PF_CLEAN_MAPS_AFTER_ERROR)CommonVoid,
- (PF_SET_NODE_TO_SOCKET_MAP)CommonVoid,
- (PF_GET_MIN_NB_CORE_FREQ)CommonReturnZero8
-};
-
-/*----------------------------------------------------------------------------
- * PROTOTYPES OF LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * EXPORTED FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * A constructor for the internal Ht Interface.
- *
- * The install has a reference to the initializer appropriate to the user selected build
- * options. Use the selected initializer to construct the internal interface.
- *
- * @param[in,out] HtInterface Contains pointer to HT Interface structure to initialize.
- * @param[in] StdHeader Opaque handle to standard config header
- *
-*/
-VOID
-NewHtInterface (
- OUT HT_INTERFACE *HtInterface,
- IN AMD_CONFIG_PARAMS *StdHeader
- )
-{
- LibAmdMemCopy (
- (VOID *) HtInterface,
- (VOID *) OptionHtConfiguration.HtOptionInternalInterface,
- (sizeof (HT_INTERFACE)),
- StdHeader
- );
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * A "constructor" for the HyperTransport external interface.
- *
- * Sets inputs to valid, basic level, defaults.
- *
- * Copy the initial default values from the build options tables to the interface struct.
- *
- * @param[in] StdHeader Opaque handle to standard config header
- * @param[in] AmdHtInterface HT Interface structure to initialize.
- *
- * @retval AGESA_SUCCESS Constructors are not allowed to fail
-*/
-AGESA_STATUS
-AmdHtInterfaceConstructor (
- IN AMD_CONFIG_PARAMS *StdHeader,
- IN AMD_HT_INTERFACE *AmdHtInterface
- )
-{
- LibAmdMemCopy (
- (VOID *) AmdHtInterface,
- (VOID *) OptionHtConfiguration.HtOptionPlatformDefaults,
- (UINT32) (sizeof (AMD_HT_INTERFACE)),
- StdHeader
- );
- return AGESA_SUCCESS;
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.h
deleted file mode 100644
index 0b9dedc8ae..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterface.h
+++ /dev/null
@@ -1,489 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Internal access to HT Interface.
- *
- * This file provides definitions used by HT internal modules. The
- * external HT interface (in agesa.h) is accessed using these methods.
- * This keeps the HT Feature implementations abstracted from the HT
- * interface.
- *
- * This file includes the interface access constructor and interface
- * support which is not removed with various build options.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_INTERFACE_H_
-#define _HT_INTERFACE_H_
-
-/**
- * @page htimplintf HT Internal Interface Implementation Guide
- *
- * HT Internal Interface provides access to the HT Component external interface (see AGESA.h),
- * in a manner that isolates calling code from knowledge about the external interface or which
- * interfaces are supported in the current build.
- *
- * @par Adding a Method to HT Internal Interface
- *
- * To add a new method to the HT Internal Interface, follow these steps.
- * <ul>
- * <li> Create a typedef for the Method with the correct parameters and return type.
- *
- * <ul>
- * <li> Name the method typedef (F_METHOD_NAME)(), where METHOD_NAME is the same name as the method table item,
- * but with "_"'s and UPPERCASE, rather than mixed case.
- * @n <tt> typedef VOID (F_METHOD_NAME)(); </tt> @n
- *
- * <li> Make a reference type for references to a method implementation:
- * @n <tt> /// Reference to a Method </tt>
- * @n <tt> typedef F_METHOD_NAME *PF_METHOD_NAME </tt> @n
- * </ul>
- *
- * <li> Provide a standard doxygen function preamble for the Method typedef. Begin the
- * detailed description by providing a reference to the method instances page by including
- * the lines below:
- * @code
- * *
- * * @HtInterfaceInstances
- * *
- * @endcode
- * @note It is important to provide documentation for the method type, because the method may not
- * have an implementation in any families supported by the current package. @n
- *
- * <li> Add to the HT_INTERFACE struct an item for the Method:
- * @n <tt> PF_METHOD_NAME MethodName; ///< Method: description. </tt> @n
- * </ul>
- *
- * @par Implementing an HT Internal Interface Instance of the method.
- *
- * To implement an instance of a method for a specific interface follow these steps.
- *
- * - In appropriate files, implement the method with the return type and parameters
- * matching the method typedef.
- *
- * - Name the function MethodName().
- *
- * - Create a doxygen function preamble for the method instance. Begin the detailed description with
- * an Implements command to reference the method type and add this instance to the Method Instances page.
- * @code
- * *
- * * @HtInterfaceMethod{::F_METHOD_NAME}.
- * *
- * @endcode
- *
- * - To access other Ht internal interface routines or data as part of the method implementation, the function
- * must use HtInterface->OtherMethod(). Do not directly access other HT internal interface
- * routines, because in the table there may be overrides or this routine may be shared by multiple families.
- *
- * - Add the instance to the HT_INTERFACE instances.
- *
- * - If a configuration does not need an instance of the method use one of the CommonReturns from
- * CommonReturns.h with the same return type.
- *
- * @par Invoking HT Internal Interface Methods.
- *
- * The first step is carried out only once by the top level HT entry point.
- * @n @code
- * HT_INTERFACE HtInterface;
- * // Get the current HT internal interface (to HtBlock data)
- * NewHtInterface (&HtInterface);
- * State->HtInterface = &HtInterface;
- * @endcode
- *
- * The following example shows how to invoke a HT Internal Interface method.
- * @n @code
- * State->HtInterface->MethodName ();
- * @endcode
- *
- */
-
-/*----------------------------------------------------------------------------
- * Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
- *
- *----------------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *-----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS, STRUCTURES, ENUMS
- *
- *----------------------------------------------------------------------------
- */
-
-/**
- * Get limits for CPU to CPU Links.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] NodeA One Node on which this Link is located
- * @param[in] LinkA The Link on this Node
- * @param[in] NodeB The other Node on which this Link is located
- * @param[in] LinkB The Link on that Node
- * @param[in,out] ABLinkWidthLimit modify to change the Link Width In
- * @param[in,out] BALinkWidthLimit modify to change the Link Width Out
- * @param[in,out] PcbFreqCap modify to change the Link's frequency capability
- * @param[in] State the input data
- *
- */
-typedef VOID F_GET_CPU_2_CPU_PCB_LIMITS (
- IN UINT8 NodeA,
- IN UINT8 LinkA,
- IN UINT8 NodeB,
- IN UINT8 LinkB,
- IN OUT UINT8 *ABLinkWidthLimit,
- IN OUT UINT8 *BALinkWidthLimit,
- IN OUT UINT32 *PcbFreqCap,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_CPU_2_CPU_PCB_LIMITS *PF_GET_CPU_2_CPU_PCB_LIMITS;
-
-/**
- * Skip reganging of subLinks.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] NodeA One Node on which this Link is located
- * @param[in] LinkA The Link on this Node
- * @param[in] NodeB The other Node on which this Link is located
- * @param[in] LinkB The Link on that Node
- * @param[in] State the input data
- *
- * @retval MATCHED leave Link unganged
- * @retval POWERED_OFF leave link unganged and power off the paired sublink
- * @retval UNMATCHED regang Link automatically
- */
-typedef FINAL_LINK_STATE F_GET_SKIP_REGANG (
- IN UINT8 NodeA,
- IN UINT8 LinkA,
- IN UINT8 NodeB,
- IN UINT8 LinkB,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_SKIP_REGANG *PF_GET_SKIP_REGANG;
-
-/**
- * Manually control bus number assignment.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] Node The Node on which this chain is located
- * @param[in] Link The Link on the host for this chain
- * @param[out] SecBus Secondary Bus number for this non-coherent chain
- * @param[out] SubBus Subordinate Bus number
- * @param[in] State the input data
- *
- * @retval TRUE this routine is supplying the bus numbers
- * @retval FALSE use auto Bus numbering
- */
-typedef BOOLEAN F_GET_OVERRIDE_BUS_NUMBERS (
- IN UINT8 Node,
- IN UINT8 Link,
- OUT UINT8 *SecBus,
- OUT UINT8 *SubBus,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_OVERRIDE_BUS_NUMBERS *PF_GET_OVERRIDE_BUS_NUMBERS;
-
-/**
- * Get Manual BUID assignment list.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] Node The Node on which this chain is located
- * @param[in] Link The Link on the host for this chain
- * @param[out] List a pointer to a list, if returns TRUE
- * @param[in] State the input data
- *
- * @retval TRUE use manual List
- * @retval FALSE initialize the Link automatically. List not valid.
- */
-typedef BOOLEAN F_GET_MANUAL_BUID_SWAP_LIST (
- IN UINT8 Node,
- IN UINT8 Link,
- OUT BUID_SWAP_LIST **List,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_MANUAL_BUID_SWAP_LIST *PF_GET_MANUAL_BUID_SWAP_LIST;
-
-/**
- * Override capabilities of a device.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] HostNode The Node on which this chain is located
- * @param[in] HostLink The Link on the host for this chain
- * @param[in] Depth The Depth in the I/O chain from the Host
- * @param[in] PciAddress The Device's PCI config address (for callout)
- * @param[in] DevVenId The Device's PCI Vendor + Device ID (offset 0x00)
- * @param[in] Revision The Device's PCI Revision
- * @param[in] Link The Device's Link number (0 or 1)
- * @param[in,out] LinkWidthIn modify to change the Link Width In
- * @param[in,out] LinkWidthOut modify to change the Link Width Out
- * @param[in,out] FreqCap modify to change the Link's frequency capability
- * @param[in,out] Clumping modify to change unit id clumping capability
- * @param[in] State the input data
- *
- */
-typedef VOID F_GET_DEVICE_CAP_OVERRIDE (
- IN UINT8 HostNode,
- IN UINT8 HostLink,
- IN UINT8 Depth,
- IN PCI_ADDR PciAddress,
- IN UINT32 DevVenId,
- IN UINT8 Revision,
- IN UINT8 Link,
- IN OUT UINT8 *LinkWidthIn,
- IN OUT UINT8 *LinkWidthOut,
- IN OUT UINT32 *FreqCap,
- IN OUT UINT32 *Clumping,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_DEVICE_CAP_OVERRIDE *PF_GET_DEVICE_CAP_OVERRIDE;
-
-/**
- * Get limits for non-coherent Links.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] HostNode The Node on which this Link is located
- * @param[in] HostLink The Link about to be initialized
- * @param[in] Depth The Depth in the I/O chain from the Host
- * @param[in,out] DownstreamLinkWidthLimit modify to change the Link Width In
- * @param[in,out] UpstreamLinkWidthLimit modify to change the Link Width Out
- * @param[in,out] PcbFreqCap modify to change the Link's frequency capability
- * @param[in] State the input data
- */
-typedef VOID F_GET_IO_PCB_LIMITS (
- IN UINT8 HostNode,
- IN UINT8 HostLink,
- IN UINT8 Depth,
- IN OUT UINT8 *DownstreamLinkWidthLimit,
- IN OUT UINT8 *UpstreamLinkWidthLimit,
- IN OUT UINT32 *PcbFreqCap,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_IO_PCB_LIMITS *PF_GET_IO_PCB_LIMITS;
-
-/**
- * Get the Socket number for a given Node number.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] Node Node discovered event data.
- * @param[in] State reference to Node to socket map
- *
- * @return the socket id
- *
- */
-typedef UINT8 F_GET_SOCKET_FROM_MAP (
- IN UINT8 Node,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_SOCKET_FROM_MAP *PF_GET_SOCKET_FROM_MAP;
-
-/**
- * Ignore a Link.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] Node The Node on which this Link is located
- * @param[in] Link The Link about to be initialized
- * @param[in] NbList The northbridge default ignore link list
- * @param[in] State the input data
- *
- * @retval MATCHED ignore this Link and skip it
- * @retval POWERED_OFF ignore this link and power it off.
- * @retval UNMATCHED initialize the Link normally
- */
-typedef FINAL_LINK_STATE F_GET_IGNORE_LINK (
- IN UINT8 Node,
- IN UINT8 Link,
- IN IGNORE_LINK *NbIgnoreLinkList,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_GET_IGNORE_LINK *PF_GET_IGNORE_LINK;
-
-/**
- * Post Node id and other context info to AP cores via mailbox.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] State Our state
- */
-typedef VOID F_POST_MAP_TO_AP (
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_POST_MAP_TO_AP *PF_POST_MAP_TO_AP;
-
-/**
- * Clean up the map structures after severe event has caused a fall back to 1 node.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] State Our state
- */
-typedef VOID F_CLEAN_MAPS_AFTER_ERROR (
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_CLEAN_MAPS_AFTER_ERROR *PF_CLEAN_MAPS_AFTER_ERROR;
-
-/**
- * Get a new Socket Die to Node Map.
- *
- * @HtInterfaceInstances.
- *
- * @param[in,out] State global state
- */
-typedef VOID F_NEW_NODE_AND_SOCKET_TABLES (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_NEW_NODE_AND_SOCKET_TABLES *PF_NEW_NODE_AND_SOCKET_TABLES;
-
-/**
- * Fill in the socket's Node id when a processor is discovered in that socket.
- *
- * @HtInterfaceInstances.
- *
- * @param[in] Node Node from which a new node was discovered
- * @param[in] CurrentNodeModule The current node's module id in it's processor.
- * @param[in] PackageLink The package level link from Node to NewNode.
- * @param[in] NewNode The new node's id
- * @param[in] HardwareSocket If we use the hardware method (preferred), this is the socket of new node.
- * @param[in] Module The new node's module id in it's processor.
- * @param[in] State our State
- */
-typedef VOID F_SET_NODE_TO_SOCKET_MAP (
- IN UINT8 Node,
- IN UINT8 CurrentNodeModule,
- IN UINT8 PackageLink,
- IN UINT8 NewNode,
- IN UINT8 HardwareSocket,
- IN UINT8 Module,
- IN STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_SET_NODE_TO_SOCKET_MAP *PF_SET_NODE_TO_SOCKET_MAP;
-
-/**
- * Get a new, empty Hop Count Table, to make one for the installed topology.
- *
- * @HtInterfaceInstances.
- *
- * @param[in,out] State Keep our buffer handle.
- *
- */
-typedef VOID F_NEW_HOP_COUNT_TABLE (
- IN OUT STATE_DATA *State
- );
-/// Reference to a method.
-typedef F_NEW_HOP_COUNT_TABLE *PF_NEW_HOP_COUNT_TABLE;
-
-/**
- * Get the minimum Northbridge frequency for the system.
- *
- * @HtInterfaceInstances.
- *
- * Invoke the CPU component power mgt interface.
- *
- * @param[in] PlatformConfig Platform profile/build option config structure.
- * @param[in] StdHeader Config for library and services.
- *
- * @return Frequency in MHz.
- *
- */
-typedef UINT32 F_GET_MIN_NB_CORE_FREQ (
- IN PLATFORM_CONFIGURATION *PlatformConfig,
- IN AMD_CONFIG_PARAMS *StdHeader
- );
-/// Reference to a Method.
-typedef F_GET_MIN_NB_CORE_FREQ *PF_GET_MIN_NB_CORE_FREQ;
-
-/**
- * The HT Interface, feature code uses these methods to get interface parameters.
- */
-struct _HT_INTERFACE { // See Forward Declaration in HtFeates.h
- PF_GET_CPU_2_CPU_PCB_LIMITS GetCpu2CpuPcbLimits; /**< Method: Get link limits for coherent links. */
- PF_GET_SKIP_REGANG GetSkipRegang; /**< Method: Skip reganging for coherent links. */
- PF_NEW_HOP_COUNT_TABLE NewHopCountTable; /**< Method: Get a new hop count table. */
- PF_GET_OVERRIDE_BUS_NUMBERS GetOverrideBusNumbers; /**< Method: Control Bus number assignment. */
- PF_GET_MANUAL_BUID_SWAP_LIST GetManualBuidSwapList; /**< Method: Assign device IDs. */
- PF_GET_DEVICE_CAP_OVERRIDE GetDeviceCapOverride; /**< Method: Override Device capabilities. */
- PF_GET_IO_PCB_LIMITS GetIoPcbLimits; /**< Method: Get link limits for noncoherent links. */
- PF_GET_SOCKET_FROM_MAP GetSocketFromMap; /**< Method: Get the Socket for a node id. */
- PF_GET_IGNORE_LINK GetIgnoreLink; /**< Method: Ignore a link. */
- PF_POST_MAP_TO_AP PostMapToAp; /**< Method: Post Socket and other info to AP cores. */
- PF_NEW_NODE_AND_SOCKET_TABLES NewNodeAndSocketTables; /**< Method: Get new socket and node maps. */
- PF_CLEAN_MAPS_AFTER_ERROR CleanMapsAfterError; /**< Method: Clean up maps for forced 1P on error fall back. */
- PF_SET_NODE_TO_SOCKET_MAP SetNodeToSocketMap; /**< Method: Associate a node id with a socket. */
- PF_GET_MIN_NB_CORE_FREQ GetMinNbCoreFreq; /**< Method: Get the minimum northbridge frequency */
-} ;
-
-/*----------------------------------------------------------------------------
- * Prototypes to Interface from Feature Code
- *
- *----------------------------------------------------------------------------
- */
-
-/**
- * A constructor for the internal Ht Interface.
- *
-*/
-VOID
-NewHtInterface (
- OUT HT_INTERFACE *HtInterface,
- IN AMD_CONFIG_PARAMS *StdHeader
- );
-
-#endif /* _HT_INTERFACE_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.c
deleted file mode 100644
index d6d7f2060c..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * External Interface implementation for coherent features.
- *
- * Contains routines for accessing the interface to the client BIOS,
- * for support only required for coherent features.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htInterface.h"
-#include "htInterfaceGeneral.h"
-#include "htInterfaceCoherent.h"
-#include "htNb.h"
-#include "heapManager.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_HTINTERFACECOHERENT_FILECODE
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS AND STRUCTURES
- *
- *----------------------------------------------------------------------------
- */
-/*----------------------------------------------------------------------------
- * PROTOTYPES OF LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-/*----------------------------------------------------------------------------
- * EXPORTED FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get limits for CPU to CPU Links.
- *
- * @HtInterfaceMethod{::F_GET_CPU_2_CPU_PCB_LIMITS}
- *
- * For each coherent connection this routine is called once. Update the frequency
- * and width if needed for this Link (usually based on board restriction). This is
- * used with CPU device capabilities and northbridge limits to compute the default
- * settings. The input width and frequency are valid, but do not necessarily reflect
- * the minimum setting that will be chosen.
- *
- * @param[in] NodeA One Node on which this Link is located
- * @param[in] LinkA The Link on this Node
- * @param[in] NodeB The other Node on which this Link is located
- * @param[in] LinkB The Link on that Node
- * @param[in,out] ABLinkWidthLimit modify to change the Link Width In
- * @param[in,out] BALinkWidthLimit modify to change the Link Width Out
- * @param[in,out] PcbFreqCap modify to change the Link's frequency capability
- * @param[in] State the input data
- *
- */
-VOID
-GetCpu2CpuPcbLimits (
- IN UINT8 NodeA,
- IN UINT8 LinkA,
- IN UINT8 NodeB,
- IN UINT8 LinkB,
- IN OUT UINT8 *ABLinkWidthLimit,
- IN OUT UINT8 *BALinkWidthLimit,
- IN OUT UINT32 *PcbFreqCap,
- IN STATE_DATA *State
- )
-{
- CPU_TO_CPU_PCB_LIMITS *p;
- UINT8 SocketA;
- UINT8 SocketB;
- UINT8 PackageLinkA;
- UINT8 PackageLinkB;
-
- ASSERT ((NodeA < MAX_NODES) && (NodeB < MAX_NODES));
- ASSERT ((LinkA < State->Nb->MaxLinks) && (LinkB < State->Nb->MaxLinks));
-
- SocketA = State->HtInterface->GetSocketFromMap (NodeA, State);
- PackageLinkA = State->Nb->GetPackageLink (NodeA, LinkA, State->Nb);
- SocketB = State->HtInterface->GetSocketFromMap (NodeB, State);
- PackageLinkB = State->Nb->GetPackageLink (NodeB, LinkB, State->Nb);
-
- if (State->HtBlock->CpuToCpuPcbLimitsList != NULL) {
- p = State->HtBlock->CpuToCpuPcbLimitsList;
-
- while (p->SocketA != HT_LIST_TERMINAL) {
- if (((p->SocketA == SocketA) || (p->SocketA == HT_LIST_MATCH_ANY)) &&
- ((p->LinkA == PackageLinkA) || ((p->LinkA == HT_LIST_MATCH_ANY) && (!IsPackageLinkInternal (PackageLinkA))) ||
- ((p->LinkA == HT_LIST_MATCH_INTERNAL_LINK) && (IsPackageLinkInternal (PackageLinkA)))) &&
- ((p->SocketB == SocketB) || (p->SocketB == HT_LIST_MATCH_ANY)) &&
- ((p->LinkB == PackageLinkB) || ((p->LinkB == HT_LIST_MATCH_ANY) && (!IsPackageLinkInternal (PackageLinkB))) ||
- ((p->LinkB == HT_LIST_MATCH_INTERNAL_LINK) && (IsPackageLinkInternal (PackageLinkB))))) {
- // Found a match, update width and frequency
- *ABLinkWidthLimit = p->ABLinkWidthLimit;
- *BALinkWidthLimit = p->BALinkWidthLimit;
- *PcbFreqCap = p->PcbFreqCap;
- break;
- } else {
- p++;
- }
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Skip reganging of subLinks.
- *
- * @HtInterfaceMethod{::F_GET_SKIP_REGANG}
- *
- * This routine is called whenever two subLinks are both connected to the same CPUs.
- * Normally, unganged sublinks between the same two CPUs are reganged. Return true
- * from this routine to leave the Links unganged.
- *
- * @param[in] NodeA One Node on which this Link is located
- * @param[in] LinkA The Link on this Node
- * @param[in] NodeB The other Node on which this Link is located
- * @param[in] LinkB The Link on that Node
- * @param[in] State the input data
- *
- * @retval MATCHED leave Link unganged
- * @retval POWERED_OFF leave link unganged and power off the paired sublink
- * @retval UNMATCHED regang Link automatically
- */
-FINAL_LINK_STATE
-GetSkipRegang (
- IN UINT8 NodeA,
- IN UINT8 LinkA,
- IN UINT8 NodeB,
- IN UINT8 LinkB,
- IN STATE_DATA *State
- )
-{
- SKIP_REGANG *p;
- FINAL_LINK_STATE Result;
- UINT8 SocketA;
- UINT8 SocketB;
- UINT8 PackageLinkA;
- UINT8 PackageLinkB;
-
- ASSERT ((NodeA < MAX_NODES) && (NodeB < MAX_NODES));
- ASSERT ((LinkA < State->Nb->MaxLinks) && (LinkB < State->Nb->MaxLinks));
-
- Result = UNMATCHED;
- SocketA = State->HtInterface->GetSocketFromMap (NodeA, State);
- PackageLinkA = State->Nb->GetPackageLink (NodeA, LinkA, State->Nb);
- SocketB = State->HtInterface->GetSocketFromMap (NodeB, State);
- PackageLinkB = State->Nb->GetPackageLink (NodeB, LinkB, State->Nb);
-
- if (State->HtBlock->SkipRegangList != NULL) {
- p = State->HtBlock->SkipRegangList;
-
- while (p->SocketA != HT_LIST_TERMINAL) {
- if (((p->SocketA == SocketA) || (p->SocketA == HT_LIST_MATCH_ANY)) &&
- ((p->LinkA == PackageLinkA) || ((p->LinkA == HT_LIST_MATCH_ANY) && (!IsPackageLinkInternal (PackageLinkA))) ||
- ((p->LinkA == HT_LIST_MATCH_INTERNAL_LINK) && (IsPackageLinkInternal (PackageLinkA)))) &&
- ((p->SocketB == SocketB) || (p->SocketB == HT_LIST_MATCH_ANY)) &&
- ((p->LinkB == PackageLinkB) || ((p->LinkB == HT_LIST_MATCH_ANY) && (!IsPackageLinkInternal (PackageLinkB))) ||
- ((p->LinkB == HT_LIST_MATCH_INTERNAL_LINK) && (IsPackageLinkInternal (PackageLinkB))))) {
- // Found a match return final link state
- Result = p->LinkState;
- break;
- } else {
- p++;
- }
- }
- }
- return Result;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get a new, empty Hop Count Table, to make one for the installed topology.
- *
- * @HtInterfaceMethod{::F_NEW_HOP_COUNT_TABLE}
- *
- * For SLIT, publish a matrix with the hop count, by allocating a buffer on heap with a
- * known signature.
- *
- * @param[in,out] State Keep our buffer handle.
- *
- */
-VOID
-NewHopCountTable (
- IN OUT STATE_DATA *State
- )
-{
- ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
- AllocHeapParams.RequestedBufferSize = sizeof (HOP_COUNT_TABLE);
- AllocHeapParams.BufferHandle = HOP_COUNT_TABLE_HANDLE;
- AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
- if (HeapAllocateBuffer ( &AllocHeapParams, State->ConfigHandle) == AGESA_SUCCESS) {
- State->HopCountTable = (HOP_COUNT_TABLE *)AllocHeapParams.BufferPtr;
- } else {
- State->HopCountTable = NULL;
- }
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.h
deleted file mode 100644
index 417d35c09d..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceCoherent.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Internal access to HT Interface for coherent features.
- *
- * This file provides definitions used by HT internal modules. The
- * external HT interface (in agesa.h) is accessed using these methods.
- * This keeps the HT Feature implementations abstracted from the HT
- * interface.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_INTERFACE_COHERENT_H_
-#define _HT_INTERFACE_COHERENT_H_
-
-/*----------------------------------------------------------------------------
- * Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
- *
- *----------------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *-----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS, STRUCTURES, ENUMS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * Prototypes to Interface from Feature Code
- *
- *----------------------------------------------------------------------------
- */
-
-/**
- * Get limits for CPU to CPU Links.
- *
- */
-VOID
-GetCpu2CpuPcbLimits (
- IN UINT8 NodeA,
- IN UINT8 LinkA,
- IN UINT8 NodeB,
- IN UINT8 LinkB,
- IN OUT UINT8 *ABLinkWidthLimit,
- IN OUT UINT8 *BALinkWidthLimit,
- IN OUT UINT32 *PcbFreqCap,
- IN STATE_DATA *State
- );
-
-/**
- * Skip reganging of subLinks.
- *
- */
-FINAL_LINK_STATE
-GetSkipRegang (
- IN UINT8 NodeA,
- IN UINT8 LinkA,
- IN UINT8 NodeB,
- IN UINT8 LinkB,
- IN STATE_DATA *State
- );
-
-/**
- * Get a new, empty Hop Count Table, to make one for the installed topology.
- *
- */
-VOID
-NewHopCountTable (
- IN OUT STATE_DATA *State
- );
-
-#endif /* _HT_INTERFACE_COHERENT_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.c
deleted file mode 100644
index 9bbb32ce2e..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.c
+++ /dev/null
@@ -1,539 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * External Interface implementation, general purpose features.
- *
- * Contains routines for implementing the interface to the client BIOS. This file
- * includes the interface support which is not removed with various build options.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 48937 $ @e \$Date: 2011-03-15 03:37:15 +0800 (Tue, 15 Mar 2011) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "OptionMultiSocket.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htInterface.h"
-#include "htInterfaceGeneral.h"
-#include "htNb.h"
-#include "cpuRegisters.h"
-#include "cpuServices.h"
-#include "cpuFeatures.h"
-#include "heapManager.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_HTINTERFACEGENERAL_FILECODE
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-extern OPTION_MULTISOCKET_CONFIGURATION OptionMultiSocketConfiguration;
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS AND STRUCTURES
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * PROTOTYPES OF LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * EXPORTED FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Is PackageLink an Internal Link?
- *
- * This is a test for the logical link match codes in the user interface, not a test for
- * the actual northbridge links.
- *
- * @param[in] PackageLink The link
- *
- * @retval TRUE This is an internal link
- * @retval FALSE This is not an internal link
- */
-BOOLEAN
-IsPackageLinkInternal (
- IN UINT8 PackageLink
- )
-{
- return (BOOLEAN) ((PackageLink <= HT_LIST_MATCH_INTERNAL_LINK_2) && (PackageLink >= HT_LIST_MATCH_INTERNAL_LINK_0));
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Ignore a Link.
- *
- * @HtInterfaceMethod{::F_GET_IGNORE_LINK}
- *
- * This routine is called every time a coherent Link is found and then every time a
- * non-coherent Link from a CPU is found. Any coherent or non-coherent Link from a
- * CPU can be ignored and not used for discovery or initialization. Useful for
- * connection based systems.
- *
- * @note not called for IO device to IO Device Links.
- *
- * @param[in] Node The Node on which this Link is located
- * @param[in] Link The Link about to be initialized
- * @param[in] NbIgnoreLinkList The northbridge default ignore link list
- * @param[in] State the input data
- *
- * @retval MATCHED ignore this Link and skip it
- * @retval POWERED_OFF ignore this link and power it off.
- * @retval UNMATCHED initialize the Link normally
- */
-FINAL_LINK_STATE
-GetIgnoreLink (
- IN UINT8 Node,
- IN UINT8 Link,
- IN IGNORE_LINK *NbIgnoreLinkList,
- IN STATE_DATA *State
- )
-{
- IGNORE_LINK *p;
- FINAL_LINK_STATE Result;
- BOOLEAN IsFound;
- UINT8 Socket;
- UINT8 PackageLink;
-
- ASSERT ((Node < MAX_NODES) && (Link < MAX_NODES));
-
- Result = UNMATCHED;
- IsFound = FALSE;
- Socket = State->HtInterface->GetSocketFromMap (Node, State);
- PackageLink = State->Nb->GetPackageLink (Node, Link, State->Nb);
-
- if (State->HtBlock->IgnoreLinkList != NULL) {
- p = State->HtBlock->IgnoreLinkList;
- while (p->Socket != HT_LIST_TERMINAL) {
- if (((p->Socket == Socket) || (p->Socket == HT_LIST_MATCH_ANY)) &&
- ((p->Link == PackageLink) ||
- ((p->Link == HT_LIST_MATCH_ANY) && (!IsPackageLinkInternal (PackageLink))) ||
- ((p->Link == HT_LIST_MATCH_INTERNAL_LINK) && (IsPackageLinkInternal (PackageLink))))) {
- // Found a match return the desired link state.
- ASSERT (Result < MaxFinalLinkState);
- Result = p->LinkState;
- IsFound = TRUE;
- break;
- } else {
- p++;
- }
- }
- }
- // If there wasn't a match in the user interface, see if the northbridge provides one.
- if (!IsFound && (NbIgnoreLinkList != NULL)) {
- p = NbIgnoreLinkList;
- while (p->Socket != HT_LIST_TERMINAL) {
- if (((p->Socket == Socket) || (p->Socket == HT_LIST_MATCH_ANY)) &&
- ((p->Link == PackageLink) ||
- ((p->Link == HT_LIST_MATCH_ANY) && (!IsPackageLinkInternal (PackageLink))) ||
- ((p->Link == HT_LIST_MATCH_INTERNAL_LINK) && (IsPackageLinkInternal (PackageLink))))) {
- // Found a match return the desired link state.
- ASSERT (Result < MaxFinalLinkState);
- Result = p->LinkState;
- break;
- } else {
- p++;
- }
- }
- }
- return Result;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get the Socket number for a given Node number.
- *
- * @HtInterfaceMethod{::F_GET_SOCKET_FROM_MAP}
- *
- * Return the id.
- *
- * @param[in] Node The Node to translate
- * @param[in] State reference to Node to socket map
- *
- * @return the socket id
- *
- */
-UINT8
-GetSocketFromMap (
- IN UINT8 Node,
- IN STATE_DATA *State
- )
-{
- UINT8 Socket;
-
- ASSERT (State->NodeToSocketDieMap != NULL);
-
- Socket = (*State->NodeToSocketDieMap)[Node].Socket;
- return Socket;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get a new Socket Die to Node Map.
- *
- * @HtInterfaceMethod{::F_NEW_NODE_AND_SOCKET_TABLES}
- *
- * Put the Socket Die Table in heap with a known handle. Content will be generated as
- * each node is discovered.
- *
- * @param[in,out] State global state
- */
-VOID
-NewNodeAndSocketTables (
- IN OUT STATE_DATA *State
- )
-{
- UINT8 i;
- UINT8 j;
- ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
- // Allocate heap for the table
- State->SocketDieToNodeMap = NULL;
- AllocHeapParams.RequestedBufferSize = (((MAX_SOCKETS) * (MAX_DIES)) * sizeof (SOCKET_DIE_TO_NODE_ITEM));
- AllocHeapParams.BufferHandle = SOCKET_DIE_MAP_HANDLE;
- AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
- if (HeapAllocateBuffer (&AllocHeapParams, State->ConfigHandle) == AGESA_SUCCESS) {
- State->SocketDieToNodeMap = (SOCKET_DIE_TO_NODE_MAP)AllocHeapParams.BufferPtr;
- // Initialize shared data structures
- for (i = 0; i < MAX_SOCKETS; i++) {
- for (j = 0; j < MAX_DIES; j++) {
- (*State->SocketDieToNodeMap)[i][j].Node = HT_LIST_TERMINAL;
- (*State->SocketDieToNodeMap)[i][j].LowCore = HT_LIST_TERMINAL;
- (*State->SocketDieToNodeMap)[i][j].HighCore = HT_LIST_TERMINAL;
- }
- }
- }
- // Allocate heap for the table
- State->NodeToSocketDieMap = NULL;
- AllocHeapParams.RequestedBufferSize = (MAX_NODES * sizeof (NODE_TO_SOCKET_DIE_ITEM));
- AllocHeapParams.BufferHandle = NODE_ID_MAP_HANDLE;
- AllocHeapParams.Persist = HEAP_SYSTEM_MEM;
- if (HeapAllocateBuffer (&AllocHeapParams, State->ConfigHandle) == AGESA_SUCCESS) {
- State->NodeToSocketDieMap = (NODE_TO_SOCKET_DIE_MAP)AllocHeapParams.BufferPtr;
- // Initialize shared data structures
- for (i = 0; i < MAX_NODES; i++) {
- (*State->NodeToSocketDieMap)[i].Socket = HT_LIST_TERMINAL;
- (*State->NodeToSocketDieMap)[i].Die = HT_LIST_TERMINAL;
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get the minimum Northbridge frequency for the system.
- *
- * @HtInterfaceMethod{::F_GET_MIN_NB_CORE_FREQ}
- *
- * Invoke the CPU component power mgt interface.
- *
- * @param[in] PlatformConfig Platform profile/build option config structure.
- * @param[in] StdHeader Config for library and services.
- *
- * @return Frequency in MHz.
- *
- */
-UINT32
-GetMinNbCoreFreq (
- IN PLATFORM_CONFIGURATION *PlatformConfig,
- IN AMD_CONFIG_PARAMS *StdHeader
- )
-{
- UINT32 MinSysNbFreq;
- UINT32 MinP0NbFreq;
-
- OptionMultiSocketConfiguration.GetMinNbCof (PlatformConfig, &MinSysNbFreq, &MinP0NbFreq, StdHeader);
-
- ASSERT (MinSysNbFreq != 0);
-
- return MinSysNbFreq;
-}
-
-/**
- * @page physicalsockethowto Physical Socket Map, How To Create
- *
- * To create a physical system socket map for a platform:
- *
- * - Start at the Node which will be the BSP.
- *
- * - Begin a breadth first enumeration of all the coherent Links between sockets
- * by creating a socket structure for each socket connection from the BSP.
- * For example, if the BSP is in socket zero and Link one connects to socket two,
- * create socket {0, 1, 2}.
- *
- * - When all Links from the BSP are described, go to the first socket connected
- * to the BSP and continue the breadth first enumeration.
- *
- * - It should not be necessary to describe the back Links; in the example above, there
- * should be no need to create {2, 1, 0} (assuming socket two connects back to
- * socket zero on its Link one).
- *
- * - When completed:
- *
- * - Every socket except the BSP's (usually zero) must be listed as a targetSocket,
- * at least once. Some sockets may be listed more than once.
- *
- * - There usually should be at least as many entries as Links. An exception is a
- * fully connected system, only the Links from the BSP are needed.
- *
- * - Every socket but the last one in the breadth first order should usually have one
- * or more entries listing it as a currentSocket. (The last one has only back Links.)
- *
- * There are no strict assumptions about the ordering of the socket structures.
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Update maps between Sockets and Nodes for a specific newly discovered node.
- *
- * @HtInterfaceMethod{::F_SET_NODE_TO_SOCKET_MAP}
- *
- * There are two methods for providing socket naming of nodes.
- *
- * Hardware Method (preferred): A value strapped in hardware by the board is read and
- * passed to this routine.
- *
- * Software Method: The current node's socket is looked up, since it was
- * previously a new node and went through this process. The link is converted to
- * a package level link. A user data structure describing the package level
- * layout of the system is searched for the current node's socket and package link,
- * and now we know the new node's socket.
- *
- * In either case, the Socket, Module to Node map and the Node to Socket, Module
- * map are updated with the new node, socket, and module.
- *
- * Data needed to do this is passed in to the routine as arguments rather than read by this routine,
- * so that it is not necessary to know a valid temporary route to either node at the time this code runs.
- *
- * @param[in] Node Node from which a new node was discovered
- * @param[in] CurrentNodeModule The current node's module id in it's processor.
- * @param[in] PackageLink The package link for the current node's link.
- * @param[in] NewNode The new node's id
- * @param[in] HardwareSocket If we use the hardware method (preferred), this is the socket of new node.
- * @param[in] Module The new node's module id in it's processor.
- * @param[in] State our State
- */
-VOID
-SetNodeToSocketMap (
- IN UINT8 Node,
- IN UINT8 CurrentNodeModule,
- IN UINT8 PackageLink,
- IN UINT8 NewNode,
- IN UINT8 HardwareSocket,
- IN UINT8 Module,
- IN STATE_DATA *State
- )
-{
- UINT8 SourceSocket;
- UINT8 TargetSocket;
- SYSTEM_PHYSICAL_SOCKET_MAP *Map;
-
- // While this code could be written to recover from a NULL socket map, AGESA cannot function without one.
- ASSERT (State->SocketDieToNodeMap != NULL);
-
- if (State->HtBlock->SystemPhysicalSocketMap != NULL) {
- if (NewNode != 0) {
- // Find the logical Node from which a new Node was discovered in the Node field of
- // some socket. It must already be there, Nodes are assigned ascending.
- //
- for (SourceSocket = 0; SourceSocket < MAX_SOCKETS; SourceSocket++) {
- if ((*State->SocketDieToNodeMap)[SourceSocket][CurrentNodeModule].Node == Node) {
- break;
- }
- }
- // This ASSERT should be understood as "the Node did not have a match", not as a limit check on SourceSocket.
- ASSERT (SourceSocket != MAX_SOCKETS);
-
- // Find the sourceSocket in the CurrentSocket field, for the Link on which a new Node
- // was discovered. When we find an entry with that socket and Link number, update the
- // Node for that socket.
- //
- if (IsPackageLinkInternal (PackageLink)) {
- // Internal Nodes are in the same socket, don't search the physical system map.
- TargetSocket = SourceSocket;
- } else {
- // Find the target socket in the physical system map.
- Map = State->HtBlock->SystemPhysicalSocketMap;
- while ((Map->CurrentSocket != 0xFF) &&
- ((Map->CurrentSocket != SourceSocket) || (Map->CurrentLink != PackageLink))) {
- Map++;
- }
- ASSERT (Map->CurrentSocket != 0xFF);
- TargetSocket = Map->TargetSocket;
- }
- } else {
- // The BSP (BSN, if you will) has no predecessor node from which it is discovered.
- TargetSocket = 0;
- }
- } else {
- // Use the hardware method
- // The hardware strapped socket id is passed to us in this case.
- TargetSocket = HardwareSocket;
- }
- // If the target socket, module is already mapped to something, that's not good. Socket labeling conflict.
- // Check that the board is strapped correctly. If not you need a SystemPhysicalSocketMap. If you have one,
- // check it for correctness.
- ASSERT ((*State->SocketDieToNodeMap)[TargetSocket][Module].Node == 0xFF);
- // Update the map for the rest of agesa
- (*State->SocketDieToNodeMap)[TargetSocket][Module].Node = NewNode;
- // and the node to socket map
- ASSERT (State->NodeToSocketDieMap != NULL);
- (*State->NodeToSocketDieMap)[NewNode].Socket = TargetSocket;
- (*State->NodeToSocketDieMap)[NewNode].Die = Module;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Clean up the map structures after severe event has caused a fall back to 1 node.
- *
- * @HtInterfaceMethod{::F_CLEAN_MAPS_AFTER_ERROR}
- *
- * @param[in] State Our state, access to socket, node maps
- *
- */
-VOID
-CleanMapsAfterError (
- IN STATE_DATA *State
- )
-{
- UINTN Socket;
- UINTN Module;
- UINTN Node;
-
- ASSERT (State->NodeToSocketDieMap != NULL);
- ASSERT (State->SocketDieToNodeMap != NULL);
-
- // Clear all the socket, module items except for the socket and module containing node zero.
- for (Socket = 0; Socket < MAX_SOCKETS; Socket++) {
- for (Module = 0; Module < MAX_DIES; Module++) {
- if (((*State->NodeToSocketDieMap)[0].Socket != Socket) || ((*State->NodeToSocketDieMap)[0].Die != Module)) {
- (*State->SocketDieToNodeMap)[Socket][Module].Node = HT_LIST_TERMINAL;
- (*State->SocketDieToNodeMap)[Socket][Module].LowCore = HT_LIST_TERMINAL;
- (*State->SocketDieToNodeMap)[Socket][Module].HighCore = HT_LIST_TERMINAL;
- }
- }
- }
- // Clear all the node items except for node zero.
- for (Node = 1; Node < MAX_NODES; Node++) {
- (*State->NodeToSocketDieMap)[Node].Socket = HT_LIST_TERMINAL;
- (*State->NodeToSocketDieMap)[Node].Die = HT_LIST_TERMINAL;
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Post Node id and other context info to AP cores via mailbox.
- *
- * @HtInterfaceMethod{::F_POST_MAP_TO_AP}
- *
- * Since Ap's can not view map until after mp communication is established,
- * provide them with initial context info via a mailbox register. A mailbox
- * register is one that can be written in PCI space and read in MSR space.
- *
- * @param[in] State Our state, access to socket, node maps
- */
-VOID
-PostMapToAp (
- IN STATE_DATA *State
- )
-{
- UINT8 ModuleType;
- UINT8 Module;
- AP_MAILBOXES ApMailboxes;
- UINT8 Node;
- UINT32 Degree;
- AGESA_STATUS CalledStatus;
-
- // Dispatch any features (such as Preserve Mailbox) that need to run as soon as discovery is completed.
- IDS_HDT_CONSOLE (CPU_TRACE, " Dispatch CPU features after HT discovery\n");
- CalledStatus = DispatchCpuFeatures (CPU_FEAT_AFTER_COHERENT_DISCOVERY, State->PlatformConfiguration, State->ConfigHandle);
-
- ASSERT (State->Fabric != NULL);
- Degree = 0;
- // Compute the degree of the system by finding the maximum degree of any node.
- for (Node = 0; Node < (State->NodesDiscovered + 1); Node++) {
- if (State->Fabric->SysDegree[Node] > Degree) {
- Degree = State->Fabric->SysDegree[Node];
- }
- }
- // Post the information on all nodes.
- for (Node = 0; Node < (State->NodesDiscovered + 1); Node++) {
- ModuleType = 0;
- Module = 0;
- State->Nb->GetModuleInfo (Node, &ModuleType, &Module, State->Nb);
- ApMailboxes.ApMailInfo.Info = 0;
- ApMailboxes.ApMailInfo.Fields.Node = Node;
- ApMailboxes.ApMailInfo.Fields.Socket = State->HtInterface->GetSocketFromMap (Node, State);
- ApMailboxes.ApMailInfo.Fields.ModuleType = ModuleType;
- ApMailboxes.ApMailInfo.Fields.Module = Module;
- ApMailboxes.ApMailExtInfo.Info = 0;
- ApMailboxes.ApMailExtInfo.Fields.SystemDegree = Degree;
- // other fields of the extended info are used during ap init, and will be initialized at that time.
- State->Nb->PostMailbox (Node, ApMailboxes, State->Nb);
- }
- // Now that the mailboxes have been initialized, cache the info on the BSC. The APs
- // will cache during heap initialization.
- CacheApMailbox (State->ConfigHandle);
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.h
deleted file mode 100644
index 79cd0c930b..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceGeneral.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Internal access to HT Interface, general purpose features.
- *
- * This file provides definitions used by HT internal modules. The
- * external HT interface (in agesa.h) is accessed using these methods.
- * This keeps the HT Feature implementations abstracted from the HT
- * external interface.
- *
- * This file includes the interface support which is not removed with
- * various build options.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_INTERFACE_GENERAL_H_
-#define _HT_INTERFACE_GENERAL_H_
-
-/*----------------------------------------------------------------------------
- * Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
- *
- *----------------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *-----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS, STRUCTURES, ENUMS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * Prototypes to Interface from Feature Code
- *
- *----------------------------------------------------------------------------
- */
-
-/**
- * Is PackageLink an Internal Link?
- */
-BOOLEAN
-IsPackageLinkInternal (
- IN UINT8 PackageLink
- );
-
-/**
- * Get the Socket number for a given Node number.
- *
- */
-UINT8
-GetSocketFromMap (
- IN UINT8 Node,
- IN STATE_DATA *State
- );
-
-/**
- * Ignore a Link.
- *
- */
-FINAL_LINK_STATE
-GetIgnoreLink (
- IN UINT8 Node,
- IN UINT8 Link,
- IN IGNORE_LINK *NbIgnoreLinkList,
- IN STATE_DATA *State
- );
-
-/**
- * Get a new Socket Die to Node Map.
- *
- */
-VOID
-NewNodeAndSocketTables (
- IN OUT STATE_DATA *State
- );
-
-/**
- * Get the minimum Northbridge frequency for the system.
- *
- */
-UINT32
-GetMinNbCoreFreq (
- IN PLATFORM_CONFIGURATION *PlatformConfig,
- IN AMD_CONFIG_PARAMS *StdHeader
- );
-
-/**
- * Fill in the socket's Node id when a processor is discovered in that socket.
- *
- */
-VOID
-SetNodeToSocketMap (
- IN UINT8 Node,
- IN UINT8 CurrentNodeModule,
- IN UINT8 PackageLink,
- IN UINT8 NewNode,
- IN UINT8 HardwareSocket,
- IN UINT8 Module,
- IN STATE_DATA *State
- );
-
-/**
- * Clean up the map structures after severe event has caused a fall back to 1 node.
- *
- */
-VOID
-CleanMapsAfterError (
- IN STATE_DATA *State
- );
-
-/**
- * Post Node id and other context info to AP cores via mailbox.
- *
- */
-VOID
-PostMapToAp (
- IN STATE_DATA *State
- );
-
-#endif /* _HT_INTERFACE_GENERAL_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.c
deleted file mode 100644
index cd19d3d05a..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.c
+++ /dev/null
@@ -1,393 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * External Interface implementation for non-coherent features.
- *
- * Contains routines for accessing the interface to the client BIOS,
- * for non-coherent features.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htInterface.h"
-#include "htInterfaceNonCoherent.h"
-#include "htNb.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_HTINTERFACENONCOHERENT_FILECODE
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-#define UNUSED_ZERO_32 ((UINT32)0)
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS AND STRUCTURES
- *
- *----------------------------------------------------------------------------
- */
-/*----------------------------------------------------------------------------
- * EXPORTED FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get Manual BUID assignment list.
- *
- * @HtInterfaceMethod{::F_GET_MANUAL_BUID_SWAP_LIST}
- *
- * This routine is called every time a non-coherent chain is processed. BUID
- * assignment may be controlled explicitly on a non-coherent chain. Swaps controls
- * the BUID assignment and FinalIds provides the device to device Linking. Device
- * orientation can be detected automatically, or explicitly. See documentation for
- * more details.
- *
- * If a manual swap list is not supplied, automatic non-coherent init assigns BUIDs
- * starting at 1 and incrementing sequentially based on each device's unit count.
- *
- * @param[in] Node The Node on which this chain is located
- * @param[in] Link The Link on the host for this chain
- * @param[out] List supply a pointer to a list.
- * List is NOT valid unless routine returns TRUE.
- * @param[in] State the input data
- *
- * @retval TRUE use a manual list
- * @retval FALSE initialize the Link automatically
- */
-BOOLEAN
-GetManualBuidSwapList (
- IN UINT8 Node,
- IN UINT8 Link,
- OUT BUID_SWAP_LIST **List,
- IN STATE_DATA *State
- )
-{
- MANUAL_BUID_SWAP_LIST *p;
- BOOLEAN result;
- UINT8 Socket;
- UINT8 PackageLink;
-
- ASSERT ((Node < MAX_NODES) && (List != NULL));
-
- result = FALSE;
- Socket = State->HtInterface->GetSocketFromMap (Node, State);
- PackageLink = State->Nb->GetPackageLink (Node, Link, State->Nb);
-
- if (State->HtBlock->ManualBuidSwapList != NULL) {
- p = State->HtBlock->ManualBuidSwapList;
-
- while (p->Socket != HT_LIST_TERMINAL) {
- if (((p->Socket == Socket) || (p->Socket == HT_LIST_MATCH_ANY)) &&
- ((p->Link == PackageLink) || (p->Link == HT_LIST_MATCH_ANY))) {
- // Found a match implies TRUE, ignore the Link
- result = TRUE;
- *List = &(p->SwapList);
- break;
- } else {
- p++;
- }
- }
- }
- // List is not valid if Result is FALSE.
- return result;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Override capabilities of a device.
- *
- * @HtInterfaceMethod{::F_GET_DEVICE_CAP_OVERRIDE}
- *
- * This routine is called once for every Link on every IO device. Update the width
- * and frequency capability if needed for this device. This is used along with
- * device capabilities, the limit call backs, and northbridge limits to compute the
- * default settings. The components of the device's PCI config address are provided,
- * so its settings can be consulted if need be. The input width and frequency are the
- * reported device capabilities.
- *
- * @param[in] HostNode The Node on which this chain is located
- * @param[in] HostLink The Link on the host for this chain
- * @param[in] Depth The Depth in the I/O chain from the Host
- * @param[in] PciAddress The Device's PCI config address (for callout)
- * @param[in] DevVenId The Device's PCI Vendor + Device ID (offset 0x00)
- * @param[in] Revision The Device's PCI Revision
- * @param[in] Link The Device's Link number (0 or 1)
- * @param[in,out] LinkWidthIn modify to change the Link Width In
- * @param[in,out] LinkWidthOut modify to change the Link Width Out
- * @param[in,out] FreqCap modify to change the Link's frequency capability
- * @param[in,out] Clumping modify to change unit id clumping capability
- * @param[in] State the input data and config header
- *
- */
-VOID
-GetDeviceCapOverride (
- IN UINT8 HostNode,
- IN UINT8 HostLink,
- IN UINT8 Depth,
- IN PCI_ADDR PciAddress,
- IN UINT32 DevVenId,
- IN UINT8 Revision,
- IN UINT8 Link,
- IN OUT UINT8 *LinkWidthIn,
- IN OUT UINT8 *LinkWidthOut,
- IN OUT UINT32 *FreqCap,
- IN OUT UINT32 *Clumping,
- IN STATE_DATA *State
- )
-{
- DEVICE_CAP_OVERRIDE *p;
- UINT8 HostSocket;
- UINT8 PackageLink;
- DEVICE_CAP_CALLOUT_PARAMS CalloutParams;
- AGESA_STATUS CalloutStatus;
-
- ASSERT ((HostNode < MAX_NODES) && (Depth < 32) && ((Link == 0) || (Link == 1)));
-
- HostSocket = State->HtInterface->GetSocketFromMap (HostNode, State);
- PackageLink = State->Nb->GetPackageLink (HostNode, HostLink, State->Nb);
-
- if (State->HtBlock->DeviceCapOverrideList != NULL) {
- p = State->HtBlock->DeviceCapOverrideList;
-
- while (p->HostSocket != HT_LIST_TERMINAL) {
- if (((p->HostSocket == HostSocket) || (p->HostSocket == HT_LIST_MATCH_ANY)) &&
- ((p->HostLink == PackageLink) || (p->HostLink == HT_LIST_MATCH_ANY)) &&
- ((p->Depth == Depth) || (p->Depth == HT_LIST_MATCH_ANY)) &&
- ((p->Link == Link) || (p->Link == HT_LIST_MATCH_ANY)) &&
- // Found a potential match. Check the additional optional matches.
- ((p->Options.IsCheckDevVenId == 0) || (p->DevVenId == DevVenId)) &&
- ((p->Options.IsCheckRevision == 0) || (p->Revision == Revision))) {
- //
- // Found a match. Check what override actions are desired.
- // Unlike the PCB limit routines, which handle the info returned,
- // deviceCapOverride is actually overriding the settings, so we need
- // to check that the field actually has an update.
- // The Callout is a catch all for situations the data is not up to handling.
- // It is expected, but not enforced, that either the data overrides are used,
- // or the callout is used, rather than both.
- //
- if (p->Options.IsOverrideWidthIn != 0) {
- *LinkWidthIn = p->LinkWidthIn;
- }
- if (p->Options.IsOverrideWidthOut != 0) {
- *LinkWidthOut = p->LinkWidthOut;
- }
- if (p->Options.IsOverrideFreq != 0) {
- *FreqCap = p->FreqCap;
- }
- if (p->Options.IsOverrideClumping != 0) {
- *Clumping = p->Clumping;
- }
- if (p->Options.IsDoCallout != 0) {
- //
- // Pass the actual info being matched, not the matched struct data.
- // This callout is expected to be built in as part of the options file, and does not use the
- // callout interface, even though we use the consistent interface declaration for the routine.
- // So, the first two int parameters have no meaning in this case.
- // It is not meaningful for the callout to have any status but Success.
- //
- CalloutParams.HostSocket = HostSocket;
- CalloutParams.HostLink = PackageLink;
- CalloutParams.Depth = Depth;
- CalloutParams.DevVenId = DevVenId;
- CalloutParams.Revision = Revision;
- CalloutParams.Link = Link;
- CalloutParams.PciAddress = PciAddress;
- CalloutParams.LinkWidthIn = LinkWidthIn;
- CalloutParams.LinkWidthOut = LinkWidthOut;
- CalloutParams.FreqCap = FreqCap;
- CalloutParams.Clumping = Clumping;
- CalloutParams.StdHeader = *((AMD_CONFIG_PARAMS *) (State->ConfigHandle));
- CalloutStatus = p->Callout (UNUSED_ZERO_32, UNUSED_ZERO_32, (VOID *) &CalloutParams);
- ASSERT (CalloutStatus == AGESA_SUCCESS);
- }
- break;
- } else {
- p++;
- }
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Get limits for non-coherent Links.
- *
- * @HtInterfaceMethod{::F_GET_IO_PCB_LIMITS}
- *
- * For each non-coherent connection this routine is called once. Update the
- * frequency and width if needed for this Link (usually based on board restriction).
- * This is used with device capabilities, device overrides, and northbridge limits to
- * compute the default settings. The input width and frequency are valid, but do not
- * necessarily reflect the minimum setting that will be chosen.
- *
- * @param[in] HostNode The Node on which this Link is located
- * @param[in] HostLink The Link about to be initialized
- * @param[in] Depth The Depth in the I/O chain from the Host
- * @param[in,out] DownstreamLinkWidthLimit modify to change the Link Width In
- * @param[in,out] UpstreamLinkWidthLimit modify to change the Link Width Out
- * @param[in,out] PcbFreqCap modify to change the Link's frequency capability
- * @param[in] State the input data
- */
-VOID
-GetIoPcbLimits (
- IN UINT8 HostNode,
- IN UINT8 HostLink,
- IN UINT8 Depth,
- IN OUT UINT8 *DownstreamLinkWidthLimit,
- IN OUT UINT8 *UpstreamLinkWidthLimit,
- IN OUT UINT32 *PcbFreqCap,
- IN STATE_DATA *State
- )
-{
- IO_PCB_LIMITS *p;
- UINT8 Socket;
- UINT8 PackageLink;
-
- ASSERT ((HostNode < MAX_NODES) && (HostLink < MAX_NODES));
-
- Socket = State->HtInterface->GetSocketFromMap (HostNode, State);
- PackageLink = State->Nb->GetPackageLink (HostNode, HostLink, State->Nb);
-
- if (State->HtBlock->IoPcbLimitsList != NULL) {
- p = State->HtBlock->IoPcbLimitsList;
-
- while (p->HostSocket != HT_LIST_TERMINAL) {
- if (((p->HostSocket == Socket) || (p->HostSocket == HT_LIST_MATCH_ANY)) &&
- ((p->HostLink == PackageLink) || (p->HostLink == HT_LIST_MATCH_ANY)) &&
- ((p->Depth == Depth) || (p->Depth == HT_LIST_MATCH_ANY))) {
- // Found a match, return the override info
- *DownstreamLinkWidthLimit = p->DownstreamLinkWidthLimit;
- *UpstreamLinkWidthLimit = p->UpstreamLinkWidthLimit;
- *PcbFreqCap = p->PcbFreqCap;
- break;
- } else {
- p++;
- }
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Manually control bus number assignment.
- *
- * @HtInterfaceMethod{::F_GET_OVERRIDE_BUS_NUMBERS}
- *
- * This routine is called every time a non-coherent chain is processed. If a system
- * can not use the auto Bus numbering feature for non-coherent chain bus assignments,
- * this routine can provide explicit control. For each chain, provide the bus number
- * range to use.
- *
- * The outputs SecBus and SubBus are not valid unless this routine returns TRUE
- *
- * @param[in] Node The Node on which this chain is located
- * @param[in] Link The Link on the host for this chain
- * @param[out] SecBus Secondary Bus number for this non-coherent chain
- * @param[out] SubBus Subordinate Bus number
- * @param[in] State the input data
- *
- * @retval TRUE this routine is supplying the bus numbers.
- * @retval FALSE use auto Bus numbering, bus outputs not valid.
- */
-BOOLEAN
-GetOverrideBusNumbers (
- IN UINT8 Node,
- IN UINT8 Link,
- OUT UINT8 *SecBus,
- OUT UINT8 *SubBus,
- IN STATE_DATA *State
- )
-{
- OVERRIDE_BUS_NUMBERS *p;
- BOOLEAN result;
- UINT8 Socket;
- UINT8 PackageLink;
-
- ASSERT ((Node < MAX_NODES) && (Link < MAX_NODES));
-
- result = FALSE;
- Socket = State->HtInterface->GetSocketFromMap (Node, State);
- PackageLink = State->Nb->GetPackageLink (Node, Link, State->Nb);
-
- if (State->HtBlock->OverrideBusNumbersList != NULL) {
- p = State->HtBlock->OverrideBusNumbersList;
-
- while (p->Socket != HT_LIST_TERMINAL) {
- if (((p->Socket == Socket) || (p->Socket == HT_LIST_MATCH_ANY)) &&
- ((p->Link == PackageLink) || (p->Link == HT_LIST_MATCH_ANY))) {
- // Found a match, return the bus overrides
- *SecBus = p->SecBus;
- *SubBus = p->SubBus;
- ASSERT (*SubBus > *SecBus);
- result = TRUE;
- break;
- } else {
- p++;
- }
- }
- }
- // SecBus, SubBus are not valid if Result is FALSE.
- return result;
-}
-
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.h
deleted file mode 100644
index 4403784c48..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htInterfaceNonCoherent.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Internal access to HT Interface, for non-coherent features.
- *
- * This file provides definitions used by HT internal modules. The
- * external HT interface (in agesa.h) is accessed using these methods.
- * This keeps the HT Feature implementations abstracted from the HT
- * interface.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_INTERFACE_NONCOHERENT_H_
-#define _HT_INTERFACE_NONCOHERENT_H_
-
-/*----------------------------------------------------------------------------
- * Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
- *
- *----------------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *-----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS, STRUCTURES, ENUMS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * Prototypes to Interface from Feature Code
- *
- *----------------------------------------------------------------------------
- */
-
-/**
- * Manually control bus number assignment.
- *
- */
-BOOLEAN
-GetOverrideBusNumbers (
- IN UINT8 Node,
- IN UINT8 Link,
- OUT UINT8 *SecBus,
- OUT UINT8 *SubBus,
- IN STATE_DATA *State
- );
-
-/**
- * Get Manual BUID assignment list.
- *
- */
-BOOLEAN
-GetManualBuidSwapList (
- IN UINT8 Node,
- IN UINT8 Link,
- OUT BUID_SWAP_LIST **List,
- IN STATE_DATA *State
- );
-
-/**
- * Override capabilities of a device.
- *
- */
-
-VOID
-GetDeviceCapOverride (
- IN UINT8 HostNode,
- IN UINT8 HostLink,
- IN UINT8 Depth,
- IN PCI_ADDR PciAddress,
- IN UINT32 DevVenId,
- IN UINT8 Revision,
- IN UINT8 Link,
- IN OUT UINT8 *LinkWidthIn,
- IN OUT UINT8 *LinkWidthOut,
- IN OUT UINT32 *FreqCap,
- IN OUT UINT32 *Clumping,
- IN STATE_DATA *State
- );
-
-/**
- * Get limits for non-coherent Links.
- *
- */
-VOID
-GetIoPcbLimits (
- IN UINT8 HostNode,
- IN UINT8 HostLink,
- IN UINT8 Depth,
- IN OUT UINT8 *DownstreamLinkWidthLimit,
- IN OUT UINT8 *UpstreamLinkWidthLimit,
- IN OUT UINT32 *PcbFreqCap,
- IN STATE_DATA *State
- );
-
-#endif /* _HT_INTERFACE_NONCOHERENT_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htMain.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htMain.c
deleted file mode 100644
index af8d63ee17..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htMain.c
+++ /dev/null
@@ -1,579 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * HyperTransport features and sequence implementation.
- *
- * Implements the external AmdHtInitialize entry point.
- * Contains routines for directing the sequence of available features.
- * Mostly, but not exclusively, AGESA_TESTPOINT invocations should be
- * contained in this file, and not in the feature code.
- *
- * From a build option perspective, it may be that a few lines could be removed
- * from compilation in this file for certain options. It is considered that
- * the code savings from this are too small to be of concern and this file
- * should not have any explicit build option implementation.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "AdvancedApi.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htInterface.h"
-#include "htNb.h"
-#include "heapManager.h"
-#include "cpuRegisters.h"
-#include "cpuServices.h"
-#include "OptionsHt.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_HTMAIN_FILECODE
-#define APIC_Base_BSP 8
-#define APIC_Base 0x1b
-
-extern OPTION_HT_CONFIGURATION OptionHtConfiguration;
-
-BOOLEAN
-STATIC
-IsBootCore (
- IN STATE_DATA *State
- );
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Update maps with the core range for each module.
- *
- * Cores are numbered relative to a Processor, but sometimes there is a need to know the
- * starting and ending core ids on a particular node. This same info is also useful for
- * supporting the Core count on a node other than the one currently executing.
- *
- * For each Processor, get the core count of each node using the family specific PCI core count
- * interface. The order of cores in a processor, and whether it is special for the BSP is family
- * specific. But whether the processor orders core ids by module or node, iterate in the right
- * order and use the counts to determine each start and end range.
- *
- * Update compute unit status for each node.
- *
- * @param[in] State number of Nodes discovered.
-*/
-VOID
-STATIC
-UpdateCoreRanges (
- IN STATE_DATA *State
- )
-{
- UINT8 Node;
- UINT8 ProcessorCores;
- UINT8 ModuleCoreCount[MAX_DIES];
- UINT8 Socket;
- UINT8 Module;
-
- ASSERT (State->SocketDieToNodeMap != NULL);
- ASSERT (State->NodeToSocketDieMap != NULL);
-
- for (Socket = 0; Socket < MAX_SOCKETS; Socket++) {
- // Is a Processor present in Socket?
- if ((*State->SocketDieToNodeMap)[Socket][0].Node != HT_LIST_TERMINAL) {
- // Get all the Module core counts for this processor
- // Note that the core counts are 1 based counts.
- // Since Compute Unit info is not module ordering dependent, write it now.
- for (Module = 0; Module < MAX_DIES; Module++) {
- if ((*State->SocketDieToNodeMap)[Socket][Module].Node != HT_LIST_TERMINAL) {
- ModuleCoreCount[Module] = State->Nb->GetNumCoresOnNode ((*State->SocketDieToNodeMap)[Socket][Module].Node, State->Nb);
- (*State->SocketDieToNodeMap)[Socket][Module].EnabledComputeUnits =
- State->Nb->GetEnabledComputeUnits ((*State->SocketDieToNodeMap)[Socket][Module].Node, State->Nb);
- (*State->SocketDieToNodeMap)[Socket][Module].DualCoreComputeUnits =
- State->Nb->GetDualCoreComputeUnits ((*State->SocketDieToNodeMap)[Socket][Module].Node, State->Nb);
- } else {
- ModuleCoreCount[Module] = 0;
- }
- }
- // Determine the core ordering rule for this processor.
- if ((((*State->NodeToSocketDieMap)[0].Socket == Socket) && State->Nb->IsOrderBSPCoresByNode) ||
- (!State->Nb->IsOrderCoresByModule)) {
- // Order core ranges on this processor by Node Id.
- ProcessorCores = 0;
- for (Node = 0; Node < State->Nb->GetNodeCount (State->Nb); Node++) {
- // Is this node a module in this processor?
- if ((*State->NodeToSocketDieMap)[Node].Socket == Socket) {
- Module = (*State->NodeToSocketDieMap)[Node].Die;
- if (ModuleCoreCount[Module] != 0) {
- (*State->SocketDieToNodeMap)[Socket][Module].LowCore = ProcessorCores;
- (*State->SocketDieToNodeMap)[Socket][Module].HighCore = ProcessorCores + (ModuleCoreCount[Module] - 1);
- IDS_HDT_CONSOLE (
- HT_TRACE,
- (IsBootCore (State) ?
- "Topology: Socket %d, Die %d, is Node %d, with Cores %d thru %d. Compute Unit status (0x%x,0x%x).\n" :
- ""),
- Socket,
- Module,
- Node,
- (*State->SocketDieToNodeMap)[Socket][Module].LowCore,
- (*State->SocketDieToNodeMap)[Socket][Module].HighCore,
- (*State->SocketDieToNodeMap)[Socket][Module].EnabledComputeUnits,
- (*State->SocketDieToNodeMap)[Socket][Module].DualCoreComputeUnits
- );
- ProcessorCores = ProcessorCores + ModuleCoreCount[Module];
- }
- }
- }
- } else {
- // Order core ranges in this processor by Module Id.
- ProcessorCores = 0;
- for (Module = 0; Module < MAX_DIES; Module++) {
- if (ModuleCoreCount[Module] != 0) {
- (*State->SocketDieToNodeMap)[Socket][Module].LowCore = ProcessorCores;
- (*State->SocketDieToNodeMap)[Socket][Module].HighCore = ProcessorCores + (ModuleCoreCount[Module] - 1);
- IDS_HDT_CONSOLE (
- HT_TRACE,
- (IsBootCore (State) ?
- "Topology: Socket %d, Die %d, is Node %d, with Cores %d thru %d. Compute Unit status (0x%x,0x%x).\n" :
- ""),
- Socket,
- Module,
- (*State->SocketDieToNodeMap)[Socket][Module].Node,
- (*State->SocketDieToNodeMap)[Socket][Module].LowCore,
- (*State->SocketDieToNodeMap)[Socket][Module].HighCore,
- (*State->SocketDieToNodeMap)[Socket][Module].EnabledComputeUnits,
- (*State->SocketDieToNodeMap)[Socket][Module].DualCoreComputeUnits
- );
- ProcessorCores = ProcessorCores + ModuleCoreCount[Module];
- }
- }
- }
- }
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Complete the coherent init with any system level initialization.
- *
- * Find the total number of cores and update the number of Nodes and cores in all cpus.
- * Limit cpu config access to installed cpus.
- *
- * @param[in] State number of Nodes discovered.
-*/
-VOID
-STATIC
-FinalizeCoherentInit (
- IN STATE_DATA *State
- )
-{
- UINT8 Node;
- UINT8 TotalCores;
-
- TotalCores = 0;
-
- for (Node = 0; Node < (State->NodesDiscovered + 1); Node++) {
- TotalCores = TotalCores + State->Nb->GetNumCoresOnNode (Node, State->Nb);
- }
-
- for (Node = 0; Node < (State->NodesDiscovered + 1); Node++) {
- State->Nb->SetTotalNodesAndCores (Node, State->NodesDiscovered + 1, TotalCores, State->Nb);
- }
-
- // Set all nodes to limit config space based on node count, after all nodes have a valid count.
- // (just being cautious, probably we could combine the loops.)
- for (Node = 0; Node < (State->NodesDiscovered + 1); Node++) {
- State->Nb->LimitNodes (Node, State->Nb);
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Initialize the coherent fabric.
- *
- * Perform discovery and initialization of the coherent fabric, for builds including
- * support for multiple coherent nodes.
- *
- * @param[in] State global state
- */
-VOID
-STATIC
-CoherentInit (
- IN OUT STATE_DATA *State
- )
-{
- UINT8 i;
- UINT8 j;
- UINT8 ModuleType;
- UINT8 Module;
- UINT8 HardwareSocket;
- COHERENT_FABRIC Fabric;
-
- // Because Node 0, the BSP, is not discovered, initialize info about it specially here.
- // Allocate Socket Die Map.
- // While the BSP is always capable of being the only processor in the system, call the
- // IsExceededCapable method to make sure the BSP's capability is included in the aggregate system
- // capability. We don't care to check the return value.
- //
- State->Fabric = &Fabric;
- State->NodesDiscovered = 0;
- State->TotalLinks = 0;
- State->SysMpCap = MAX_NODES;
- State->Nb->IsExceededCapable (0, State, State->Nb);
- HardwareSocket = State->Nb->GetSocket (0, 0, State->Nb);
- ModuleType = 0;
- Module = 0;
- State->Nb->GetModuleInfo (0, &ModuleType, &Module, State->Nb);
- // No predecessor info for BSP, so pass 0xFF for those parameters.
- State->HtInterface->SetNodeToSocketMap (0xFF, 0xFF, 0xFF, 0, HardwareSocket, Module, State);
-
- // Initialize system state data structures
- for (i = 0; i < MAX_NODES; i++) {
- State->Fabric->SysDegree[i] = 0;
- for (j = 0; j < MAX_NODES; j++) {
- State->Fabric->SysMatrix[i][j] = 0;
- }
- }
-
- //
- // Call the coherent init features
- //
-
- // Discovery
- State->HtFeatures->CoherentDiscovery (State);
- State->HtInterface->PostMapToAp (State);
- // Topology matching and Routing
- AGESA_TESTPOINT (TpProcHtTopology, State->ConfigHandle);
- State->HtFeatures->LookupComputeAndLoadRoutingTables (State);
- State->HtFeatures->MakeHopCountTable (State);
-
- // UpdateCoreRanges requires the other maps to be initialized, and the node count set.
- FinalizeCoherentInit (State);
- UpdateCoreRanges (State);
- State->Fabric = NULL;
-}
-
-/***************************************************************************
- *** Non-coherent init code ***
- *** Algorithms ***
- ***************************************************************************/
-/*----------------------------------------------------------------------------------------*/
-/**
- * Initialize the non-coherent fabric.
- *
- * Begin with the Compat Link on the BSP, then find and initialize all other
- * non-coherent chains.
- *
- * @param[in] State our global state
- */
-VOID
-STATIC
-NcInit (
- IN STATE_DATA *State
- )
-{
- UINT8 Node;
- UINT8 Link;
- UINT8 CompatLink;
- FINAL_LINK_STATE FinalLinkState;
-
- // Initialize the southbridge chain.
- State->AutoBusCurrent = State->HtBlock->AutoBusStart;
- State->UsedCfgMapEntries = 0;
- CompatLink = State->Nb->ReadSouthbridgeLink (State->Nb);
- State->HtFeatures->ProcessLink (0, CompatLink, TRUE, State);
-
- // Find and initialize all other non-coherent chains.
- for (Node = 0; Node <= State->NodesDiscovered; Node++) {
- for (Link = 0; Link < State->Nb->MaxLinks; Link++) {
- // Skip the Link, if any of these tests indicate
- FinalLinkState = State->HtInterface->GetIgnoreLink (Node, Link, State->Nb->DefaultIgnoreLinkList, State);
- if (FinalLinkState == UNMATCHED) {
- if ( !((Node == 0) && (Link == CompatLink))) {
- if ( !(State->Nb->ReadTrueLinkFailStatus (Node, Link, State, State->Nb))) {
- if (State->Nb->VerifyLinkIsNonCoherent (Node, Link, State->Nb)) {
- State->HtFeatures->ProcessLink (Node, Link, FALSE, State);
- }
- }
- }
- }
- }
- }
-}
-
-/***************************************************************************
- *** Link Optimization ***
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Optimize Link Features.
- *
- * Based on Link capabilities, apply optimization rules to come up with the best
- * settings, including several external limit decision from the interface. This includes
- * handling of subLinks. Finally, after the port list data is updated, set the hardware
- * state for all Links.
- *
- * @param[in] State our global state
- */
-VOID
-STATIC
-LinkOptimization (
- IN STATE_DATA *State
- )
-{
- AGESA_TESTPOINT (TpProcHtOptGather, State->ConfigHandle);
- State->HtFeatures->GatherLinkData (State);
-
- AGESA_TESTPOINT (TpProcHtOptRegang, State->ConfigHandle);
- State->HtFeatures->RegangLinks (State);
-
- AGESA_TESTPOINT (TpProcHtOptLinks, State->ConfigHandle);
- State->HtFeatures->SelectOptimalWidthAndFrequency (State);
-
- // A likely cause of mixed Retry settings on coherent links is sublink ratio balancing
- // so check this after doing the sublinks.
- AGESA_TESTPOINT (TpProcHtOptSubLinks, State->ConfigHandle);
- State->HtFeatures->SubLinkRatioFixup (State);
- if (State->HtFeatures->IsCoherentRetryFixup (State)) {
- // Fix sublinks again within HT1 only frequencies, as ratios may be invalid again.
- State->HtFeatures->SubLinkRatioFixup (State);
- }
-
- AGESA_TESTPOINT (TpProcHtOptFinish, State->ConfigHandle);
- State->HtFeatures->SetLinkData (State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Handle system and performance tunings.
- *
- * Including traffic distribution, fifo and
- * buffer tuning that can't be placed in the register table,
- * and special config tunings.
- *
- * @param[in] State Total Nodes, port list data
- */
-VOID
-STATIC
-Tuning (
- IN STATE_DATA *State
- )
-{
- UINT8 Node;
-
- // See if traffic distribution can be done and do it if so.
- //
- AGESA_TESTPOINT (TpProcHtTrafficDist, State->ConfigHandle);
- State->HtFeatures->TrafficDistribution (State);
-
- // For each Node, invoke northbridge specific buffer tunings that can not be done in reg table.
- //
- AGESA_TESTPOINT (TpProcHtTuning, State->ConfigHandle);
- for (Node = 0; Node < (State->NodesDiscovered + 1); Node++) {
- State->Nb->BufferOptimizations (Node, State, State->Nb);
- }
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Initialize the Node and Socket maps for an AP Core.
- *
- * In each core's local heap, create a Node to Socket map and a Socket/Module to Node map.
- * The mapping is filled in by reading the AP Mailboxes from PCI config on each node.
- *
- * @param[in] State global state, input data
- *
- */
-VOID
-STATIC
-InitApMaps (
- IN STATE_DATA *State
- )
-{
- UINT8 Node;
- AP_MAIL_INFO NodeApMailBox;
-
- // There is no option to not have socket - node maps, if they aren't allocated that is a fatal bug.
- ASSERT (State->SocketDieToNodeMap != NULL);
- ASSERT (State->NodeToSocketDieMap != NULL);
-
- for (Node = 0; Node < State->Nb->GetNodeCount (State->Nb); Node++) {
- NodeApMailBox = State->Nb->RetrieveMailbox (Node, State->Nb);
- (*State->SocketDieToNodeMap)[NodeApMailBox.Fields.Socket][NodeApMailBox.Fields.Module].Node = Node;
- (*State->NodeToSocketDieMap)[Node].Socket = (UINT8)NodeApMailBox.Fields.Socket;
- (*State->NodeToSocketDieMap)[Node].Die = (UINT8)NodeApMailBox.Fields.Module;
- }
- // This requires the other maps to be initialized.
- UpdateCoreRanges (State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Is the currently running core the BSC?
- *
- * Determine whether the init steps for BSC or AP core should be run.
- *
- * @param[in] State global state, input data
- *
- * @retval TRUE This is the boot core.
- * @retval FALSE This is not the boot core.
- */
-BOOLEAN
-STATIC
-IsBootCore (
- IN STATE_DATA *State
- )
-{
- UINT64 Value;
-
- LibAmdMsrRead (APIC_Base, &Value, State->ConfigHandle);
-
- return ((BOOLEAN) (((UINT32) (Value & 0xFFFFFFFF) & ((UINT32)1 << APIC_Base_BSP)) != 0));
-}
-
-/***************************************************************************
- *** HT Initialize ***
- ***************************************************************************/
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * The top level external interface for Hypertransport Initialization.
- *
- * Create our initial internal state, initialize the coherent fabric,
- * initialize the non-coherent chains, and perform any required fabric tuning or
- * optimization.
- *
- * @param[in] StdHeader Opaque handle to standard config header
- * @param[in] PlatformConfiguration The platform configuration options.
- * @param[in] AmdHtInterface HT Interface structure.
- *
- * @retval AGESA_SUCCESS Only information events logged.
- * @retval AGESA_ALERT Sync Flood or CRC error logged.
- * @retval AGESA_WARNING Example: expected capability not found
- * @retval AGESA_ERROR logged events indicating some devices may not be available
- * @retval AGESA_FATAL Mixed Family or MP capability mismatch
- *
- */
-AGESA_STATUS
-AmdHtInitialize (
- IN AMD_CONFIG_PARAMS *StdHeader,
- IN PLATFORM_CONFIGURATION *PlatformConfiguration,
- IN AMD_HT_INTERFACE *AmdHtInterface
- )
-{
- STATE_DATA State;
- NORTHBRIDGE Nb;
- HT_FEATURES HtFeatures;
- HT_INTERFACE HtInterface;
- AGESA_STATUS DeallocateStatus;
- AP_MAIL_INFO ApMailboxInfo;
- UINT8 ApNode;
-
- ALLOCATE_HEAP_PARAMS AllocHeapParams;
-
- State.HtBlock = AmdHtInterface;
- State.ConfigHandle = StdHeader;
- State.PlatformConfiguration = PlatformConfiguration;
-
- // Get the current HT internal interface (to HtBlock data)
- NewHtInterface (&HtInterface, State.ConfigHandle);
- State.HtInterface = &HtInterface;
-
- // Get the current HT Feature Set
- NewHtFeatures (&HtFeatures, State.ConfigHandle);
- State.HtFeatures = &HtFeatures;
-
- // Initialize from static options
- State.IsUsingRecoveryHt = OptionHtConfiguration.IsUsingRecoveryHt;
- State.IsSetHtCrcFlood = OptionHtConfiguration.IsSetHtCrcFlood;
- State.IsUsingUnitIdClumping = OptionHtConfiguration.IsUsingUnitIdClumping;
-
- // Initialize for status and event output
- State.MaxEventClass = AGESA_SUCCESS;
-
- // Allocate permanent heap structs that are interfaces to other AGESA services.
- State.HtInterface->NewNodeAndSocketTables (&State);
-
- if (IsBootCore (&State)) {
- AGESA_TESTPOINT (TpProcHtEntry, State.ConfigHandle);
- // Allocate Bsp only interface heap structs.
- State.HtInterface->NewHopCountTable (&State);
- // Allocate heap for our temporary working space.
- AllocHeapParams.RequestedBufferSize = (sizeof (PORT_DESCRIPTOR) * (MAX_PLATFORM_LINKS * 2));
- AllocHeapParams.BufferHandle = HT_STATE_DATA_HANDLE;
- AllocHeapParams.Persist = HEAP_LOCAL_CACHE;
- if (HeapAllocateBuffer (&AllocHeapParams, State.ConfigHandle) == AGESA_SUCCESS) {
- State.PortList = (PORT_LIST)AllocHeapParams.BufferPtr;
- // Create the BSP's northbridge.
- NewNorthBridge (0, &State, &Nb);
- State.Nb = &Nb;
-
- CoherentInit (&State);
- NcInit (&State);
- LinkOptimization (&State);
- Tuning (&State);
-
- DeallocateStatus = HeapDeallocateBuffer (HT_STATE_DATA_HANDLE, State.ConfigHandle);
- ASSERT (DeallocateStatus == AGESA_SUCCESS);
- AGESA_TESTPOINT (TpProcHtDone, State.ConfigHandle);
- } else {
- ASSERT (FALSE);
- State.MaxEventClass = AGESA_ERROR;
- // Cannot Log entry due to heap allocate failed.
- }
- } else {
- // Do the AP HT Init, which produces Node and Socket Maps for the AP's use.
- AGESA_TESTPOINT (TpProcHtApMapEntry, State.ConfigHandle);
- GetApMailbox (&ApMailboxInfo.Info, State.ConfigHandle);
- ASSERT (ApMailboxInfo.Fields.Node < MAX_NODES);
- ApNode = (UINT8)ApMailboxInfo.Fields.Node;
- NewNorthBridge (ApNode, &State, &Nb);
- State.Nb = &Nb;
- InitApMaps (&State);
- AGESA_TESTPOINT (TpProcHtApMapDone, State.ConfigHandle);
- }
- return State.MaxEventClass;
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htNb.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htNb.c
deleted file mode 100644
index 428e897a8a..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htNb.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Construct a northbridge interface for a Node.
- *
- * Handle build options and run-time detection.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44846 $ @e \$Date: 2011-01-07 13:21:05 +0800 (Fri, 07 Jan 2011) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "OptionsHt.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htNb.h"
-#include "htNbCommonHardware.h"
-#include "CommonReturns.h"
-#include "cpuRegisters.h"
-#include "cpuFamilyTranslation.h"
-#include "cpuFamRegisters.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#include "Filecode.h"
-
-#define FILECODE PROC_HT_HTNB_FILECODE
-
-extern OPTION_HT_CONFIGURATION OptionHtConfiguration;
-
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS AND STRUCTURES
- *
- *----------------------------------------------------------------------------
- */
-/*----------------------------------------------------------------------------
- * PROTOTYPES OF LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/***************************************************************************
- *** FAMILY/NORTHBRIDGE SPECIFIC FUNCTIONS ***
- ***************************************************************************/
-
-
-/**
- * Initial construction data for no HT Northbridge.
- */
-CONST NORTHBRIDGE ROMDATA HtFam10NbNone =
-{
- 1,
- (PF_WRITE_ROUTING_TABLE)CommonVoid,
- (PF_WRITE_NODEID)CommonVoid,
- (PF_READ_DEFAULT_LINK)CommonReturnZero8,
- (PF_ENABLE_ROUTING_TABLES)CommonVoid,
- (PF_DISABLE_ROUTING_TABLES)CommonVoid,
- (PF_VERIFY_LINK_IS_COHERENT)CommonReturnFalse,
- (PF_READ_TOKEN)CommonReturnZero8,
- (PF_WRITE_TOKEN)CommonVoid,
- (PF_WRITE_FULL_ROUTING_TABLE)CommonVoid,
- (PF_IS_ILLEGAL_TYPE_MIX)CommonReturnFalse,
- (PF_IS_EXCEEDED_CAPABLE)CommonReturnFalse,
- (PF_STOP_LINK)CommonVoid,
- (PF_HANDLE_SPECIAL_LINK_CASE)CommonReturnFalse,
- (PF_HANDLE_SPECIAL_NODE_CASE)CommonReturnFalse,
- (PF_READ_SB_LINK)CommonReturnZero8,
- (PF_VERIFY_LINK_IS_NON_COHERENT)CommonReturnFalse,
- (PF_SET_CONFIG_ADDR_MAP)CommonVoid,
- (PF_NORTH_BRIDGE_FREQ_MASK)CommonReturnZero32,
- (PF_GATHER_LINK_FEATURES)CommonVoid,
- (PF_SET_LINK_REGANG)CommonVoid,
- (PF_SET_LINK_FREQUENCY)CommonVoid,
- (PF_SET_LINK_UNITID_CLUMPING)CommonVoid,
- (PF_WRITE_TRAFFIC_DISTRIBUTION)CommonVoid,
- (PF_WRITE_LINK_PAIR_DISTRIBUTION)CommonVoid,
- (PF_WRITE_VICTIM_DISTRIBUTION)CommonVoid,
- (PF_BUFFER_OPTIMIZATIONS)CommonVoid,
- (PF_GET_NUM_CORES_ON_NODE)CommonReturnZero8,
- (PF_SET_TOTAL_NODES_AND_CORES)CommonVoid,
- (PF_GET_NODE_COUNT)CommonReturnZero8,
- (PF_LIMIT_NODES)CommonVoid,
- (PF_READ_TRUE_LINK_FAIL_STATUS)CommonReturnFalse,
- (PF_GET_NEXT_LINK)CommonReturnZero32,
- (PF_GET_PACKAGE_LINK)CommonReturnZero8,
- (PF_MAKE_LINK_BASE)CommonReturnZero32,
- (PF_GET_MODULE_INFO)CommonVoid,
- (PF_POST_MAILBOX)CommonVoid,
- (PF_RETRIEVE_MAILBOX)CommonReturnZero32,
- (PF_GET_SOCKET)CommonReturnZero8,
- (PF_GET_ENABLED_COMPUTE_UNITS)CommonReturnZero8,
- (PF_GET_DUALCORE_COMPUTE_UNITS)CommonReturnZero8,
- 0,
- 0,
- 0,
- TRUE,
- TRUE,
- 0,
- NULL,
- 0,
- NULL,
- (PF_MAKE_KEY)CommonReturnZero64,
- NULL
-};
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Make a compatibility key.
- *
- * @HtNbMethod{::F_MAKE_KEY}
- *
- * Private routine to northbridge code.
- * Create a key which can be used to determine whether a Node is compatible with
- * the discovered configuration so far. Currently, that means the family,
- * extended family of the new Node are the same as the BSP's. Family specific
- * implementations can add whatever else is necessary.
- *
- * @param[in] Node the Node
- * @param[in] Nb this northbridge
- *
- * @return the key
- */
-UINT64
-MakeKey (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- )
-{
- CPU_LOGICAL_ID LogicalId;
- UINT32 RawCpuId;
- PCI_ADDR Reg;
-
- Reg.AddressValue = MAKE_SBDFO (MakePciSegmentFromNode (Node),
- MakePciBusFromNode (Node),
- MakePciDeviceFromNode (Node),
- CPU_NB_FUNC_03,
- REG_NB_CPUID_3XFC);
-
- LibAmdPciReadBits (Reg, 31, 0, &RawCpuId, Nb->ConfigHandle);
- GetLogicalIdFromCpuid (RawCpuId, &LogicalId, Nb->ConfigHandle);
- return LogicalId.Family;
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Construct a new northbridge.
- *
- * This routine encapsulates knowledge of how to tell significant differences between
- * families of supported northbridges and what routines can be used in common and
- * which are unique. A fully populated northbridge interface is provided by Nb.
- *
- * @param[in] Node create a northbridge interface for this Node.
- * @param[in] State global state
- * @param[out] Nb the caller's northbridge structure to initialize.
- */
-VOID
-NewNorthBridge (
- IN UINT8 Node,
- IN STATE_DATA *State,
- OUT NORTHBRIDGE *Nb
- )
-{
- CPU_LOGICAL_ID LogicalId;
- UINT64 Match;
- UINT32 RawCpuId;
- PCI_ADDR Reg;
- NORTHBRIDGE **InitializerInstance;
-
- // Start with enough of the key to identify the northbridge interface
- Reg.AddressValue = MAKE_SBDFO (MakePciSegmentFromNode (Node),
- MakePciBusFromNode (Node),
- MakePciDeviceFromNode (Node),
- CPU_NB_FUNC_03,
- REG_NB_CPUID_3XFC);
- LibAmdPciReadBits (Reg, 31, 0, &RawCpuId, State->ConfigHandle);
- IDS_HDT_CONSOLE (HT_TRACE, "AMD Processor at Node %d has raw CPUID=%x.\n", Node, RawCpuId);
- GetLogicalIdFromCpuid (RawCpuId, &LogicalId, State->ConfigHandle);
- Match = LogicalId.Family;
-
- // Test each Northbridge interface in turn looking for a match.
- // Use it to Init the Nb struct if a match is found.
- //
- ASSERT (OptionHtConfiguration.HtOptionFamilyNorthbridgeList != NULL);
- InitializerInstance = (NORTHBRIDGE **) (OptionHtConfiguration.HtOptionFamilyNorthbridgeList);
- while (*InitializerInstance != NULL) {
- if ((Match & (*InitializerInstance)->CompatibleKey) != 0) {
- LibAmdMemCopy ((VOID *)Nb, (VOID *)*InitializerInstance, (UINT32) sizeof (NORTHBRIDGE), State->ConfigHandle);
- break;
- }
- InitializerInstance++;
- }
- // There must be an available northbridge implementation.
- ASSERT (*InitializerInstance != NULL);
-
- // Set the config handle for passing to the library.
- Nb->ConfigHandle = State->ConfigHandle;
-}
-
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htNb.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htNb.h
deleted file mode 100644
index ef266e0315..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htNb.h
+++ /dev/null
@@ -1,1133 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * HT NorthBridge header
- *
- * Defines the interface to the HT NorthBridge module for use by other internal
- * HT modules. This is not a wrapper or external interface, "public" in the
- * comments below is used in the class definition style and refers to HT client
- * modules only ("private" being for use only by the HT NB module itself).
- *
- * It is expected that there will be multiple northbridge implementation files all
- * conforming to this common interface.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44846 $ @e \$Date: 2011-01-07 13:21:05 +0800 (Fri, 07 Jan 2011) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_NB_H_
-#define _HT_NB_H_
-
-/**
- * @page htimplnb HT Northbridge Implementation Guide
- *
- * The HT Northbridge provides access to the Northbridge hardware, in a manner that
- * isolates calling code from knowledge about the hardware implementation or which
- * features are supported in the current build. This is the mechanism in the HT code for
- * supporting new Family or Model northbridges, as well as the means for supporting
- * multiple northbridges in a single build or mixed revision northbridge sets.
- *
- * @par Adding a Method to the Northbridge
- *
- * To add a new method to the Northbridge, follow these steps.
- * <ul>
- * <li> Create a typedef for the Method with the correct parameters and return type.
- *
- * <ul>
- * <li> Name the method typedef (F_METHOD_NAME)(), where METHOD_NAME is the same
- * name as the method table item, but with "_"'s and UPPERCASE, rather than mixed case.
- * @n <tt> typedef VOID (F_METHOD_NAME)(); </tt> @n
- *
- * <li> Make a reference type for references to a method implementation:
- * @n <tt> /// Reference to a Method </tt>
- * @n <tt> typedef F_METHOD_NAME *PF_METHOD_NAME </tt> @n
- * </ul>
- *
- * <li> One of the parameters to @b all northbridge Methods is @b required to be a
- * reference to its current northbridge object. By convention, this is the
- * last parameter.
- *
- * <li> Provide a standard doxygen function preamble for the Method typedef. Begin the
- * detailed description by providing a reference to the method instances page by including
- * the lines below:
- * @code
- * *
- * * @HtNbInstances
- * *
- * @endcode
- * @note It is important to provide documentation for the method type, because the method may not
- * have an implementation in any families supported by the current package. @n
- *
- * <li> Add to the NORTHBRIDGE struct an item for the Method:
- * @n <tt> PF_METHOD_NAME MethodName; ///< Method: description. </tt> @n
- * </ul>
- *
- * @par Implementing an Instance of a Northbridge method.
- *
- * To implement an instance of a method for a specific feature follow these steps.
- *
- * - In appropriate files, implement the method with the return type and parameters
- * matching the Method typedef.
- * - If the Method implementation is common to all families, use the northbridge file
- * for the function area, for example, add a new coherent initialization support method to the
- * coherent northbridge file.
- * - If the Method implementation is unique to each supported northbridge, use the
- * family specific file for that function area (create it, if it doesn't already exist).
- * The family specific files have the same name as the common one suffixed with "FamNN",
- * or "FamNNRevX" if for a model or revision.
- *
- * - Name the function MethodName(). If Family specific, FamNNMethodName().
- *
- * - Create a doxygen function preamble for the method instance. Begin the detailed description with
- * an Implements command to reference the method type and add this instance to the Method Instances page.
- * @code
- * *
- * * @HtNbMethod{::F_METHOD_NAME}.
- * *
- * @endcode
- *
- * - To access other northbridge routines or data as part of the method implementation,
- * the function must use Nb->OtherMethod(). Do not directly access other northbridge
- * routines, because in the table there may be overrides or this routine may be shared by
- * multiple configurations.
- *
- * - Add the instance, or the correct family specific instance, to the NORTHBRIDGE instances
- * used by the northbridge constructor.
- *
- * - If a northbridge does not need an instance of the method use one of the CommonReturns from
- * CommonReturns.h with the same return type.
- *
- * @par Making common Northbridge Methods.
- *
- * In some cases, Northbridge methods can easily have a common implementation because the hardware
- * is very compatible or is even standard. In other cases, where processor family northbridges
- * differ in their implementation, it may be possible to provide a single, common method
- * implementation. This can be accomplished by adding Northbridge data members.
- *
- * For example, a bit position or bit field mask can be used to accommodate different bit placement or size.
- * Another example, a small table can be used to translate index values from a common set
- * to specific sets.
- *
- * The Northbridge Method Instance must use its NORTHBRIDGE reference parameter to access
- * private data members.
- *
- * @par Invoking HT Northbridge Methods.
- *
- * Each unique northbridge is constructed based on matching the current northbridge.
- * @n @code
- * NORTHBRIDGE Nb;
- * // Create the BSP's northbridge.
- * NewNorthBridge (0, State, &Nb);
- * State->Nb = &Nb;
- * @endcode
- *
- * The following example shows how to invoke a Northbridge method.
- * @n @code
- * State->Nb->MethodName (State->Nb);
- * @endcode
- *
- */
-
-/*----------------------------------------------------------------------------
- * Mixed (DEFINITIONS AND MACROS / TYPEDEFS, STRUCTURES, ENUMS)
- *
- *----------------------------------------------------------------------------
- */
-
-/*-----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *-----------------------------------------------------------------------------
- */
-
-/** Use a macro to convert a Node number to a PCI device. If some future port of
- * this code needs to, this can easily be replaced by the function declaration:
- * UINT8 makePCIDeviceFromNode(UINT8 Node);
- */
-#define MakePciDeviceFromNode(Node) \
- ((UINT8) (24 + (Node)))
-
-/** Use a macro to convert a Node number to a PCI bus. If some future port of
- * this code needs to, this can easily be replaced by the function declaration:
- * UINT8 MakePciBusFromNode(UINT8 Node);
- */
-#define MakePciBusFromNode(Node) \
- ((UINT8) (0))
-
-/** Use a macro to convert a Node number to a PCI Segment. If some future port of
- * this code needs to, this can easily be replaced by the function declaration:
- * UINT8 MakePciSegmentFromNode(UINT8 Node);
- */
-#define MakePciSegmentFromNode(Node) \
- ((UINT8) (0))
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS, STRUCTURES, ENUMS
- *
- *----------------------------------------------------------------------------
- */
-/**
- * Status for iterating through internal (if supported) and external links.
- */
-typedef enum {
- LinkIteratorEnd, ///< This is the end of all links, no valid link.
- LinkIteratorExternal, ///< The next link (the one we got on this call) is an external link.
- LinkIteratorInternal, ///< The next link (the one we got on this call) is an internal link.
- LinkIteratorMax ///< For bounds checking and limit only.
-} LINK_ITERATOR_STATUS;
-
-#define LINK_ITERATOR_BEGIN 0xFF
-
-/**
- * Write a temporary Route.
- *
- * @HtNbInstances
- *
- * @param[in] Node The node on which to set a temporary route
- * @param[in] Target A route to this node, which route table entry is to be set
- * @param[in] Link The link which routes to the target node
- * @param[in] Nb This northbridge
- */
-typedef VOID F_WRITE_ROUTING_TABLE (
- IN UINT8 Node,
- IN UINT8 Target,
- IN UINT8 Link,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_WRITE_ROUTING_TABLE *PF_WRITE_ROUTING_TABLE;
-
-/**
- * Modifies the NodeID register on the target Node
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will have its NodeID altered.
- * @param[in] NodeID the new value for NodeID
- * @param[in] Nb this northbridge
- */
-typedef VOID F_WRITE_NODEID (
- IN UINT8 Node,
- IN UINT8 NodeID,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_WRITE_NODEID *PF_WRITE_NODEID;
-
-/**
- * Read the Default Link
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will have its NodeID altered.
- * @param[in] Nb this northbridge
- *
- * @return The HyperTransport Link where the request to
- * read the default Link came from. Since this code is running on the BSP,
- * this should be the Link pointing back towards the BSP.
- */
-typedef UINT8 F_READ_DEFAULT_LINK (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_READ_DEFAULT_LINK *PF_READ_DEFAULT_LINK;
-
-/**
- * Turns routing tables on for a given Node
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will have it's routing tables enabled
- * @param[in] Nb this northbridge
- */
-typedef VOID F_ENABLE_ROUTING_TABLES (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_ENABLE_ROUTING_TABLES *PF_ENABLE_ROUTING_TABLES;
-
-/**
- * Turns routing tables off for a given Node
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will have it's routing tables disabled
- * @param[in] Nb this northbridge
- */
-typedef VOID F_DISABLE_ROUTING_TABLES (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_DISABLE_ROUTING_TABLES *PF_DISABLE_ROUTING_TABLES;
-
-/**
- * Verify that the Link is coherent, connected, and ready
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Link the Link on that Node to examine
- * @param[in] Nb this northbridge
- *
- * @retval TRUE The Link is coherent
- * @retval FALSE The Link has some other status
-*/
-typedef BOOLEAN F_VERIFY_LINK_IS_COHERENT (
- IN UINT8 Node,
- IN UINT8 Link,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_VERIFY_LINK_IS_COHERENT *PF_VERIFY_LINK_IS_COHERENT;
-
-/**
- * Read the token stored in the scratchpad register field.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Nb this northbridge
- *
- * @return the Token read from the Node
- */
-typedef UINT8 F_READ_TOKEN (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_READ_TOKEN *PF_READ_TOKEN;
-
-/**
- * Write the token stored in the scratchpad register
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that marked with token
- * @param[in] Value the token Value
- * @param[in] Nb this northbridge
- */
-typedef VOID F_WRITE_TOKEN (
- IN UINT8 Node,
- IN UINT8 Value,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_WRITE_TOKEN *PF_WRITE_TOKEN;
-
-/**
- * Full Routing Table Register initialization
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Target the Target Node for these routes
- * @param[in] ReqLink the Link for requests to Target
- * @param[in] RspLink the Link for responses to Target
- * @param[in] BroadcastLinks the broadcast Links
- * @param[in] Nb this northbridge
- */
-typedef VOID F_WRITE_FULL_ROUTING_TABLE (
- IN UINT8 Node,
- IN UINT8 Target,
- IN UINT8 ReqLink,
- IN UINT8 RspLink,
- IN UINT32 BroadcastLinks,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_WRITE_FULL_ROUTING_TABLE *PF_WRITE_FULL_ROUTING_TABLE;
-
-/**
- * Determine whether a Node is compatible with the discovered configuration so far.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node
- * @param[in] Nb this northbridge
- *
- * @retval TRUE the node is not compatible
- * @retval FALSE the node is compatible
- */
-typedef BOOLEAN F_IS_ILLEGAL_TYPE_MIX (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_IS_ILLEGAL_TYPE_MIX *PF_IS_ILLEGAL_TYPE_MIX;
-
-/**
- * Return whether the current configuration exceeds the capability
- * of the nodes detected.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node
- * @param[in] State sysMpCap (updated) and NodesDiscovered
- * @param[in] Nb this northbridge
- *
- * @retval TRUE system is not capable of current config.
- * @retval FALSE system is capable of current config.
- */
-typedef BOOLEAN F_IS_EXCEEDED_CAPABLE (
- IN UINT8 Node,
- IN STATE_DATA *State,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_IS_EXCEEDED_CAPABLE *PF_IS_EXCEEDED_CAPABLE;
-
-/**
- * Stop a link, so that it is isolated from a connected device.
- *
- * @HtNbInstances
- *
- * Use is for fatal incompatible configurations.
- * While XMIT and RCV off are HT standard, the use of these bits
- * is generally family specific.
- *
- * @param[in] Node the node to stop a link on.
- * @param[in] Link the link to stop.
- * @param[in] State access to special routine for writing link control register
- * @param[in] Nb this northbridge.
- */
-typedef VOID F_STOP_LINK (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_STOP_LINK *PF_STOP_LINK;
-
-/**
- * Fix (hopefully) exceptional conditions.
- *
- * @HtNbInstances
- *
- * This routine is expected to be unimplemented for most families.
- * Some configurations may require that links be processed specially to prevent
- * serious problems, like hangs. Check for that condition in this routine,
- * handle the link both for hardware and for adding to port list, if appropriate.
- * If this routine adds the link to port list or the link should not be added, return TRUE.
- *
- * @param[in] Node The Node which has this link
- * @param[in] Link The link to check for special conditions.
- * @param[in] State our global state.
- * @param[in] Nb this northbridge.
- *
- * @retval TRUE This link received special handling.
- * @retval FALSE This link was not handled specially, handle it normally.
- *
- */
-typedef BOOLEAN F_HANDLE_SPECIAL_LINK_CASE (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_HANDLE_SPECIAL_LINK_CASE *PF_HANDLE_SPECIAL_LINK_CASE;
-
-/**
- * Fix (hopefully) exceptional conditions.
- *
- * @HtNbInstances
- *
- * This routine is expected to be unimplemented for most families.
- * Some configurations may require that nodes be processed specially to prevent
- * serious problems, like hangs. Check for that condition in this routine,
- * handle the node both for hardware and for adding to port list, if appropriate.
- * If this routine adds the node to port list or the node should not be added, return TRUE.
- *
- * @param[in] Node The Node which need to be checked.
- * @param[in] Link The link to check for special conditions.
- * @param[in] State our global state.
- * @param[in] Nb this northbridge.
- *
- * @retval TRUE This node received special handling.
- * @retval FALSE This node was not handled specially, handle it normally.
- *
- */
-typedef BOOLEAN F_HANDLE_SPECIAL_NODE_CASE (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_HANDLE_SPECIAL_NODE_CASE *PF_HANDLE_SPECIAL_NODE_CASE;
-
-/**
- * Get Info about Module Type of this northbridge
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node
- * @param[out] ModuleType 0 for Single, 1 for Multi
- * @param[out] Module The module number of this node (0 if Single)
- * @param[in] Nb this northbridge
- *
- */
-typedef VOID F_GET_MODULE_INFO (
- IN UINT8 Node,
- OUT UINT8 *ModuleType,
- OUT UINT8 *Module,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_GET_MODULE_INFO *PF_GET_MODULE_INFO;
-
-/**
- * Post info to AP cores via a mailbox.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node
- * @param[in] ApMailInfo The info to post
- * @param[in] Nb this northbridge
- *
- */
-typedef VOID F_POST_MAILBOX (
- IN UINT8 Node,
- IN AP_MAILBOXES ApMailInfo,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_POST_MAILBOX *PF_POST_MAILBOX;
-
-/**
- * Retrieve info from a node's AP mailbox.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node
- * @param[in] ApMailInfo The info to post
- * @param[in] Nb this northbridge
- *
- */
-typedef AP_MAIL_INFO F_RETRIEVE_MAILBOX (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_RETRIEVE_MAILBOX *PF_RETRIEVE_MAILBOX;
-
-/**
- * Implement the hardware method of doing Socket Naming, by accessing this northbridge's Socket Id register.
- *
- * @HtNbInstances
- *
- * @param[in] Node The node for which we want the socket id.
- * @param[in] TempNode The temporary node id route where the node can be accessed.
- * @param[in] Nb Our Northbridge.
- *
- * @return The Socket Id
- */
-typedef UINT8 F_GET_SOCKET (
- IN UINT8 Node,
- IN UINT8 TempNode,
- IN NORTHBRIDGE *Nb
- );
-
-/// Reference to a method.
-typedef F_GET_SOCKET *PF_GET_SOCKET;
-
-/**
- * Get the enabled Compute Units.
- *
- * Processors which don't support compute units return zero.
- *
- * @HtNbInstances
- *
- * @param[in] Node The node for which we want the socket id.
- * @param[in] Nb Our Northbridge.
- *
- * @return The Socket Id
- */
-typedef UINT8 F_GET_ENABLED_COMPUTE_UNITS (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-
-/// Reference to a method.
-typedef F_GET_ENABLED_COMPUTE_UNITS *PF_GET_ENABLED_COMPUTE_UNITS;
-
-/**
- * Get the dual core Compute Units.
- *
- * Processors which don't support compute units return zero.
- *
- * @HtNbInstances
- *
- * @param[in] Node The node for which we want the socket id.
- * @param[in] Nb Our Northbridge.
- *
- * @return The Socket Id
- */
-typedef UINT8 F_GET_DUALCORE_COMPUTE_UNITS (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-
-/// Reference to a method.
-typedef F_GET_DUALCORE_COMPUTE_UNITS *PF_GET_DUALCORE_COMPUTE_UNITS;
-
-/**
- * Return the Link to the Southbridge
- *
- * @HtNbInstances
- *
- * @param[in] Nb this northbridge
- *
- * @return the Link to the southbridge
- */
-typedef UINT8 F_READ_SB_LINK (
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_READ_SB_LINK *PF_READ_SB_LINK;
-
-/**
- * Verify that the Link is non-coherent, connected, and ready
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Link the Link on that Node to examine
- * @param[in] Nb this northbridge
- *
- * @retval TRUE The Link is non-coherent.
- * @retval FALSE The Link has some other status
- */
-typedef BOOLEAN F_VERIFY_LINK_IS_NON_COHERENT (
- IN UINT8 Node,
- IN UINT8 Link,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_VERIFY_LINK_IS_NON_COHERENT *PF_VERIFY_LINK_IS_NON_COHERENT;
-
-/**
- * Enable config access to a non-coherent chain for the given bus range.
- *
- * @HtNbInstances
- *
- * @param[in] ConfigMapIndex the map entry to set
- * @param[in] SecBus The secondary bus number to use
- * @param[in] SubBus The subordinate bus number to use
- * @param[in] TargetNode The Node that shall be the recipient of the traffic
- * @param[in] TargetLink The Link that shall be the recipient of the traffic
- * @param[in] State our global state
- * @param[in] Nb this northbridge
- */
-typedef VOID F_SET_CONFIG_ADDR_MAP (
- IN UINT8 ConfigMapIndex,
- IN UINT8 SecBus,
- IN UINT8 SubBus,
- IN UINT8 TargetNode,
- IN UINT8 TargetLink,
- IN STATE_DATA *State,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_SET_CONFIG_ADDR_MAP *PF_SET_CONFIG_ADDR_MAP;
-
-/**
- * Northbridge specific Frequency limit.
- *
- * @HtNbInstances
- *
- * Return a mask that eliminates HT frequencies that cannot be used due to a slow
- * northbridge frequency.
- *
- * @param[in] Node Result could (later) be for a specific Node
- * @param[in] Interface Access to non-HT support functions.
- * @param[in] PlatformConfig Platform profile/build option config structure.
- * @param[in] Nb this northbridge
- *
- * @return Frequency mask
- */
-typedef UINT32 F_NORTH_BRIDGE_FREQ_MASK (
- IN UINT8 Node,
- IN HT_INTERFACE *Interface,
- IN PLATFORM_CONFIGURATION *PlatformConfig,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_NORTH_BRIDGE_FREQ_MASK *PF_NORTH_BRIDGE_FREQ_MASK;
-
-/**
- * Get Link features into system data structure.
- *
- * @HtNbInstances
- *
- * @param[in,out] ThisPort The PortList structure entry for this link's port
- * @param[in] Interface Access to non-HT support functions.
- * @param[in] PlatformConfig Platform profile/build option config structure.
- * @param[in] Nb this northbridge
- */
-typedef VOID F_GATHER_LINK_FEATURES (
- IN OUT PORT_DESCRIPTOR *ThisPort,
- IN HT_INTERFACE *Interface,
- IN PLATFORM_CONFIGURATION *PlatformConfig,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_GATHER_LINK_FEATURES *PF_GATHER_LINK_FEATURES;
-
-/**
- * Change the hardware state for all Links according to the now optimized data in the
- * port list data structure.
- *
- * @HtNbInstances
- *
- * @param[in] Node the node on which to regang a link
- * @param[in] Link the sublink 0 of the sublink pair to regang
- * @param[in] Nb this northbridge
- */
-typedef VOID F_SET_LINK_REGANG (
- IN UINT8 Node,
- IN UINT8 Link,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_SET_LINK_REGANG *PF_SET_LINK_REGANG;
-
-/**
- * Change the hardware state for all Links according to the now optimized data in the
- * port list data structure.
- *
- * @HtNbInstances
- *
- * @param[in] Node the node on which to set frequency for a link
- * @param[in] Link the link to set frequency
- * @param[in] Frequency the frequency to set
- * @param[in] Nb this northbridge
- */
-typedef VOID F_SET_LINK_FREQUENCY (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Frequency,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_SET_LINK_FREQUENCY *PF_SET_LINK_FREQUENCY;
-
-/**
- * Set the link's Unit Id Clumping enable.
- *
- * @HtNbInstances
- *
- * This applies to the host root of a non-coherent chain.
- *
- * @param[in] Node the node on which to set frequency for a link
- * @param[in] Link the link to set frequency
- * @param[in] ClumpingEnables the unit id clumping enables to set
- * @param[in] Nb this northbridge
- */
-typedef VOID F_SET_LINK_UNITID_CLUMPING (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT32 ClumpingEnables,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_SET_LINK_UNITID_CLUMPING *PF_SET_LINK_UNITID_CLUMPING;
-
-/**
- * Set the traffic distribution register for the Links provided.
- *
- * @HtNbInstances
- *
- * @param[in] Links01 coherent Links from Node 0 to 1
- * @param[in] Links10 coherent Links from Node 1 to 0
- * @param[in] Nb this northbridge
- */
-typedef VOID F_WRITE_TRAFFIC_DISTRIBUTION (
- IN UINT32 Links01,
- IN UINT32 Links10,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_WRITE_TRAFFIC_DISTRIBUTION *PF_WRITE_TRAFFIC_DISTRIBUTION;
-
-/**
- * Set the traffic distribution register for the Links provided.
- *
- * @HtNbInstances
- *
- * @param[in] NodeA Source Node from Node A To Node B and DstNode from Node A To Node B
- * @param[in] NodeB Source Node from Node B To Node A and DstNode from Node A To Node B
- * @param[in] VictimedLinkFromNodeAToNodeB Victimed Link from Node A To Node B
- * @param[in] VictimedLinkFromNodeBToNodeA Victimed Link from Node B To Node A
- * @param[in] Nb this northbridge
- */
-typedef VOID F_WRITE_VICTIM_DISTRIBUTION (
- IN UINT8 NodeA,
- IN UINT8 NodeB,
- IN UINT32 VictimedLinkFromNodeAToNodeB,
- IN UINT32 VictimedLinkFromNodeBToNodeA,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_WRITE_VICTIM_DISTRIBUTION *PF_WRITE_VICTIM_DISTRIBUTION;
-
-/**
- * Write a link pair to the link pair distribution and fixups.
- *
- * @HtNbInstances
- *
- * @param[in] Node Set the pair on this node
- * @param[in] ConnectedNode The Node to which this link pair directly connects.
- * @param[in] Pair Using this pair set in the register
- * @param[in] Asymmetric True if different widths
- * @param[in] MasterLink Set this as the master link and in the route
- * @param[in] AlternateLink Set this as the alternate link
- * @param[in] Nb this northbridge
- *
- */
-typedef VOID F_WRITE_LINK_PAIR_DISTRIBUTION (
- IN UINT8 Node,
- IN UINT8 ConnectedNode,
- IN UINT8 Pair,
- IN BOOLEAN Asymmetric,
- IN UINT8 MasterLink,
- IN UINT8 AlternateLink,
- IN NORTHBRIDGE *Nb
- );
-/// Pointer to method WriteLinkPairDistribution
-typedef F_WRITE_LINK_PAIR_DISTRIBUTION *PF_WRITE_LINK_PAIR_DISTRIBUTION;
-
-/**
- * Family specific tunings.
- *
- * @HtNbInstances
- *
- * Buffer tunings are inherently northbridge specific. Check for specific configs
- * which require adjustments and apply any standard workarounds to this Node.
- *
- * @param[in] Node the Node to tune
- * @param[in] State global state
- * @param[in] Nb this northbridge
- */
-typedef VOID F_BUFFER_OPTIMIZATIONS (
- IN UINT8 Node,
- IN STATE_DATA *State,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_BUFFER_OPTIMIZATIONS *PF_BUFFER_OPTIMIZATIONS;
-
-/**
- * Return the number of cores (1 based count) on Node.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Nb this northbridge
- *
- * @return the number of cores
- */
-typedef UINT8 F_GET_NUM_CORES_ON_NODE (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_GET_NUM_CORES_ON_NODE *PF_GET_NUM_CORES_ON_NODE;
-
-/**
- * Write the total number of cores and Nodes to the Node
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] TotalNodes the total number of Nodes
- * @param[in] TotalCores the total number of cores
- * @param[in] Nb this northbridge
- */
-typedef VOID F_SET_TOTAL_NODES_AND_CORES (
- IN UINT8 Node,
- IN UINT8 TotalNodes,
- IN UINT8 TotalCores,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_SET_TOTAL_NODES_AND_CORES *PF_SET_TOTAL_NODES_AND_CORES;
-
-/**
- * Get the Count of Nodes in the system.
- *
- * @HtNbInstances
- *
- * @param[in] Nb This Northbridge.
- *
- * @return The Count (1 based) of Nodes in the system.
- */
-typedef UINT8 F_GET_NODE_COUNT (
- IN NORTHBRIDGE *Nb
- );
-
-/// Reference to a method.
-typedef F_GET_NODE_COUNT *PF_GET_NODE_COUNT;
-
-/**
- * Limit coherent config accesses to cpus as indicated by Nodecnt.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Nb this northbridge
- */
-typedef VOID F_LIMIT_NODES (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_LIMIT_NODES *PF_LIMIT_NODES;
-
-/**
- * Return the LinkFailed status AFTER an attempt is made to clear the bit.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node that will be examined
- * @param[in] Link the Link on that Node to examine
- * @param[in] State access to call back routine
- * @param[in] Nb this northbridge
- *
- * @retval TRUE the Link is not connected or has hard error
- * @retval FALSE the Link is connected
- */
-typedef BOOLEAN F_READ_TRUE_LINK_FAIL_STATUS (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_READ_TRUE_LINK_FAIL_STATUS *PF_READ_TRUE_LINK_FAIL_STATUS;
-
-/**
- * Get the next link for iterating over the links on a node in the correct order.
- *
- * @HtNbInstances
- *
- * @param[in] Node The node on which to iterate links.
- * @param[in,out] Link IN: the current iteration context, OUT: the next link.
- * @param[in] Nb This Northbridge, access to config pointer.
- *
- * @retval LinkIteratorEnd There is no next link (Link is back to BEGIN).
- * @retval LinkIteratorExternal The next Link is an external link.
- * @retval LinkIteratorInternal The next Link is an internal link.
- */
-typedef LINK_ITERATOR_STATUS F_GET_NEXT_LINK (
- IN UINT8 Node,
- IN OUT UINT8 *Link,
- IN NORTHBRIDGE *Nb
- );
-/// Pointer to method GetNextLink
-typedef F_GET_NEXT_LINK *PF_GET_NEXT_LINK;
-
-/**
- * Get the Package Link number, given the node and real link number.
- *
- * @HtNbInstances
- *
- * @param[in] Node the node which has this link
- * @param[in] Link the link on that node
- * @param[in] Nb this northbridge
- *
- * @return the Package Link
- *
- */
-typedef UINT8 F_GET_PACKAGE_LINK (
- IN UINT8 Node,
- IN UINT8 Link,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method
-typedef F_GET_PACKAGE_LINK *PF_GET_PACKAGE_LINK;
-
-/**
- * Return the HT Host capability base PCI config address for a Link.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node this Link is on
- * @param[in] Link the Link
- * @param[in] Nb this northbridge
- *
- * @return the pci config address
- */
-typedef PCI_ADDR F_MAKE_LINK_BASE (
- IN UINT8 Node,
- IN UINT8 Link,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_MAKE_LINK_BASE *PF_MAKE_LINK_BASE;
-
-/**
- * Make a compatibility key.
- *
- * @HtNbInstances
- *
- * @param[in] Node the Node
- * @param[in] Nb this northbridge
- *
- * @return the key
- */
-typedef UINT64 F_MAKE_KEY (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-/// Reference to a method.
-typedef F_MAKE_KEY *PF_MAKE_KEY;
-
-/**
- * The northbridge interface.
- *
- * Abstract the hardware implementation of the processor northbridge. Feature code does
- * not need to be tailored to specific families. Also, more than a single family (or
- * model in some cases) can be supported at once. Multiple family support can be for
- * mixed revisions or for incompatible revisions where only one is used at a time.
- *
- * The northbridge object contains both HT component public and northbridge private
- * members. These sets are grouped together. Within each group, members are grouped
- * according to the function area they support.
- *
- */
-struct _NORTHBRIDGE { // See forward declaration in HtFeats.h
- /* Public data, clients of northbridge can access */
- UINT8 MaxLinks; /**< The maximum number of Links implemented by the northbridge */
-
- /* Public Interfaces for northbridge clients, coherent init*/
- PF_WRITE_ROUTING_TABLE WriteRoutingTable; /**< Method: Write a Temporary route for discovery */
- PF_WRITE_NODEID WriteNodeID; /**< Method: Assign a Node ID*/
- PF_READ_DEFAULT_LINK ReadDefaultLink; /**< Method: Which link are we connected to on a remote node? */
- PF_ENABLE_ROUTING_TABLES EnableRoutingTables; /**< Method: Make the routing table active */
- PF_DISABLE_ROUTING_TABLES DisableRoutingTables; /**< Method: Put a node back in discoverable state (deflnk) */
- PF_VERIFY_LINK_IS_COHERENT VerifyLinkIsCoherent; /**< Method: is a link connected and coherent? */
- PF_READ_TOKEN ReadToken; /**< Method: Read the enumeration token from a node */
- PF_WRITE_TOKEN WriteToken; /**< Method: Assign an enumeration token to a node */
- PF_WRITE_FULL_ROUTING_TABLE WriteFullRoutingTable; /**< Method: Set a complete routing table entry on a node */
- PF_IS_ILLEGAL_TYPE_MIX IsIllegalTypeMix; /**< Method: Is this node compatible with the system */
- PF_IS_EXCEEDED_CAPABLE IsExceededCapable; /**< Method: Is this node capable of working in this system */
- PF_STOP_LINK StopLink; /**< Method: stop a link which must be unused */
- PF_HANDLE_SPECIAL_LINK_CASE HandleSpecialLinkCase; /**< Method: Fix broken configuration designs */
- PF_HANDLE_SPECIAL_NODE_CASE HandleSpecialNodeCase; /**< Method: Fix broken configuration designs */
-
- /* Public Interfaces for northbridge clients, noncoherent init */
- PF_READ_SB_LINK ReadSouthbridgeLink; /**< Method: Which link goes to the southbridge? */
- PF_VERIFY_LINK_IS_NON_COHERENT VerifyLinkIsNonCoherent; /**< Method: is a link connected and non-coherent? */
- PF_SET_CONFIG_ADDR_MAP SetConfigAddrMap; /**< Method: Add a non-coherent chain to the PCI Config Bus Address Map */
-
- /* Public Interfaces for northbridge clients, Optimization */
- PF_NORTH_BRIDGE_FREQ_MASK NorthBridgeFreqMask; /**< Method: Check for frequency limits other than HT */
- PF_GATHER_LINK_FEATURES GatherLinkFeatures; /**< Method: Get frequency and link features */
- PF_SET_LINK_REGANG SetLinkRegang; /**< Method: Set a Link to regang */
- PF_SET_LINK_FREQUENCY SetLinkFrequency; /**< Method: Set the link Frequency */
- PF_SET_LINK_UNITID_CLUMPING SetLinkUnitIdClumping; /**< Method: Set the link's Unit Id Clumping register */
-
- /* Public Interfaces for northbridge clients, System and performance Tuning. */
- PF_WRITE_TRAFFIC_DISTRIBUTION WriteTrafficDistribution; /**< Method: traffic distribution setting */
- PF_WRITE_LINK_PAIR_DISTRIBUTION WriteLinkPairDistribution; /**< Method: Link Pair setting and fix up */
- PF_WRITE_VICTIM_DISTRIBUTION WriteVictimDistribution; /**< Method: victim distribution setting */
- PF_BUFFER_OPTIMIZATIONS BufferOptimizations; /**< Method: system tunings which can not be
- * done using register table */
-
- /* Public Interfaces for northbridge clients, utility routines */
- PF_GET_NUM_CORES_ON_NODE GetNumCoresOnNode; /**< Method: Count cores */
- PF_SET_TOTAL_NODES_AND_CORES SetTotalNodesAndCores; /**< Method: Set Node and Core counts */
- PF_GET_NODE_COUNT GetNodeCount; /**< Method: Get the Count (1 based) of Nodes in the system. */
- PF_LIMIT_NODES LimitNodes; /**< Method: Set the Limit Config Space feature */
- PF_READ_TRUE_LINK_FAIL_STATUS ReadTrueLinkFailStatus; /**< Method: Get Fault status and connectivity of a link */
- PF_GET_NEXT_LINK GetNextLink; /**< Method: Iterate over a node's Internal, then External links. */
- PF_GET_PACKAGE_LINK GetPackageLink; /**< Method: the package link corresponding to a node's link */
- PF_MAKE_LINK_BASE MakeLinkBase; /**< Method: Provide the PCI Config Base register offset of a CPU link */
- PF_GET_MODULE_INFO GetModuleInfo; /**< Method: Get Module Type and internal Module number */
- PF_POST_MAILBOX PostMailbox; /**< Method: Post info to the mailbox register */
- PF_RETRIEVE_MAILBOX RetrieveMailbox; /**< Method: Retrieve info from the mailbox register */
- PF_GET_SOCKET GetSocket; /**< Method: Get a node's Socket, using the hardware naming method. */
- PF_GET_ENABLED_COMPUTE_UNITS GetEnabledComputeUnits; /**< Method: Get the Enabled Compute Units */
- PF_GET_DUALCORE_COMPUTE_UNITS GetDualCoreComputeUnits; /**< Method: Get which Compute Units have two cores. */
-
- /* Private Data for northbridge implementation use only */
- UINT32 SelfRouteRequestMask; /**< Bit pattern for route request to self in routing table register */
- UINT32 SelfRouteResponseMask; /**< Bit pattern for route response to self in routing table register */
- UINT8 BroadcastSelfBit; /**< Bit offset of broadcast self bit in routing table register */
- BOOLEAN IsOrderBSPCoresByNode; /**< This processor orders Cores by Node id on the BSP, if TRUE. */
- BOOLEAN IsOrderCoresByModule; /**< Processors other than the BSP order Cores by Module, if TRUE. */
- UINT64 CompatibleKey; /**< Used for checking compatibility of northbridges in the system */
- PACKAGE_HTLINK_MAP PackageLinkMap; /**< Tell GetPackageLink() how to assign link names */
- UINT32 CoreFrequency; /**< Cache the northbridge core frequency, so repeated interface calls are avoided.
- * A value of zero, means no value yet. */
- IGNORE_LINK *DefaultIgnoreLinkList; /**< After processing the user interface ignore link, process this list. */
-
- /* Private Interfaces for northbridge implementation. */
- PF_MAKE_KEY MakeKey; /**< Method: make the compatibility key for this node */
-
- /** Config Pointer, opaque handle for passing to lib */
- VOID *ConfigHandle;
-};
-
-/*----------------------------------------------------------------------------
- * FUNCTIONS PROTOTYPE
- *
- *----------------------------------------------------------------------------
- */
-/**
- * Make a compatibility key.
- *
- */
-UINT64
-MakeKey (
- IN UINT8 Node,
- IN NORTHBRIDGE *Nb
- );
-
-VOID
-NewNorthBridge (
- IN UINT8 Node,
- IN STATE_DATA *State,
- OUT NORTHBRIDGE *Nb
- );
-
-#endif /* _HT_NB_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htNbCommonHardware.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htNbCommonHardware.h
deleted file mode 100644
index 24acf8ff55..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htNbCommonHardware.h
+++ /dev/null
@@ -1,122 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Northbridge hardware definitions for Family 10h.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-#ifndef _HT_NB_HARDWARE_FAM10_H_
-#define _HT_NB_HARDWARE_FAM10_H_
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-
-/* CPU Northbridge Functions */
-#define CPU_HTNB_FUNC_00 0
-#define CPU_HTNB_FUNC_04 4
-#define CPU_ADDR_FUNC_01 1
-#define CPU_NB_FUNC_03 3
-#define CPU_NB_FUNC_05 5
-
-/* Function 0 registers */
-#define REG_ROUTE0_0X40 0x40
-#define REG_ROUTE1_0X44 0x44
-#define REG_NODE_ID_0X60 0x60
-#define REG_UNIT_ID_0X64 0x64
-#define REG_LINK_TRANS_CONTROL_0X68 0x68
-#define REG_LINK_INIT_CONTROL_0X6C 0x6C
-#define REG_HT_CAP_BASE_0X80 0x80
-#define REG_HT_LINK_CLUMPING0_0X110 0x110
-#define REG_HT_LINK_RETRY0_0X130 0x130
-#define REG_HT_EXTENDED_NODE_ID_F0X160 0x160
-#define HTREG_NODE_CPUCNT_4_0 0x1F
-#define HTREG_EXTNODE_CPUCNT_7_5 0xE0
-#define REG_HT_TRAFFIC_DIST_0X164 0x164
-#define REG_LINK_GLOBAL_EXT_CONTROL_0x16C 0x16C
-#define REG_HT_LINK_EXT_CONTROL0_0X170 0x170
-#define REG_HT_LINK_INITIALIZATION_0X1A0 0x1A0
-#define PAIR_SELECT_OFFSET 8
-#define REG_HT_LINK_PAIR_DIST_0X1E0 0x1E0
-
-/* Function 1 registers */
-#define REG_ADDR_CONFIG_MAP0_1XE0 0xE0
-#define CPU_ADDR_NUM_CONFIG_MAPS 4
-
-/* Function 3 registers */
-#define REG_NB_SRI_XBAR_BUF_3X70 0x70
-#define REG_NB_MCT_XBAR_BUF_3X78 0x78
-#define REG_NB_FIFOPTR_3XDC 0xDC
-#define REG_NB_CAPABILITY_3XE8 0xE8
-#define REG_NB_CPUID_3XFC 0xFC
-#define REG_NB_LINK_XCS_TOKEN0_3X148 0x148
-#define REG_NB_MCA_LINK_THRESHOLD_3X168 0x168
-#define REG_NB_MCA_L3_THRESHOLD_3X170 0x170
-#define REG_NB_DOWNCORE_3X190 0x190
-#define REG_NB_SBI_CONTROL_3X1E4 0x1E4
-
-/* Function 4 registers */
-
-/* Function 5 registers */
-#define REG_NB_COMPUTE_UNIT_5X80 0x80
-#define REG_NB_CAPABILITY_2_5X84 0x84
-
-
-/*----------------------------------------------------------------------------
- * TYPEDEFS AND STRUCTURES
- *
- *----------------------------------------------------------------------------
- */
-
-
-/*----------------------------------------------------------------------------
- * PROTOTYPES OF LOCAL FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-#endif /* _HT_NB_HARDWARE_FAM10_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.c b/src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.c
deleted file mode 100644
index 696f3f6184..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.c
+++ /dev/null
@@ -1,669 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Code for detailed notification of events and status.
- *
- * Routines for logging and reporting details and summary status.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- *****************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- * ***************************************************************************
- *
- */
-
-/*
- *----------------------------------------------------------------------------
- * MODULES USED
- *
- *----------------------------------------------------------------------------
- */
-
-
-
-#include "AGESA.h"
-#include "amdlib.h"
-#include "Ids.h"
-#include "Topology.h"
-#include "htFeat.h"
-#include "htNotify.h"
-#include "GeneralServices.h"
-#include "Filecode.h"
-CODE_GROUP (G1_PEICC)
-RDATA_GROUP (G1_PEICC)
-
-#define FILECODE PROC_HT_HTNOTIFY_FILECODE
-/*----------------------------------------------------------------------------
- * DEFINITIONS AND MACROS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------
- * EXPORTED FUNCTIONS
- *
- *----------------------------------------------------------------------------
- */
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * Log an event.
- *
- * Errors, events, faults, warnings, and useful information are provided by
- * calling this routine as often as necessary, once for each notification.
- * @sa AGESA.h for class, and event definitions.
- * @sa htNotify.h for event data definitions.
- *
- * @param[in] EvtClass What level event is this
- * @param[in] Event A unique ID of this event
- * @param[in] EventData useful data associated with the event.
- * @param[in] State the log area and remaining free space
- */
-VOID
-STATIC
-setEventNotify (
- IN AGESA_STATUS EvtClass,
- IN UINT32 Event,
- IN CONST UINT8 *EventData,
- IN STATE_DATA *State
- )
-{
- UINT32 DataParam[NUMBER_OF_EVENT_DATA_PARAMS];
-
- // Remember the highest event class notified, that becomes our return code.
- if (State->MaxEventClass < EvtClass) {
- State->MaxEventClass = EvtClass;
- }
-
- // Copy the event data to the log data
- LibAmdMemCopy (
- DataParam,
- (VOID *)EventData,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- // Log the event
- PutEventLog (
- EvtClass,
- Event,
- DataParam[0],
- DataParam[1],
- DataParam[2],
- DataParam[3],
- State->ConfigHandle
- );
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_HW_SYNCFLOOD
- *
- * @param[in] Node The node on which the fault is reported
- * @param[in] Link The link from that node
- * @param[in] State our State
- *
- */
-VOID
-NotifyAlertHwSyncFlood (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_HW_SYNCFLOOD Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- IDS_HDT_CONSOLE (HT_TRACE, "Sync Flood on Node %d Link %d.\n", Node, Link);
- Evt.Node = Node;
- Evt.Link = Link;
- setEventNotify (AGESA_ALERT,
- HT_EVENT_HW_SYNCFLOOD,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_HW_HTCRC
- *
- * @param[in] Node The node on which the error is reported
- * @param[in] Link The link from that node
- * @param[in] LaneMask The lanes which had CRC
- * @param[in] State our State
- *
- */
-VOID
-NotifyAlertHwHtCrc (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 LaneMask,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_HW_HT_CRC Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- IDS_HDT_CONSOLE (HT_TRACE, "CRC Error on Node %d Link %d lanes %x.\n", Node, Link, LaneMask);
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.LaneMask = LaneMask;
- setEventNotify (AGESA_ALERT,
- HT_EVENT_HW_HTCRC,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_NCOH_BUS_MAX_EXCEED
- *
- * @param[in] Node The node on which the chain is located
- * @param[in] Link The link from that node
- * @param[in] Bus The bus number to assign
- * @param[in] State our State
- *
- */
-VOID
-NotifyErrorNcohBusMaxExceed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Bus,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_NCOH_BUS_MAX_EXCEED Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.Bus = Bus;
- setEventNotify (AGESA_ERROR,
- HT_EVENT_NCOH_BUS_MAX_EXCEED,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_NCOH_CFG_MAP_EXCEED
- *
- * @param[in] Node The node on which the chain is located
- * @param[in] Link The link from that node
- * @param[in] State our State
- *
- */
-VOID
-NotifyErrorNcohCfgMapExceed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_NCOH_CFG_MAP_EXCEED Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.Node = Node;
- Evt.Link = Link;
- setEventNotify (AGESA_ERROR,
- HT_EVENT_NCOH_CFG_MAP_EXCEED,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_NCOH_BUID_EXCEED
- *
- * @param[in] Node The node on which the chain is located
- * @param[in] Link The link from that node
- * @param[in] Depth Position on chain
- * @param[in] Id The Id which was attempted to assigned
- * @param[in] Units The number of units in this device
- * @param[in] State our State
- *
- */
-VOID
-NotifyErrorNcohBuidExceed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN UINT8 Id,
- IN UINT8 Units,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_NCOH_BUID_EXCEED Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.Depth = Depth;
- Evt.CurrentBuid = Id;
- Evt.UnitCount = Units;
- setEventNotify (AGESA_ERROR,
- HT_EVENT_NCOH_BUID_EXCEED,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_NCOH_DEVICE_FAILED
- *
- * @param[in] Node The node on which the chain is located
- * @param[in] Link The link from that node
- * @param[in] Depth Position on chain
- * @param[in] Id The Id which was attempted to assigned
- * @param[in] State our State
- *
- */
-VOID
-NotifyErrorNcohDeviceFailed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN UINT8 Id,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_NCOH_DEVICE_FAILED Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.Depth = Depth;
- Evt.AttemptedBuid = Id;
- setEventNotify (AGESA_ERROR,
- HT_EVENT_NCOH_DEVICE_FAILED,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_NCOH_AUTO_DEPTH
- *
- * @param[in] Node The node on which the chain is located
- * @param[in] Link The link from that node
- * @param[in] Depth Position on chain
- * @param[in] State our State
- *
- */
-VOID
-NotifyInfoNcohAutoDepth (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_NCOH_AUTO_DEPTH Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.Depth = Depth;
- setEventNotify (AGESA_SUCCESS,
- HT_EVENT_NCOH_AUTO_DEPTH,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_OPT_REQUIRED_CAP_RETRY
- *
- * @param[in] Node The node on which the chain is located
- * @param[in] Link The link from that node
- * @param[in] Depth Position on chain
- * @param[in] State our State
- *
- */
-VOID
-NotifyWarningOptRequiredCapRetry (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_OPT_REQUIRED_CAP Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.Depth = Depth;
- setEventNotify (AGESA_WARNING,
- HT_EVENT_OPT_REQUIRED_CAP_RETRY,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_OPT_REQUIRED_CAP_GEN3
- *
- * @param[in] Node The node on which the chain is located
- * @param[in] Link The link from that node
- * @param[in] Depth Position on chain
- * @param[in] State our State
- *
- */
-VOID
-NotifyWarningOptRequiredCapGen3 (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_OPT_REQUIRED_CAP Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.Depth = Depth;
- setEventNotify (AGESA_WARNING,
- HT_EVENT_OPT_REQUIRED_CAP_GEN3,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_OPT_UNUSED_LINKS
- *
- * @param[in] NodeA One of the nodes connected
- * @param[in] NodeB The other connected node
- * @param[in] LinkA its unusable link
- * @param[in] LinkB its unusable link
- * @param[in] State our State
- *
- */
-VOID
-NotifyWarningOptUnusedLinks (
- IN UINT32 NodeA,
- IN UINT32 LinkA,
- IN UINT32 NodeB,
- IN UINT32 LinkB,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_OPT_UNUSED_LINKS Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.NodeA = NodeA;
- Evt.LinkA = LinkA;
- Evt.NodeB = NodeB;
- Evt.LinkB = LinkB;
- setEventNotify (AGESA_WARNING,
- HT_EVENT_OPT_UNUSED_LINKS,
- (UINT8 *)&Evt, State);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_OPT_LINK_PAIR_EXCEED
- *
- * @param[in] NodeA One of the nodes connected
- * @param[in] NodeB The other connected node
- * @param[in] MasterLink its unusable Masterlink
- * @param[in] AltLink its unusable Alternate link
- * @param[in] State our State
- *
- */
-VOID
-NotifyWarningOptLinkPairExceed (
- IN UINT32 NodeA,
- IN UINT32 NodeB,
- IN UINT32 MasterLink,
- IN UINT32 AltLink,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_OPT_LINK_PAIR_EXCEED Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- Evt.NodeA = NodeA;
- Evt.MasterLink = MasterLink;
- Evt.NodeB = NodeB;
- Evt.AltLink = AltLink;
- setEventNotify (AGESA_WARNING,
- HT_EVENT_OPT_LINK_PAIR_EXCEED,
- (UINT8 *)&Evt, State);
-}
-
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_COH_NO_TOPOLOGY
- *
- * @param[in] Nodes The total number of nodes found so far
- * @param[in] State our State
- *
- */
-VOID
-NotifyErrorCohNoTopology (
- IN UINT8 Nodes,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_COH_NO_TOPOLOGY Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- IDS_HDT_CONSOLE (HT_TRACE, "No Topology Matched system with %d nodes found.\n", Nodes);
- Evt.TotalNodes = Nodes;
- setEventNotify (AGESA_ERROR,
- HT_EVENT_COH_NO_TOPOLOGY,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_COH_PROCESSOR_TYPE_MIX
- *
- * @param[in] Node The node from which a new node was discovered
- * @param[in] Link The link from that node
- * @param[in] Nodes The total number of nodes found so far
- * @param[in] State our State
- *
- */
-VOID
-NotifyFatalCohProcessorTypeMix (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Nodes,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_COH_PROCESSOR_TYPE_MIX Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- IDS_HDT_CONSOLE (HT_TRACE, "Illegal Processor Type Mix.\n");
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.TotalNodes = Nodes;
- setEventNotify (AGESA_CRITICAL,
- HT_EVENT_COH_PROCESSOR_TYPE_MIX,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_COH_NODE_DISCOVERED
- *
- * @param[in] Node Node from which a new node was discovered
- * @param[in] Link The link to that new node
- * @param[in] NewNode The new node's id
- * @param[in] TempRoute Temporarily, during discovery, the new node is accessed at this id.
- * @param[in] State our State
- *
- */
-VOID
-NotifyInfoCohNodeDiscovered (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 NewNode,
- IN UINT8 TempRoute,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_COH_NODE_DISCOVERED Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- IDS_HDT_CONSOLE (HT_TRACE, "Adding Node %d.\n", NewNode);
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.NewNode = NewNode;
- Evt.TempRoute = TempRoute;
- setEventNotify (AGESA_SUCCESS,
- HT_EVENT_COH_NODE_DISCOVERED,
- (UINT8 *)&Evt, State);
-}
-
-/*----------------------------------------------------------------------------------------*/
-/**
- * For event HT_EVENT_COH_MPCAP_MISMATCH
- *
- * @param[in] Node The node from which a new node was discovered
- * @param[in] Link The link from that node
- * @param[in] Cap The aggregate system MP Capability
- * @param[in] Nodes The total number of nodes found so far
- * @param[in] State our State
- *
- */
-VOID
-NotifyFatalCohMpCapMismatch (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Cap,
- IN UINT8 Nodes,
- IN STATE_DATA *State
- )
-{
- HT_EVENT_DATA_COH_MP_CAP_MISMATCH Evt;
- // Zero out the event data
- LibAmdMemFill (
- &Evt,
- 0,
- (sizeof(UINT32) * NUMBER_OF_EVENT_DATA_PARAMS),
- State->ConfigHandle
- );
-
- IDS_HDT_CONSOLE (HT_TRACE, "Mp Capability Mismatch.\n");
- Evt.Node = Node;
- Evt.Link = Link;
- Evt.SysMpCap = Cap;
- Evt.TotalNodes = Nodes;
- setEventNotify (AGESA_CRITICAL,
- HT_EVENT_COH_MPCAP_MISMATCH,
- (UINT8 *)&Evt, State);
-}
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.h
deleted file mode 100644
index c7c1ba4079..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htNotify.h
+++ /dev/null
@@ -1,297 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * HT Notify interface.
- *
- * This file provides internal interface to event and status
- * notification.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-
-#ifndef _HT_NOTIFY_H_
-#define _HT_NOTIFY_H_
-
-/*----------------------------------------------------------------------------------------*/
-/* Event specific event data definitions.
- * All structures must be 4 UINT32's in size, no more, no less.
- */
-
-/// For event ::HT_EVENT_HW_SYNCFLOOD
-typedef struct {
- UINT32 Node; ///< The Node on which observed
- UINT32 Link; ///< The Link on that Node which reported synch flood
- UINT32 Reserved1; ///< Reserved.
- UINT32 Reserved2; ///< Reserved.
-} HT_EVENT_DATA_HW_SYNCFLOOD;
-
-/// For event ::HT_EVENT_HW_HTCRC
-typedef struct {
- UINT32 Node; ///< The Node on which event is observed
- UINT32 Link; ///< The Link on that Node which reported CRC error
- UINT32 LaneMask; ///< The CRC lane mask for the Link
- UINT32 Reserved1; ///< Reserved.
-} HT_EVENT_DATA_HW_HT_CRC;
-
-/// For event ::HT_EVENT_NCOH_BUS_MAX_EXCEED
-typedef struct {
- UINT32 Node; ///< the Node with this non-coherent chain
- UINT32 Link; ///< the Link on that Node to this chain
- UINT32 Bus; ///< the current bus number
- UINT32 Reserved1; ///< Reserved.
-} HT_EVENT_DATA_NCOH_BUS_MAX_EXCEED;
-
-/// For event ::HT_EVENT_NCOH_CFG_MAP_EXCEED
-typedef struct {
- UINT32 Node; ///< the Node with this non-coherent chain
- UINT32 Link; ///< the Link on that Node to this chain
- UINT32 Reserved1; ///< Reserved.
- UINT32 Reserved2; ///< Reserved.
-} HT_EVENT_DATA_NCOH_CFG_MAP_EXCEED;
-
-/// For event ::HT_EVENT_NCOH_BUID_EXCEED
-typedef struct {
- UINT32 Node; ///< the Node with this non-coherent chain
- UINT32 Link; ///< the Link on that Node to this chain
- UINT32 Depth; ///< the position on the chain, zero is CPU host
- UINT16 CurrentBuid; ///< the current available BUID
- UINT16 UnitCount; ///< the number of ids which would be consumed by this device
-} HT_EVENT_DATA_NCOH_BUID_EXCEED;
-
-/// For event ::HT_EVENT_NCOH_DEVICE_FAILED
-typedef struct {
- UINT32 Node; ///< the Node with this non-coherent chain
- UINT32 Link; ///< the Link on that Node to this chain
- UINT32 Depth; ///< the position on the chain, zero is CPU host
- UINT32 AttemptedBuid; ///< the BUID we tried to assign to that device
-} HT_EVENT_DATA_NCOH_DEVICE_FAILED;
-
-/// For event ::HT_EVENT_NCOH_AUTO_DEPTH
-typedef struct {
- UINT32 Node; ///< the Node with this non-coherent chain
- UINT32 Link; ///< the Link on that Node to this chain
- UINT32 Depth; ///< the position on the chain of the last device, zero is CPU host
- UINT32 Reserved1; ///< Reserved.
-} HT_EVENT_DATA_NCOH_AUTO_DEPTH;
-
-/// For event ::HT_EVENT_OPT_REQUIRED_CAP_RETRY,
-/// ::HT_EVENT_OPT_REQUIRED_CAP_GEN3.
-typedef struct {
- UINT32 Node; ///< the Node with this non-coherent chain
- UINT32 Link; ///< the Link on that Node to this chain
- UINT32 Depth; ///< the position on the chain, zero is CPU host
- UINT32 Reserved1; ///< Reserved.
-} HT_EVENT_DATA_OPT_REQUIRED_CAP;
-
-/// For event ::HT_EVENT_OPT_UNUSED_LINKS
-typedef struct {
- UINT32 NodeA; ///< One of the nodes connected
- UINT32 LinkA; ///< its unusable link
- UINT32 NodeB; ///< The other connected node
- UINT32 LinkB; ///< its unusable link
-} HT_EVENT_DATA_OPT_UNUSED_LINKS;
-
-/// For event ::HT_EVENT_OPT_LINK_PAIR_EXCEED
-typedef struct {
- UINT32 NodeA; ///< One of the nodes connected
- UINT32 NodeB; ///< The other connected node
- UINT32 MasterLink; ///< NodeA's unusable Master link
- UINT32 AltLink; ///< NodeA's unusable Alternatelink
-} HT_EVENT_DATA_OPT_LINK_PAIR_EXCEED;
-
-/// For event ::HT_EVENT_COH_NO_TOPOLOGY.
-/// There is no routing for this system's topology.
-typedef struct {
- UINT32 TotalNodes; ///< the number of Nodes in the unmatched topology
- UINT32 Reserved1; ///< Reserved.
- UINT32 Reserved2; ///< Reserved.
- UINT32 Reserved3; ///< Reserved.
-} HT_EVENT_DATA_COH_NO_TOPOLOGY;
-
-/// For event ::HT_EVENT_COH_PROCESSOR_TYPE_MIX
-typedef struct {
- UINT32 Node; ///< the Node from which the incompatible family was found
- UINT32 Link; ///< the Link to the incompatible Node
- UINT32 TotalNodes; ///< the number of Nodes found at that point
- UINT32 Reserved1; ///< Reserved.
-} HT_EVENT_DATA_COH_PROCESSOR_TYPE_MIX;
-
-/// For event ::HT_EVENT_COH_NODE_DISCOVERED
-typedef struct {
- UINT32 Node; ///< the Node from which the new Node was found
- UINT32 Link; ///< the Link to the new Node
- UINT32 NewNode; ///< the Node id of the newly discovered Node
- UINT32 TempRoute; ///< the new Node is temporarily at this id
-} HT_EVENT_DATA_COH_NODE_DISCOVERED;
-
-/// For event ::HT_EVENT_COH_MPCAP_MISMATCH
-typedef struct {
- UINT32 Node; ///< the Node from which condition was observed
- UINT32 Link; ///< the Link on the current Node
- UINT32 SysMpCap; ///< the current aggregate system capability (the minimum found so far)
- UINT32 TotalNodes; ///< the number of Nodes found, before this was observed
-} HT_EVENT_DATA_COH_MP_CAP_MISMATCH;
-
-/*----------------------------------------------------------------------------------------*/
-/* Event specific Notify functions.
- */
-
-VOID
-NotifyAlertHwSyncFlood (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyAlertHwHtCrc (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 LaneMask,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyErrorNcohBusMaxExceed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Bus,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyErrorNcohCfgMapExceed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyErrorNcohBuidExceed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN UINT8 Id,
- IN UINT8 Units,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyErrorNcohDeviceFailed (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN UINT8 Id,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyInfoNcohAutoDepth (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyWarningOptRequiredCapRetry (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyWarningOptRequiredCapGen3 (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Depth,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyWarningOptUnusedLinks (
- IN UINT32 NodeA,
- IN UINT32 LinkA,
- IN UINT32 NodeB,
- IN UINT32 LinkB,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyWarningOptLinkPairExceed (
- IN UINT32 NodeA,
- IN UINT32 NodeB,
- IN UINT32 MasterLink,
- IN UINT32 AltLink,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyErrorCohNoTopology (
- IN UINT8 Nodes,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyFatalCohProcessorTypeMix (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Nodes,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyInfoCohNodeDiscovered (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 NewNode,
- IN UINT8 TempRoute,
- IN STATE_DATA *State
- );
-
-VOID
-NotifyFatalCohMpCapMismatch (
- IN UINT8 Node,
- IN UINT8 Link,
- IN UINT8 Cap,
- IN UINT8 Nodes,
- IN STATE_DATA *State
- );
-
-#endif /* _HT_NOTIFY_H_ */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htPage.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htPage.h
deleted file mode 100644
index a45aa406d6..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htPage.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Create outline and references for HyperTransport Component mainpage documentation.
- *
- * Design guides, maintenance guides, and general documentation, are
- * collected using this file onto the documentation mainpage.
- * This file contains doxygen comment blocks, only.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: Documentation
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
- ******************************************************************************
- *
- * Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- ******************************************************************************
- */
-
-/**
- * @page htmain HyperTransport Component Documentation
- *
- * Additional documentation for the HyperTransport component consists of
- *
- * - Member Cross References
- * - @subpage instanceshtnb "HT Northbridge Method Instances"
- * - Maintenance Guides:
- * - @subpage htimplintf "HT Internal Interface Implementation Guide"
- * - @subpage htimplfeat "HT Feature Implementation Guide"
- * - @subpage htimplnb "HT Northbridge Implementation Guide"
- * - add here >>>
- * - Design Guides:
- * - @subpage htgraphdesign "Graph Support Design"
- * - @subpage physicalsockethowto "How to Create a Physical System Socket Map"
- * - add here >>>
- *
- */
diff --git a/src/vendorcode/amd/agesa/f12/Proc/HT/htTopologies.h b/src/vendorcode/amd/agesa/f12/Proc/HT/htTopologies.h
deleted file mode 100644
index 440eb6c935..0000000000
--- a/src/vendorcode/amd/agesa/f12/Proc/HT/htTopologies.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * Provide selection of available topologies.
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project: AGESA
- * @e sub-project: HyperTransport
- * @e \$Revision: 44324 $ @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of Advanced Micro Devices, Inc. nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-* ***************************************************************************
-*
-*/
-#ifndef _HT_TOPOLOGIES_H_
-#define _HT_TOPOLOGIES_H_
-
-extern CONST UINT8 ROMDATA amdHtTopologySingleNode[];
-extern CONST UINT8 ROMDATA amdHtTopologyDualNode[];
-extern CONST UINT8 ROMDATA amdHtTopologyThreeLine[];
-extern CONST UINT8 ROMDATA amdHtTopologyTriangle[];
-extern CONST UINT8 ROMDATA amdHtTopologyFourLine[];
-extern CONST UINT8 ROMDATA amdHtTopologyFourStar[];
-extern CONST UINT8 ROMDATA amdHtTopologyFourDegenerate[];
-extern CONST UINT8 ROMDATA amdHtTopologyFourSquare[];
-extern CONST UINT8 ROMDATA amdHtTopologyFourKite[];
-extern CONST UINT8 ROMDATA amdHtTopologyFourFully[];
-extern CONST UINT8 ROMDATA amdHtTopologyFiveFully[];
-extern CONST UINT8 ROMDATA amdHtTopologyFiveTwistedLadder[];
-extern CONST UINT8 ROMDATA amdHtTopologySixFully[];
-extern CONST UINT8 ROMDATA amdHtTopologySixDoubloonLower[];
-extern CONST UINT8 ROMDATA amdHtTopologySixDoubloonUpper[];
-extern CONST UINT8 ROMDATA amdHtTopologySixTwistedLadder[];
-extern CONST UINT8 ROMDATA amdHtTopologySevenFully[];
-extern CONST UINT8 ROMDATA amdHtTopologySevenTwistedLadder[];
-extern CONST UINT8 ROMDATA amdHtTopologyEightFully[];
-extern CONST UINT8 ROMDATA amdHtTopologyEightDoubloon[];
-extern CONST UINT8 ROMDATA amdHtTopologyEightTwistedLadder[];
-extern CONST UINT8 ROMDATA amdHtTopologyEightStraightLadder[];
-extern CONST UINT8 ROMDATA amdHtTopologySixTwinTriangles[];
-extern CONST UINT8 ROMDATA amdHtTopologyEightTwinFullyFourWays[];
-
-#endif // _HT_TOPOLOGIES_H_