summaryrefslogtreecommitdiff
path: root/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family')
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.c72
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.esl126
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h660
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexConfig.c125
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexServices.c243
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePhyServices.c167
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePifServices.c120
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieWrapperServices.c631
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioComplexData.h241
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioDefinitions.h102
-rw-r--r--src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/PcieFamilyServices.h135
11 files changed, 2622 insertions, 0 deletions
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.c b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.c
new file mode 100644
index 0000000000..e23cc7c543
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.c
@@ -0,0 +1,72 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * PCIe ALIB
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 39275 $ @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 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.
+ *
+ * ***************************************************************************
+ *
+ */
+
+/*----------------------------------------------------------------------------------------
+ * M O D U L E S U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "Ids.h"
+#include "F14PcieAlibSsdt.h"
+#include "Filecode.h"
+#define FILECODE PROC_GNB_PCIE_FAMILY_0X14_F14PCIEALIB_FILECODE
+/*----------------------------------------------------------------------------------------
+ * D E F I N I T I O N S A N D M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+
+/*----------------------------------------------------------------------------------------
+ * T Y P E D E F S A N D S T R U C T U R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+
+/*----------------------------------------------------------------------------------------
+ * P R O T O T Y P E S O F L O C A L F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.esl b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.esl
new file mode 100644
index 0000000000..d33c341048
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlib.esl
@@ -0,0 +1,126 @@
+/**
+ * @file
+ *
+ * ALIB ASL library
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 31805 $ @e \$Date: 2010-05-21 17:58:16 -0700 (Fri, 21 May 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.
+ *
+ * ***************************************************************************
+ *
+ */
+
+DefinitionBlock (
+ "F14PcieAlibSsdt.aml",
+ "SSDT",
+ 2,
+ "AMD",
+ "ALIB",
+ 0x1
+ )
+{
+ Scope(\_SB) {
+
+ Name (varMaxPortIndexNumber, 6)
+
+ include ("PcieAlibCore.asl")
+ include ("PcieSmuLibV1.asl")
+ include ("PcieAlibPspp.asl")
+ include ("PcieAlibHotplug.asl")
+
+ /*----------------------------------------------------------------------------------------*/
+ /**
+ * Activate DPM state
+ *
+ * Arg0 - 1 - GEN1 2 - GEN2
+ * Arg1 - 0 (AC) 1 (DC)
+ */
+ Method (procNbLclkDpmActivate, 2, NotSerialized) {
+
+ Store (procSmuRcuRead (0x8490), Local0)
+ // Patch state only if at least one state is enable
+ if (LNotEqual (And (Local0, 0xF0), 0)) {
+ if (LEqual (Arg0, 2)) {
+ //If AC/DC, & Gen2 supported, activate state DPM0 and DPM2,
+ //set SMUx0B_x8490[LclkDpmValid[5, 7] = 1, set SMUx0B_x8490[LclkDpmValid[6]] = 0
+ //This is a battery ¡¥idle¡¦ state along with a ¡¥perf¡¦ state that will be programmed to the max LCLK achievable at the Gen2 VID
+ And (Local0, 0xFFFFFFA0, Local0)
+ Or (Local0, 0xA0, Local0)
+
+ } else {
+ if (LEqual (Arg1, 0)) {
+ //If AC, & if only Gen1 supported, activate state DPM0 and DPM1
+ //set SMUx0B_x8490[LclkDpmValid[6, 5]] = 1, set SMUx0B_x8490[LclkDpmValid[7]] = 0
+ And (Local0, 0xFFFFFF60, Local0)
+ Or (Local0, 0x60, Local0)
+ } else {
+ //If DC mode & Gen1 supported, activate only state DPM0
+ //set SMUx0B_x8490[LclkDpmValid[7, 6]] = 0, set SMUx0B_x8490[LclkDpmValid[5]] = 1
+ And (Local0, 0xFFFFFF20, Local0)
+ Or (Local0, 0x20, Local0)
+ }
+ }
+ procSmuRcuWrite (0x8490, Local0)
+ }
+ }
+
+ /*----------------------------------------------------------------------------------------*/
+ /**
+ * Power gate PCIe phy lanes (hotplug support)
+ *
+ * Arg0 - Start Lane ID
+ * Arg1 - End Lane ID
+ * Arg2 - Power ON(1) / OFF(0)
+ */
+ Method (procPcieLanePowerControl, 3, NotSerialized) {
+ // stub function
+ }
+
+ /*----------------------------------------------------------------------------------------*/
+ /**
+ * Read RCU register
+ *
+ * Arg0 - 1 - GEN1 2 - GEN2
+ *
+ */
+ Method (procPcieAdjustPll, 1, NotSerialized) {
+ //stub function
+ }
+
+ } //End of Scope(\_SB)
+} //End of DefinitionBlock
+
+
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h
new file mode 100644
index 0000000000..533521b4a3
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieAlibSsdt.h
@@ -0,0 +1,660 @@
+/**
+ * @file
+ *
+ * ALIB SSDT table
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e $Revision:$ @e $Date:$
+ *
+ */
+/*
+ *****************************************************************************
+ *
+ * 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 _F14PCIEALIBSSDT_H_
+#define _F14PCIEALIBSSDT_H_
+
+UINT8 AlibSsdt[] = {
+ 0x53, 0x53, 0x44, 0x54, 0xFA, 0x12, 0x00, 0x00,
+ 0x02, 0xC9, 0x41, 0x4D, 0x44, 0x00, 0x00, 0x00,
+ 0x41, 0x4C, 0x49, 0x42, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x4D, 0x53, 0x46, 0x54,
+ 0x00, 0x00, 0x00, 0x04, 0x10, 0x85, 0x2D, 0x01,
+ 0x5C, 0x5F, 0x53, 0x42, 0x5F, 0x08, 0x41, 0x30,
+ 0x30, 0x31, 0x0A, 0x06, 0x08, 0x41, 0x44, 0x30,
+ 0x31, 0x0C, 0x00, 0x00, 0x00, 0xE0, 0x06, 0x41,
+ 0x44, 0x30, 0x31, 0x41, 0x30, 0x39, 0x31, 0x08,
+ 0x41, 0x44, 0x30, 0x37, 0x12, 0x45, 0x06, 0x07,
+ 0x11, 0x0D, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x0D,
+ 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x11, 0x0D, 0x0A, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x11, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x11, 0x0D, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x0D,
+ 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x11, 0x0D, 0x0A, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x06, 0x41, 0x44, 0x30, 0x37, 0x41,
+ 0x30, 0x39, 0x32, 0x14, 0x41, 0x05, 0x41, 0x4C,
+ 0x49, 0x42, 0x02, 0xA0, 0x0B, 0x93, 0x68, 0x0A,
+ 0x01, 0xA4, 0x41, 0x30, 0x31, 0x38, 0x69, 0xA0,
+ 0x0B, 0x93, 0x68, 0x0A, 0x02, 0xA4, 0x41, 0x30,
+ 0x32, 0x31, 0x69, 0xA0, 0x0B, 0x93, 0x68, 0x0A,
+ 0x03, 0xA4, 0x41, 0x30, 0x33, 0x32, 0x69, 0xA0,
+ 0x0B, 0x93, 0x68, 0x0A, 0x04, 0xA4, 0x41, 0x30,
+ 0x36, 0x33, 0x69, 0xA0, 0x0A, 0x93, 0x68, 0x0A,
+ 0x05, 0xA4, 0x41, 0x30, 0x39, 0x33, 0xA0, 0x0B,
+ 0x93, 0x68, 0x0A, 0x06, 0xA4, 0x41, 0x30, 0x36,
+ 0x36, 0x69, 0xA4, 0x0A, 0x00, 0x14, 0x09, 0x41,
+ 0x30, 0x39, 0x33, 0x08, 0xA4, 0x0A, 0x00, 0x14,
+ 0x31, 0x41, 0x30, 0x33, 0x31, 0x02, 0x72, 0x41,
+ 0x30, 0x39, 0x31, 0x79, 0x68, 0x0A, 0x0C, 0x00,
+ 0x60, 0x72, 0x69, 0x60, 0x60, 0x5B, 0x80, 0x41,
+ 0x30, 0x39, 0x34, 0x00, 0x60, 0x0A, 0x04, 0x5B,
+ 0x81, 0x0B, 0x41, 0x30, 0x39, 0x34, 0x03, 0x41,
+ 0x30, 0x39, 0x35, 0x20, 0xA4, 0x41, 0x30, 0x39,
+ 0x35, 0x14, 0x32, 0x41, 0x30, 0x35, 0x39, 0x03,
+ 0x72, 0x41, 0x30, 0x39, 0x31, 0x79, 0x68, 0x0A,
+ 0x0C, 0x00, 0x60, 0x72, 0x69, 0x60, 0x60, 0x5B,
+ 0x80, 0x41, 0x30, 0x39, 0x34, 0x00, 0x60, 0x0A,
+ 0x04, 0x5B, 0x81, 0x0B, 0x41, 0x30, 0x39, 0x34,
+ 0x03, 0x41, 0x30, 0x39, 0x35, 0x20, 0x70, 0x6A,
+ 0x41, 0x30, 0x39, 0x35, 0x14, 0x1C, 0x41, 0x30,
+ 0x35, 0x35, 0x04, 0x70, 0x41, 0x30, 0x33, 0x31,
+ 0x68, 0x69, 0x60, 0x7D, 0x7B, 0x60, 0x6A, 0x00,
+ 0x6B, 0x60, 0x41, 0x30, 0x35, 0x39, 0x68, 0x69,
+ 0x60, 0x5B, 0x01, 0x41, 0x30, 0x39, 0x36, 0x00,
+ 0x14, 0x32, 0x41, 0x30, 0x35, 0x38, 0x02, 0x5B,
+ 0x23, 0x41, 0x30, 0x39, 0x36, 0xFF, 0xFF, 0x70,
+ 0x79, 0x72, 0x68, 0x0A, 0x02, 0x00, 0x0A, 0x03,
+ 0x00, 0x60, 0x41, 0x30, 0x35, 0x39, 0x60, 0x0A,
+ 0xE0, 0x69, 0x70, 0x41, 0x30, 0x33, 0x31, 0x60,
+ 0x0A, 0xE4, 0x60, 0x5B, 0x27, 0x41, 0x30, 0x39,
+ 0x36, 0xA4, 0x60, 0x14, 0x2F, 0x41, 0x30, 0x39,
+ 0x37, 0x03, 0x5B, 0x23, 0x41, 0x30, 0x39, 0x36,
+ 0xFF, 0xFF, 0x70, 0x79, 0x72, 0x68, 0x0A, 0x02,
+ 0x00, 0x0A, 0x03, 0x00, 0x60, 0x41, 0x30, 0x35,
+ 0x39, 0x60, 0x0A, 0xE0, 0x69, 0x41, 0x30, 0x35,
+ 0x39, 0x60, 0x0A, 0xE4, 0x6A, 0x5B, 0x27, 0x41,
+ 0x30, 0x39, 0x36, 0x14, 0x1C, 0x41, 0x30, 0x35,
+ 0x34, 0x04, 0x70, 0x41, 0x30, 0x35, 0x38, 0x68,
+ 0x69, 0x60, 0x7D, 0x7B, 0x60, 0x6A, 0x00, 0x6B,
+ 0x60, 0x41, 0x30, 0x39, 0x37, 0x68, 0x69, 0x60,
+ 0x5B, 0x01, 0x41, 0x30, 0x39, 0x38, 0x00, 0x14,
+ 0x29, 0x41, 0x30, 0x36, 0x31, 0x03, 0x5B, 0x23,
+ 0x41, 0x30, 0x39, 0x38, 0xFF, 0xFF, 0x41, 0x30,
+ 0x35, 0x39, 0x68, 0x69, 0x6A, 0x70, 0x41, 0x30,
+ 0x33, 0x31, 0x68, 0x72, 0x69, 0x0A, 0x04, 0x00,
+ 0x60, 0x5B, 0x27, 0x41, 0x30, 0x39, 0x38, 0xA4,
+ 0x60, 0x14, 0x26, 0x41, 0x30, 0x36, 0x32, 0x04,
+ 0x5B, 0x23, 0x41, 0x30, 0x39, 0x38, 0xFF, 0xFF,
+ 0x41, 0x30, 0x35, 0x39, 0x68, 0x69, 0x6A, 0x41,
+ 0x30, 0x35, 0x39, 0x68, 0x72, 0x69, 0x0A, 0x04,
+ 0x00, 0x6B, 0x5B, 0x27, 0x41, 0x30, 0x39, 0x38,
+ 0x14, 0x1E, 0x41, 0x30, 0x35, 0x33, 0x05, 0x70,
+ 0x41, 0x30, 0x36, 0x31, 0x68, 0x69, 0x6A, 0x60,
+ 0x7D, 0x7B, 0x60, 0x6B, 0x00, 0x6C, 0x60, 0x41,
+ 0x30, 0x36, 0x32, 0x68, 0x69, 0x6A, 0x60, 0x14,
+ 0x0F, 0x41, 0x30, 0x37, 0x33, 0x01, 0xA4, 0x83,
+ 0x88, 0x41, 0x30, 0x39, 0x32, 0x68, 0x00, 0x14,
+ 0x42, 0x05, 0x41, 0x30, 0x35, 0x36, 0x02, 0x70,
+ 0x0A, 0x34, 0x61, 0xA0, 0x11, 0x93, 0x41, 0x30,
+ 0x33, 0x31, 0x68, 0x0A, 0x00, 0x0C, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xA4, 0x0A, 0x00, 0x70, 0x0A, 0x01,
+ 0x60, 0xA2, 0x2E, 0x93, 0x60, 0x0A, 0x01, 0x70,
+ 0x7B, 0x41, 0x30, 0x33, 0x31, 0x68, 0x61, 0x0A,
+ 0xFF, 0x00, 0x61, 0xA0, 0x1C, 0x92, 0x93, 0x61,
+ 0x0A, 0x00, 0xA0, 0x11, 0x93, 0x7B, 0x41, 0x30,
+ 0x33, 0x31, 0x68, 0x61, 0x0A, 0xFF, 0x00, 0x69,
+ 0x70, 0x0A, 0x00, 0x60, 0xA1, 0x03, 0x75, 0x61,
+ 0xA4, 0x61, 0x14, 0x47, 0x09, 0x41, 0x30, 0x35,
+ 0x37, 0x02, 0x5B, 0x80, 0x50, 0x4D, 0x49, 0x4F,
+ 0x01, 0x0B, 0xD6, 0x0C, 0x0A, 0x02, 0x5B, 0x81,
+ 0x10, 0x50, 0x4D, 0x49, 0x4F, 0x01, 0x50, 0x4D,
+ 0x52, 0x49, 0x08, 0x50, 0x4D, 0x52, 0x44, 0x08,
+ 0x5B, 0x86, 0x12, 0x50, 0x4D, 0x52, 0x49, 0x50,
+ 0x4D, 0x52, 0x44, 0x01, 0x00, 0x40, 0x70, 0x41,
+ 0x42, 0x41, 0x52, 0x20, 0x5B, 0x80, 0x41, 0x43,
+ 0x46, 0x47, 0x01, 0x41, 0x42, 0x41, 0x52, 0x0A,
+ 0x08, 0x5B, 0x81, 0x10, 0x41, 0x43, 0x46, 0x47,
+ 0x03, 0x41, 0x42, 0x49, 0x58, 0x20, 0x41, 0x42,
+ 0x44, 0x41, 0x20, 0x70, 0x0A, 0x00, 0x60, 0xA0,
+ 0x17, 0x93, 0x69, 0x0A, 0x00, 0x70, 0x0C, 0x68,
+ 0x00, 0x00, 0x80, 0x41, 0x42, 0x49, 0x58, 0x70,
+ 0x41, 0x42, 0x44, 0x41, 0x60, 0xA4, 0x60, 0xA1,
+ 0x22, 0x70, 0x0C, 0x68, 0x00, 0x00, 0x80, 0x41,
+ 0x42, 0x49, 0x58, 0x70, 0x41, 0x42, 0x44, 0x41,
+ 0x60, 0x7D, 0x7B, 0x60, 0x0C, 0xFC, 0xFF, 0xFF,
+ 0xFF, 0x00, 0x68, 0x60, 0x70, 0x60, 0x41, 0x42,
+ 0x44, 0x41, 0x14, 0x48, 0x05, 0x41, 0x30, 0x38,
+ 0x36, 0x01, 0x70, 0x41, 0x30, 0x36, 0x31, 0x0A,
+ 0x00, 0x0A, 0x60, 0x0A, 0xCD, 0x60, 0x75, 0x68,
+ 0x7D, 0x7B, 0x60, 0x0C, 0xFF, 0xFF, 0xFF, 0xFE,
+ 0x00, 0x7B, 0x80, 0x7B, 0x60, 0x0C, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x60, 0x7D, 0x7B, 0x60, 0x0C, 0xFF,
+ 0xFF, 0x00, 0xFD, 0x00, 0x79, 0x68, 0x0A, 0x10,
+ 0x00, 0x60, 0x41, 0x30, 0x36, 0x32, 0x0A, 0x00,
+ 0x0A, 0x60, 0x0A, 0xCD, 0x60, 0x70, 0x41, 0x30,
+ 0x36, 0x31, 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0xCE,
+ 0x60, 0xA4, 0x60, 0x14, 0x47, 0x0A, 0x41, 0x30,
+ 0x38, 0x37, 0x03, 0x70, 0x41, 0x30, 0x36, 0x31,
+ 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0xCD, 0x60, 0x70,
+ 0x7B, 0x69, 0x0B, 0xFF, 0xFF, 0x00, 0x61, 0x7D,
+ 0x7B, 0x60, 0x0C, 0xFF, 0xFF, 0xFF, 0xFE, 0x00,
+ 0x7B, 0x80, 0x7B, 0x60, 0x0C, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x60, 0x7D, 0x7B, 0x60, 0x0C, 0x00, 0x00,
+ 0x00, 0xFD, 0x00, 0x79, 0x68, 0x0A, 0x10, 0x00,
+ 0x60, 0x7D, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x02,
+ 0x60, 0x7D, 0x60, 0x61, 0x60, 0x41, 0x30, 0x36,
+ 0x32, 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0xCD, 0x60,
+ 0xA0, 0x4A, 0x04, 0x93, 0x6A, 0x0A, 0x01, 0x70,
+ 0x7A, 0x69, 0x0A, 0x10, 0x00, 0x61, 0x7D, 0x7B,
+ 0x60, 0x0C, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7B,
+ 0x80, 0x7B, 0x60, 0x0C, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x60, 0x7D, 0x7B, 0x60, 0x0C, 0x00, 0x00, 0x00,
+ 0xFF, 0x00, 0x79, 0x72, 0x68, 0x0A, 0x01, 0x00,
+ 0x0A, 0x10, 0x00, 0x60, 0x7D, 0x60, 0x61, 0x60,
+ 0x41, 0x30, 0x36, 0x32, 0x0A, 0x00, 0x0A, 0x60,
+ 0x0A, 0xCD, 0x60, 0x14, 0x4F, 0x04, 0x41, 0x30,
+ 0x38, 0x38, 0x02, 0x7D, 0x79, 0x68, 0x0A, 0x03,
+ 0x00, 0x0A, 0x01, 0x60, 0x41, 0x30, 0x38, 0x37,
+ 0x0A, 0x03, 0x60, 0x0A, 0x01, 0xA0, 0x15, 0x90,
+ 0x69, 0x0A, 0x01, 0xA2, 0x0F, 0x92, 0x93, 0x7B,
+ 0x41, 0x30, 0x38, 0x36, 0x0A, 0x03, 0x0A, 0x02,
+ 0x00, 0x0A, 0x02, 0xA0, 0x15, 0x90, 0x69, 0x0A,
+ 0x02, 0xA2, 0x0F, 0x92, 0x93, 0x7B, 0x41, 0x30,
+ 0x38, 0x36, 0x0A, 0x03, 0x0A, 0x04, 0x00, 0x0A,
+ 0x04, 0x41, 0x30, 0x38, 0x37, 0x0A, 0x03, 0x0A,
+ 0x00, 0x0A, 0x00, 0x14, 0x18, 0x41, 0x30, 0x30,
+ 0x34, 0x02, 0x41, 0x30, 0x38, 0x37, 0x0A, 0x0B,
+ 0x68, 0x0A, 0x00, 0x41, 0x30, 0x38, 0x37, 0x0A,
+ 0x05, 0x69, 0x0A, 0x01, 0x14, 0x19, 0x41, 0x30,
+ 0x30, 0x33, 0x01, 0x41, 0x30, 0x38, 0x37, 0x0A,
+ 0x0B, 0x68, 0x0A, 0x00, 0x70, 0x41, 0x30, 0x38,
+ 0x36, 0x0A, 0x05, 0x60, 0xA4, 0x60, 0x14, 0x49,
+ 0x07, 0x41, 0x30, 0x38, 0x39, 0x01, 0x70, 0x7D,
+ 0x7B, 0x68, 0x0A, 0xFF, 0x00, 0x0C, 0x00, 0x50,
+ 0x86, 0x01, 0x00, 0x60, 0x70, 0x7D, 0x7B, 0x68,
+ 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0A, 0x04,
+ 0x00, 0x61, 0x70, 0x7D, 0x79, 0x0A, 0x03, 0x0A,
+ 0x1E, 0x00, 0x79, 0x0A, 0x01, 0x0A, 0x12, 0x00,
+ 0x00, 0x62, 0x41, 0x30, 0x30, 0x34, 0x0B, 0x00,
+ 0x86, 0x60, 0x41, 0x30, 0x30, 0x34, 0x0B, 0x04,
+ 0x86, 0x61, 0x41, 0x30, 0x30, 0x34, 0x0B, 0x08,
+ 0x86, 0x62, 0xA0, 0x12, 0x93, 0x7A, 0x68, 0x0A,
+ 0x10, 0x00, 0x0B, 0x00, 0xFE, 0x41, 0x30, 0x38,
+ 0x38, 0x0A, 0x0D, 0x0A, 0x03, 0xA0, 0x12, 0x93,
+ 0x7A, 0x68, 0x0A, 0x10, 0x00, 0x0B, 0x30, 0xFE,
+ 0x41, 0x30, 0x38, 0x38, 0x0A, 0x0B, 0x0A, 0x03,
+ 0xA4, 0x41, 0x30, 0x30, 0x33, 0x0B, 0x50, 0x86,
+ 0x14, 0x44, 0x06, 0x41, 0x30, 0x39, 0x30, 0x02,
+ 0x70, 0x7D, 0x7B, 0x68, 0x0A, 0xFF, 0x00, 0x0C,
+ 0x00, 0x50, 0x86, 0x01, 0x00, 0x60, 0x70, 0x7D,
+ 0x7B, 0x68, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
+ 0x0A, 0x04, 0x00, 0x61, 0x70, 0x7D, 0x79, 0x0A,
+ 0x03, 0x0A, 0x1E, 0x00, 0x79, 0x0A, 0x01, 0x0A,
+ 0x12, 0x00, 0x00, 0x62, 0x7D, 0x62, 0x79, 0x0A,
+ 0x01, 0x0A, 0x10, 0x00, 0x62, 0x41, 0x30, 0x30,
+ 0x34, 0x0B, 0x00, 0x86, 0x60, 0x41, 0x30, 0x30,
+ 0x34, 0x0B, 0x04, 0x86, 0x61, 0x41, 0x30, 0x30,
+ 0x34, 0x0B, 0x08, 0x86, 0x62, 0x41, 0x30, 0x30,
+ 0x34, 0x0B, 0x50, 0x86, 0x69, 0x41, 0x30, 0x38,
+ 0x38, 0x0A, 0x0B, 0x0A, 0x03, 0x08, 0x41, 0x44,
+ 0x30, 0x32, 0x0A, 0x00, 0x06, 0x41, 0x44, 0x30,
+ 0x32, 0x41, 0x30, 0x30, 0x37, 0x08, 0x41, 0x44,
+ 0x30, 0x33, 0x0A, 0x00, 0x06, 0x41, 0x44, 0x30,
+ 0x33, 0x41, 0x30, 0x30, 0x38, 0x08, 0x41, 0x44,
+ 0x30, 0x34, 0x0A, 0x00, 0x06, 0x41, 0x44, 0x30,
+ 0x34, 0x41, 0x30, 0x30, 0x39, 0x08, 0x41, 0x44,
+ 0x30, 0x35, 0x0A, 0x00, 0x06, 0x41, 0x44, 0x30,
+ 0x35, 0x41, 0x30, 0x31, 0x30, 0x08, 0x41, 0x44,
+ 0x30, 0x36, 0x12, 0x10, 0x07, 0x0A, 0x00, 0x0A,
+ 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A,
+ 0x00, 0x0A, 0x00, 0x06, 0x41, 0x44, 0x30, 0x36,
+ 0x41, 0x30, 0x31, 0x31, 0x08, 0x41, 0x30, 0x31,
+ 0x32, 0x0A, 0x00, 0x08, 0x41, 0x30, 0x31, 0x33,
+ 0x0A, 0x00, 0x08, 0x41, 0x30, 0x31, 0x34, 0x12,
+ 0x10, 0x07, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00,
+ 0x08, 0x41, 0x30, 0x31, 0x35, 0x12, 0x10, 0x07,
+ 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x08, 0x41,
+ 0x30, 0x31, 0x36, 0x12, 0x10, 0x07, 0x0A, 0x00,
+ 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0x0A, 0x00, 0x08, 0x41, 0x30, 0x31,
+ 0x37, 0x12, 0x10, 0x07, 0x0A, 0x02, 0x0A, 0x02,
+ 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02,
+ 0x0A, 0x02, 0x14, 0x42, 0x06, 0x41, 0x30, 0x31,
+ 0x38, 0x09, 0x8C, 0x68, 0x0A, 0x02, 0x41, 0x30,
+ 0x31, 0x39, 0xA0, 0x0D, 0x93, 0x41, 0x30, 0x31,
+ 0x39, 0x41, 0x30, 0x31, 0x33, 0xA4, 0x0A, 0x00,
+ 0x70, 0x41, 0x30, 0x31, 0x39, 0x41, 0x30, 0x31,
+ 0x33, 0xA0, 0x12, 0x93, 0x41, 0x30, 0x30, 0x37,
+ 0x0A, 0x04, 0x41, 0x30, 0x30, 0x32, 0x0A, 0x01,
+ 0x41, 0x30, 0x31, 0x33, 0xA0, 0x15, 0x91, 0x92,
+ 0x94, 0x41, 0x30, 0x30, 0x37, 0x0A, 0x01, 0x92,
+ 0x95, 0x41, 0x30, 0x30, 0x37, 0x0A, 0x04, 0xA4,
+ 0x0A, 0x00, 0xA0, 0x0B, 0x93, 0x41, 0x30, 0x31,
+ 0x32, 0x0A, 0x00, 0xA4, 0x0A, 0x00, 0x41, 0x30,
+ 0x32, 0x30, 0xA4, 0x0A, 0x00, 0x14, 0x42, 0x18,
+ 0x41, 0x30, 0x32, 0x31, 0x01, 0x08, 0x41, 0x30,
+ 0x32, 0x32, 0x0A, 0x00, 0x08, 0x41, 0x30, 0x32,
+ 0x33, 0x0A, 0x00, 0x70, 0x11, 0x04, 0x0B, 0x00,
+ 0x01, 0x67, 0x8B, 0x67, 0x0A, 0x00, 0x41, 0x30,
+ 0x32, 0x34, 0x70, 0x0A, 0x03, 0x41, 0x30, 0x32,
+ 0x34, 0x8C, 0x67, 0x0A, 0x02, 0x41, 0x30, 0x32,
+ 0x35, 0x70, 0x0A, 0x01, 0x41, 0x30, 0x32, 0x35,
+ 0xA0, 0x14, 0x91, 0x92, 0x94, 0x41, 0x30, 0x30,
+ 0x37, 0x0A, 0x01, 0x92, 0x95, 0x41, 0x30, 0x30,
+ 0x37, 0x0A, 0x04, 0xA4, 0x67, 0xA0, 0x0A, 0x93,
+ 0x41, 0x30, 0x31, 0x32, 0x0A, 0x00, 0xA4, 0x67,
+ 0x8B, 0x68, 0x0A, 0x02, 0x41, 0x30, 0x32, 0x36,
+ 0x8B, 0x68, 0x0A, 0x04, 0x41, 0x30, 0x32, 0x37,
+ 0x8B, 0x68, 0x0A, 0x06, 0x41, 0x30, 0x32, 0x38,
+ 0x8C, 0x68, 0x0A, 0x08, 0x41, 0x30, 0x32, 0x39,
+ 0x8C, 0x68, 0x0A, 0x09, 0x41, 0x30, 0x33, 0x30,
+ 0x7B, 0x7A, 0x41, 0x30, 0x32, 0x36, 0x0A, 0x08,
+ 0x00, 0x0A, 0xFF, 0x41, 0x30, 0x32, 0x32, 0xA2,
+ 0x4E, 0x0E, 0x92, 0x94, 0x41, 0x30, 0x32, 0x33,
+ 0x41, 0x30, 0x30, 0x31, 0xA0, 0x15, 0x93, 0x83,
+ 0x88, 0x41, 0x30, 0x31, 0x31, 0x41, 0x30, 0x32,
+ 0x33, 0x00, 0x0A, 0x00, 0x75, 0x41, 0x30, 0x32,
+ 0x33, 0x9F, 0x70, 0x41, 0x30, 0x33, 0x31, 0x79,
+ 0x72, 0x41, 0x30, 0x32, 0x33, 0x0A, 0x02, 0x00,
+ 0x0A, 0x03, 0x00, 0x0A, 0x18, 0x61, 0x7B, 0x7A,
+ 0x61, 0x0A, 0x10, 0x00, 0x0A, 0xFF, 0x62, 0x7B,
+ 0x7A, 0x61, 0x0A, 0x08, 0x00, 0x0A, 0xFF, 0x61,
+ 0xA0, 0x14, 0x90, 0x95, 0x41, 0x30, 0x32, 0x32,
+ 0x61, 0x94, 0x41, 0x30, 0x32, 0x32, 0x62, 0x75,
+ 0x41, 0x30, 0x32, 0x33, 0x9F, 0xA0, 0x1E, 0x93,
+ 0x83, 0x88, 0x41, 0x30, 0x31, 0x34, 0x41, 0x30,
+ 0x32, 0x33, 0x00, 0x0A, 0x00, 0x70, 0x41, 0x30,
+ 0x32, 0x36, 0x88, 0x41, 0x30, 0x31, 0x34, 0x41,
+ 0x30, 0x32, 0x33, 0x00, 0xA1, 0x16, 0xA0, 0x14,
+ 0x92, 0x93, 0x83, 0x88, 0x41, 0x30, 0x31, 0x34,
+ 0x41, 0x30, 0x32, 0x33, 0x00, 0x41, 0x30, 0x32,
+ 0x36, 0xA4, 0x67, 0xA0, 0x15, 0x93, 0x41, 0x30,
+ 0x33, 0x30, 0x0A, 0x00, 0x70, 0x0A, 0x00, 0x88,
+ 0x41, 0x30, 0x31, 0x34, 0x41, 0x30, 0x32, 0x33,
+ 0x00, 0xA1, 0x37, 0xA0, 0x24, 0x93, 0x7B, 0x41,
+ 0x30, 0x32, 0x37, 0x41, 0x30, 0x32, 0x38, 0x00,
+ 0x0A, 0x01, 0x70, 0x83, 0x88, 0x41, 0x30, 0x31,
+ 0x31, 0x41, 0x30, 0x32, 0x33, 0x00, 0x88, 0x41,
+ 0x30, 0x31, 0x35, 0x41, 0x30, 0x32, 0x33, 0x00,
+ 0xA1, 0x10, 0x70, 0x41, 0x30, 0x33, 0x30, 0x88,
+ 0x41, 0x30, 0x31, 0x35, 0x41, 0x30, 0x32, 0x33,
+ 0x00, 0x41, 0x30, 0x32, 0x30, 0x70, 0x0A, 0x02,
+ 0x41, 0x30, 0x32, 0x35, 0xA4, 0x67, 0xA4, 0x67,
+ 0x14, 0x41, 0x0C, 0x41, 0x30, 0x33, 0x32, 0x09,
+ 0x70, 0x11, 0x04, 0x0B, 0x00, 0x01, 0x67, 0x8B,
+ 0x67, 0x0A, 0x00, 0x41, 0x30, 0x32, 0x34, 0x70,
+ 0x0A, 0x03, 0x41, 0x30, 0x32, 0x34, 0x8C, 0x67,
+ 0x0A, 0x02, 0x41, 0x30, 0x32, 0x35, 0x8C, 0x68,
+ 0x0A, 0x02, 0x41, 0x30, 0x33, 0x33, 0x70, 0x41,
+ 0x30, 0x33, 0x33, 0x41, 0x30, 0x31, 0x32, 0xA0,
+ 0x12, 0x93, 0x41, 0x30, 0x30, 0x37, 0x0A, 0x04,
+ 0x41, 0x30, 0x30, 0x32, 0x0A, 0x01, 0x41, 0x30,
+ 0x31, 0x33, 0xA0, 0x47, 0x06, 0x90, 0x94, 0x41,
+ 0x30, 0x30, 0x37, 0x0A, 0x01, 0x95, 0x41, 0x30,
+ 0x30, 0x37, 0x0A, 0x04, 0xA0, 0x16, 0x93, 0x41,
+ 0x30, 0x30, 0x37, 0x0A, 0x02, 0x41, 0x30, 0x33,
+ 0x34, 0x71, 0x41, 0x30, 0x31, 0x31, 0x71, 0x41,
+ 0x30, 0x31, 0x36, 0xA1, 0x0F, 0x41, 0x30, 0x33,
+ 0x34, 0x71, 0x41, 0x30, 0x31, 0x37, 0x71, 0x41,
+ 0x30, 0x31, 0x36, 0xA0, 0x2A, 0x93, 0x41, 0x30,
+ 0x31, 0x32, 0x0A, 0x00, 0x08, 0x41, 0x30, 0x33,
+ 0x35, 0x12, 0x0E, 0x06, 0x0A, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00,
+ 0x41, 0x30, 0x33, 0x34, 0x71, 0x41, 0x30, 0x33,
+ 0x35, 0x71, 0x41, 0x30, 0x31, 0x34, 0x41, 0x30,
+ 0x32, 0x30, 0x70, 0x0A, 0x03, 0x41, 0x30, 0x32,
+ 0x34, 0x70, 0x0A, 0x00, 0x41, 0x30, 0x32, 0x35,
+ 0xA4, 0x67, 0x14, 0x4A, 0x13, 0x41, 0x30, 0x32,
+ 0x30, 0x08, 0x08, 0x41, 0x30, 0x32, 0x33, 0x0A,
+ 0x00, 0x08, 0x41, 0x30, 0x33, 0x36, 0x0A, 0x00,
+ 0x08, 0x41, 0x30, 0x33, 0x37, 0x12, 0x10, 0x07,
+ 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02,
+ 0x0A, 0x02, 0x0A, 0x02, 0x0A, 0x02, 0x70, 0x0A,
+ 0x00, 0x41, 0x30, 0x32, 0x33, 0xA2, 0x34, 0x92,
+ 0x94, 0x41, 0x30, 0x32, 0x33, 0x41, 0x30, 0x30,
+ 0x31, 0xA0, 0x23, 0x92, 0x93, 0x83, 0x88, 0x41,
+ 0x30, 0x31, 0x31, 0x41, 0x30, 0x32, 0x33, 0x00,
+ 0x0A, 0x00, 0x70, 0x41, 0x30, 0x33, 0x38, 0x41,
+ 0x30, 0x32, 0x33, 0x88, 0x41, 0x30, 0x33, 0x37,
+ 0x41, 0x30, 0x32, 0x33, 0x00, 0x75, 0x41, 0x30,
+ 0x32, 0x33, 0xA0, 0x1F, 0x92, 0x93, 0x89, 0x41,
+ 0x30, 0x33, 0x37, 0x01, 0x0A, 0x01, 0x00, 0x0A,
+ 0x00, 0x0A, 0x00, 0xFF, 0x41, 0x30, 0x33, 0x34,
+ 0x71, 0x41, 0x30, 0x31, 0x37, 0x71, 0x41, 0x30,
+ 0x33, 0x37, 0xA0, 0x2B, 0x92, 0x93, 0x89, 0x41,
+ 0x30, 0x33, 0x37, 0x01, 0x0A, 0x03, 0x00, 0x0A,
+ 0x00, 0x0A, 0x00, 0xFF, 0x41, 0x30, 0x33, 0x39,
+ 0x41, 0x30, 0x30, 0x38, 0x0A, 0x01, 0x41, 0x30,
+ 0x30, 0x36, 0x0A, 0x02, 0x41, 0x30, 0x30, 0x32,
+ 0x0A, 0x02, 0x41, 0x30, 0x31, 0x33, 0x70, 0x0A,
+ 0x00, 0x41, 0x30, 0x32, 0x33, 0xA2, 0x44, 0x05,
+ 0x92, 0x94, 0x41, 0x30, 0x32, 0x33, 0x41, 0x30,
+ 0x30, 0x31, 0xA0, 0x15, 0x93, 0x83, 0x88, 0x41,
+ 0x30, 0x31, 0x31, 0x41, 0x30, 0x32, 0x33, 0x00,
+ 0x0A, 0x00, 0x75, 0x41, 0x30, 0x32, 0x33, 0x9F,
+ 0x70, 0x41, 0x30, 0x34, 0x30, 0x41, 0x30, 0x32,
+ 0x33, 0x60, 0x70, 0x83, 0x88, 0x41, 0x30, 0x33,
+ 0x37, 0x41, 0x30, 0x32, 0x33, 0x00, 0x62, 0xA0,
+ 0x0A, 0x93, 0x60, 0x62, 0x75, 0x41, 0x30, 0x32,
+ 0x33, 0x9F, 0x41, 0x30, 0x34, 0x31, 0x41, 0x30,
+ 0x32, 0x33, 0x62, 0x0A, 0x00, 0x75, 0x41, 0x30,
+ 0x32, 0x33, 0xA0, 0x2A, 0x93, 0x89, 0x41, 0x30,
+ 0x33, 0x37, 0x01, 0x0A, 0x03, 0x00, 0x0A, 0x00,
+ 0x0A, 0x00, 0xFF, 0x41, 0x30, 0x30, 0x32, 0x0A,
+ 0x01, 0x41, 0x30, 0x31, 0x33, 0x41, 0x30, 0x30,
+ 0x36, 0x0A, 0x01, 0x41, 0x30, 0x33, 0x39, 0x41,
+ 0x30, 0x30, 0x39, 0x0A, 0x00, 0x14, 0x3A, 0x41,
+ 0x30, 0x33, 0x38, 0x01, 0x70, 0x0A, 0x03, 0x60,
+ 0xA0, 0x21, 0x93, 0x83, 0x88, 0x41, 0x30, 0x31,
+ 0x34, 0x68, 0x00, 0x0A, 0x00, 0xA0, 0x14, 0x91,
+ 0x93, 0x41, 0x30, 0x31, 0x33, 0x0A, 0x01, 0x93,
+ 0x41, 0x30, 0x30, 0x37, 0x0A, 0x03, 0x70, 0x0A,
+ 0x02, 0x60, 0xA1, 0x0B, 0x70, 0x83, 0x88, 0x41,
+ 0x30, 0x31, 0x35, 0x68, 0x00, 0x60, 0xA4, 0x60,
+ 0x14, 0x0F, 0x41, 0x30, 0x34, 0x30, 0x01, 0xA4,
+ 0x83, 0x88, 0x41, 0x30, 0x31, 0x36, 0x68, 0x00,
+ 0x14, 0x4C, 0x2E, 0x41, 0x30, 0x34, 0x31, 0x03,
+ 0xA0, 0x44, 0x2E, 0x91, 0x93, 0x69, 0x0A, 0x02,
+ 0x93, 0x69, 0x0A, 0x03, 0x08, 0x41, 0x30, 0x34,
+ 0x32, 0x0C, 0x01, 0x00, 0x00, 0x20, 0x08, 0x41,
+ 0x30, 0x34, 0x33, 0x0A, 0x00, 0x08, 0x41, 0x30,
+ 0x34, 0x34, 0x0A, 0x02, 0x08, 0x41, 0x30, 0x34,
+ 0x35, 0x0A, 0x00, 0x08, 0x41, 0x30, 0x34, 0x36,
+ 0x0A, 0x00, 0x08, 0x41, 0x30, 0x34, 0x37, 0x0A,
+ 0x00, 0x08, 0x41, 0x30, 0x34, 0x38, 0x0A, 0x00,
+ 0x08, 0x41, 0x30, 0x34, 0x39, 0x0A, 0x00, 0x08,
+ 0x41, 0x30, 0x35, 0x30, 0x0A, 0x00, 0x08, 0x41,
+ 0x30, 0x35, 0x31, 0x0A, 0x00, 0x08, 0x41, 0x30,
+ 0x35, 0x32, 0x12, 0x14, 0x09, 0x0A, 0x00, 0x0A,
+ 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A,
+ 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0xA0,
+ 0x15, 0x93, 0x68, 0x0A, 0x06, 0x41, 0x30, 0x35,
+ 0x33, 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0x80, 0x80,
+ 0x0A, 0x40, 0x00, 0x0A, 0x40, 0x70, 0x69, 0x88,
+ 0x41, 0x30, 0x31, 0x36, 0x68, 0x00, 0xA0, 0x13,
+ 0x93, 0x69, 0x0A, 0x02, 0x70, 0x0A, 0x00, 0x41,
+ 0x30, 0x34, 0x32, 0x70, 0x0A, 0x21, 0x41, 0x30,
+ 0x34, 0x34, 0xA0, 0x1B, 0x92, 0x93, 0x83, 0x88,
+ 0x41, 0x30, 0x31, 0x34, 0x68, 0x00, 0x0A, 0x00,
+ 0x41, 0x30, 0x35, 0x34, 0x68, 0x0A, 0xA1, 0x80,
+ 0x0B, 0x00, 0x10, 0x00, 0x0A, 0x00, 0xA1, 0x10,
+ 0x41, 0x30, 0x35, 0x34, 0x68, 0x0A, 0xA1, 0x80,
+ 0x0B, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x10, 0x41,
+ 0x30, 0x35, 0x34, 0x68, 0x0A, 0xA4, 0x80, 0x0C,
+ 0x01, 0x00, 0x00, 0x20, 0x00, 0x41, 0x30, 0x34,
+ 0x32, 0x70, 0x79, 0x72, 0x68, 0x0A, 0x02, 0x00,
+ 0x0A, 0x03, 0x00, 0x60, 0x41, 0x30, 0x35, 0x35,
+ 0x60, 0x0A, 0x88, 0x80, 0x0A, 0x2F, 0x00, 0x41,
+ 0x30, 0x34, 0x34, 0x70, 0x79, 0x72, 0x68, 0x0A,
+ 0x02, 0x00, 0x0A, 0x03, 0x00, 0x60, 0x7B, 0x41,
+ 0x30, 0x33, 0x31, 0x60, 0x0A, 0x70, 0x0C, 0x00,
+ 0x00, 0x40, 0x00, 0x41, 0x30, 0x34, 0x33, 0xA0,
+ 0x45, 0x1B, 0x92, 0x93, 0x41, 0x30, 0x34, 0x33,
+ 0x0A, 0x00, 0xA0, 0x4D, 0x0C, 0x92, 0x93, 0x68,
+ 0x0A, 0x06, 0x70, 0x41, 0x30, 0x33, 0x31, 0x60,
+ 0x0A, 0x18, 0x63, 0x70, 0x7B, 0x7A, 0x63, 0x0A,
+ 0x08, 0x00, 0x0A, 0xFF, 0x00, 0x41, 0x30, 0x34,
+ 0x37, 0x70, 0x79, 0x41, 0x30, 0x34, 0x37, 0x0A,
+ 0x08, 0x00, 0x63, 0x70, 0x41, 0x30, 0x33, 0x31,
+ 0x63, 0x0A, 0x0C, 0x63, 0x70, 0x7B, 0x7A, 0x63,
+ 0x0A, 0x10, 0x00, 0x0A, 0xFF, 0x00, 0x41, 0x30,
+ 0x34, 0x38, 0xA0, 0x14, 0x92, 0x93, 0x7B, 0x41,
+ 0x30, 0x34, 0x38, 0x0A, 0x80, 0x00, 0x0A, 0x00,
+ 0x70, 0x0A, 0x07, 0x41, 0x30, 0x34, 0x39, 0x70,
+ 0x79, 0x41, 0x30, 0x34, 0x37, 0x0A, 0x08, 0x00,
+ 0x63, 0x70, 0x0A, 0x00, 0x62, 0xA2, 0x4A, 0x06,
+ 0x92, 0x94, 0x62, 0x41, 0x30, 0x34, 0x39, 0x70,
+ 0x41, 0x30, 0x35, 0x36, 0x63, 0x0A, 0x10, 0x41,
+ 0x30, 0x35, 0x30, 0xA0, 0x40, 0x05, 0x92, 0x93,
+ 0x41, 0x30, 0x35, 0x30, 0x0A, 0x00, 0x72, 0x41,
+ 0x30, 0x35, 0x30, 0x0A, 0x10, 0x41, 0x30, 0x35,
+ 0x30, 0x70, 0x41, 0x30, 0x33, 0x31, 0x63, 0x41,
+ 0x30, 0x35, 0x30, 0x41, 0x30, 0x35, 0x31, 0x70,
+ 0x7B, 0x41, 0x30, 0x35, 0x31, 0x0A, 0x03, 0x00,
+ 0x88, 0x41, 0x30, 0x35, 0x32, 0x62, 0x00, 0xA0,
+ 0x1C, 0x92, 0x93, 0x7B, 0x41, 0x30, 0x35, 0x31,
+ 0x0A, 0x03, 0x00, 0x0A, 0x00, 0x41, 0x30, 0x35,
+ 0x35, 0x63, 0x41, 0x30, 0x35, 0x30, 0x80, 0x0A,
+ 0x03, 0x00, 0x0A, 0x00, 0x75, 0x62, 0x75, 0x63,
+ 0xA1, 0x25, 0x70, 0x41, 0x30, 0x35, 0x37, 0x0A,
+ 0x00, 0x0A, 0x00, 0x41, 0x30, 0x34, 0x35, 0x7B,
+ 0x41, 0x30, 0x34, 0x35, 0x0A, 0x03, 0x61, 0xA0,
+ 0x0E, 0x92, 0x93, 0x61, 0x0A, 0x00, 0x41, 0x30,
+ 0x35, 0x37, 0x0A, 0x00, 0x0A, 0x01, 0x70, 0x0A,
+ 0x01, 0x62, 0xA2, 0x41, 0x05, 0x62, 0x41, 0x30,
+ 0x35, 0x35, 0x60, 0x0A, 0x68, 0x80, 0x0A, 0x00,
+ 0x00, 0x0A, 0x20, 0x5B, 0x22, 0x0A, 0x1E, 0xA2,
+ 0x13, 0x7B, 0x41, 0x30, 0x33, 0x31, 0x60, 0x0A,
+ 0x68, 0x0C, 0x00, 0x00, 0x00, 0x08, 0x00, 0x5B,
+ 0x22, 0x0A, 0x0A, 0x70, 0x0A, 0x00, 0x62, 0xA0,
+ 0x24, 0x93, 0x69, 0x0A, 0x02, 0x70, 0x41, 0x30,
+ 0x35, 0x38, 0x68, 0x0A, 0xA4, 0x41, 0x30, 0x34,
+ 0x36, 0xA0, 0x12, 0x92, 0x93, 0x7B, 0x41, 0x30,
+ 0x34, 0x36, 0x0B, 0x00, 0x08, 0x00, 0x0A, 0x00,
+ 0x70, 0x0A, 0x01, 0x62, 0xA0, 0x44, 0x05, 0x92,
+ 0x93, 0x68, 0x0A, 0x06, 0x70, 0x79, 0x41, 0x30,
+ 0x34, 0x37, 0x0A, 0x08, 0x00, 0x63, 0x70, 0x0A,
+ 0x00, 0x62, 0xA2, 0x3E, 0x92, 0x94, 0x62, 0x41,
+ 0x30, 0x34, 0x39, 0x70, 0x41, 0x30, 0x35, 0x36,
+ 0x63, 0x0A, 0x10, 0x41, 0x30, 0x35, 0x30, 0xA0,
+ 0x25, 0x92, 0x93, 0x41, 0x30, 0x35, 0x30, 0x0A,
+ 0x00, 0x72, 0x41, 0x30, 0x35, 0x30, 0x0A, 0x10,
+ 0x41, 0x30, 0x35, 0x30, 0x41, 0x30, 0x35, 0x39,
+ 0x63, 0x41, 0x30, 0x35, 0x30, 0x83, 0x88, 0x41,
+ 0x30, 0x35, 0x32, 0x62, 0x00, 0x75, 0x62, 0x75,
+ 0x63, 0xA1, 0x0B, 0x41, 0x30, 0x35, 0x37, 0x41,
+ 0x30, 0x34, 0x35, 0x0A, 0x01, 0xA1, 0x01, 0xA0,
+ 0x15, 0x93, 0x68, 0x0A, 0x06, 0x41, 0x30, 0x35,
+ 0x33, 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0x80, 0x80,
+ 0x0A, 0x40, 0x00, 0x0A, 0x00, 0x5B, 0x01, 0x41,
+ 0x30, 0x36, 0x30, 0x00, 0x14, 0x4F, 0x07, 0x41,
+ 0x30, 0x33, 0x39, 0x02, 0x5B, 0x23, 0x41, 0x30,
+ 0x36, 0x30, 0xFF, 0xFF, 0x70, 0x41, 0x30, 0x36,
+ 0x31, 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0xEA, 0x61,
+ 0x7D, 0x61, 0x0A, 0x02, 0x61, 0x41, 0x30, 0x36,
+ 0x32, 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0xEA, 0x61,
+ 0x7B, 0x61, 0x80, 0x79, 0x0A, 0x03, 0x0A, 0x03,
+ 0x00, 0x00, 0x61, 0x7D, 0x61, 0x79, 0x68, 0x0A,
+ 0x03, 0x00, 0x61, 0x7B, 0x80, 0x61, 0x00, 0x0A,
+ 0x04, 0x62, 0x7D, 0x7B, 0x61, 0x80, 0x0A, 0x04,
+ 0x00, 0x00, 0x62, 0x61, 0x41, 0x30, 0x36, 0x32,
+ 0x0A, 0x00, 0x0A, 0x60, 0x0A, 0xEA, 0x61, 0xA0,
+ 0x1E, 0x92, 0x93, 0x69, 0x0A, 0x00, 0xA2, 0x17,
+ 0x92, 0x93, 0x79, 0x61, 0x0A, 0x02, 0x00, 0x62,
+ 0x7B, 0x41, 0x30, 0x36, 0x31, 0x0A, 0x00, 0x0A,
+ 0x60, 0x0A, 0xEB, 0x0A, 0x01, 0x61, 0x5B, 0x27,
+ 0x41, 0x30, 0x36, 0x30, 0x14, 0x21, 0x41, 0x30,
+ 0x33, 0x34, 0x02, 0x70, 0x87, 0x68, 0x61, 0x70,
+ 0x0A, 0x00, 0x60, 0xA2, 0x12, 0x95, 0x60, 0x61,
+ 0x70, 0x83, 0x88, 0x83, 0x68, 0x60, 0x00, 0x88,
+ 0x83, 0x69, 0x60, 0x00, 0x75, 0x60, 0x14, 0x37,
+ 0x41, 0x30, 0x36, 0x33, 0x09, 0x70, 0x11, 0x04,
+ 0x0B, 0x00, 0x01, 0x67, 0x8B, 0x67, 0x0A, 0x00,
+ 0x41, 0x30, 0x32, 0x34, 0x8B, 0x67, 0x0A, 0x02,
+ 0x41, 0x30, 0x36, 0x34, 0x8C, 0x68, 0x0A, 0x02,
+ 0x41, 0x30, 0x36, 0x35, 0x70, 0x0A, 0x03, 0x41,
+ 0x30, 0x32, 0x34, 0x70, 0x41, 0x30, 0x36, 0x35,
+ 0x41, 0x30, 0x36, 0x34, 0xA4, 0x67, 0x14, 0x4A,
+ 0x07, 0x41, 0x30, 0x36, 0x36, 0x09, 0x70, 0x11,
+ 0x04, 0x0B, 0x00, 0x01, 0x67, 0x8B, 0x67, 0x0A,
+ 0x00, 0x41, 0x30, 0x32, 0x34, 0x8C, 0x67, 0x0A,
+ 0x02, 0x41, 0x30, 0x32, 0x35, 0x8C, 0x67, 0x0A,
+ 0x03, 0x41, 0x30, 0x36, 0x37, 0x8B, 0x68, 0x0A,
+ 0x02, 0x41, 0x30, 0x36, 0x38, 0x8C, 0x68, 0x0A,
+ 0x04, 0x41, 0x30, 0x36, 0x39, 0x74, 0x7A, 0x41,
+ 0x30, 0x36, 0x38, 0x0A, 0x03, 0x00, 0x0A, 0x02,
+ 0x61, 0xA0, 0x12, 0x93, 0x41, 0x30, 0x36, 0x39,
+ 0x0A, 0x01, 0x70, 0x41, 0x30, 0x37, 0x30, 0x61,
+ 0x41, 0x30, 0x36, 0x39, 0xA1, 0x0B, 0x70, 0x41,
+ 0x30, 0x37, 0x31, 0x61, 0x41, 0x30, 0x36, 0x39,
+ 0x70, 0x0A, 0x04, 0x41, 0x30, 0x32, 0x34, 0x70,
+ 0x0A, 0x00, 0x41, 0x30, 0x32, 0x35, 0x70, 0x41,
+ 0x30, 0x36, 0x39, 0x41, 0x30, 0x36, 0x37, 0xA4,
+ 0x67, 0x14, 0x49, 0x11, 0x41, 0x30, 0x37, 0x30,
+ 0x01, 0x08, 0x41, 0x30, 0x37, 0x32, 0x0A, 0x00,
+ 0x70, 0x41, 0x30, 0x37, 0x33, 0x68, 0x67, 0x8C,
+ 0x67, 0x0A, 0x07, 0x41, 0x30, 0x37, 0x34, 0xA0,
+ 0x0C, 0x92, 0x93, 0x41, 0x30, 0x37, 0x34, 0x0A,
+ 0x01, 0xA4, 0x0A, 0x01, 0x8C, 0x67, 0x0A, 0x00,
+ 0x41, 0x30, 0x37, 0x35, 0x8C, 0x67, 0x0A, 0x01,
+ 0x41, 0x30, 0x37, 0x36, 0x41, 0x30, 0x30, 0x35,
+ 0x41, 0x30, 0x37, 0x35, 0x41, 0x30, 0x37, 0x36,
+ 0x0A, 0x00, 0x8C, 0x67, 0x0A, 0x02, 0x41, 0x30,
+ 0x37, 0x37, 0x8C, 0x67, 0x0A, 0x03, 0x41, 0x30,
+ 0x37, 0x38, 0x41, 0x30, 0x37, 0x39, 0x68, 0x41,
+ 0x30, 0x37, 0x35, 0x41, 0x30, 0x37, 0x36, 0x0A,
+ 0x00, 0x41, 0x30, 0x38, 0x30, 0x68, 0x0A, 0x00,
+ 0x70, 0x41, 0x30, 0x38, 0x31, 0x68, 0x61, 0xA0,
+ 0x4B, 0x09, 0x93, 0x61, 0x0A, 0x01, 0x70, 0x41,
+ 0x30, 0x38, 0x32, 0x68, 0x41, 0x30, 0x37, 0x32,
+ 0x74, 0x41, 0x30, 0x38, 0x33, 0x68, 0x0A, 0x01,
+ 0x41, 0x30, 0x38, 0x33, 0x68, 0x0A, 0x00, 0x62,
+ 0xA0, 0x47, 0x07, 0x92, 0x93, 0x62, 0x0A, 0x00,
+ 0xA0, 0x16, 0x92, 0x93, 0x41, 0x30, 0x37, 0x32,
+ 0x0A, 0x00, 0x72, 0x41, 0x30, 0x37, 0x37, 0x62,
+ 0x63, 0x70, 0x41, 0x30, 0x37, 0x38, 0x64, 0xA1,
+ 0x0E, 0x74, 0x41, 0x30, 0x37, 0x38, 0x62, 0x64,
+ 0x70, 0x41, 0x30, 0x37, 0x37, 0x63, 0x41, 0x30,
+ 0x37, 0x39, 0x68, 0x63, 0x64, 0x0A, 0x01, 0xA0,
+ 0x16, 0x94, 0x41, 0x30, 0x37, 0x35, 0x41, 0x30,
+ 0x37, 0x36, 0x70, 0x41, 0x30, 0x37, 0x36, 0x63,
+ 0x70, 0x41, 0x30, 0x37, 0x35, 0x64, 0xA1, 0x0D,
+ 0x70, 0x41, 0x30, 0x37, 0x36, 0x64, 0x70, 0x41,
+ 0x30, 0x37, 0x35, 0x63, 0xA0, 0x0D, 0x92, 0x93,
+ 0x41, 0x30, 0x37, 0x32, 0x0A, 0x00, 0x72, 0x63,
+ 0x62, 0x63, 0xA1, 0x05, 0x74, 0x64, 0x62, 0x64,
+ 0x41, 0x30, 0x30, 0x35, 0x63, 0x64, 0x0A, 0x01,
+ 0xA4, 0x0A, 0x01, 0x41, 0x30, 0x37, 0x31, 0x68,
+ 0xA4, 0x0A, 0x00, 0x14, 0x4A, 0x06, 0x41, 0x30,
+ 0x37, 0x31, 0x01, 0x70, 0x41, 0x30, 0x37, 0x33,
+ 0x68, 0x67, 0x8C, 0x67, 0x0A, 0x07, 0x41, 0x30,
+ 0x37, 0x34, 0xA0, 0x0C, 0x92, 0x93, 0x41, 0x30,
+ 0x37, 0x34, 0x0A, 0x01, 0xA4, 0x0A, 0x00, 0x41,
+ 0x30, 0x38, 0x30, 0x68, 0x0A, 0x01, 0x8C, 0x67,
+ 0x0A, 0x02, 0x41, 0x30, 0x37, 0x37, 0x8C, 0x67,
+ 0x0A, 0x03, 0x41, 0x30, 0x37, 0x38, 0x41, 0x30,
+ 0x37, 0x39, 0x68, 0x41, 0x30, 0x37, 0x37, 0x41,
+ 0x30, 0x37, 0x38, 0x0A, 0x01, 0x8C, 0x67, 0x0A,
+ 0x00, 0x41, 0x30, 0x37, 0x35, 0x8C, 0x67, 0x0A,
+ 0x01, 0x41, 0x30, 0x37, 0x36, 0x41, 0x30, 0x30,
+ 0x35, 0x41, 0x30, 0x37, 0x35, 0x41, 0x30, 0x37,
+ 0x36, 0x0A, 0x01, 0xA4, 0x0A, 0x00, 0x14, 0x41,
+ 0x04, 0x41, 0x30, 0x38, 0x32, 0x01, 0x70, 0x41,
+ 0x30, 0x37, 0x33, 0x68, 0x67, 0x8C, 0x67, 0x0A,
+ 0x00, 0x41, 0x30, 0x37, 0x35, 0x8C, 0x67, 0x0A,
+ 0x01, 0x41, 0x30, 0x37, 0x36, 0x70, 0x0A, 0x00,
+ 0x60, 0xA0, 0x0E, 0x94, 0x41, 0x30, 0x37, 0x35,
+ 0x41, 0x30, 0x37, 0x36, 0x70, 0x0A, 0x01, 0x60,
+ 0x7B, 0x41, 0x30, 0x35, 0x38, 0x68, 0x0A, 0x50,
+ 0x0A, 0x01, 0x61, 0xA4, 0x7F, 0x60, 0x61, 0x00,
+ 0x14, 0x43, 0x04, 0x41, 0x30, 0x38, 0x30, 0x02,
+ 0x70, 0x41, 0x30, 0x37, 0x33, 0x68, 0x67, 0x8C,
+ 0x67, 0x0A, 0x04, 0x41, 0x30, 0x38, 0x34, 0x8B,
+ 0x67, 0x0A, 0x05, 0x41, 0x30, 0x38, 0x35, 0x41,
+ 0x30, 0x35, 0x33, 0x0A, 0x00, 0x0A, 0xE0, 0x7D,
+ 0x79, 0x41, 0x30, 0x38, 0x35, 0x0A, 0x10, 0x00,
+ 0x72, 0x0B, 0x00, 0x08, 0x77, 0x0B, 0x00, 0x01,
+ 0x41, 0x30, 0x38, 0x34, 0x00, 0x00, 0x00, 0x80,
+ 0x0A, 0x01, 0x00, 0x69, 0x14, 0x38, 0x41, 0x30,
+ 0x38, 0x31, 0x01, 0x70, 0x0A, 0x00, 0x60, 0x70,
+ 0x0A, 0x00, 0x67, 0xA2, 0x27, 0x95, 0x60, 0x0B,
+ 0x40, 0x01, 0x7B, 0x41, 0x30, 0x35, 0x38, 0x68,
+ 0x0A, 0xA5, 0x0A, 0x3F, 0x61, 0xA0, 0x0F, 0x93,
+ 0x61, 0x0A, 0x10, 0x70, 0x0A, 0x01, 0x67, 0x70,
+ 0x0B, 0x40, 0x01, 0x60, 0xA5, 0x5B, 0x21, 0x0A,
+ 0xFA, 0x75, 0x60, 0xA4, 0x67, 0x14, 0x4B, 0x06,
+ 0x41, 0x30, 0x38, 0x33, 0x02, 0xA0, 0x25, 0x93,
+ 0x68, 0x0A, 0x00, 0x7B, 0x7A, 0x41, 0x30, 0x35,
+ 0x38, 0x68, 0x0A, 0xA2, 0x0A, 0x04, 0x00, 0x0A,
+ 0x07, 0x60, 0x70, 0x83, 0x88, 0x11, 0x0A, 0x0A,
+ 0x07, 0x00, 0x01, 0x02, 0x04, 0x08, 0x0C, 0x10,
+ 0x60, 0x00, 0x61, 0xA1, 0x3B, 0x70, 0x41, 0x30,
+ 0x37, 0x33, 0x68, 0x67, 0x8C, 0x67, 0x0A, 0x00,
+ 0x41, 0x30, 0x37, 0x35, 0x8C, 0x67, 0x0A, 0x01,
+ 0x41, 0x30, 0x37, 0x36, 0xA0, 0x14, 0x94, 0x41,
+ 0x30, 0x37, 0x35, 0x41, 0x30, 0x37, 0x36, 0x74,
+ 0x41, 0x30, 0x37, 0x35, 0x41, 0x30, 0x37, 0x36,
+ 0x61, 0xA1, 0x0B, 0x74, 0x41, 0x30, 0x37, 0x36,
+ 0x41, 0x30, 0x37, 0x35, 0x61, 0x75, 0x61, 0xA4,
+ 0x61, 0x14, 0x4E, 0x0A, 0x41, 0x30, 0x37, 0x39,
+ 0x04, 0x08, 0x41, 0x30, 0x37, 0x37, 0x0A, 0x00,
+ 0x08, 0x41, 0x30, 0x37, 0x38, 0x0A, 0x00, 0x70,
+ 0x41, 0x30, 0x37, 0x33, 0x68, 0x67, 0x70, 0x69,
+ 0x41, 0x30, 0x37, 0x37, 0x70, 0x6A, 0x41, 0x30,
+ 0x37, 0x38, 0x8B, 0x67, 0x0A, 0x05, 0x41, 0x30,
+ 0x38, 0x35, 0xA0, 0x1A, 0x94, 0x41, 0x30, 0x37,
+ 0x37, 0x41, 0x30, 0x37, 0x38, 0x74, 0x41, 0x30,
+ 0x37, 0x37, 0x41, 0x30, 0x37, 0x38, 0x61, 0x70,
+ 0x41, 0x30, 0x37, 0x38, 0x62, 0xA1, 0x11, 0x74,
+ 0x41, 0x30, 0x37, 0x38, 0x41, 0x30, 0x37, 0x37,
+ 0x61, 0x70, 0x41, 0x30, 0x37, 0x37, 0x62, 0x79,
+ 0x74, 0x79, 0x0A, 0x01, 0x72, 0x61, 0x0A, 0x01,
+ 0x00, 0x00, 0x0A, 0x01, 0x00, 0x62, 0x61, 0xA0,
+ 0x20, 0x93, 0x6B, 0x0A, 0x00, 0x41, 0x30, 0x35,
+ 0x33, 0x0A, 0x00, 0x0A, 0xE0, 0x7D, 0x79, 0x41,
+ 0x30, 0x38, 0x35, 0x0A, 0x10, 0x00, 0x0B, 0x23,
+ 0x80, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x61,
+ 0xA1, 0x1B, 0x41, 0x30, 0x35, 0x33, 0x0A, 0x00,
+ 0x0A, 0xE0, 0x7D, 0x79, 0x41, 0x30, 0x38, 0x35,
+ 0x0A, 0x10, 0x00, 0x0B, 0x23, 0x80, 0x00, 0x80,
+ 0x61, 0x00, 0x0A, 0x00, 0x5B, 0x21, 0x0A, 0x0A,
+ 0x14, 0x4B, 0x05, 0x41, 0x30, 0x30, 0x32, 0x02,
+ 0x70, 0x41, 0x30, 0x30, 0x33, 0x0B, 0x90, 0x84,
+ 0x60, 0xA0, 0x4A, 0x04, 0x92, 0x93, 0x7B, 0x60,
+ 0x0A, 0xF0, 0x00, 0x0A, 0x00, 0xA0, 0x12, 0x93,
+ 0x68, 0x0A, 0x02, 0x7B, 0x60, 0x0C, 0xA0, 0xFF,
+ 0xFF, 0xFF, 0x60, 0x7D, 0x60, 0x0A, 0xA0, 0x60,
+ 0xA1, 0x23, 0xA0, 0x12, 0x93, 0x69, 0x0A, 0x00,
+ 0x7B, 0x60, 0x0C, 0x60, 0xFF, 0xFF, 0xFF, 0x60,
+ 0x7D, 0x60, 0x0A, 0x60, 0x60, 0xA1, 0x0E, 0x7B,
+ 0x60, 0x0C, 0x20, 0xFF, 0xFF, 0xFF, 0x60, 0x7D,
+ 0x60, 0x0A, 0x20, 0x60, 0x41, 0x30, 0x30, 0x34,
+ 0x0B, 0x90, 0x84, 0x60, 0x14, 0x06, 0x41, 0x30,
+ 0x30, 0x35, 0x03, 0x14, 0x06, 0x41, 0x30, 0x30,
+ 0x36, 0x01
+};
+
+#endif
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexConfig.c b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexConfig.c
new file mode 100644
index 0000000000..c64fc4bd72
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexConfig.c
@@ -0,0 +1,125 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Family specific PCIe configuration data services
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 39275 $ @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 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.
+ *
+ * ***************************************************************************
+ *
+ */
+
+/*----------------------------------------------------------------------------------------
+ * M O D U L E S U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "Ids.h"
+#include "amdlib.h"
+#include "Gnb.h"
+#include "GnbPcie.h"
+#include GNB_MODULE_DEFINITIONS (GnbPcieConfig)
+#include "OntarioDefinitions.h"
+#include "OntarioComplexData.h"
+#include "Filecode.h"
+#define FILECODE PROC_GNB_PCIE_FAMILY_0X14_F14PCIECOMPLEXCONFIG_FILECODE
+/*----------------------------------------------------------------------------------------
+ * D E F I N I T I O N S A N D M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * T Y P E D E F S A N D S T R U C T U R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * P R O T O T Y P E S O F L O C A L F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Get total number of silicons/wrappers/engines for this complex
+ *
+ *
+ * @param[in] SocketId Socket ID.
+ * @param[out] Length Length of configuration info block
+ * @retval AGESA_SUCCESS Configuration data length is correct
+ */
+AGESA_STATUS
+PcieFmGetComplexDataLength (
+ IN UINT32 SocketId,
+ OUT UINTN *Length
+ )
+{
+ *Length = sizeof (ComplexData);
+ return AGESA_SUCCESS;
+}
+
+
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Build configuration
+ *
+ *
+ *
+ *
+ * @param[out] Buffer Pointer to buffer to build internal complex data structure
+ * @param[out] StdHeader Standard configuration header.
+ * @retval AGESA_SUCCESS Configuration data build successfully
+ */
+AGESA_STATUS
+PcieFmBuildComplexConfiguration (
+ OUT VOID *Buffer,
+ IN AMD_CONFIG_PARAMS *StdHeader
+ )
+{
+
+ LibAmdMemCopy (Buffer, &ComplexData, sizeof (ComplexData), StdHeader);
+ PcieRebaseConfigurationData ((PCIe_SILICON_CONFIG *) Buffer, 0, (UINTN)Buffer);
+
+ return AGESA_SUCCESS;
+}
+
+
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexServices.c b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexServices.c
new file mode 100644
index 0000000000..2e789aa4c9
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieComplexServices.c
@@ -0,0 +1,243 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Family specific PCIe complex initialization services
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 39275 $ @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 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.
+ *
+ * ***************************************************************************
+ *
+ */
+/*----------------------------------------------------------------------------------------
+ * M O D U L E S U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "Ids.h"
+#include "Gnb.h"
+#include "GnbPcie.h"
+#include GNB_MODULE_DEFINITIONS (GnbCommonLib)
+#include GNB_MODULE_DEFINITIONS (GnbPcieInitLibV1)
+#include GNB_MODULE_DEFINITIONS (GnbPcieConfig)
+#include "OntarioDefinitions.h"
+#include "GnbRegistersON.h"
+#include "NbSmuLib.h"
+#include "Filecode.h"
+#include GNB_MODULE_DEFINITIONS (GnbPcieInitLibV1)
+#define FILECODE PROC_GNB_PCIE_FAMILY_0X14_F14PCIECOMPLEXSERVICES_FILECODE
+/*----------------------------------------------------------------------------------------
+ * D E F I N I T I O N S A N D M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+
+/*----------------------------------------------------------------------------------------
+ * T Y P E D E F S A N D S T R U C T U R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * P R O T O T Y P E S O F L O C A L F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Control port visability
+ *
+ *
+ * @param[in] Control Hide/Unhide
+ * @param[in] Silicon Pointer to silicon configuration descriptor
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+
+VOID
+PcieFmPortVisabilityControl (
+ IN PCIE_PORT_VISIBILITY Control,
+ IN PCIe_SILICON_CONFIG *Silicon,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ switch (Control) {
+ case UnhidePorts:
+ PcieSiliconUnHidePorts (Silicon, Pcie);
+ break;
+ case HidePorts:
+ PcieSiliconHidePorts (Silicon, Pcie);
+ break;
+ default:
+ ASSERT (FALSE);
+ }
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Request boot up voltage
+ *
+ *
+ *
+ * @param[in] LinkCap Global GEN capability
+ * @param[in] Pcie Pointer to PCIe configuration data area
+ */
+VOID
+PcieFmSetBootUpVoltage (
+ IN PCIE_LINK_SPEED_CAP LinkCap,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ FCRxFE00_70A2_STRUCT FCRxFE00_70A2;
+ D18F3x15C_STRUCT D18F3x15C;
+ UINT8 TargetVidIndex;
+ UINT32 Temp;
+ IDS_HDT_CONSOLE (GNB_TRACE, "PcieFmSetBootUpVoltage Enter\n");
+ ASSERT (LinkCap <= PcieGen2);
+ GnbLibPciRead (
+ MAKE_SBDFO ( 0, 0, 0x18, 3, D18F3x15C_ADDRESS),
+ AccessWidth32,
+ &D18F3x15C.Value,
+ GnbLibGetHeader (Pcie)
+ );
+ Temp = D18F3x15C.Value;
+ if (LinkCap > PcieGen1) {
+ FCRxFE00_70A2.Value = NbSmuReadEfuse (FCRxFE00_70A2_ADDRESS, GnbLibGetHeader (Pcie));
+ TargetVidIndex = (UINT8) FCRxFE00_70A2.Field.PcieGen2Vid;
+ } else {
+ TargetVidIndex = PcieSiliconGetGen1VoltageIndex (GnbLibGetHeader (Pcie));
+ }
+ IDS_HDT_CONSOLE (PCIE_MISC, " Set Voltage for Gen %d, Vid Index %d\n", LinkCap, TargetVidIndex);
+ if (TargetVidIndex == 3) {
+ D18F3x15C.Field.SclkVidLevel2 = D18F3x15C.Field.SclkVidLevel3;
+ GnbLibPciWrite (
+ MAKE_SBDFO ( 0, 0, 0x18, 3, D18F3x15C_ADDRESS),
+ AccessWidth32,
+ &D18F3x15C.Value,
+ GnbLibGetHeader (Pcie)
+ );
+ PcieSiliconRequestVoltage (2, GnbLibGetHeader (Pcie));
+ }
+ GnbLibPciWrite (
+ MAKE_SBDFO ( 0, 0, 0x18, 3, D18F3x15C_ADDRESS),
+ AccessWidth32,
+ &Temp,
+ GnbLibGetHeader (Pcie)
+ );
+ PcieSiliconRequestVoltage (TargetVidIndex, GnbLibGetHeader (Pcie));
+ IDS_HDT_CONSOLE (GNB_TRACE, "PcieFmSetBootUpVoltage Exit\n");
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Map engine to specific PCI device address
+ *
+ *
+ *
+ * @param[in] Engine Pointer to engine configuration
+ * @param[in] Pcie Pointer to PCIe configuration
+ * @retval AGESA_ERROR Fail to map PCI device address
+ * @retval AGESA_SUCCESS Successfully allocate PCI address
+ */
+
+AGESA_STATUS
+PcieFmMapPortPciAddress (
+ IN PCIe_ENGINE_CONFIG *Engine,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ PCIe_WRAPPER_CONFIG *Wrapper;
+ UINT64 ConfigurationSignature;
+
+ Wrapper = PcieEngineGetParentWrapper (Engine);
+
+ if (Wrapper->WrapId == GPP_WRAP_ID) {
+ ConfigurationSignature = PcieConfigGetConfigurationSignature (Wrapper, Engine->Type.Port.CoreId);
+ if ((ConfigurationSignature == GPP_CORE_x4x2x1x1_ST) || (ConfigurationSignature == GPP_CORE_x4x2x2_ST)) {
+ //Enable device remapping
+ GnbLibPciIndirectRMW (
+ MAKE_SBDFO (0, 0, 0, 0, D0F0x60_ADDRESS),
+ 0x20 | IOC_WRITE_ENABLE,
+ AccessS3SaveWidth32,
+ ~(UINT32) (1 << 1),
+ 0x0,
+ GnbLibGetHeader (Pcie)
+ );
+ }
+ }
+ if (Engine->Type.Port.PortData.DeviceNumber == 0 && Engine->Type.Port.PortData.FunctionNumber == 0) {
+ Engine->Type.Port.PortData.DeviceNumber = Engine->Type.Port.NativeDevNumber;
+ Engine->Type.Port.PortData.FunctionNumber = Engine->Type.Port.NativeFunNumber;
+ return AGESA_SUCCESS;
+ }
+ if (Engine->Type.Port.PortData.DeviceNumber == Engine->Type.Port.NativeDevNumber &&
+ Engine->Type.Port.PortData.FunctionNumber == Engine->Type.Port.NativeFunNumber) {
+ return AGESA_SUCCESS;
+ }
+ return AGESA_ERROR;
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Map engine to specific PCI device address
+ *
+ *
+ *
+ * @param[in] Engine Pointer to engine configuration
+ * @param[in] Pcie Pointer to PCIe configuration
+ */
+
+
+VOID
+PcieFmEnableSlotPowerLimit (
+ IN PCIe_ENGINE_CONFIG *Engine,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ ASSERT (Engine->EngineData.EngineType == PciePortEngine);
+ if (PcieLibIsEngineAllocated (Engine) && Engine->Type.Port.PortData.PortPresent != PortDisabled && !Engine->Type.Port.IsSB) {
+ IDS_HDT_CONSOLE (PCIE_MISC, " Enable Slot Power Limit for Port % d\n", Engine->Type.Port.Address.Address.Device);
+ GnbLibPciIndirectRMW (
+ MAKE_SBDFO (0, 0, 0, 0, D0F0x60_ADDRESS),
+ (D0F0x64_x55_ADDRESS + (Engine->Type.Port.Address.Address.Device - 4) * 2) | IOC_WRITE_ENABLE,
+ AccessS3SaveWidth32,
+ 0xffffffff,
+ 1 << D0F0x64_x55_SetPowEn_OFFSET,
+ GnbLibGetHeader (Pcie)
+ );
+ }
+}
+
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePhyServices.c b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePhyServices.c
new file mode 100644
index 0000000000..cb35a59133
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePhyServices.c
@@ -0,0 +1,167 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Family specific PCIe PHY initialization services
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 39275 $ @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 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.
+ *
+ * ***************************************************************************
+ *
+ */
+
+/*----------------------------------------------------------------------------------------
+ * M O D U L E S U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "Ids.h"
+#include "Gnb.h"
+#include "GnbPcie.h"
+#include "GnbRegistersON.h"
+#include "OntarioDefinitions.h"
+#include "Filecode.h"
+#define FILECODE PROC_GNB_PCIE_FAMILY_0X14_F14PCIEPHYSERVICES_FILECODE
+/*----------------------------------------------------------------------------------------
+ * D E F I N I T I O N S A N D M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * T Y P E D E F S A N D S T R U C T U R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * P R O T O T Y P E S O F L O C A L F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * PHY Pll Personality Init
+ *
+ *
+ *
+ * @param[in] Wrapper Pointer to wrapper config descriptor
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+AGESA_STATUS
+PcieFmPhyLetPllPersonalityInit (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ // Stub function
+ return AGESA_SUCCESS;
+}
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Port channel characteristic
+ *
+ *
+ *
+ * @param[in] Engine Pointer to engine configuration
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+VOID
+PcieFmPhyChannelCharacteristic (
+ IN PCIe_ENGINE_CONFIG *Engine,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Point "virtual" PLL clock picker away from PCIe
+ *
+ *
+ *
+ * @param[in] Wrapper Pointer to internal configuration data area
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+VOID
+PcieFmAvertClockPickers (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ // Stub function
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * PHY lane ganging
+ *
+ *
+ *
+ * @param[out] Wrapper Pointer to internal configuration data area
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+VOID
+PcieFmPhyApplyGanging (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ // Stub function
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Program receiver detection power mode
+ *
+ *
+ *
+ * @param[in] Wrapper Pointer to wrapper config descriptor
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+
+VOID
+PcieFmPifSetRxDetectPowerMode (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ // Stub function
+}
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePifServices.c b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePifServices.c
new file mode 100644
index 0000000000..31ef7c8980
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PciePifServices.c
@@ -0,0 +1,120 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Family specific PCIe PHY initialization services
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 40760 $ @e \$Date: 2010-10-27 08:55:23 +0800 (Wed, 27 Oct 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.
+ *
+ * ***************************************************************************
+ *
+ */
+
+/*----------------------------------------------------------------------------------------
+ * M O D U L E S U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "Ids.h"
+#include "Gnb.h"
+#include "GnbPcie.h"
+#include GNB_MODULE_DEFINITIONS (GnbCommonLib)
+#include GNB_MODULE_DEFINITIONS (GnbPcieInitLibV1)
+#include "GnbRegistersON.h"
+#include "Filecode.h"
+#define FILECODE PROC_GNB_PCIE_FAMILY_0X14_F14PCIEPIFSERVICES_FILECODE
+/*----------------------------------------------------------------------------------------
+ * D E F I N I T I O N S A N D M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * T Y P E D E F S A N D S T R U C T U R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * P R O T O T Y P E S O F L O C A L F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Set PLL mode for L1
+ *
+ *
+ * @param[in] LaneBitmap Power down PLL for these lanes
+ * @param[in] Wrapper Pointer to Wrapper config descriptor
+ * @param[in] Pcie Pointer to PICe configuration data area
+ */
+VOID
+PcieFmPifSetPllModeForL1 (
+ IN UINT32 LaneBitmap,
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ UINT32 ActiveLaneBitmap;
+ ActiveLaneBitmap = PcieUtilGetWrapperLaneBitMap (LANE_TYPE_PCIE_ACTIVE | LANE_TYPE_PCIE_HOTPLUG, 0, Wrapper, Pcie);
+ // This limits PLL setting to be identical for all PLL on wrapper.
+ if ((ActiveLaneBitmap & LaneBitmap) == ActiveLaneBitmap) {
+ LaneBitmap &= PcieUtilGetWrapperLaneBitMap (LANE_TYPE_PCIE_ALL, 0, Wrapper, Pcie);
+ PciePifSetPllModeForL1 (LaneBitmap, Wrapper, Pcie);
+ }
+}
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * PLL power up latency
+ *
+ *
+ * @param[in] Wrapper Pointer to Wrapper config descriptor
+ * @param[in] Pcie Pointer to PICe configuration data area
+ * @retval Pll wake up latency in us
+ */
+UINT8
+PcieFmPifGetPllPowerUpLatency (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ return 30;
+}
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieWrapperServices.c b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieWrapperServices.c
new file mode 100644
index 0000000000..88290b19cc
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/F14PcieWrapperServices.c
@@ -0,0 +1,631 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Family specific PCIe wrapper configuration services
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 39275 $ @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 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.
+ *
+ * ***************************************************************************
+ *
+ */
+
+/*----------------------------------------------------------------------------------------
+ * M O D U L E S U S E D
+ *----------------------------------------------------------------------------------------
+ */
+#include "AGESA.h"
+#include "Ids.h"
+#include "Gnb.h"
+#include "GnbPcie.h"
+#include "PcieFamilyServices.h"
+#include GNB_MODULE_DEFINITIONS (GnbCommonLib)
+#include GNB_MODULE_DEFINITIONS (GnbPcieInitLibV1)
+#include "PcieMiscLib.h"
+#include "OntarioDefinitions.h"
+#include "GnbRegistersON.h"
+#include "NbSmuLib.h"
+#include "Filecode.h"
+#define FILECODE PROC_GNB_PCIE_FAMILY_0X14_F14PCIEWRAPPERSERVICES_FILECODE
+/*----------------------------------------------------------------------------------------
+ * D E F I N I T I O N S A N D M A C R O S
+ *----------------------------------------------------------------------------------------
+ */
+extern BUILD_OPT_CFG UserOptions;
+
+/*----------------------------------------------------------------------------------------
+ * T Y P E D E F S A N D S T R U C T U R E S
+ *----------------------------------------------------------------------------------------
+ */
+
+
+/*----------------------------------------------------------------------------------------
+ * P R O T O T Y P E S O F L O C A L F U N C T I O N S
+ *----------------------------------------------------------------------------------------
+ */
+
+AGESA_STATUS
+STATIC
+PcieOnConfigureGppEnginesLaneAllocation (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN UINT8 ConfigurationId
+ );
+
+AGESA_STATUS
+STATIC
+PcieOnConfigureDdiEnginesLaneAllocation (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN UINT8 ConfigurationId
+ );
+
+VOID
+PcieFmExecuteNativeGen1Reconfig (
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+/*----------------------------------------------------------------------------------------
+ * T A B L E S
+ *----------------------------------------------------------------------------------------
+ */
+PCIE_HOST_REGISTER_ENTRY PcieInitTable [] = {
+ {
+ WRAP_SPACE (0, D0F0xE4_WRAP_8016_ADDRESS),
+ D0F0xE4_WRAP_8016_CalibAckLatency_MASK,
+ 0
+ },
+ {
+ PHY_SPACE (0, 0, D0F0xE4_PHY_4004_ADDRESS),
+ D0F0xE4_PHY_4004_PllBiasGenPdnbOvrdVal_MASK | D0F0xE4_PHY_4004_PllBiasGenPdnbOvrdEn_MASK,
+ (0x1 << D0F0xE4_PHY_4004_PllBiasGenPdnbOvrdVal_OFFSET) | (0x1 << D0F0xE4_PHY_4004_PllBiasGenPdnbOvrdEn_OFFSET)
+ },
+ {
+ D0F0xE4_x0108_8071_ADDRESS,
+ D0F0xE4_x0108_8071_RxAdjust_MASK,
+ 0x3 << D0F0xE4_x0108_8071_RxAdjust_OFFSET
+ },
+ {
+ D0F0xE4_x0108_8072_ADDRESS,
+ D0F0xE4_x0108_8072_TxAdjust_MASK,
+ 0x3 << D0F0xE4_x0108_8072_TxAdjust_OFFSET
+ },
+};
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Configure engine list to support lane allocation according to configuration ID.
+ *
+ *
+ *
+ * @param[in] Wrapper Pointer to wrapper config descriptor
+ * @param[in] EngineType Engine Type
+ * @param[in] ConfigurationId Configuration ID
+ * @retval AGESA_SUCCESS Configuration successfully applied
+ * @retval AGESA_UNSUPPORTED No more configuration available for given engine type
+ * @retval AGESA_ERROR Requested configuration not supported
+ */
+AGESA_STATUS
+PcieFmConfigureEnginesLaneAllocation (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIE_ENGINE_TYPE EngineType,
+ IN UINT8 ConfigurationId
+ )
+{
+ AGESA_STATUS Status;
+ Status = AGESA_ERROR;
+ switch (Wrapper->WrapId) {
+ case GPP_WRAP_ID:
+ if (EngineType != PciePortEngine) {
+ return AGESA_UNSUPPORTED;
+ }
+ Status = PcieOnConfigureGppEnginesLaneAllocation (Wrapper, ConfigurationId);
+ break;
+ case DDI_WRAP_ID:
+ if (EngineType != PcieDdiEngine) {
+ return AGESA_UNSUPPORTED;
+ }
+ Status = PcieOnConfigureDdiEnginesLaneAllocation (Wrapper, ConfigurationId);
+ break;
+ default:
+ ASSERT (FALSE);
+
+ }
+ return Status;
+}
+
+CONST UINT8 GppLaneConfigurationTable [][NUMBER_OF_GPP_PORTS * 2] = {
+//4 5 6 7 8 (SB)
+ 4, 7, UNUSED_LANE_ID, UNUSED_LANE_ID, UNUSED_LANE_ID, UNUSED_LANE_ID, UNUSED_LANE_ID, UNUSED_LANE_ID, 0, 3,
+ 4, 5, 6, 7, UNUSED_LANE_ID, UNUSED_LANE_ID, UNUSED_LANE_ID, UNUSED_LANE_ID, 0, 3,
+ 4, 5, UNUSED_LANE_ID, UNUSED_LANE_ID, 6, 7, UNUSED_LANE_ID, UNUSED_LANE_ID, 0, 3,
+ 4, 5, 6, 6, 7, 7, UNUSED_LANE_ID, UNUSED_LANE_ID, 0, 3,
+ 4, 5, UNUSED_LANE_ID, UNUSED_LANE_ID, 6, 6, 7, 7, 0, 3,
+ 4, 4, 5, 5, 6, 6, 7, 7, 0, 3
+};
+
+CONST UINT8 GppPortIdConfigurationTable [][NUMBER_OF_GPP_PORTS] = {
+//4 5 6 7 8 (SB)
+ 1, 2, 3, 4, 0,
+ 1, 2, 3, 4, 0,
+ 1, 3, 2, 4, 0,
+ 1, 2, 3, 4, 0,
+ 1, 4, 2, 3, 0,
+ 1, 2, 3, 4, 0
+};
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Configure GFX engine list to support lane allocation according to configuration ID.
+ *
+ *
+ *
+ * @param[in] Wrapper Pointer to wrapper config descriptor
+ * @param[in] ConfigurationId Configuration ID
+ * @retval AGESA_SUCCESS Configuration successfully applied
+ * @retval AGESA_ERROR Requested configuration not supported
+ */
+
+
+AGESA_STATUS
+STATIC
+PcieOnConfigureGppEnginesLaneAllocation (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN UINT8 ConfigurationId
+ )
+{
+ PCIe_ENGINE_CONFIG *EnginesList;
+ UINTN CoreLaneIndex;
+ UINTN PortIdIndex;
+ if (ConfigurationId > ((sizeof (GppLaneConfigurationTable) / (NUMBER_OF_GPP_PORTS * 2)) - 1)) {
+ return AGESA_ERROR;
+ }
+ EnginesList = PcieWrapperGetEngineList (Wrapper);
+ CoreLaneIndex = 0;
+ PortIdIndex = 0;
+ do {
+ EnginesList->Flags &= ~DESCRIPTOR_ALLOCATED;
+ EnginesList->Type.Port.PortId = GppPortIdConfigurationTable [ConfigurationId][PortIdIndex++];
+ EnginesList->Type.Port.StartCoreLane = GppLaneConfigurationTable [ConfigurationId][CoreLaneIndex++];
+ EnginesList->Type.Port.EndCoreLane = GppLaneConfigurationTable [ConfigurationId][CoreLaneIndex++];
+
+ } while (IS_LAST_DESCRIPTOR (EnginesList++));
+ return AGESA_SUCCESS;
+}
+
+
+CONST UINT8 DdiLaneConfigurationTable [][NUMBER_OF_DDIS * 2] = {
+ 0, 3, 4, 7, 8, 11
+};
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Configure DDI engine list to support lane allocation according to configuration ID.
+ *
+ *
+ *
+ * @param[in] Wrapper Pointer to wrapper config descriptor
+ * @param[in] ConfigurationId Configuration ID
+ * @retval AGESA_SUCCESS Configuration successfully applied
+ * @retval AGESA_ERROR Requested configuration not supported
+ */
+
+
+AGESA_STATUS
+STATIC
+PcieOnConfigureDdiEnginesLaneAllocation (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN UINT8 ConfigurationId
+ )
+{
+ PCIe_ENGINE_CONFIG *EnginesList;
+ UINTN LaneIndex;
+ EnginesList = PcieWrapperGetEngineList (Wrapper);
+ if (ConfigurationId > ((sizeof (DdiLaneConfigurationTable) / (NUMBER_OF_DDIS * 2)) - 1)) {
+ return AGESA_ERROR;
+ }
+ LaneIndex = 0;
+ do {
+ EnginesList->Flags &= ~DESCRIPTOR_ALLOCATED;
+ EnginesList->EngineData.StartLane = DdiLaneConfigurationTable [ConfigurationId][LaneIndex++] +
+ Wrapper->StartPhyLane;
+ EnginesList->EngineData.EndLane = DdiLaneConfigurationTable [ConfigurationId][LaneIndex++] +
+ Wrapper->StartPhyLane;
+ } while (IS_LAST_DESCRIPTOR (EnginesList++));
+ return AGESA_SUCCESS;
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Configure clock to run out of the wrapper at specific speed
+ *
+ *
+ * @param[in] LinkSpeedCapability Link Speed capability
+ * @param[in] Wrapper Pointer to wrapper config descriptor
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+VOID
+PcieFmConfigureClock (
+ IN PCIE_LINK_SPEED_CAP LinkSpeedCapability,
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+}
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Get configuration Value for GPP wrapper
+ *
+ *
+ *
+ * @param[in] ConfigurationSignature Configuration signature
+ * @param[out] ConfigurationValue Configuration value
+ * @retval AGESA_SUCCESS Correct core configuration value returned by in *ConfigurationValue
+ * @retval AGESA_ERROR ConfigurationSignature is incorrect
+ */
+AGESA_STATUS
+PcieOnGetGppConfigurationValue (
+ IN UINT64 ConfigurationSignature,
+ OUT UINT8 *ConfigurationValue
+ )
+{
+ switch (ConfigurationSignature) {
+ case GPP_CORE_x4x1x1x1x1:
+ *ConfigurationValue = 0x4;
+ break;
+ case GPP_CORE_x4x2x1x1:
+ case GPP_CORE_x4x2x1x1_ST:
+ //Configuration 2:1:1 - Device Numbers 4:5:6
+ //Configuration 2:1:1 - Device Numbers 4:6:7
+ *ConfigurationValue = 0x3;
+ break;
+ case GPP_CORE_x4x2x2:
+ case GPP_CORE_x4x2x2_ST:
+ //Configuration 2:2 - Device Numbers 4:5
+ //Configuration 2:2 - Device Numbers 4:6
+ *ConfigurationValue = 0x2;
+ break;
+ case GPP_CORE_x4x4:
+ *ConfigurationValue = 0x1;
+ break;
+ default:
+ ASSERT (FALSE);
+ return AGESA_ERROR;
+ }
+ return AGESA_SUCCESS;
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Get core configuration value
+ *
+ *
+ *
+ * @param[in] Wrapper Pointer to internal configuration data area
+ * @param[in] CoreId Core ID
+ * @param[in] ConfigurationSignature Configuration signature
+ * @param[out] ConfigurationValue Configuration value (for core configuration)
+ * @retval AGESA_SUCCESS Configuration successfully applied
+ * @retval AGESA_ERROR Core configuration value can not be determined
+ */
+AGESA_STATUS
+PcieFmGetCoreConfigurationValue (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN UINT8 CoreId,
+ IN UINT64 ConfigurationSignature,
+ IN UINT8 *ConfigurationValue
+ )
+{
+ AGESA_STATUS Status;
+
+ if (Wrapper->WrapId == GPP_WRAP_ID) {
+ Status = PcieOnGetGppConfigurationValue (ConfigurationSignature, ConfigurationValue);
+ } else {
+ Status = AGESA_ERROR;
+ }
+ return Status;
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Get max link speed capability supported by this port
+ *
+ *
+ *
+ * @param[in] Flags See Flags PCIE_PORT_GEN_CAP_BOOT / PCIE_PORT_GEN_CAP_MAX
+ * @param[in] Engine Pointer to engine config descriptor
+ * @param[in] Pcie Pointer to global PCIe configuration
+ * @retval PcieGen1/PcieGen2 Max supported link gen capability
+ */
+PCIE_LINK_SPEED_CAP
+PcieFmGetLinkSpeedCap (
+ IN UINT32 Flags,
+ IN PCIe_ENGINE_CONFIG *Engine,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ PCIE_LINK_SPEED_CAP LinkSpeedCapability;
+ ASSERT (Engine->Type.Port.PortData.LinkSpeedCapability < MaxPcieGen);
+ LinkSpeedCapability = PcieGen2;
+ if (Engine->Type.Port.PortData.LinkSpeedCapability == PcieGenMaxSupported) {
+ Engine->Type.Port.PortData.LinkSpeedCapability = (UINT8) LinkSpeedCapability;
+ }
+ if (Pcie->PsppPolicy == PsppPowerSaving) {
+ LinkSpeedCapability = PcieGen1;
+ }
+ if (Engine->Type.Port.PortData.LinkSpeedCapability < LinkSpeedCapability) {
+ LinkSpeedCapability = Engine->Type.Port.PortData.LinkSpeedCapability;
+ }
+ if ((Flags & PCIE_PORT_GEN_CAP_BOOT) != 0) {
+ if (Pcie->PsppPolicy == PsppBalanceLow) {
+ LinkSpeedCapability = PcieGen1;
+ }
+ }
+ return LinkSpeedCapability;
+}
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Various initialization needed prior topology and configuration initialization
+ *
+ *
+ *
+ * @param[in] Pcie Pointer to global PCIe configuration
+ *
+ */
+VOID
+PcieFmPreInit (
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ UINT32 Index;
+ PCIe_SILICON_CONFIG *Silicon;
+ PCIE_LINK_SPEED_CAP GlobalCapability;
+ F14_PCIe_WRAPPER_CONFIG *F14PcieWrapper;
+
+ Silicon = PcieComplexGetSiliconList (&Pcie->ComplexList[0]);
+ F14PcieWrapper = &((F14_COMPLEX_CONFIG*) Silicon)->FmGppWrapper ;
+ GlobalCapability = PcieUtilGlobalGenCapability (
+ PCIE_PORT_GEN_CAP_MAX | PCIE_GLOBAL_GEN_CAP_ALL_PORTS,
+ Pcie
+ );
+ if ((GlobalCapability == PcieGen1) && (F14PcieWrapper->NativeGen1Support == TRUE)) {
+ PcieFmExecuteNativeGen1Reconfig (Pcie);
+ }
+ Silicon = PcieComplexGetSiliconList (&Pcie->ComplexList[0]);
+ for (Index = 0; Index < (sizeof (PcieInitTable) / sizeof (PCIE_HOST_REGISTER_ENTRY)); Index++) {
+ PcieSiliconRegisterRMW (
+ Silicon,
+ PcieInitTable[Index].Reg,
+ PcieInitTable[Index].Mask,
+ PcieInitTable[Index].Data,
+ FALSE,
+ Pcie
+ );
+ }
+
+ // Set PCIe SSID.
+ PcieSiliconRegisterRMW (
+ Silicon,
+ WRAP_SPACE (0, D0F0xE4_WRAP_8002_ADDRESS),
+ D0F0xE4_WRAP_8002_SubsystemVendorID_MASK | D0F0xE4_WRAP_8002_SubsystemID_MASK,
+ UserOptions.CfgGnbPcieSSID,
+ FALSE,
+ Pcie
+ );
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Check if engine can be remapped to Device/function number requested by user
+ * defined engine descriptor
+ *
+ * Function only called if requested device/function does not much native device/function
+ *
+ * @param[in] PortDescriptor Pointer to user defined engine descriptor
+ * @param[in] Engine Pointer engine configuration
+ * @retval TRUE Descriptor can be mapped to engine
+ * @retval FALSE Descriptor can NOT be mapped to engine
+ */
+
+BOOLEAN
+PcieFmCheckPortPciDeviceMapping (
+ IN PCIe_PORT_DESCRIPTOR *PortDescriptor,
+ IN PCIe_ENGINE_CONFIG *Engine
+ )
+{
+ return FALSE;
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Get core configuration string
+ *
+ * Debug function for logging configuration
+ *
+ * @param[in] Wrapper Pointer to internal configuration data area
+ * @param[in] ConfigurationValue Configuration value
+ * @retval Configuration string
+ */
+
+CONST CHAR8*
+PcieFmDebugGetCoreConfigurationString (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN UINT8 ConfigurationValue
+ )
+{
+ switch (ConfigurationValue) {
+ case 4:
+ return "1x4, 4x1";
+ case 3:
+ return "1x4, 1x2, 2x1";
+ case 2:
+ return "1x4, 2x2";
+ case 1:
+ return "1x4, 1x4";
+ default:
+ break;
+ }
+ return " !!! Something Wrong !!!";
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Get wrapper name
+ *
+ * Debug function for logging wrapper name
+ *
+ * @param[in] Wrapper Pointer to internal configuration data area
+ * @retval Wrapper Name string
+ */
+
+CONST CHAR8*
+PcieFmDebugGetWrapperNameString (
+ IN PCIe_WRAPPER_CONFIG *Wrapper
+ )
+{
+ switch (Wrapper->WrapId) {
+ case GPP_WRAP_ID:
+ return "GPPSB";
+ case DDI_WRAP_ID:
+ return "Virtual DDI";
+ default:
+ break;
+ }
+ return " !!! Something Wrong !!!";
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Get register address name
+ *
+ * Debug function for logging register trace
+ *
+ * @param[in] AddressFrame Address Frame
+ * @retval Register address name
+ */
+CONST CHAR8*
+PcieFmDebugGetHostRegAddressSpaceString (
+ IN UINT16 AddressFrame
+ )
+{
+ switch (AddressFrame) {
+ case 0x130:
+ return "GPP WRAP";
+ case 0x110:
+ return "GPP PIF0";
+ case 0x120:
+ return "GPP PHY0";
+ case 0x101:
+ return "GPP CORE";
+ default:
+ break;
+ }
+ return " !!! Something Wrong !!!";
+}
+
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Execute/clean up reconfiguration for Gen 1 native mode
+ *
+ *
+ *
+ * @param[in] Pcie Pointer to global PCIe configuration
+ */
+VOID
+PcieFmExecuteNativeGen1Reconfig (
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ )
+{
+ IDS_HDT_CONSOLE (GNB_TRACE, "PcieFmExecuteNativeGen1Reconfig Enter\n");
+ NbSmuServiceRequest (19, FALSE, GnbLibGetHeader (Pcie));
+ IDS_HDT_CONSOLE (GNB_TRACE, "PcieFmExecuteNativeGen1Reconfig Enter\n");
+}
+
+/*----------------------------------------------------------------------------------------*/
+/**
+ * Check if the lane can be muxed by link width requested by user
+ * defined engine descriptor
+ *
+ * Check Engine StartCoreLane could be aligned by user requested link width(x1, x2, x4, x8, x16).
+ * Check Engine StartCoreLane could be aligned by user requested link width x2.
+ *
+ * @param[in] PortDescriptor Pointer to user defined engine descriptor
+ * @param[in] Engine Pointer engine configuration
+ * @retval TRUE Lane can be muxed
+ * @retval FALSE LAne can NOT be muxed
+ */
+
+BOOLEAN
+PcieFmCheckPortPcieLaneCanBeMuxed (
+ IN PCIe_PORT_DESCRIPTOR *PortDescriptor,
+ IN PCIe_ENGINE_CONFIG *Engine
+ )
+{
+ UINT16 DescriptorHiLane;
+ UINT16 DescriptorLoLane;
+ UINT16 DescriptorNumberOfLanes;
+ PCIe_WRAPPER_CONFIG *Wrapper;
+ UINT16 NormalizedLoPhyLane;
+ BOOLEAN Result;
+
+ Result = FALSE;
+ Wrapper = (PCIe_WRAPPER_CONFIG *)Engine->Wrapper;
+ DescriptorLoLane = MIN (PortDescriptor->EngineData.StartLane, PortDescriptor->EngineData.EndLane);
+ DescriptorHiLane = MAX (PortDescriptor->EngineData.StartLane, PortDescriptor->EngineData.EndLane);
+ DescriptorNumberOfLanes = DescriptorHiLane - DescriptorLoLane + 1;
+
+ NormalizedLoPhyLane = DescriptorLoLane - Wrapper->StartPhyLane;
+
+ if (NormalizedLoPhyLane == Engine->Type.Port.StartCoreLane) {
+ Result = TRUE;
+ } else {
+ if (((Engine->Type.Port.StartCoreLane % 2) == 0) || (Engine->Type.Port.StartCoreLane == 0)) {
+ if (NormalizedLoPhyLane == 0) {
+ Result = TRUE;
+ } else {
+ if (((NormalizedLoPhyLane % 2) == 0) && ((NormalizedLoPhyLane % DescriptorNumberOfLanes) == 0)) {
+ Result = TRUE;
+ }
+ }
+ }
+ }
+
+ return Result;
+}
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioComplexData.h b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioComplexData.h
new file mode 100644
index 0000000000..b9f9a04d0f
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioComplexData.h
@@ -0,0 +1,241 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Family specific PCIe configuration data definition
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 37710 $ @e \$Date: 2010-09-10 11:08:20 +0800 (Fri, 10 Sep 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 _ONTARIOCOMPLEXDATA_H_
+#define _ONTARIOCOMPLEXDATA_H_
+
+STATIC
+F14_COMPLEX_CONFIG ComplexData = {
+ //Silicon
+ {
+ DESCRIPTOR_TERMINATE_LIST,
+ {0},
+ offsetof (F14_COMPLEX_CONFIG, GppWrapper),
+ NULL
+ },
+ //Gpp Wrapper
+ {
+ DESCRIPTOR_PCIE_WRAPPER,
+ GPP_WRAP_ID,
+ GPP_NUMBER_OF_PIFs,
+ GPP_START_PHY_LANE,
+ GPP_END_PHY_LANE,
+ GPP_CORE_ID,
+ GPP_CORE_ID,
+ {
+ 1, //PowerOffUnusedLanesEnabled,
+ 1, //PowerOffUnusedPllsEnabled
+ 1, //ClkGating
+ 1, //LclkGating
+ 1, //TxclkGatingPllPowerDown
+ 1 //PllOffInL1
+ },
+ offsetof (F14_COMPLEX_CONFIG, Port4),
+ offsetof (F14_COMPLEX_CONFIG, Silicon),
+ offsetof (F14_COMPLEX_CONFIG, FmGppWrapper)
+ },
+ //Virtual DDI Wrapper
+ {
+ DESCRIPTOR_DDI_WRAPPER | DESCRIPTOR_VIRTUAL | DESCRIPTOR_TERMINATE_LIST,
+ DDI_WRAP_ID,
+ 0,
+ DDI_START_PHY_LANE,
+ DDI_END_PHY_LANE,
+ 0xff,
+ 0x0,
+ {
+ 1, //PowerOffUnusedLanesEnabled,
+ 1, //PowerOffUnusedPllsEnabled
+ 1, //ClkGating
+ 1, //LclkGating
+ 1, //TxclkGatingPllPowerDown
+ 0 //PllOffInL1
+ },
+ offsetof (F14_COMPLEX_CONFIG, Dpa),
+ offsetof (F14_COMPLEX_CONFIG, Silicon),
+ NULL
+ },
+ //Port 4
+ {
+ DESCRIPTOR_PCIE_ENGINE,
+ offsetof (F14_COMPLEX_CONFIG, GppWrapper),
+ { PciePortEngine, 4, 4},
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ {
+ {
+ {0},
+ 4,
+ 4,
+ 4,
+ 0,
+ GPP_CORE_ID,
+ 1,
+ 0,
+ FALSE,
+ LinkStateResetExit
+ },
+ },
+ },
+ //Port 5
+ {
+ DESCRIPTOR_PCIE_ENGINE,
+ offsetof (F14_COMPLEX_CONFIG, GppWrapper),
+ { PciePortEngine, 5, 5},
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ {
+ {
+ {0},
+ 5,
+ 5,
+ 5,
+ 0,
+ GPP_CORE_ID,
+ 2,
+ 0,
+ FALSE,
+ LinkStateResetExit
+ },
+ },
+ },
+ //Port 6
+ {
+ DESCRIPTOR_PCIE_ENGINE,
+ offsetof (F14_COMPLEX_CONFIG, GppWrapper),
+ { PciePortEngine, 6, 6 },
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ {
+ {
+ {0},
+ 6,
+ 6,
+ 6,
+ 0,
+ GPP_CORE_ID,
+ 3,
+ 0,
+ FALSE,
+ LinkStateResetExit
+ },
+ },
+ },
+ //Port 7
+ {
+ DESCRIPTOR_PCIE_ENGINE,
+ offsetof (F14_COMPLEX_CONFIG, GppWrapper),
+ { PciePortEngine, 7, 7 },
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ {
+ {
+ {0},
+ 7,
+ 7,
+ 7,
+ 0,
+ GPP_CORE_ID,
+ 4,
+ 0,
+ FALSE,
+ LinkStateResetExit
+ },
+ },
+ },
+ //Port 8
+ {
+ DESCRIPTOR_PCIE_ENGINE | DESCRIPTOR_TERMINATE_LIST,
+ offsetof (F14_COMPLEX_CONFIG, GppWrapper),
+ { PciePortEngine, 0, 3 },
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ {
+ {
+ {PortEnabled, 0, 8, 0, PcieGenMaxSupported, AspmL0sL1, HotplugDisabled, 0x0, {0}},
+ 0,
+ 3,
+ 8,
+ 0,
+ GPP_CORE_ID,
+ 0,
+ MAKE_SBDFO (0, 0, 8, 0, 0),
+ TRUE,
+ LinkStateTrainingSuccess
+ },
+ },
+ },
+ //Virtual DpA
+ {
+ DESCRIPTOR_DDI_ENGINE | DESCRIPTOR_VIRTUAL,
+ offsetof (F14_COMPLEX_CONFIG, DdiWrapper),
+ {PcieDdiEngine},
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ },
+ //Virtual DpB
+ {
+ DESCRIPTOR_DDI_ENGINE | DESCRIPTOR_VIRTUAL,
+ offsetof (F14_COMPLEX_CONFIG, DdiWrapper),
+ {PcieDdiEngine},
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ },
+ //Virtual VGA
+ {
+ DESCRIPTOR_DDI_ENGINE | DESCRIPTOR_VIRTUAL | DESCRIPTOR_TERMINATE_LIST,
+ offsetof (F14_COMPLEX_CONFIG, DdiWrapper),
+ {PcieDdiEngine},
+ 0, //Initialization Status
+ 0xFF, //Scratch
+ },
+ //Native Gen Support
+ //Set to TRUE after bringup
+ {
+ TRUE,
+ }
+
+};
+#endif
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioDefinitions.h b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioDefinitions.h
new file mode 100644
index 0000000000..dd78ce9ea6
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/0x14/OntarioDefinitions.h
@@ -0,0 +1,102 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * Family specific PCIe definitions
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 35664 $ @e \$Date: 2010-07-28 20:02:15 +0800 (Wed, 28 Jul 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 _LLANODEFINITIONS_H_
+#define _LLANODEFINITIONS_H_
+
+#define SOCKET_ID 0
+
+#define MAX_NUM_PHYs 2
+#define MAX_NUM_LANE_PER_PHY 8
+
+
+#define NUMBER_OF_GPP_PORTS 5
+#define NUMBER_OF_DDIS 3
+#define NUMBER_OF_WRAPPERS 2
+#define NUMBER_OF_SILICONS 1
+
+#define GPP_WRAP_ID 0
+#define GPP_NUMBER_OF_PIFs 1
+#define GPP_START_PHY_LANE 0
+#define GPP_END_PHY_LANE 7
+#define GPP_CORE_ID 1
+
+#define GPP_CORE_x4x1x1x1x1 ((1ull << 32) | (1ull << 24) | (1ull << 16) | (1ull << 8) | (4ull << 0))
+#define GPP_CORE_x4x2x1x1 ((2ull << 32) | (1ull << 24) | (1ull << 16) | (0ull << 8) | (4ull << 0))
+#define GPP_CORE_x4x2x1x1_ST ((2ull << 32) | (0ull << 24) | (1ull << 16) | (1ull << 8) | (4ull << 0))
+#define GPP_CORE_x4x2x2 ((2ull << 32) | (2ull << 24) | (0ull << 16) | (0ull << 8) | (4ull << 0))
+#define GPP_CORE_x4x2x2_ST ((2ull << 32) | (0ull << 24) | (2ull << 16) | (0ull << 8) | (4ull << 0))
+#define GPP_CORE_x4x4 ((4ull << 32) | (0ull << 24) | (0ull << 16) | (0ull << 8) | (4ull << 0))
+
+#define DDI_WRAP_ID 2
+#define DDI_NUMBER_OF_PIFs 1
+#define DDI_START_PHY_LANE 8
+#define DDI_END_PHY_LANE 19
+
+
+
+/// F14 PCIe Wrapper Configuration
+typedef struct {
+ BOOLEAN NativeGen1Support; ///< Native Gen1 support
+} F14_PCIe_WRAPPER_CONFIG;
+
+
+/// Complex Configuration
+typedef struct {
+ PCIe_SILICON_CONFIG Silicon; ///< Silicon
+ PCIe_WRAPPER_CONFIG GppWrapper; ///< GPP Wrapper
+ PCIe_WRAPPER_CONFIG DdiWrapper; ///< Virtual DDI Wrapper
+ PCIe_ENGINE_CONFIG Port4; ///< Port 4
+ PCIe_ENGINE_CONFIG Port5; ///< Port 5
+ PCIe_ENGINE_CONFIG Port6; ///< Port 6
+ PCIe_ENGINE_CONFIG Port7; ///< Port 7
+ PCIe_ENGINE_CONFIG Port8; ///< Port 8
+ PCIe_ENGINE_CONFIG Dpa; ///< Virtual DPA
+ PCIe_ENGINE_CONFIG Dpb; ///< Virtual DPB
+ PCIe_ENGINE_CONFIG Vga; ///< Virtual VGA
+ F14_PCIe_WRAPPER_CONFIG FmGppWrapper; ///< F14 Pcie Wrapper
+} F14_COMPLEX_CONFIG;
+
+#endif
diff --git a/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/PcieFamilyServices.h b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/PcieFamilyServices.h
new file mode 100644
index 0000000000..51fe82ea0c
--- /dev/null
+++ b/src/vendorcode/amd/agesa/Proc/GNB/PCIe/Family/PcieFamilyServices.h
@@ -0,0 +1,135 @@
+/* $NoKeywords:$ */
+
+/**
+ * @file
+ *
+ * Family specific PCIe services.
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project: AGESA
+ * @e sub-project: GNB
+ * @e \$Revision: 39275 $ @e \$Date: 2010-10-09 08:22:05 +0800 (Sat, 09 Oct 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 _PCIECOMPLEXCONFIG_H_
+#define _PCIECOMPLEXCONFIG_H_
+
+
+VOID
+PcieFmPhyApplyGanging (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+AGESA_STATUS
+PcieFmPhyLetPllPersonalityInitCallback (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN VOID *Buffer,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmPhyChannelCharacteristic (
+ IN PCIe_ENGINE_CONFIG *Engine,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmPortVisabilityControl (
+ IN PCIE_PORT_VISIBILITY Control,
+ IN PCIe_SILICON_CONFIG *Silicon,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmPreInit (
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+
+VOID
+PcieFmAvertClockPickers (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmSetBootUpVoltage (
+ IN PCIE_LINK_SPEED_CAP LinkCap,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmEnableSlotPowerLimit (
+ IN PCIe_ENGINE_CONFIG *Engine,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmConfigureClock (
+ IN PCIE_LINK_SPEED_CAP LinkSpeedCapability,
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmPifSetRxDetectPowerMode (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+VOID
+PcieFmPifSetPllModeForL1 (
+ IN UINT32 LaneBitmap,
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+UINT8
+PcieFmPifGetPllPowerUpLatency (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+
+AGESA_STATUS
+PcieFmPhyLaneInitInitCallback (
+ IN PCIe_WRAPPER_CONFIG *Wrapper,
+ IN VOID *Buffer,
+ IN PCIe_PLATFORM_CONFIG *Pcie
+ );
+#endif
+