[coreboot-gerrit] Patch set updated for coreboot: AGESA: Unify some of f*/Proc/Fch/Common

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Mon Apr 25 21:41:55 CEST 2016


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/7782

-gerrit

commit f07d6b938e33368302ecf619679bae1f081c9fde
Author: Edward O'Callaghan <eocallaghan at alterapraxis.com>
Date:   Thu Dec 11 01:26:33 2014 +1100

    AGESA: Unify some of f*/Proc/Fch/Common
    
    Sanitize some board includes to match the refactor.
    
    Change-Id: I690e0bbcf11cf143bc63bb960b2357809926cda2
    Signed-off-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
---
 src/cpu/amd/agesa/family16kb/Makefile.inc          |   2 +-
 src/mainboard/amd/olivehill/BiosCallOuts.c         |   2 +-
 src/mainboard/amd/parmer/BiosCallOuts.c            |   2 +-
 src/mainboard/amd/thatcher/BiosCallOuts.c          |   2 +-
 src/mainboard/asrock/imb-a180/BiosCallOuts.c       |   2 +-
 src/mainboard/asus/f2a85-m/BiosCallOuts.c          |   2 +-
 src/mainboard/asus/f2a85-m_le/BiosCallOuts.c       |   2 +-
 src/mainboard/gizmosphere/gizmo2/BiosCallOuts.c    |   2 +-
 src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c |   2 +-
 src/mainboard/lenovo/g505s/BiosCallOuts.c          |   2 +-
 .../amd/agesa/common/Proc/Fch/Common/AcpiLib.c     | 243 +++++++++++++++++++++
 .../amd/agesa/common/Proc/Fch/Common/AcpiLib.h     |  91 ++++++++
 .../amd/agesa/common/Proc/Fch/Common/MemLib.c      | 144 ++++++++++++
 .../amd/agesa/common/Proc/Fch/Common/PciLib.c      |  94 ++++++++
 .../amd/agesa/common/Proc/Fch/FchPlatform.h        | 128 +++++++++++
 .../amd/agesa/f12/Proc/Fch/Common/AcpiLib.c        | 231 --------------------
 .../amd/agesa/f12/Proc/Fch/Common/AcpiLib.h        |  87 --------
 .../amd/agesa/f12/Proc/Fch/Common/MemLib.c         | 144 ------------
 .../amd/agesa/f12/Proc/Fch/Common/PciLib.c         |  94 --------
 .../amd/agesa/f12/Proc/Fch/FchPlatform.h           | 117 ----------
 src/vendorcode/amd/agesa/f15tn/Makefile.inc        |   5 +-
 .../amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.c      | 243 ---------------------
 .../amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.h      |  87 --------
 .../amd/agesa/f15tn/Proc/Fch/Common/MemLib.c       | 144 ------------
 .../amd/agesa/f15tn/Proc/Fch/Common/PciLib.c       |  94 --------
 .../amd/agesa/f15tn/Proc/Fch/FchPlatform.h         | 128 -----------
 src/vendorcode/amd/agesa/f16kb/Makefile.inc        |   1 +
 .../amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.c      | 242 --------------------
 .../amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.h      |  91 --------
 .../amd/agesa/f16kb/Proc/Fch/Common/MemLib.c       | 145 ------------
 .../amd/agesa/f16kb/Proc/Fch/Common/PciLib.c       |  94 --------
 .../amd/agesa/f16kb/Proc/Fch/FchPlatform.h         | 127 -----------
 32 files changed, 714 insertions(+), 2080 deletions(-)

diff --git a/src/cpu/amd/agesa/family16kb/Makefile.inc b/src/cpu/amd/agesa/family16kb/Makefile.inc
index c0c98e5..58294f1 100644
--- a/src/cpu/amd/agesa/family16kb/Makefile.inc
+++ b/src/cpu/amd/agesa/family16kb/Makefile.inc
@@ -311,7 +311,7 @@ agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Azalia/AzaliaEnv.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Azalia/AzaliaLate.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Azalia/AzaliaMid.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Azalia/AzaliaReset.c
-agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Common/AcpiLib.c
+agesa_lib_src += $(AGESA_ROOT)/../common/Proc/Fch/Common/AcpiLib.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Common/FchCommon.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Common/FchLib.c
 agesa_lib_src += $(AGESA_ROOT)/Proc/Fch/Common/FchPeLib.c
diff --git a/src/mainboard/amd/olivehill/BiosCallOuts.c b/src/mainboard/amd/olivehill/BiosCallOuts.c
index 97f8769..d944f55 100644
--- a/src/mainboard/amd/olivehill/BiosCallOuts.c
+++ b/src/mainboard/amd/olivehill/BiosCallOuts.c
@@ -23,7 +23,7 @@
 #include "Ids.h"
 #include "OptionsIds.h"
 #include "heapManager.h"
-#include "FchPlatform.h"
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include "cbfs.h"
 #if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
 #include "imc.h"
diff --git a/src/mainboard/amd/parmer/BiosCallOuts.c b/src/mainboard/amd/parmer/BiosCallOuts.c
index e09218e..00f6a29 100644
--- a/src/mainboard/amd/parmer/BiosCallOuts.c
+++ b/src/mainboard/amd/parmer/BiosCallOuts.c
@@ -23,7 +23,7 @@
 #include "Ids.h"
 #include "OptionsIds.h"
 #include "heapManager.h"
-#include "FchPlatform.h"
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include "cbfs.h"
 #if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
 #include "imc.h"
diff --git a/src/mainboard/amd/thatcher/BiosCallOuts.c b/src/mainboard/amd/thatcher/BiosCallOuts.c
index 3bd7237..d266577 100644
--- a/src/mainboard/amd/thatcher/BiosCallOuts.c
+++ b/src/mainboard/amd/thatcher/BiosCallOuts.c
@@ -23,7 +23,7 @@
 #include "Ids.h"
 #include "OptionsIds.h"
 #include "heapManager.h"
-#include "FchPlatform.h"
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include "cbfs.h"
 #if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
 #include "imc.h"
diff --git a/src/mainboard/asrock/imb-a180/BiosCallOuts.c b/src/mainboard/asrock/imb-a180/BiosCallOuts.c
index 53b6871..0f52294 100644
--- a/src/mainboard/asrock/imb-a180/BiosCallOuts.c
+++ b/src/mainboard/asrock/imb-a180/BiosCallOuts.c
@@ -24,7 +24,7 @@
 #include "Ids.h"
 #include "OptionsIds.h"
 #include "heapManager.h"
-#include "FchPlatform.h"
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include "cbfs.h"
 #include <stdlib.h>
 
diff --git a/src/mainboard/asus/f2a85-m/BiosCallOuts.c b/src/mainboard/asus/f2a85-m/BiosCallOuts.c
index 13bee0c..77dacf0 100644
--- a/src/mainboard/asus/f2a85-m/BiosCallOuts.c
+++ b/src/mainboard/asus/f2a85-m/BiosCallOuts.c
@@ -22,7 +22,7 @@
 #include "OptionsIds.h"
 
 #include <cbfs.h>
-#include <vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h>
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include <stdlib.h>
 
 static AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/asus/f2a85-m_le/BiosCallOuts.c b/src/mainboard/asus/f2a85-m_le/BiosCallOuts.c
index cfc0ee1..2949f83 100644
--- a/src/mainboard/asus/f2a85-m_le/BiosCallOuts.c
+++ b/src/mainboard/asus/f2a85-m_le/BiosCallOuts.c
@@ -22,7 +22,7 @@
 #include "OptionsIds.h"
 
 #include <cbfs.h>
-#include <vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h>
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include <stdlib.h>
 
 static AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/gizmosphere/gizmo2/BiosCallOuts.c b/src/mainboard/gizmosphere/gizmo2/BiosCallOuts.c
index 44273ab..fc51e24 100644
--- a/src/mainboard/gizmosphere/gizmo2/BiosCallOuts.c
+++ b/src/mainboard/gizmosphere/gizmo2/BiosCallOuts.c
@@ -23,7 +23,7 @@
 #include "Ids.h"
 #include "OptionsIds.h"
 #include "heapManager.h"
-#include "FchPlatform.h"
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include "cbfs.h"
 #if IS_ENABLED(CONFIG_HUDSON_IMC_FWM)
 #include "imc.h"
diff --git a/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c b/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c
index 5373d90..98cc400 100644
--- a/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c
+++ b/src/mainboard/hp/pavilion_m6_1035dx/BiosCallOuts.c
@@ -23,7 +23,7 @@
 
 #include <cbfs.h>
 #include <southbridge/amd/agesa/hudson/imc.h>
-#include <vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h>
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include <stdlib.h>
 
 static AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/mainboard/lenovo/g505s/BiosCallOuts.c b/src/mainboard/lenovo/g505s/BiosCallOuts.c
index 5373d90..98cc400 100644
--- a/src/mainboard/lenovo/g505s/BiosCallOuts.c
+++ b/src/mainboard/lenovo/g505s/BiosCallOuts.c
@@ -23,7 +23,7 @@
 
 #include <cbfs.h>
 #include <southbridge/amd/agesa/hudson/imc.h>
-#include <vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h>
+#include <vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h>
 #include <stdlib.h>
 
 static AGESA_STATUS Fch_Oem_config(UINT32 Func, UINT32 FchData, VOID *ConfigPtr);
diff --git a/src/vendorcode/amd/agesa/common/Proc/Fch/Common/AcpiLib.c b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/AcpiLib.c
new file mode 100644
index 0000000..1aaa56c
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/AcpiLib.c
@@ -0,0 +1,243 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * FCH ACPI lib
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:     AGESA
+ * @e sub-project: FCH
+ * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
+ *
+ */
+/*
+*****************************************************************************
+*
+ * Copyright (c) 2008 - 2012, 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.
+****************************************************************************
+*/
+#include "FchPlatform.h"
+#define FILECODE PROC_FCH_COMMON_ACPILIB_FILECODE
+//
+//
+// Routine Description:
+//
+//  Locate ACPI table
+//
+// Arguments:
+//
+//  Signature - table signature
+//
+//Returns:
+//
+//  pointer to ACPI table
+//
+//
+VOID*
+AcpiLocateTable (
+  IN  UINT32     Signature
+  )
+{
+  UINT32              Index;
+  UINT32              *RsdPtr;
+  UINT32              *Rsdt;
+  UINTN               TableOffset;
+  DESCRIPTION_HEADER  *CurrentTable;
+
+  RsdPtr = (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_LOW;
+  Rsdt = NULL;
+  do {
+      if ( *RsdPtr == Int32FromChar('R','S','D',' ') && *(RsdPtr + 1) == Int32FromChar('P','T','R',' ') ) { /* ' DSR' & ' RTP' */
+      Rsdt = (UINT32*) (UINTN) ((RSDP_HEADER*)RsdPtr)->RsdtAddress;
+      break;
+    }
+    RsdPtr += 4;
+  } while ( RsdPtr <= (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_HIGH );
+
+  if ( Rsdt != NULL && AcpiGetTableCheckSum (Rsdt) == 0 ) {
+    for ( Index = 0; Index < (((DESCRIPTION_HEADER*)Rsdt)->Length - sizeof (DESCRIPTION_HEADER)) / 4; Index++ ) {
+      TableOffset = *(UINTN*) ((UINT8*)Rsdt + sizeof (DESCRIPTION_HEADER) + Index * 4);
+      CurrentTable = (DESCRIPTION_HEADER*)TableOffset;
+      if ( CurrentTable->Signature == Signature ) {
+        return CurrentTable;
+      }
+    }
+  }
+  return NULL;
+}
+
+//
+//
+//  Routine Description:
+//
+//  Update table CheckSum
+//
+//  Arguments:
+//
+//  TablePtr - table pointer
+//
+//  Returns:
+//
+//  none
+//
+//
+VOID
+AcpiSetTableCheckSum (
+  IN  VOID     *TablePtr
+  )
+{
+  UINT8   CheckSum;
+
+  CheckSum = 0;
+  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = 0;
+  CheckSum = AcpiGetTableCheckSum (TablePtr);
+  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = (UINT8) (FCHOEM_ACPI_BYTE_CHECHSUM - CheckSum);
+}
+
+//
+//
+//  Routine Description:
+//
+//  Get table CheckSum - Get ACPI table checksum
+//
+//  Arguments:
+//
+//  TablePtr - table pointer
+//
+//  Returns:
+//
+//  none
+//
+//
+UINT8
+AcpiGetTableCheckSum (
+  IN  VOID     *TablePtr
+  )
+{
+  return GetByteSum (TablePtr, ((DESCRIPTION_HEADER*)TablePtr)->Length);
+}
+
+
+//
+//
+//  Routine Description:
+//
+//  GetByteSum - Get BYTE checksum value
+//
+//  Arguments:
+//
+//  DataPtr - table pointer
+//  Length  - table length
+//
+//  Returns:
+//
+//  CheckSum - CheckSum value
+//
+//
+UINT8
+GetByteSum (
+  IN  VOID       *DataPtr,
+  IN  UINT32     Length
+  )
+{
+  UINT32   Index;
+  UINT8    CheckSum;
+
+  CheckSum = 0;
+  for ( Index = 0; Index < Length; Index++ ) {
+    CheckSum = CheckSum + (*((UINT8*)DataPtr + Index));
+  }
+  return CheckSum;
+}
+
+//
+//
+//  Routine Description:
+//
+//  GetFchAcpiMmioBase - Get FCH HwAcpi MMIO Base Address
+//
+//  Arguments:
+//
+//  AcpiMmioBase - HwAcpi MMIO Base Address
+//  StdHeader    - Amd Stand Header
+//
+//  Returns:
+//
+//  AcpiMmioBase - HwAcpi MMIO Base Address
+//
+//
+VOID
+GetFchAcpiMmioBase (
+     OUT   UINT32                *AcpiMmioBase,
+  IN       AMD_CONFIG_PARAMS     *StdHeader
+  )
+{
+  UINT32    AcpiMmioBaseAddressDword;
+
+  ReadPmio (FCH_PMIOA_REG24 + 2, AccessWidth16, &AcpiMmioBaseAddressDword, StdHeader);
+  *AcpiMmioBase = AcpiMmioBaseAddressDword << 16;
+}
+
+//
+//
+//  Routine Description:
+//
+//  GetFchAcpiPmBase - Get FCH HwAcpi PM Base Address
+//
+//  Arguments:
+//
+//  AcpiPmBase   - HwAcpi PM Base Address
+//  StdHeader    - Amd Stand Header
+//
+//  Returns:
+//
+//  AcpiPmBase   - HwAcpi PM Base Address
+//
+//
+VOID
+GetFchAcpiPmBase (
+     OUT   UINT16                *AcpiPmBase,
+  IN       AMD_CONFIG_PARAMS     *StdHeader
+  )
+{
+  ReadPmio (FCH_PMIOA_REG60, AccessWidth16, AcpiPmBase, StdHeader);
+}
+
+
+UINT8
+ReadFchSleepType (
+  IN       AMD_CONFIG_PARAMS     *StdHeader
+  )
+{
+  UINT16     Value16;
+
+  ReadPmio (FCH_PMIOA_REG62, AccessWidth16, &Value16, StdHeader);
+  LibAmdIoRead (AccessWidth16, Value16, &Value16, StdHeader);
+  return (UINT8) ((Value16 >> 10) & 7);
+}
+
diff --git a/src/vendorcode/amd/agesa/common/Proc/Fch/Common/AcpiLib.h b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/AcpiLib.h
new file mode 100644
index 0000000..5c7f375
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/AcpiLib.h
@@ -0,0 +1,91 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * FCH ACPI lib
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:     AGESA
+ * @e sub-project: FCH
+ * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
+ *
+ */
+/*
+*****************************************************************************
+*
+ * Copyright (c) 2008 - 2013, 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 _FCH_ACPILIB_H_
+#define _FCH_ACPILIB_H_
+///
+/// RSDP - ACPI 2.0 table RSDP
+///
+typedef struct _RSDP_HEADER {
+  UINT64               Signature;                      ///< RSDP signature "RSD PTR"
+  UINT8                CheckSum;                       ///< checksum of the first 20 bytes
+  UINT8                OEMID[6];                       ///< OEM ID
+  UINT8                Revision;                       ///< 0 for APCI 1.0, 2 for ACPI 2.0
+  UINT32               RsdtAddress;                    ///< physical address of RSDT
+  UINT32               Length;                         ///< total length of RSDP (including extended part)
+  UINT64               XsdtAddress;                    ///< physical address of XSDT
+  UINT8                ExtendedCheckSum;               ///< chechsum of whole table
+  UINT8                Reserved[3];                    ///< Reserved
+} RSDP_HEADER;
+
+///
+/// DESCRIPTION_HEADER - ACPI common table header
+///
+typedef struct _DESCRIPTION_HEADER {
+  UINT32               Signature;                      ///< ACPI signature (4 ASCII characters)
+  UINT32               Length;                         ///< Length of table, in bytes, including header
+  UINT8                Revision;                       ///< ACPI Specification minor version #
+  UINT8                CheckSum;                       ///< To make sum of entire table == 0
+  UINT8                OemId[6];                       ///< OEM identification
+  UINT8                OemTableId[8];                  ///< OEM table identification
+  UINT32               OemRevision;                    ///< OEM revision number
+  UINT32               CreatorId;                      ///< ASL compiler vendor ID
+  UINT32               CreatorRevision;                ///< ASL compiler revision number
+} DESCRIPTION_HEADER;
+
+///
+/// _AcpiRegWrite - ACPI MMIO register R/W structure
+///
+typedef struct _ACPI_REG_WRITE {
+  UINT8        MmioBase;               /// MmioBase: Index of Fch block (For instance GPIO_BASE:0x01 SMI_BASE:0x02)
+  UINT8        MmioReg;                /// MmioReg      : Register index
+  UINT8        DataAndMask;            /// DataANDMask  : AND Register Data
+  UINT8        DataOrMask;             /// DataOrMask   : Or Register Data
+} ACPI_REG_WRITE;
+
+VOID*     AcpiLocateTable (IN UINT32 Signature);
+VOID      AcpiSetTableCheckSum (IN VOID *TablePtr);
+UINT8     AcpiGetTableCheckSum (IN VOID *TablePtr);
+UINT8     GetByteSum (IN VOID *DataPtr, IN UINT32 Length);
+
+#endif
diff --git a/src/vendorcode/amd/agesa/common/Proc/Fch/Common/MemLib.c b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/MemLib.c
new file mode 100644
index 0000000..9fc14fb
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/MemLib.c
@@ -0,0 +1,144 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * FCH memory access lib
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:     AGESA
+ * @e sub-project: FCH
+ * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
+ *
+ */
+/*
+*****************************************************************************
+*
+ * Copyright (c) 2008 - 2013, 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.
+****************************************************************************
+*/
+#include "FchPlatform.h"
+#include "Ids.h"
+#define FILECODE PROC_FCH_COMMON_MEMLIB_FILECODE
+
+
+/**
+ * ReadMem - Read FCH BAR Memory
+ *
+ * @param[in] Address    - Memory BAR address
+ * @param[in] OpFlag     - Access width
+ * @param[in] *ValuePtr  - In/Out value pointer
+ *
+ */
+VOID
+ReadMem (
+  IN  UINT32     Address,
+  IN  UINT8      OpFlag,
+  IN  VOID       *ValuePtr
+  )
+{
+  OpFlag = OpFlag & 0x7f;
+
+  switch ( OpFlag ) {
+  case AccessWidth8:
+    *((UINT8*)ValuePtr) = *((UINT8*) ((UINTN)Address));
+    break;
+
+  case AccessWidth16:
+    *((UINT16*)ValuePtr) = *((UINT16*) ((UINTN)Address));
+    break;
+
+  case AccessWidth32:
+    *((UINT32*)ValuePtr) = *((UINT32*) ((UINTN)Address));
+    break;
+
+  default:
+    ASSERT (FALSE);
+    break;
+  }
+}
+
+/**
+ * WriteMem - Write FCH BAR Memory
+ *
+ * @param[in] Address    - Memory BAR address
+ * @param[in] OpFlag     - Access width
+ * @param[in] *ValuePtr  - In/Out Value pointer
+ *
+ */
+VOID
+WriteMem (
+  IN  UINT32     Address,
+  IN  UINT8      OpFlag,
+  IN  VOID       *ValuePtr
+  )
+{
+  OpFlag = OpFlag & 0x7f;
+
+  switch ( OpFlag ) {
+  case AccessWidth8 :
+    *((UINT8*) ((UINTN)Address)) = *((UINT8*)ValuePtr);
+    break;
+
+  case AccessWidth16:
+    *((UINT16*) ((UINTN)Address)) = *((UINT16*)ValuePtr);
+    break;
+
+  case AccessWidth32:
+    *((UINT32*) ((UINTN)Address)) = *((UINT32*)ValuePtr);
+    break;
+
+  default:
+    ASSERT (FALSE);
+    break;
+  }
+}
+
+/**
+ * RwMem - Read & Write FCH BAR Memory
+ *
+ * @param[in] Address    - Memory BAR address
+ * @param[in] OpFlag     - Access width
+ * @param[in] Mask       - Mask Value of data
+ * @param[in] Data       - Write data
+ *
+ */
+VOID
+RwMem (
+  IN  UINT32     Address,
+  IN  UINT8      OpFlag,
+  IN  UINT32     Mask,
+  IN  UINT32     Data
+  )
+{
+  UINT32 Result;
+
+  ReadMem (Address, OpFlag, &Result);
+  Result = (Result & Mask) | Data;
+  WriteMem (Address, OpFlag, &Result);
+  ReadMem (Address, OpFlag, &Result);
+}
diff --git a/src/vendorcode/amd/agesa/common/Proc/Fch/Common/PciLib.c b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/PciLib.c
new file mode 100644
index 0000000..6ef1bd0
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Fch/Common/PciLib.c
@@ -0,0 +1,94 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * FCH PCI access lib
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:     AGESA
+ * @e sub-project: FCH
+ * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
+ *
+ */
+/*
+*****************************************************************************
+*
+ * Copyright (c) 2008 - 2013, 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.
+****************************************************************************
+*/
+#include "FchPlatform.h"
+#define FILECODE PROC_FCH_COMMON_PCILIB_FILECODE
+
+VOID
+ReadPci (
+  IN       UINT32                  Address,
+  IN       UINT8                   OpFlag,
+  IN       VOID*                   Value,
+  IN       AMD_CONFIG_PARAMS       *StdHeader
+  )
+{
+  PCI_ADDR  PciAddress;
+
+  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
+  LibAmdPciRead ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
+}
+
+
+VOID
+WritePci (
+  IN       UINT32                  Address,
+  IN       UINT8                   OpFlag,
+  IN       VOID                    *Value,
+  IN       AMD_CONFIG_PARAMS       *StdHeader
+  )
+{
+  PCI_ADDR  PciAddress;
+
+  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
+  LibAmdPciWrite ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
+}
+
+
+VOID
+RwPci (
+  IN       UINT32                  Address,
+  IN       UINT8                   OpFlag,
+  IN       UINT32                  Mask,
+  IN       UINT32                  Data,
+  IN       AMD_CONFIG_PARAMS       *StdHeader
+  )
+{
+  PCI_ADDR  PciAddress;
+  UINT32    rMask;
+
+  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
+  rMask = ~Mask;
+  LibAmdPciRMW ((ACCESS_WIDTH) OpFlag, PciAddress, &Data, &rMask, StdHeader);
+}
+
+
diff --git a/src/vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h b/src/vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h
new file mode 100644
index 0000000..bef3016
--- /dev/null
+++ b/src/vendorcode/amd/agesa/common/Proc/Fch/FchPlatform.h
@@ -0,0 +1,128 @@
+/* $NoKeywords:$ */
+/**
+ * @file
+ *
+ * FCH platform definition
+ *
+ *
+ *
+ * @xrefitem bom "File Content Label" "Release Content"
+ * @e project:     AGESA
+ * @e sub-project: FCH
+ * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
+ *
+ */
+/*
+*****************************************************************************
+*
+ * Copyright (c) 2008 - 2012, 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  _FCH_PLATFORM_H_
+#define  _FCH_PLATFORM_H_
+
+#define MAX_SATA_PORTS 8
+
+#include "AGESA.h"
+
+#ifndef FCHOEM_ACPI_RESTORE_SWSMI
+  #define FCHOEM_BEFORE_PCI_RESTORE_SWSMI    0xD3
+  #define FCHOEM_AFTER_PCI_RESTORE_SWSMI     0xD4
+  #define FCHOEM_ENABLE_ACPI_SWSMI           0xA0
+  #define FCHOEM_DISABLE_ACPI_SWSMI          0xA1
+  #define FCHOEM_START_TIMER_SMI             0xBC
+  #define FCHOEM_STOP_TIMER_SMI              0xBD
+#endif
+
+#ifndef FCHOEM_SPI_UNLOCK_SWSMI
+  #define FCHOEM_SPI_UNLOCK_SWSMI            0xAA
+#endif
+#ifndef FCHOEM_SPI_LOCK_SWSMI
+  #define FCHOEM_SPI_LOCK_SWSMI              0xAB
+#endif
+
+#ifndef FCHOEM_ACPI_TABLE_RANGE_LOW
+  #define FCHOEM_ACPI_TABLE_RANGE_LOW        0xE0000ul
+#endif
+
+#ifndef FCHOEM_ACPI_TABLE_RANGE_HIGH
+  #define FCHOEM_ACPI_TABLE_RANGE_HIGH       0xFFFF0ul
+#endif
+
+#ifndef FCHOEM_ACPI_BYTE_CHECHSUM
+  #define FCHOEM_ACPI_BYTE_CHECHSUM          0x100
+#endif
+
+#ifndef FCHOEM_IO_DELAY_PORT
+  #define FCHOEM_IO_DELAY_PORT               0x80
+#endif
+
+#ifndef FCHOEM_OUTPUT_DEBUG_PORT
+  #define FCHOEM_OUTPUT_DEBUG_PORT           0x80
+#endif
+
+#define FCH_PCIRST_BASE_IO                   0xCF9
+#define FCH_PCI_RESET_COMMAND06              0x06
+#define FCH_PCI_RESET_COMMAND0E              0x0E
+#define FCH_KBDRST_BASE_IO                   0x64
+#define FCH_KBC_RESET_COMMAND                0xFE
+#define FCH_ROMSIG_BASE_IO                   0x20000l
+#define FCH_ROMSIG_SIGNATURE                 0x55AA55AAul
+#define FCH_MAX_TIMER                        0xFFFFFFFFul
+#define FCH_GEC_INTERNAL_REG                 0x6804
+#define FCH_HPET_REG_MASK                    0xFFFFF800ul
+#define FCH_FAKE_USB_BAR_ADDRESS             0x58830000ul
+
+
+#ifndef FCHOEM_ELAPSED_TIME_UNIT
+  #define FCHOEM_ELAPSED_TIME_UNIT           28
+#endif
+
+#ifndef FCHOEM_ELAPSED_TIME_DIVIDER
+  #define FCHOEM_ELAPSED_TIME_DIVIDER        100
+#endif
+
+#include "Fch.h"
+#include <Lib/amdlib.h>
+#include "Common/FchCommonCfg.h"
+#include "Common/AcpiLib.h"
+#include "Common/FchDef.h"
+#include "Common/FchBiosRamUsage.h"
+#include <Proc/Common/AmdFch.h>
+
+extern BUILD_OPT_CFG    UserOptions;
+
+VOID
+FchInitS3EarlyRestore (
+  IN      FCH_DATA_BLOCK     *FchDataPtr
+  );
+
+VOID
+FchInitS3LateRestore (
+  IN      FCH_DATA_BLOCK     *FchDataPtr
+  );
+
+#endif // _FCH_PLATFORM_H_
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/AcpiLib.c b/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/AcpiLib.c
deleted file mode 100644
index 16705a1..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/AcpiLib.c
+++ /dev/null
@@ -1,231 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH ACPI lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#define FILECODE PROC_FCH_COMMON_ACPILIB_FILECODE
-//
-//
-// Routine Description:
-//
-//  Locate ACPI table
-//
-// Arguments:
-//
-//  Signature - table signature
-//
-//Returns:
-//
-//  pointer to ACPI table
-//
-//
-VOID*
-AcpiLocateTable (
-  IN  UINT32     Signature
-  )
-{
-  UINT32              Index;
-  UINT32              *RsdPtr;
-  UINT32              *Rsdt;
-  UINTN               TableOffset;
-  DESCRIPTION_HEADER  *CurrentTable;
-
-  RsdPtr = (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_LOW;
-  Rsdt = NULL;
-  do {
-    if ( *RsdPtr == ' DSR' && *(RsdPtr + 1) == ' RTP' ) {
-      Rsdt = (UINT32*) (UINTN) ((RSDP_HEADER*)RsdPtr)->RsdtAddress;
-      break;
-    }
-    RsdPtr += 4;
-  } while ( RsdPtr <= (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_HIGH );
-
-  if ( Rsdt != NULL && AcpiGetTableCheckSum (Rsdt) == 0 ) {
-    for ( Index = 0; Index < (((DESCRIPTION_HEADER*)Rsdt)->Length - sizeof (DESCRIPTION_HEADER)) / 4; Index++ ) {
-      TableOffset = *(UINTN*) ((UINT8*)Rsdt + sizeof (DESCRIPTION_HEADER) + Index * 4);
-      CurrentTable = (DESCRIPTION_HEADER*)TableOffset;
-      if ( CurrentTable->Signature == Signature ) {
-        return CurrentTable;
-      }
-    }
-  }
-  return NULL;
-}
-
-//
-//
-//  Routine Description:
-//
-//  Update table CheckSum
-//
-//  Arguments:
-//
-//  TablePtr - table pointer
-//
-//  Returns:
-//
-//  none
-//
-//
-VOID
-AcpiSetTableCheckSum (
-  IN  VOID     *TablePtr
-  )
-{
-  UINT8   CheckSum;
-
-  CheckSum = 0;
-  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = 0;
-  CheckSum = AcpiGetTableCheckSum (TablePtr);
-  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = (UINT8) (FCHOEM_ACPI_BYTE_CHECHSUM - CheckSum);
-}
-
-//
-//
-//  Routine Description:
-//
-//  Get table CheckSum - Get ACPI table checksum
-//
-//  Arguments:
-//
-//  TablePtr - table pointer
-//
-//  Returns:
-//
-//  none
-//
-//
-UINT8
-AcpiGetTableCheckSum (
-  IN  VOID     *TablePtr
-  )
-{
-  return GetByteSum (TablePtr, ((DESCRIPTION_HEADER*)TablePtr)->Length);
-}
-
-
-//
-//
-//  Routine Description:
-//
-//  GetByteSum - Get BYTE checksum value
-//
-//  Arguments:
-//
-//  DataPtr - table pointer
-//  Length  - table length
-//
-//  Returns:
-//
-//  CheckSum - CheckSum value
-//
-//
-UINT8
-GetByteSum (
-  IN  VOID       *DataPtr,
-  IN  UINT32     Length
-  )
-{
-  UINT32   Index;
-  UINT8    CheckSum;
-
-  CheckSum = 0;
-  for ( Index = 0; Index < Length; Index++ ) {
-    CheckSum = CheckSum + (*((UINT8*)DataPtr + Index));
-  }
-  return CheckSum;
-}
-
-//
-//
-//  Routine Description:
-//
-//  GetFchAcpiMmioBase - Get FCH HwAcpi MMIO Base Address
-//
-//  Arguments:
-//
-//  AcpiMmioBase - HwAcpi MMIO Base Address
-//  StdHeader    - Amd Stand Header
-//
-//  Returns:
-//
-//  AcpiMmioBase - HwAcpi MMIO Base Address
-//
-//
-VOID
-GetFchAcpiMmioBase (
-     OUT   UINT32                *AcpiMmioBase,
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  UINT32    AcpiMmioBaseAddressDword;
-
-  ReadPmio (FCH_PMIOA_REG24 + 2, AccessWidth16, &AcpiMmioBaseAddressDword, StdHeader);
-  *AcpiMmioBase = AcpiMmioBaseAddressDword << 16;
-}
-
-//
-//
-//  Routine Description:
-//
-//  GetFchAcpiPmBase - Get FCH HwAcpi PM Base Address
-//
-//  Arguments:
-//
-//  AcpiPmBase   - HwAcpi PM Base Address
-//  StdHeader    - Amd Stand Header
-//
-//  Returns:
-//
-//  AcpiPmBase   - HwAcpi PM Base Address
-//
-//
-VOID
-GetFchAcpiPmBase (
-     OUT   UINT16                *AcpiPmBase,
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  ReadPmio (FCH_PMIOA_REG60, AccessWidth16, AcpiPmBase, StdHeader);
-}
-
-
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/AcpiLib.h b/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/AcpiLib.h
deleted file mode 100644
index 4dc303f..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/AcpiLib.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH ACPI lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-****************************************************************************
-*/
-///
-/// RSDP - ACPI 2.0 table RSDP
-///
-typedef struct _RSDP_HEADER {
-  UINT64               Signature;                      ///< RSDP signature "RSD PTR"
-  UINT8                CheckSum;                       ///< checksum of the first 20 bytes
-  UINT8                OEMID[6];                       ///< OEM ID
-  UINT8                Revision;                       ///< 0 for APCI 1.0, 2 for ACPI 2.0
-  UINT32               RsdtAddress;                    ///< physical address of RSDT
-  UINT32               Length;                         ///< total length of RSDP (including extended part)
-  UINT64               XsdtAddress;                    ///< physical address of XSDT
-  UINT8                ExtendedCheckSum;               ///< chechsum of whole table
-  UINT8                Reserved[3];                    ///< Reserved
-} RSDP_HEADER;
-
-///
-/// DESCRIPTION_HEADER - ACPI common table header
-///
-typedef struct _DESCRIPTION_HEADER {
-  UINT32               Signature;                      ///< ACPI signature (4 ASCII characters)
-  UINT32               Length;                         ///< Length of table, in bytes, including header
-  UINT8                Revision;                       ///< ACPI Specification minor version #
-  UINT8                CheckSum;                       ///< To make sum of entire table == 0
-  UINT8                OemId[6];                       ///< OEM identification
-  UINT8                OemTableId[8];                  ///< OEM table identification
-  UINT32               OemRevision;                    ///< OEM revision number
-  UINT32               CreatorId;                      ///< ASL compiler vendor ID
-  UINT32               CreatorRevision;                ///< ASL compiler revision number
-} DESCRIPTION_HEADER;
-
-///
-/// _AcpiRegWrite - ACPI MMIO register R/W structure
-///
-typedef struct _ACPI_REG_WRITE {
-  UINT8        MmioBase;               /// MmioBase: Index of Fch block (For instance GPIO_BASE:0x01 SMI_BASE:0x02)
-  UINT8        MmioReg;                /// MmioReg      : Register index
-  UINT8        DataAndMask;            /// DataANDMask  : AND Register Data
-  UINT8        DataOrMask;             /// DataOrMask   : Or Register Data
-} ACPI_REG_WRITE;
-
-VOID*     AcpiLocateTable (IN UINT32 Signature);
-VOID      AcpiSetTableCheckSum (IN VOID *TablePtr);
-UINT8     AcpiGetTableCheckSum (IN VOID *TablePtr);
-UINT8     GetByteSum (IN VOID *DataPtr, IN UINT32 Length);
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/MemLib.c b/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/MemLib.c
deleted file mode 100644
index f478365..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/MemLib.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH memory access lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 46093 $   @e \$Date: 2011-01-28 11:39:58 +0800 (Fri, 28 Jan 2011) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#include "Ids.h"
-#define FILECODE PROC_FCH_COMMON_MEMLIB_FILECODE
-
-
-/**
- * ReadMem - Read FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] *ValuePtr  - In/Out value pointer
- *
- */
-VOID
-ReadMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  VOID       *ValuePtr
-  )
-{
-  OpFlag = OpFlag & 0x7f;
-
-  switch ( OpFlag ) {
-  case AccessWidth8:
-    *((UINT8*)ValuePtr) = *((UINT8*) ((UINTN)Address));
-    break;
-
-  case AccessWidth16:
-    *((UINT16*)ValuePtr) = *((UINT16*) ((UINTN)Address));
-    break;
-
-  case AccessWidth32:
-    *((UINT32*)ValuePtr) = *((UINT32*) ((UINTN)Address));
-    break;
-
-  default:
-    ASSERT (FALSE);
-    break;
-  }
-}
-
-/**
- * WriteMem - Write FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] *ValuePtr  - In/Out Value pointer
- *
- */
-VOID
-WriteMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  VOID       *ValuePtr
-  )
-{
-  OpFlag = OpFlag & 0x7f;
-
-  switch ( OpFlag ) {
-  case AccessWidth8 :
-    *((UINT8*) ((UINTN)Address)) = *((UINT8*)ValuePtr);
-    break;
-
-  case AccessWidth16:
-    *((UINT16*) ((UINTN)Address)) = *((UINT16*)ValuePtr);
-    break;
-
-  case AccessWidth32:
-    *((UINT32*) ((UINTN)Address)) = *((UINT32*)ValuePtr);
-    break;
-
-  default:
-    ASSERT (FALSE);
-    break;
-  }
-}
-
-/**
- * RwMem - Read & Write FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] Mask       - Mask Value of data
- * @param[in] Data       - Write data
- *
- */
-VOID
-RwMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  UINT32     Mask,
-  IN  UINT32     Data
-  )
-{
-  UINT32 Result;
-
-  ReadMem (Address, OpFlag, &Result);
-  Result = (Result & Mask) | Data;
-  WriteMem (Address, OpFlag, &Result);
-}
-
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/PciLib.c b/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/PciLib.c
deleted file mode 100644
index 0c36786..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Fch/Common/PciLib.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH PCI access lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 44324 $   @e \$Date: 2010-12-22 17:16:51 +0800 (Wed, 22 Dec 2010) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#define FILECODE PROC_FCH_COMMON_PCILIB_FILECODE
-
-VOID
-ReadPci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       VOID*                   Value,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  LibAmdPciRead ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
-}
-
-
-VOID
-WritePci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       VOID                    *Value,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  LibAmdPciWrite ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
-}
-
-
-VOID
-RwPci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       UINT32                  Mask,
-  IN       UINT32                  Data,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-  UINT32    rMask;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  rMask = ~Mask;
-  LibAmdPciRMW ((ACCESS_WIDTH) OpFlag, PciAddress, &Data, &rMask, StdHeader);
-}
-
-
diff --git a/src/vendorcode/amd/agesa/f12/Proc/Fch/FchPlatform.h b/src/vendorcode/amd/agesa/f12/Proc/Fch/FchPlatform.h
deleted file mode 100644
index edfbfe9..0000000
--- a/src/vendorcode/amd/agesa/f12/Proc/Fch/FchPlatform.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH platform definition
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 48055 $   @e \$Date: 2011-03-03 10:33:13 +0800 (Thu, 03 Mar 2011) $
- *
- */
-/*
-*****************************************************************************
-*
-* Copyright (c) 2011, Advanced Micro Devices, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in the
- *       documentation and/or other materials provided with the distribution.
- *     * Neither the name of Advanced Micro Devices, Inc. nor the names of
- *       its contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-****************************************************************************
-*/
-#ifndef  _FCH_PLATFORM_H_
-#define  _FCH_PLATFORM_H_
-
-#define MAX_SATA_PORTS 8
-
-#include "AGESA.h"
-
-#ifndef FCHOEM_ACPI_RESTORE_SWSMI
-  #define FCHOEM_BEFORE_PCI_RESTORE_SWSMI    0xD3
-  #define FCHOEM_AFTER_PCI_RESTORE_SWSMI     0xD4
-  #define FCHOEM_ENABLE_ACPI_SWSMI           0xA0
-  #define FCHOEM_DISABLE_ACPI_SWSMI          0xA1
-#endif
-
-#ifndef FCHOEM_SPI_UNLOCK_SWSMI
-  #define FCHOEM_SPI_UNLOCK_SWSMI            0xAA
-#endif
-#ifndef FCHOEM_SPI_LOCK_SWSMI
-  #define FCHOEM_SPI_LOCK_SWSMI              0xAB
-#endif
-
-#ifndef FCHOEM_ACPI_TABLE_RANGE_LOW
-  #define FCHOEM_ACPI_TABLE_RANGE_LOW        0xE0000
-#endif
-
-#ifndef FCHOEM_ACPI_TABLE_RANGE_HIGH
-  #define FCHOEM_ACPI_TABLE_RANGE_HIGH       0xFFFF0
-#endif
-
-#ifndef FCHOEM_ACPI_BYTE_CHECHSUM
-  #define FCHOEM_ACPI_BYTE_CHECHSUM          0x100
-#endif
-
-#ifndef FCHOEM_IO_DELAY_PORT
-  #define FCHOEM_IO_DELAY_PORT               0x80
-#endif
-
-#ifndef FCHOEM_OUTPUT_DEBUG_PORT
-  #define FCHOEM_OUTPUT_DEBUG_PORT           0x80
-#endif
-
-#define FCH_PCIRST_BASE_IO                   0xCF9
-#define FCH_PCI_RESET_COMMAND06              0x06
-#define FCH_PCI_RESET_COMMAND0E              0x0E
-#define FCH_KBDRST_BASE_IO                   0x64
-#define FCH_KBC_RESET_COMMAND                0xFE
-#define FCH_ROMSIG_BASE_IO                   0x20000
-#define FCH_ROMSIG_SIGNATURE                 0x55AA55AA
-#define FCH_MAX_TIMER                        0xFFFFFFFF
-#define FCH_GEC_INTERNAL_REG                 0x6804
-#define FCH_HPET_REG_MASK                    0xFFFFF800
-#define FCH_FAKE_USB_BAR_ADDRESS             0x58830000
-
-
-#ifndef FCHOEM_ELAPSED_TIME_UNIT
-  #define FCHOEM_ELAPSED_TIME_UNIT           28
-#endif
-
-#ifndef FCHOEM_ELAPSED_TIME_DIVIDER
-  #define FCHOEM_ELAPSED_TIME_DIVIDER        100
-#endif
-
-#include "Fch.h"
-#include "amdlib.h"
-#include "FchCommonCfg.h"
-#include "AcpiLib.h"
-#include "FchDef.h"
-#include "OEM.h"
-#include "FchBiosRamUsage.h"
-#include "AmdFch.h"
-
-extern BUILD_OPT_CFG    UserOptions;
-
-#endif // _FCH_PLATFORM_H_
diff --git a/src/vendorcode/amd/agesa/f15tn/Makefile.inc b/src/vendorcode/amd/agesa/f15tn/Makefile.inc
index c4a7eeb..0539643 100644
--- a/src/vendorcode/amd/agesa/f15tn/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f15tn/Makefile.inc
@@ -71,6 +71,7 @@ AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Modules/GnbTable
 AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Modules/GnbPcieInitLibV4
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Common
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Fch/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/IDS/Debug
 AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Modules/GnbPcieAspm
 AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Include/Library
@@ -369,11 +370,11 @@ libagesa-y += Proc/Fch/Azalia/AzaliaEnv.c
 libagesa-y += Proc/Fch/Azalia/AzaliaLate.c
 libagesa-y += Proc/Fch/Azalia/AzaliaMid.c
 libagesa-y += Proc/Fch/Azalia/AzaliaReset.c
-libagesa-y += Proc/Fch/Common/AcpiLib.c
+libagesa-y += ../common/Proc/Fch/Common/AcpiLib.c
 libagesa-y += Proc/Fch/Common/FchCommon.c
 libagesa-y += Proc/Fch/Common/FchLib.c
 libagesa-y += Proc/Fch/Common/FchPeLib.c
-libagesa-y += Proc/Fch/Common/MemLib.c
+libagesa-y += ../common/Proc/Fch/Common/MemLib.c
 libagesa-y += Proc/Fch/Common/PciLib.c
 libagesa-y += Proc/Fch/Gec/Family/Hudson2/Hudson2GecEnvService.c
 libagesa-y += Proc/Fch/Gec/Family/Hudson2/Hudson2GecService.c
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.c b/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.c
deleted file mode 100644
index 1aaa56c..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH ACPI lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, 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.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#define FILECODE PROC_FCH_COMMON_ACPILIB_FILECODE
-//
-//
-// Routine Description:
-//
-//  Locate ACPI table
-//
-// Arguments:
-//
-//  Signature - table signature
-//
-//Returns:
-//
-//  pointer to ACPI table
-//
-//
-VOID*
-AcpiLocateTable (
-  IN  UINT32     Signature
-  )
-{
-  UINT32              Index;
-  UINT32              *RsdPtr;
-  UINT32              *Rsdt;
-  UINTN               TableOffset;
-  DESCRIPTION_HEADER  *CurrentTable;
-
-  RsdPtr = (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_LOW;
-  Rsdt = NULL;
-  do {
-      if ( *RsdPtr == Int32FromChar('R','S','D',' ') && *(RsdPtr + 1) == Int32FromChar('P','T','R',' ') ) { /* ' DSR' & ' RTP' */
-      Rsdt = (UINT32*) (UINTN) ((RSDP_HEADER*)RsdPtr)->RsdtAddress;
-      break;
-    }
-    RsdPtr += 4;
-  } while ( RsdPtr <= (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_HIGH );
-
-  if ( Rsdt != NULL && AcpiGetTableCheckSum (Rsdt) == 0 ) {
-    for ( Index = 0; Index < (((DESCRIPTION_HEADER*)Rsdt)->Length - sizeof (DESCRIPTION_HEADER)) / 4; Index++ ) {
-      TableOffset = *(UINTN*) ((UINT8*)Rsdt + sizeof (DESCRIPTION_HEADER) + Index * 4);
-      CurrentTable = (DESCRIPTION_HEADER*)TableOffset;
-      if ( CurrentTable->Signature == Signature ) {
-        return CurrentTable;
-      }
-    }
-  }
-  return NULL;
-}
-
-//
-//
-//  Routine Description:
-//
-//  Update table CheckSum
-//
-//  Arguments:
-//
-//  TablePtr - table pointer
-//
-//  Returns:
-//
-//  none
-//
-//
-VOID
-AcpiSetTableCheckSum (
-  IN  VOID     *TablePtr
-  )
-{
-  UINT8   CheckSum;
-
-  CheckSum = 0;
-  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = 0;
-  CheckSum = AcpiGetTableCheckSum (TablePtr);
-  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = (UINT8) (FCHOEM_ACPI_BYTE_CHECHSUM - CheckSum);
-}
-
-//
-//
-//  Routine Description:
-//
-//  Get table CheckSum - Get ACPI table checksum
-//
-//  Arguments:
-//
-//  TablePtr - table pointer
-//
-//  Returns:
-//
-//  none
-//
-//
-UINT8
-AcpiGetTableCheckSum (
-  IN  VOID     *TablePtr
-  )
-{
-  return GetByteSum (TablePtr, ((DESCRIPTION_HEADER*)TablePtr)->Length);
-}
-
-
-//
-//
-//  Routine Description:
-//
-//  GetByteSum - Get BYTE checksum value
-//
-//  Arguments:
-//
-//  DataPtr - table pointer
-//  Length  - table length
-//
-//  Returns:
-//
-//  CheckSum - CheckSum value
-//
-//
-UINT8
-GetByteSum (
-  IN  VOID       *DataPtr,
-  IN  UINT32     Length
-  )
-{
-  UINT32   Index;
-  UINT8    CheckSum;
-
-  CheckSum = 0;
-  for ( Index = 0; Index < Length; Index++ ) {
-    CheckSum = CheckSum + (*((UINT8*)DataPtr + Index));
-  }
-  return CheckSum;
-}
-
-//
-//
-//  Routine Description:
-//
-//  GetFchAcpiMmioBase - Get FCH HwAcpi MMIO Base Address
-//
-//  Arguments:
-//
-//  AcpiMmioBase - HwAcpi MMIO Base Address
-//  StdHeader    - Amd Stand Header
-//
-//  Returns:
-//
-//  AcpiMmioBase - HwAcpi MMIO Base Address
-//
-//
-VOID
-GetFchAcpiMmioBase (
-     OUT   UINT32                *AcpiMmioBase,
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  UINT32    AcpiMmioBaseAddressDword;
-
-  ReadPmio (FCH_PMIOA_REG24 + 2, AccessWidth16, &AcpiMmioBaseAddressDword, StdHeader);
-  *AcpiMmioBase = AcpiMmioBaseAddressDword << 16;
-}
-
-//
-//
-//  Routine Description:
-//
-//  GetFchAcpiPmBase - Get FCH HwAcpi PM Base Address
-//
-//  Arguments:
-//
-//  AcpiPmBase   - HwAcpi PM Base Address
-//  StdHeader    - Amd Stand Header
-//
-//  Returns:
-//
-//  AcpiPmBase   - HwAcpi PM Base Address
-//
-//
-VOID
-GetFchAcpiPmBase (
-     OUT   UINT16                *AcpiPmBase,
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  ReadPmio (FCH_PMIOA_REG60, AccessWidth16, AcpiPmBase, StdHeader);
-}
-
-
-UINT8
-ReadFchSleepType (
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  UINT16     Value16;
-
-  ReadPmio (FCH_PMIOA_REG62, AccessWidth16, &Value16, StdHeader);
-  LibAmdIoRead (AccessWidth16, Value16, &Value16, StdHeader);
-  return (UINT8) ((Value16 >> 10) & 7);
-}
-
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.h b/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.h
deleted file mode 100644
index 253920d..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/AcpiLib.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH ACPI lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, 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.
-****************************************************************************
-*/
-///
-/// RSDP - ACPI 2.0 table RSDP
-///
-typedef struct _RSDP_HEADER {
-  UINT64               Signature;                      ///< RSDP signature "RSD PTR"
-  UINT8                CheckSum;                       ///< checksum of the first 20 bytes
-  UINT8                OEMID[6];                       ///< OEM ID
-  UINT8                Revision;                       ///< 0 for APCI 1.0, 2 for ACPI 2.0
-  UINT32               RsdtAddress;                    ///< physical address of RSDT
-  UINT32               Length;                         ///< total length of RSDP (including extended part)
-  UINT64               XsdtAddress;                    ///< physical address of XSDT
-  UINT8                ExtendedCheckSum;               ///< chechsum of whole table
-  UINT8                Reserved[3];                    ///< Reserved
-} RSDP_HEADER;
-
-///
-/// DESCRIPTION_HEADER - ACPI common table header
-///
-typedef struct _DESCRIPTION_HEADER {
-  UINT32               Signature;                      ///< ACPI signature (4 ASCII characters)
-  UINT32               Length;                         ///< Length of table, in bytes, including header
-  UINT8                Revision;                       ///< ACPI Specification minor version #
-  UINT8                CheckSum;                       ///< To make sum of entire table == 0
-  UINT8                OemId[6];                       ///< OEM identification
-  UINT8                OemTableId[8];                  ///< OEM table identification
-  UINT32               OemRevision;                    ///< OEM revision number
-  UINT32               CreatorId;                      ///< ASL compiler vendor ID
-  UINT32               CreatorRevision;                ///< ASL compiler revision number
-} DESCRIPTION_HEADER;
-
-///
-/// _AcpiRegWrite - ACPI MMIO register R/W structure
-///
-typedef struct _ACPI_REG_WRITE {
-  UINT8        MmioBase;               /// MmioBase: Index of Fch block (For instance GPIO_BASE:0x01 SMI_BASE:0x02)
-  UINT8        MmioReg;                /// MmioReg      : Register index
-  UINT8        DataAndMask;            /// DataANDMask  : AND Register Data
-  UINT8        DataOrMask;             /// DataOrMask   : Or Register Data
-} ACPI_REG_WRITE;
-
-VOID*     AcpiLocateTable (IN UINT32 Signature);
-VOID      AcpiSetTableCheckSum (IN VOID *TablePtr);
-UINT8     AcpiGetTableCheckSum (IN VOID *TablePtr);
-UINT8     GetByteSum (IN VOID *DataPtr, IN UINT32 Length);
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/MemLib.c b/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/MemLib.c
deleted file mode 100644
index 99ed53d..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/MemLib.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH memory access lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, 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.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#include "Ids.h"
-#define FILECODE PROC_FCH_COMMON_MEMLIB_FILECODE
-
-
-/**
- * ReadMem - Read FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] *ValuePtr  - In/Out value pointer
- *
- */
-VOID
-ReadMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  VOID       *ValuePtr
-  )
-{
-  OpFlag = OpFlag & 0x7f;
-
-  switch ( OpFlag ) {
-  case AccessWidth8:
-    *((UINT8*)ValuePtr) = *((UINT8*) ((UINTN)Address));
-    break;
-
-  case AccessWidth16:
-    *((UINT16*)ValuePtr) = *((UINT16*) ((UINTN)Address));
-    break;
-
-  case AccessWidth32:
-    *((UINT32*)ValuePtr) = *((UINT32*) ((UINTN)Address));
-    break;
-
-  default:
-    ASSERT (FALSE);
-    break;
-  }
-}
-
-/**
- * WriteMem - Write FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] *ValuePtr  - In/Out Value pointer
- *
- */
-VOID
-WriteMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  VOID       *ValuePtr
-  )
-{
-  OpFlag = OpFlag & 0x7f;
-
-  switch ( OpFlag ) {
-  case AccessWidth8 :
-    *((UINT8*) ((UINTN)Address)) = *((UINT8*)ValuePtr);
-    break;
-
-  case AccessWidth16:
-    *((UINT16*) ((UINTN)Address)) = *((UINT16*)ValuePtr);
-    break;
-
-  case AccessWidth32:
-    *((UINT32*) ((UINTN)Address)) = *((UINT32*)ValuePtr);
-    break;
-
-  default:
-    ASSERT (FALSE);
-    break;
-  }
-}
-
-/**
- * RwMem - Read & Write FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] Mask       - Mask Value of data
- * @param[in] Data       - Write data
- *
- */
-VOID
-RwMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  UINT32     Mask,
-  IN  UINT32     Data
-  )
-{
-  UINT32 Result;
-
-  ReadMem (Address, OpFlag, &Result);
-  Result = (Result & Mask) | Data;
-  WriteMem (Address, OpFlag, &Result);
-}
-
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/PciLib.c b/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/PciLib.c
deleted file mode 100644
index 6d286e8..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/Common/PciLib.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH PCI access lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, 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.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#define FILECODE PROC_FCH_COMMON_PCILIB_FILECODE
-
-VOID
-ReadPci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       VOID*                   Value,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  LibAmdPciRead ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
-}
-
-
-VOID
-WritePci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       VOID                    *Value,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  LibAmdPciWrite ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
-}
-
-
-VOID
-RwPci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       UINT32                  Mask,
-  IN       UINT32                  Data,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-  UINT32    rMask;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  rMask = ~Mask;
-  LibAmdPciRMW ((ACCESS_WIDTH) OpFlag, PciAddress, &Data, &rMask, StdHeader);
-}
-
-
diff --git a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h b/src/vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h
deleted file mode 100644
index bef3016..0000000
--- a/src/vendorcode/amd/agesa/f15tn/Proc/Fch/FchPlatform.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH platform definition
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 63425 $   @e \$Date: 2011-12-22 11:24:10 -0600 (Thu, 22 Dec 2011) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2012, 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  _FCH_PLATFORM_H_
-#define  _FCH_PLATFORM_H_
-
-#define MAX_SATA_PORTS 8
-
-#include "AGESA.h"
-
-#ifndef FCHOEM_ACPI_RESTORE_SWSMI
-  #define FCHOEM_BEFORE_PCI_RESTORE_SWSMI    0xD3
-  #define FCHOEM_AFTER_PCI_RESTORE_SWSMI     0xD4
-  #define FCHOEM_ENABLE_ACPI_SWSMI           0xA0
-  #define FCHOEM_DISABLE_ACPI_SWSMI          0xA1
-  #define FCHOEM_START_TIMER_SMI             0xBC
-  #define FCHOEM_STOP_TIMER_SMI              0xBD
-#endif
-
-#ifndef FCHOEM_SPI_UNLOCK_SWSMI
-  #define FCHOEM_SPI_UNLOCK_SWSMI            0xAA
-#endif
-#ifndef FCHOEM_SPI_LOCK_SWSMI
-  #define FCHOEM_SPI_LOCK_SWSMI              0xAB
-#endif
-
-#ifndef FCHOEM_ACPI_TABLE_RANGE_LOW
-  #define FCHOEM_ACPI_TABLE_RANGE_LOW        0xE0000ul
-#endif
-
-#ifndef FCHOEM_ACPI_TABLE_RANGE_HIGH
-  #define FCHOEM_ACPI_TABLE_RANGE_HIGH       0xFFFF0ul
-#endif
-
-#ifndef FCHOEM_ACPI_BYTE_CHECHSUM
-  #define FCHOEM_ACPI_BYTE_CHECHSUM          0x100
-#endif
-
-#ifndef FCHOEM_IO_DELAY_PORT
-  #define FCHOEM_IO_DELAY_PORT               0x80
-#endif
-
-#ifndef FCHOEM_OUTPUT_DEBUG_PORT
-  #define FCHOEM_OUTPUT_DEBUG_PORT           0x80
-#endif
-
-#define FCH_PCIRST_BASE_IO                   0xCF9
-#define FCH_PCI_RESET_COMMAND06              0x06
-#define FCH_PCI_RESET_COMMAND0E              0x0E
-#define FCH_KBDRST_BASE_IO                   0x64
-#define FCH_KBC_RESET_COMMAND                0xFE
-#define FCH_ROMSIG_BASE_IO                   0x20000l
-#define FCH_ROMSIG_SIGNATURE                 0x55AA55AAul
-#define FCH_MAX_TIMER                        0xFFFFFFFFul
-#define FCH_GEC_INTERNAL_REG                 0x6804
-#define FCH_HPET_REG_MASK                    0xFFFFF800ul
-#define FCH_FAKE_USB_BAR_ADDRESS             0x58830000ul
-
-
-#ifndef FCHOEM_ELAPSED_TIME_UNIT
-  #define FCHOEM_ELAPSED_TIME_UNIT           28
-#endif
-
-#ifndef FCHOEM_ELAPSED_TIME_DIVIDER
-  #define FCHOEM_ELAPSED_TIME_DIVIDER        100
-#endif
-
-#include "Fch.h"
-#include <Lib/amdlib.h>
-#include "Common/FchCommonCfg.h"
-#include "Common/AcpiLib.h"
-#include "Common/FchDef.h"
-#include "Common/FchBiosRamUsage.h"
-#include <Proc/Common/AmdFch.h>
-
-extern BUILD_OPT_CFG    UserOptions;
-
-VOID
-FchInitS3EarlyRestore (
-  IN      FCH_DATA_BLOCK     *FchDataPtr
-  );
-
-VOID
-FchInitS3LateRestore (
-  IN      FCH_DATA_BLOCK     *FchDataPtr
-  );
-
-#endif // _FCH_PLATFORM_H_
diff --git a/src/vendorcode/amd/agesa/f16kb/Makefile.inc b/src/vendorcode/amd/agesa/f16kb/Makefile.inc
index ab82bcc..367efa9 100644
--- a/src/vendorcode/amd/agesa/f16kb/Makefile.inc
+++ b/src/vendorcode/amd/agesa/f16kb/Makefile.inc
@@ -67,6 +67,7 @@ AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Modules/GnbTable
 AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Modules/GnbPcieInitLibV4
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch
 AGESA_INC += -I$(AGESA_ROOT)/Proc/Fch/Common
+AGESA_INC += -I$(AGESA_ROOT)/../common/Proc/Fch/Common
 AGESA_INC += -I$(AGESA_ROOT)/Proc/IDS/Debug
 AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Modules/GnbPcieAspm
 AGESA_INC += -I$(AGESA_ROOT)/Proc/GNB/Modules/GnbSmuLibV7
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.c b/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.c
deleted file mode 100644
index 905025f..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH ACPI lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2013, 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.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#define FILECODE PROC_FCH_COMMON_ACPILIB_FILECODE
-//
-//
-// Routine Description:
-//
-//  Locate ACPI table
-//
-// Arguments:
-//
-//  Signature - table signature
-//
-//Returns:
-//
-//  pointer to ACPI table
-//
-//
-VOID*
-AcpiLocateTable (
-  IN  UINT32     Signature
-  )
-{
-  UINT32              Index;
-  UINT32              *RsdPtr;
-  UINT32              *Rsdt;
-  UINTN               TableOffset;
-  DESCRIPTION_HEADER  *CurrentTable;
-
-  RsdPtr = (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_LOW;
-  Rsdt = NULL;
-  do {
-    if ( *RsdPtr == Int32FromChar('R','S','D',' ') && *(RsdPtr + 1) == Int32FromChar('P','T','R',' ') ) { /* ' DSR' & ' RTP' */
-      Rsdt = (UINT32*) (UINTN) ((RSDP_HEADER*)RsdPtr)->RsdtAddress;
-      break;
-    }
-    RsdPtr += 4;
-  } while ( RsdPtr <= (UINT32*) (UINTN) FCHOEM_ACPI_TABLE_RANGE_HIGH );
-
-  if ( Rsdt != NULL && AcpiGetTableCheckSum (Rsdt) == 0 ) {
-    for ( Index = 0; Index < (((DESCRIPTION_HEADER*)Rsdt)->Length - sizeof (DESCRIPTION_HEADER)) / 4; Index++ ) {
-      TableOffset = *(UINTN*) ((UINT8*)Rsdt + sizeof (DESCRIPTION_HEADER) + Index * 4);
-      CurrentTable = (DESCRIPTION_HEADER*)TableOffset;
-      if ( CurrentTable->Signature == Signature ) {
-        return CurrentTable;
-      }
-    }
-  }
-  return NULL;
-}
-
-//
-//
-//  Routine Description:
-//
-//  Update table CheckSum
-//
-//  Arguments:
-//
-//  TablePtr - table pointer
-//
-//  Returns:
-//
-//  none
-//
-//
-VOID
-AcpiSetTableCheckSum (
-  IN  VOID     *TablePtr
-  )
-{
-  UINT8   CheckSum;
-
-  CheckSum = 0;
-  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = 0;
-  CheckSum = AcpiGetTableCheckSum (TablePtr);
-  ((DESCRIPTION_HEADER*)TablePtr)->CheckSum = (UINT8) (FCHOEM_ACPI_BYTE_CHECHSUM - CheckSum);
-}
-
-//
-//
-//  Routine Description:
-//
-//  Get table CheckSum - Get ACPI table checksum
-//
-//  Arguments:
-//
-//  TablePtr - table pointer
-//
-//  Returns:
-//
-//  none
-//
-//
-UINT8
-AcpiGetTableCheckSum (
-  IN  VOID     *TablePtr
-  )
-{
-  return GetByteSum (TablePtr, ((DESCRIPTION_HEADER*)TablePtr)->Length);
-}
-
-
-//
-//
-//  Routine Description:
-//
-//  GetByteSum - Get BYTE checksum value
-//
-//  Arguments:
-//
-//  DataPtr - table pointer
-//  Length  - table length
-//
-//  Returns:
-//
-//  CheckSum - CheckSum value
-//
-//
-UINT8
-GetByteSum (
-  IN  VOID       *DataPtr,
-  IN  UINT32     Length
-  )
-{
-  UINT32   Index;
-  UINT8    CheckSum;
-
-  CheckSum = 0;
-  for ( Index = 0; Index < Length; Index++ ) {
-    CheckSum = CheckSum + (*((UINT8*)DataPtr + Index));
-  }
-  return CheckSum;
-}
-
-//
-//
-//  Routine Description:
-//
-//  GetFchAcpiMmioBase - Get FCH HwAcpi MMIO Base Address
-//
-//  Arguments:
-//
-//  AcpiMmioBase - HwAcpi MMIO Base Address
-//  StdHeader    - Amd Stand Header
-//
-//  Returns:
-//
-//  AcpiMmioBase - HwAcpi MMIO Base Address
-//
-//
-VOID
-GetFchAcpiMmioBase (
-     OUT   UINT32                *AcpiMmioBase,
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  UINT32    AcpiMmioBaseAddressDword;
-
-  ReadPmio (FCH_PMIOA_REG24 + 2, AccessWidth16, &AcpiMmioBaseAddressDword, StdHeader);
-  *AcpiMmioBase = AcpiMmioBaseAddressDword << 16;
-}
-
-//
-//
-//  Routine Description:
-//
-//  GetFchAcpiPmBase - Get FCH HwAcpi PM Base Address
-//
-//  Arguments:
-//
-//  AcpiPmBase   - HwAcpi PM Base Address
-//  StdHeader    - Amd Stand Header
-//
-//  Returns:
-//
-//  AcpiPmBase   - HwAcpi PM Base Address
-//
-//
-VOID
-GetFchAcpiPmBase (
-     OUT   UINT16                *AcpiPmBase,
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  ReadPmio (FCH_PMIOA_REG60, AccessWidth16, AcpiPmBase, StdHeader);
-}
-
-
-UINT8
-ReadFchSleepType (
-  IN       AMD_CONFIG_PARAMS     *StdHeader
-  )
-{
-  UINT16     Value16;
-  ReadPmio (FCH_PMIOA_REG62, AccessWidth16, &Value16, StdHeader);
-  LibAmdIoRead (AccessWidth16, Value16, &Value16, StdHeader);
-  return (UINT8) ((Value16 >> 10) & 7);
-}
-
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.h b/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.h
deleted file mode 100644
index 5c7f375..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/AcpiLib.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH ACPI lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2013, 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 _FCH_ACPILIB_H_
-#define _FCH_ACPILIB_H_
-///
-/// RSDP - ACPI 2.0 table RSDP
-///
-typedef struct _RSDP_HEADER {
-  UINT64               Signature;                      ///< RSDP signature "RSD PTR"
-  UINT8                CheckSum;                       ///< checksum of the first 20 bytes
-  UINT8                OEMID[6];                       ///< OEM ID
-  UINT8                Revision;                       ///< 0 for APCI 1.0, 2 for ACPI 2.0
-  UINT32               RsdtAddress;                    ///< physical address of RSDT
-  UINT32               Length;                         ///< total length of RSDP (including extended part)
-  UINT64               XsdtAddress;                    ///< physical address of XSDT
-  UINT8                ExtendedCheckSum;               ///< chechsum of whole table
-  UINT8                Reserved[3];                    ///< Reserved
-} RSDP_HEADER;
-
-///
-/// DESCRIPTION_HEADER - ACPI common table header
-///
-typedef struct _DESCRIPTION_HEADER {
-  UINT32               Signature;                      ///< ACPI signature (4 ASCII characters)
-  UINT32               Length;                         ///< Length of table, in bytes, including header
-  UINT8                Revision;                       ///< ACPI Specification minor version #
-  UINT8                CheckSum;                       ///< To make sum of entire table == 0
-  UINT8                OemId[6];                       ///< OEM identification
-  UINT8                OemTableId[8];                  ///< OEM table identification
-  UINT32               OemRevision;                    ///< OEM revision number
-  UINT32               CreatorId;                      ///< ASL compiler vendor ID
-  UINT32               CreatorRevision;                ///< ASL compiler revision number
-} DESCRIPTION_HEADER;
-
-///
-/// _AcpiRegWrite - ACPI MMIO register R/W structure
-///
-typedef struct _ACPI_REG_WRITE {
-  UINT8        MmioBase;               /// MmioBase: Index of Fch block (For instance GPIO_BASE:0x01 SMI_BASE:0x02)
-  UINT8        MmioReg;                /// MmioReg      : Register index
-  UINT8        DataAndMask;            /// DataANDMask  : AND Register Data
-  UINT8        DataOrMask;             /// DataOrMask   : Or Register Data
-} ACPI_REG_WRITE;
-
-VOID*     AcpiLocateTable (IN UINT32 Signature);
-VOID      AcpiSetTableCheckSum (IN VOID *TablePtr);
-UINT8     AcpiGetTableCheckSum (IN VOID *TablePtr);
-UINT8     GetByteSum (IN VOID *DataPtr, IN UINT32 Length);
-
-#endif
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/MemLib.c b/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/MemLib.c
deleted file mode 100644
index 08bd0f9..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/MemLib.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH memory access lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2013, 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.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#include "Ids.h"
-#define FILECODE PROC_FCH_COMMON_MEMLIB_FILECODE
-
-
-/**
- * ReadMem - Read FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] *ValuePtr  - In/Out value pointer
- *
- */
-VOID
-ReadMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  VOID       *ValuePtr
-  )
-{
-  OpFlag = OpFlag & 0x7f;
-
-  switch ( OpFlag ) {
-  case AccessWidth8:
-    *((UINT8*)ValuePtr) = *((UINT8*) ((UINTN)Address));
-    break;
-
-  case AccessWidth16:
-    *((UINT16*)ValuePtr) = *((UINT16*) ((UINTN)Address));
-    break;
-
-  case AccessWidth32:
-    *((UINT32*)ValuePtr) = *((UINT32*) ((UINTN)Address));
-    break;
-
-  default:
-    ASSERT (FALSE);
-    break;
-  }
-}
-
-/**
- * WriteMem - Write FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] *ValuePtr  - In/Out Value pointer
- *
- */
-VOID
-WriteMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  VOID       *ValuePtr
-  )
-{
-  OpFlag = OpFlag & 0x7f;
-
-  switch ( OpFlag ) {
-  case AccessWidth8 :
-    *((UINT8*) ((UINTN)Address)) = *((UINT8*)ValuePtr);
-    break;
-
-  case AccessWidth16:
-    *((UINT16*) ((UINTN)Address)) = *((UINT16*)ValuePtr);
-    break;
-
-  case AccessWidth32:
-    *((UINT32*) ((UINTN)Address)) = *((UINT32*)ValuePtr);
-    break;
-
-  default:
-    ASSERT (FALSE);
-    break;
-  }
-}
-
-/**
- * RwMem - Read & Write FCH BAR Memory
- *
- * @param[in] Address    - Memory BAR address
- * @param[in] OpFlag     - Access width
- * @param[in] Mask       - Mask Value of data
- * @param[in] Data       - Write data
- *
- */
-VOID
-RwMem (
-  IN  UINT32     Address,
-  IN  UINT8      OpFlag,
-  IN  UINT32     Mask,
-  IN  UINT32     Data
-  )
-{
-  UINT32 Result;
-
-  ReadMem (Address, OpFlag, &Result);
-  Result = (Result & Mask) | Data;
-  WriteMem (Address, OpFlag, &Result);
-  ReadMem (Address, OpFlag, &Result);
-}
-
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/PciLib.c b/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/PciLib.c
deleted file mode 100644
index 6ef1bd0..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/Common/PciLib.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH PCI access lib
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2013, 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.
-****************************************************************************
-*/
-#include "FchPlatform.h"
-#define FILECODE PROC_FCH_COMMON_PCILIB_FILECODE
-
-VOID
-ReadPci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       VOID*                   Value,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  LibAmdPciRead ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
-}
-
-
-VOID
-WritePci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       VOID                    *Value,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  LibAmdPciWrite ((ACCESS_WIDTH) OpFlag, PciAddress, Value, StdHeader);
-}
-
-
-VOID
-RwPci (
-  IN       UINT32                  Address,
-  IN       UINT8                   OpFlag,
-  IN       UINT32                  Mask,
-  IN       UINT32                  Data,
-  IN       AMD_CONFIG_PARAMS       *StdHeader
-  )
-{
-  PCI_ADDR  PciAddress;
-  UINT32    rMask;
-
-  PciAddress.AddressValue = ((Address >> 4) & ~0xFFF) + (Address & 0xFFF);
-  rMask = ~Mask;
-  LibAmdPciRMW ((ACCESS_WIDTH) OpFlag, PciAddress, &Data, &rMask, StdHeader);
-}
-
-
diff --git a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/FchPlatform.h b/src/vendorcode/amd/agesa/f16kb/Proc/Fch/FchPlatform.h
deleted file mode 100644
index 52e24d6..0000000
--- a/src/vendorcode/amd/agesa/f16kb/Proc/Fch/FchPlatform.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* $NoKeywords:$ */
-/**
- * @file
- *
- * FCH platform definition
- *
- *
- *
- * @xrefitem bom "File Content Label" "Release Content"
- * @e project:     AGESA
- * @e sub-project: FCH
- * @e \$Revision: 84150 $   @e \$Date: 2012-12-12 15:46:25 -0600 (Wed, 12 Dec 2012) $
- *
- */
-/*
-*****************************************************************************
-*
- * Copyright (c) 2008 - 2013, 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  _FCH_PLATFORM_H_
-#define  _FCH_PLATFORM_H_
-
-#define MAX_SATA_PORTS 8
-
-#include "AGESA.h"
-
-#ifndef FCHOEM_ACPI_RESTORE_SWSMI
-  #define FCHOEM_BEFORE_PCI_RESTORE_SWSMI    0xD3
-  #define FCHOEM_AFTER_PCI_RESTORE_SWSMI     0xD4
-  #define FCHOEM_ENABLE_ACPI_SWSMI           0xA0
-  #define FCHOEM_DISABLE_ACPI_SWSMI          0xA1
-  #define FCHOEM_START_TIMER_SMI             0xBC
-  #define FCHOEM_STOP_TIMER_SMI              0xBD
-#endif
-
-#ifndef FCHOEM_SPI_UNLOCK_SWSMI
-  #define FCHOEM_SPI_UNLOCK_SWSMI            0xAA
-#endif
-#ifndef FCHOEM_SPI_LOCK_SWSMI
-  #define FCHOEM_SPI_LOCK_SWSMI              0xAB
-#endif
-
-#ifndef FCHOEM_ACPI_TABLE_RANGE_LOW
-  #define FCHOEM_ACPI_TABLE_RANGE_LOW        0xE0000ul
-#endif
-
-#ifndef FCHOEM_ACPI_TABLE_RANGE_HIGH
-  #define FCHOEM_ACPI_TABLE_RANGE_HIGH       0xFFFF0ul
-#endif
-
-#ifndef FCHOEM_ACPI_BYTE_CHECHSUM
-  #define FCHOEM_ACPI_BYTE_CHECHSUM          0x100
-#endif
-
-#ifndef FCHOEM_IO_DELAY_PORT
-  #define FCHOEM_IO_DELAY_PORT               0x80
-#endif
-
-#ifndef FCHOEM_OUTPUT_DEBUG_PORT
-  #define FCHOEM_OUTPUT_DEBUG_PORT           0x80
-#endif
-
-#define FCH_PCIRST_BASE_IO                   0xCF9
-#define FCH_PCI_RESET_COMMAND06              0x06
-#define FCH_PCI_RESET_COMMAND0E              0x0E
-#define FCH_KBDRST_BASE_IO                   0x64
-#define FCH_KBC_RESET_COMMAND                0xFE
-#define FCH_ROMSIG_BASE_IO                   0x20000l
-#define FCH_ROMSIG_SIGNATURE                 0x55AA55AAul
-#define FCH_MAX_TIMER                        0xFFFFFFFFul
-#define FCH_HPET_REG_MASK                    0xFFFFF800ul
-#define FCH_FAKE_USB_BAR_ADDRESS             0x58830000ul
-
-
-#ifndef FCHOEM_ELAPSED_TIME_UNIT
-  #define FCHOEM_ELAPSED_TIME_UNIT           28
-#endif
-
-#ifndef FCHOEM_ELAPSED_TIME_DIVIDER
-  #define FCHOEM_ELAPSED_TIME_DIVIDER        100
-#endif
-
-#include "Fch.h"
-#include "amdlib.h"
-#include "FchCommonCfg.h"
-#include "AcpiLib.h"
-#include "FchDef.h"
-#include "FchBiosRamUsage.h"
-#include "AmdFch.h"
-
-extern BUILD_OPT_CFG    UserOptions;
-
-VOID
-FchInitS3EarlyRestore (
-  IN      FCH_DATA_BLOCK     *FchDataPtr
-  );
-
-VOID
-FchInitS3LateRestore (
-  IN      FCH_DATA_BLOCK     *FchDataPtr
-  );
-
-#endif // _FCH_PLATFORM_H_



More information about the coreboot-gerrit mailing list