public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Sun, Zailiang" <zailiang.sun@intel.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Qian, Yi" <yi.qian@intel.com>
Subject: Re: [edk2-platforms Patch 03/14] Vlv2TbltDevicePkg: Remove unused modules/libraries
Date: Mon, 1 Jul 2019 04:07:01 +0000	[thread overview]
Message-ID: <7CB7EF03E15B5D48981329A508747A9850C904D9@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20190701025553.18596-4-michael.d.kinney@intel.com>

Reviewed-By: Zailiang Sun <zailiang.sun@intel.com>

-----Original Message-----
From: Kinney, Michael D 
Sent: Monday, July 01, 2019 10:56 AM
To: devel@edk2.groups.io
Cc: Sun, Zailiang <zailiang.sun@intel.com>; Qian, Yi <yi.qian@intel.com>
Subject: [edk2-platforms Patch 03/14] Vlv2TbltDevicePkg: Remove unused modules/libraries

* Delete platform specific SerialPortLib
* Delete platform specific Metronome module
* Delete platform specific BootScriptSaveDxe module
* Delete SmmSwDispatch2OnSmmSwDispatchThunk module
* Delete SmramSaveInfoHandlerSmm module
* Delete unused FSP content
* Delete unused I2C content
* Delete unused Stitch content
* Delete unused portions of PlatformSmm module

Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 .../BootScriptSaveDxe/BootScriptSaveDxe.inf   |  60 --
 .../InternalBootScriptSave.h                  | 102 ---
 .../BootScriptSaveDxe/ScriptSave.c            | 626 ---------------
 .../FspAzaliaConfigData/AzaliaConfig.bin      | Bin 3708 -> 0 bytes
 .../FspSupport/BootModePei/BootModePei.c      |  42 -
 .../FspSupport/BootModePei/BootModePei.inf    |  40 -
 .../FspHobProcessLibVlv2.c                    | 421 ----------
 .../FspHobProcessLibVlv2.inf                  |  74 --
 .../FspPlatformSecLibVlv2.c                   | 144 ----
 .../FspPlatformSecLibVlv2.inf                 |  82 --
 .../Ia32/AsmSaveSecContext.asm                |  45 --
 .../SecFspPlatformSecLibVlv2/Ia32/Fsp.inc     |  45 --
 .../Ia32/PeiCoreEntry.asm                     | 135 ----
 .../Ia32/SecEntry.asm                         | 338 --------
 .../SecFspPlatformSecLibVlv2/Ia32/Stack.S     |  71 --
 .../SecFspPlatformSecLibVlv2/Ia32/Stack.asm   |  76 --
 .../SecFspPlatformSecLibVlv2/PlatformInit.c   |  36 -
 .../SecFspPlatformSecLibVlv2/SaveSecContext.c | 108 ---
 .../SecGetPerformance.c                       |  83 --
 .../SecPlatformInformation.c                  |  77 --
 .../SecFspPlatformSecLibVlv2/SecRamInitData.c |  16 -
 .../SecTempRamSupport.c                       | 149 ----
 .../SecFspPlatformSecLibVlv2/UartInit.c       | 192 -----
 .../Include/Protocol/TpmMp.h                  | 136 ----
 .../Include/Protocol/UsbPolicy.h              | 126 ---
 .../Vlv2TbltDevicePkg/Library/I2CLib/I2CLib.c |  46 --
 .../Library/I2CLib/I2CLibNull.inf             |  39 -
 .../Library/I2CLibDxe/I2CLib.c                | 735 ------------------
 .../Library/I2CLibDxe/I2CLibDxe.inf           |  39 -
 .../Library/I2CLibDxe/I2CRegs.h               | 126 ---
 .../Library/I2CLibPei/I2CAccess.h             |  44 --
 .../Library/I2CLibPei/I2CDelayPei.c           |  46 --
 .../Library/I2CLibPei/I2CDelayPei.h           |  30 -
 .../Library/I2CLibPei/I2CIoLibPei.c           | 178 -----
 .../Library/I2CLibPei/I2CIoLibPei.h           | 153 ----
 .../Library/I2CLibPei/I2CLibPei.c             | 638 ---------------
 .../Library/I2CLibPei/I2CLibPei.h             | 280 -------
 .../Library/I2CLibPei/I2CLibPei.inf           |  40 -
 .../Library/PlatformFspLib/PlatformFspLib.c   |  44 --
 .../Library/PlatformFspLib/PlatformFspLib.inf |  49 --
 .../SerialPortLib/PlatformSerialPortLib.h     |  53 --
 .../Library/SerialPortLib/SerialPortLib.c     | 246 ------
 .../Library/SerialPortLib/SerialPortLib.inf   |  52 --
 .../Library/SerialPortLib/SioInit.c           | 127 ---
 .../Library/SerialPortLib/SioInit.h           |  62 --
 .../Metronome/LegacyMetronome.c               | 185 -----
 .../Metronome/LegacyMetronome.h               |  64 --
 .../Vlv2TbltDevicePkg/Metronome/Metronome.inf |  49 --
 .../PlatformSmm/SmmScriptSave.c               | 252 ------
 .../PlatformSmm/SmmScriptSave.h               |  50 --
 .../SmmSwDispatch2OnSmmSwDispatchThunk.c      | 459 -----------
 .../SmmSwDispatch2OnSmmSwDispatchThunk.inf    |  54 --
 .../SmramSaveInfoHandlerSmm.c                 | 164 ----
 .../SmramSaveInfoHandlerSmm.inf               |  60 --
 .../Stitch/IFWIHeader/Vacant.bin              | Bin 3928064 -> 0 bytes
 .../Vlv2TbltDevicePkg/Stitch/IFWIStitch.bat   | 270 -------
 .../Stitch/MNW2_Stitch_Config.txt             |  10 -
 57 files changed, 7868 deletions(-)
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/BootScriptSaveDxe.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/InternalBootScriptSave.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspAzaliaConfigData/AzaliaConfig.bin
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/AsmSaveSecContext.asm
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Fsp.inc
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/PeiCoreEntry.asm
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/SecEntry.asm
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.S
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.asm
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/PlatformInit.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SaveSecContext.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecGetPerformance.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecPlatformInformation.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecRamInitData.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecTempRamSupport.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/UartInit.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/TpmMp.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/UsbPolicy.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLib.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLibNull.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLib.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLibDxe.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CRegs.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CAccess.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/PlatformSerialPortLib.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Metronome/Metronome.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.h
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.c
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.inf
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/IFWIHeader/Vacant.bin
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/IFWIStitch.bat
 delete mode 100644 Platform/Intel/Vlv2TbltDevicePkg/Stitch/MNW2_Stitch_Config.txt

diff --git a/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/BootScriptSaveDxe.inf b/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/BootScriptSaveDxe.inf
deleted file mode 100644
index d2fa621096..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/BootScriptSaveDxe.inf
+++ /dev/null
@@ -1,60 +0,0 @@
-#
-#
-## @file
-# Component description file for ScriptSave Lite module.
-#
-# This is an implementation of the Boot Script Save protocol.
-# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = BootScriptSaveDxe
-  FILE_GUID                      = 42BB673D-09F3-4e2e-9FEE-D081131DED5B
-  MODULE_TYPE                    = DXE_DRIVER
-  VERSION_STRING                 = 1.0
-
-  ENTRY_POINT                    = InitializeScriptSave
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources]
-  ScriptSave.c
-  InternalBootScriptSave.h
-
-
-[Packages]
-  MdePkg/MdePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-
-
-[LibraryClasses]
-  PcdLib
-  UefiRuntimeServicesTableLib
-  UefiBootServicesTableLib
-  MemoryAllocationLib
-  UefiDriverEntryPoint
-  BaseMemoryLib
-  DebugLib
-  BaseLib
-  S3BootScriptLib
-
-[Protocols]
-  gEfiBootScriptSaveProtocolGuid                # PROTOCOL ALWAYS_PRODUCED
-
-
-[Depex]
-  TRUE
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/InternalBootScriptSave.h b/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/InternalBootScriptSave.h
deleted file mode 100644
index f232281e2b..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/InternalBootScriptSave.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/** @file
-//
-//
-  Internal header file for S3 Boot Script Saver driver.
-
-  Copyright (c) 2006  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-**/
-
-#ifndef _INTERNAL_BOOT_SCRIPT_SAVE_H_
-#define _INTERNAL_BOOT_SCRIPT_SAVE_H_
-#include <FrameworkDxe.h>
-
-#include <Protocol/BootScriptSave.h>
-#include <Protocol/FirmwareVolume.h>
-
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Library/UefiDriverEntryPoint.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/S3BootScriptLib.h>
-#include <Library/PcdLib.h>
-#include <Library/SmbusLib.h>
-#include <IndustryStandard/SmBus.h>
-
-/**
-  Adds a record into a specified Framework boot script table.
-
-  This function is used to store a boot script record into a given boot
-  script table. If the table specified by TableName is nonexistent in the
-  system, a new table will automatically be created and then the script record
-  will be added into the new table. A boot script table can add new script records
-  until EFI_BOOT_SCRIPT_SAVE_PROTOCOL.CloseTable() is called. Currently, the only
-  meaningful table name is EFI_ACPI_S3_RESUME_SCRIPT_TABLE. This function is
-  responsible for allocating necessary memory for the script.
-
-  This function has a variable parameter list. The exact parameter list depends on
-  the OpCode that is passed into the function. If an unsupported OpCode or illegal
-  parameter list is passed in, this function returns EFI_INVALID_PARAMETER.
-  If there are not enough resources available for storing more scripts, this function returns
-  EFI_OUT_OF_RESOURCES.
-
-  @param[in]  This                 A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
-  @param[in]  TableName            Name of the script table. Currently, the only meaningful value is
-                                   EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
-  @param[in]  OpCode               The operation code (opcode) number.
-  @param[in]  ...                  Argument list that is specific to each opcode.
-
-  @retval EFI_SUCCESS              The operation succeeded. A record was added into the
-                                   specified script table.
-  @retval EFI_INVALID_PARAMETER    The parameter is illegal or the given boot script is not supported.
-                                   If the opcode is unknow or not supported because of the PCD
-                                   Feature Flags.
-  @retval EFI_OUT_OF_RESOURCES     There is insufficient memory to store the boot script.
-
-**/
-EFI_STATUS
-EFIAPI
-BootScriptWrite (
-  IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL    *This,
-  IN UINT16                           TableName,
-  IN UINT16                           OpCode,
-  ...
-  );
-
-/**
-  Closes the specified script table.
-
-  This function closes the specified boot script table and returns the base address
-  of the table. It allocates a new pool to duplicate all the boot scripts in the specified
-  table. Once this function is called, the specified table will be destroyed after it is
-  copied into the allocated pool. As a result, any attempts to add a script record into a
-  closed table will cause a new table to be created. The base address of the allocated pool
-  will be returned in Address. After using the boot script table, the caller is responsible
-  for freeing the pool that is allocated by this function. If the boot script table,
-  such as EFI_ACPI_S3_RESUME_SCRIPT_TABLE, is required to be stored in a nonperturbed
-  memory region, the caller should copy the table into the nonperturbed memory region by itself.
-
-  @param[in]  This              A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
-  @param[in]  TableName         Name of the script table. Currently, the only meaningful value is
-                                EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
-  @param[in]  Address           A pointer to the physical address where the table begins.
-
-  @retval EFI_SUCCESS           The table was successfully returned.
-  @retval EFI_NOT_FOUND         The specified table was not created previously.
-  @retval EFI_OUT_OF_RESOURCE   Memory is insufficient to hold the reorganized boot script table.
-  @retval EFI_UNSUPPORTED       The table type is not EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
-
-**/
-EFI_STATUS
-EFIAPI
-BootScriptCloseTable (
-  IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL    *This,
-  IN UINT16                           TableName,
-  OUT EFI_PHYSICAL_ADDRESS            *Address
-  );
-#endif //_INTERNAL_BOOT_SCRIPT_SAVE_H_
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c b/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c
deleted file mode 100644
index 837a8c95cd..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/BootScriptSaveDxe/ScriptSave.c
+++ /dev/null
@@ -1,626 +0,0 @@
-/** @file
-  Implementation for S3 Boot Script Saver driver.
-
-Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-**/
-
-#include "InternalBootScriptSave.h"
-
-EFI_HANDLE                    mHandle = NULL;
-EFI_BOOT_SCRIPT_SAVE_PROTOCOL mS3ScriptSave = {
-  BootScriptWrite,
-  BootScriptCloseTable
-  };
-
-/**
-  Internal function to add IO write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptIoWrite (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINTN                 Count;
-  UINT8                 *Buffer;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Count       = VA_ARG (Marker, UINTN);
-  Buffer      = VA_ARG (Marker, UINT8 *);
-
-  return S3BootScriptSaveIoWrite (Width, Address, Count, Buffer);
-}
-
-/**
-  Internal function to add IO read/write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptIoReadWrite (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINT8                 *Data;
-  UINT8                 *DataMask;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Data        = VA_ARG (Marker, UINT8 *);
-  DataMask    = VA_ARG (Marker, UINT8 *);
-
-  return S3BootScriptSaveIoReadWrite (Width, Address, Data, DataMask);
-}
-
-/**
-  Internal function to add memory write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptMemWrite (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINTN                 Count;
-  UINT8                 *Buffer;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Count       = VA_ARG (Marker, UINTN);
-  Buffer      = VA_ARG (Marker, UINT8 *);
-
-  return S3BootScriptSaveMemWrite (Width, Address, Count, Buffer);
-}
-
-/**
-  Internal function to add memory read/write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptMemReadWrite (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINT8                 *Data;
-  UINT8                 *DataMask;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Data        = VA_ARG (Marker, UINT8 *);
-  DataMask    = VA_ARG (Marker, UINT8 *);
-
-  return S3BootScriptSaveMemReadWrite (Width, Address, Data, DataMask);
-}
-
-/**
-  Internal function to add PciCfg write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptPciCfgWrite (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINTN                 Count;
-  UINT8                 *Buffer;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Count       = VA_ARG (Marker, UINTN);
-  Buffer      = VA_ARG (Marker, UINT8 *);
-
-  return S3BootScriptSavePciCfgWrite (Width, Address, Count, Buffer);
-}
-
-/**
-  Internal function to PciCfg read/write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptPciCfgReadWrite (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINT8                 *Data;
-  UINT8                 *DataMask;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Data        = VA_ARG (Marker, UINT8 *);
-  DataMask    = VA_ARG (Marker, UINT8 *);
-
-  return S3BootScriptSavePciCfgReadWrite (Width, Address, Data, DataMask);
-}
-
-/**
-  Internal function to add PciCfg2 write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptPciCfg2Write (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINTN                 Count;
-  UINT8                 *Buffer;
-  UINT16                Segment;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Count       = VA_ARG (Marker, UINTN);
-  Buffer      = VA_ARG (Marker, UINT8 *);
-  Segment     = VA_ARG (Marker, UINT16);
-
-  return S3BootScriptSavePciCfg2Write (Width, Segment, Address, Count, Buffer);
-}
-
-/**
-  Internal function to PciCfg2 read/write opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptPciCfg2ReadWrite (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT16                Segment;
-  UINT64                Address;
-  UINT8                 *Data;
-  UINT8                 *DataMask;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  Segment     = VA_ARG (Marker, UINT16);
-  Data        = VA_ARG (Marker, UINT8 *);
-  DataMask    = VA_ARG (Marker, UINT8 *);
-
-  return S3BootScriptSavePciCfg2ReadWrite (Width, Segment, Address, Data, DataMask);
-}
-
-/**
-  Internal function to add smbus execute opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptSmbusExecute (
-  IN VA_LIST                       Marker
-  )
-{
-  EFI_SMBUS_DEVICE_ADDRESS  SlaveAddress;
-  EFI_SMBUS_DEVICE_COMMAND  Command;
-  EFI_SMBUS_OPERATION       Operation;
-  BOOLEAN                   PecCheck;
-  VOID                     *Buffer;
-  UINTN                    *DataSize;
-  UINTN                     SmBusAddress;
-
-  SlaveAddress.SmbusDeviceAddress = VA_ARG (Marker, UINTN);
-  Command                         = VA_ARG (Marker, EFI_SMBUS_DEVICE_COMMAND);
-  Operation                       = VA_ARG (Marker, EFI_SMBUS_OPERATION);
-  PecCheck                        = VA_ARG (Marker, BOOLEAN);
-  SmBusAddress                    = SMBUS_LIB_ADDRESS (SlaveAddress.SmbusDeviceAddress,Command,0,PecCheck);
-  DataSize                        = VA_ARG (Marker, UINTN *);
-  Buffer                          = VA_ARG (Marker, VOID *);
-
-  return S3BootScriptSaveSmbusExecute (SmBusAddress, Operation, DataSize, Buffer);
-}
-
-/**
-  Internal function to add stall opcode to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptStall (
-  IN VA_LIST                       Marker
-  )
-{
-  UINT32                Duration;
-
-  Duration    = VA_ARG (Marker, UINT32);
-
-  return S3BootScriptSaveStall (Duration);
-}
-
-/**
-  Internal function to add Save jmp address according to DISPATCH_OPCODE.
-  We ignore "Context" parameter.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptDispatch (
-  IN VA_LIST                       Marker
-  )
-{
-  VOID        *EntryPoint;
-
-  EntryPoint = (VOID*)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
-  return S3BootScriptSaveDispatch (EntryPoint);
-}
-
-/**
-  Internal function to add memory pool operation to the table.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptMemPoll (
-  IN VA_LIST                       Marker
-  )
-{
-  S3_BOOT_SCRIPT_LIB_WIDTH Width;
-  UINT64                Address;
-  UINT8                 *BitMask;
-  UINT8                 *BitValue;
-  UINTN                Duration;
-  UINT64               LoopTimes;
-
-  Width       = VA_ARG (Marker, S3_BOOT_SCRIPT_LIB_WIDTH);
-  Address     = VA_ARG (Marker, UINT64);
-  BitMask     = VA_ARG (Marker, UINT8 *);
-  BitValue    = VA_ARG (Marker, UINT8 *);
-  Duration    = (UINTN)VA_ARG (Marker, UINT64);
-  LoopTimes   = VA_ARG (Marker, UINT64);
-
-  return S3BootScriptSaveMemPoll (Width, Address, BitMask, BitValue, Duration, LoopTimes);
-}
-
-/**
-  Internal function to add Save jmp address according to DISPATCH_OPCODE2.
-  The "Context" parameter is not ignored.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enough resource to do operation.
-  @retval EFI_SUCCESS           Opcode is added.
-
-**/
-EFI_STATUS
-BootScriptDispatch2 (
-  IN VA_LIST                       Marker
-  )
-{
-  VOID                  *EntryPoint;
-  VOID                  *Context;
-
-  EntryPoint = (VOID*)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
-  Context    = (VOID*)(UINTN)VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
-
-  return S3BootScriptSaveDispatch2 (EntryPoint, Context);
-}
-
-/**
-  Internal function to add the opcode link node to the link list.
-
-  @param  Marker                The variable argument list to get the opcode
-                                and associated attributes.
-
-  @retval EFI_OUT_OF_RESOURCES  Not enought resource to complete the operations.
-  @retval EFI_SUCCESS           The opcode entry is added to the link list
-                                successfully.
-**/
-EFI_STATUS
-BootScriptInformation (
-  IN VA_LIST                       Marker
-  )
-{
-  UINT32                InformationLength;
-  EFI_PHYSICAL_ADDRESS  Information;
-
-  InformationLength = VA_ARG (Marker, UINT32);
-  Information = VA_ARG (Marker, EFI_PHYSICAL_ADDRESS);
-  return S3BootScriptSaveInformation (InformationLength, (VOID*)(UINTN)Information);
-}
-
-/**
-  Adds a record into a specified Framework boot script table.
-
-  This function is used to store a boot script record into a given boot
-  script table. If the table specified by TableName is nonexistent in the
-  system, a new table will automatically be created and then the script record
-  will be added into the new table. A boot script table can add new script records
-  until EFI_BOOT_SCRIPT_SAVE_PROTOCOL.CloseTable() is called. Currently, the only
-  meaningful table name is EFI_ACPI_S3_RESUME_SCRIPT_TABLE. This function is
-  responsible for allocating necessary memory for the script.
-
-  This function has a variable parameter list. The exact parameter list depends on
-  the OpCode that is passed into the function. If an unsupported OpCode or illegal
-  parameter list is passed in, this function returns EFI_INVALID_PARAMETER.
-  If there are not enough resources available for storing more scripts, this function returns
-  EFI_OUT_OF_RESOURCES.
-
-  @param  This                  A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
-  @param  TableName             Name of the script table. Currently, the only meaningful value is
-                                EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
-  @param  OpCode                The operation code (opcode) number.
-  @param  ...                   Argument list that is specific to each opcode.
-
-  @retval EFI_SUCCESS           The operation succeeded. A record was added into the
-                                specified script table.
-  @retval EFI_INVALID_PARAMETER The parameter is illegal or the given boot script is not supported.
-                                If the opcode is unknow or not supported because of the PCD
-                                Feature Flags.
-  @retval EFI_OUT_OF_RESOURCES  There is insufficient memory to store the boot script.
-
-**/
-EFI_STATUS
-EFIAPI
-BootScriptWrite (
-  IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL    *This,
-  IN UINT16                           TableName,
-  IN UINT16                           OpCode,
-  ...
-  )
-{
-  EFI_STATUS                Status;
-  VA_LIST                   Marker;
-
-  if (TableName != FRAMEWORK_EFI_ACPI_S3_RESUME_SCRIPT_TABLE) {
-    //
-    // Only S3 boot script is supported for now.
-    //
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  //
-  // Build script according to opcode.
-  //
-  switch (OpCode) {
-
-  case EFI_BOOT_SCRIPT_IO_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptIoWrite (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptIoReadWrite (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptMemWrite (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptMemReadWrite (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptPciCfgWrite (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptPciCfgReadWrite (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptSmbusExecute (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_STALL_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptStall (Marker);
-    VA_END (Marker);
-
-    break;
-
-  case EFI_BOOT_SCRIPT_DISPATCH_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptDispatch (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_DISPATCH_2_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptDispatch2 (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_INFORMATION_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptInformation (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_MEM_POLL_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptMemPoll (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptPciCfg2Write (Marker);
-    VA_END (Marker);
-    break;
-
-  case EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE:
-    VA_START (Marker, OpCode);
-    Status = BootScriptPciCfg2ReadWrite (Marker);
-    VA_END (Marker);
-    break;
-
-  default:
-    Status = EFI_INVALID_PARAMETER;
-    break;
-  }
-
-  return Status;
-}
-
-/**
-  Closes the specified script table.
-
-  This function closes the specified boot script table and returns the base address
-  of the table. It allocates a new pool to duplicate all the boot scripts in the specified
-  table. Once this function is called, the specified table will be destroyed after it is
-  copied into the allocated pool. As a result, any attempts to add a script record into a
-  closed table will cause a new table to be created. The base address of the allocated pool
-  will be returned in Address. After using the boot script table, the caller is responsible
-  for freeing the pool that is allocated by this function. If the boot script table,
-  such as EFI_ACPI_S3_RESUME_SCRIPT_TABLE, is required to be stored in a nonperturbed
-  memory region, the caller should copy the table into the nonperturbed memory region by itself.
-
-  @param  This                  A pointer to the EFI_BOOT_SCRIPT_SAVE_PROTOCOL instance.
-  @param  TableName             Name of the script table. Currently, the only meaningful value is
-                                 EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
-  @param  Address               A pointer to the physical address where the table begins.
-
-  @retval EFI_SUCCESS           The table was successfully returned.
-  @retval EFI_NOT_FOUND         The specified table was not created previously.
-  @retval EFI_OUT_OF_RESOURCE   Memory is insufficient to hold the reorganized boot script table.
-  @retval EFI_UNSUPPORTED       The table type is not EFI_ACPI_S3_RESUME_SCRIPT_TABLE.
-
-**/
-EFI_STATUS
-EFIAPI
-BootScriptCloseTable (
-  IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL    *This,
-  IN UINT16                           TableName,
-  OUT EFI_PHYSICAL_ADDRESS            *Address
-  )
-{
-  if (TableName != FRAMEWORK_EFI_ACPI_S3_RESUME_SCRIPT_TABLE) {
-    //
-    // Only S3 boot script is supported for now.
-    //
-    return EFI_NOT_FOUND;
-  }
-  *Address = (EFI_PHYSICAL_ADDRESS)(UINTN)S3BootScriptCloseTable ();
-
-  if (*Address == 0) {
-    return  EFI_NOT_FOUND;
-  }
-  return EFI_SUCCESS;
-}
-
-/**
-  This routine is entry point of ScriptSave driver.
-
-  @param  ImageHandle           Handle for this drivers loaded image protocol.
-  @param  SystemTable           EFI system table.
-
-  @retval EFI_OUT_OF_RESOURCES  No enough resource.
-  @retval EFI_SUCCESS           Succesfully installed the ScriptSave driver.
-  @retval other                 Errors occured.
-
-**/
-EFI_STATUS
-EFIAPI
-InitializeScriptSave (
-  IN EFI_HANDLE           ImageHandle,
-  IN EFI_SYSTEM_TABLE     *SystemTable
-  )
-{
-  return  gBS->InstallProtocolInterface (
-                  &mHandle,
-                  &gEfiBootScriptSaveProtocolGuid,
-                  EFI_NATIVE_INTERFACE,
-                  &mS3ScriptSave
-                  );
-
-}
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspAzaliaConfigData/AzaliaConfig.bin b/Platform/Intel/Vlv2TbltDevicePkg/FspAzaliaConfigData/AzaliaConfig.bin
deleted file mode 100644
index da24c02b5d25ce888c630c664095902b4bb035e7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3708
zcmd^>Pl#JZ9LMK3`)XRdt$F?9>(+TQNqa~UwYzRL6+{xdH3}71P@h!~iwKK?QYsja
zyX|(<qQVxzbj5>fq4Da)Ts;(X@!&zpF$WI;5lLww$LD8u(;7lcLET;q4D-G_leaV9
z`ONQ|ZR6t$o%9hYzfnH1u=S6uQmNdpwECI9F1+yKF{PAjL*H2Jq)QXOgh~bLdf(Yj
zx{Q{={HK>X>1pl1uVg3l=gxJ~cL&<PZ)v%co*%q_JNnyNCp|Z$e>&eufBh)t{i$qa
zymz6Ko;kF<fYxKYbk8T9^zHTcrQ*MT^i#$MdK~@MXPtDW{K}NLuFTl3<m0X=(-m=j
zxoZ39zGO`wT@kSrDa94Z8J=B&PSA<u4bN^KJufTqyc{q*yDGXWlW|oJ8lGK47HtDf
zGYxc2)@+UWHJLIsS#>R$wk^39x8#&*q1$rZw$W`_Fm2JUDS6xE|21XSG|_dwU+4RE
znKN}^tDE}4qiNQxW^7I6<C;>Yro`3NRa-~bRo2weO(nLeSfk1ro?RE+MR!%+@QkN|
zrz?1RVBOP<7MszNaYi3BJiC@!v@JCm(@cx`ZMA0GY9(%~l4+||7vWKaClMY+c+gjQ
z+voj#HEa4xy9}OWcz*^@GMnznsNr~Yq{O;PtS`?xHS5iqf=FDD$QES96{Kg1=%Vbl
zMS0m3VWGl$E3CW1e9u<Gcp?p(Fh7yUJWDV&4O^=))-zRfRj$~oyy~jx8oGwAp=;=d
zgfMm;)-J+a4^~2$ISxBz80x{6z}V-ob`s`B_psR-kDkb~#xiTnvqsGtCt0KC8g{rB
zP3}XBd%`+dBTUHSrj18!G|jbT+HgnXu7tKL6RwMAeYprzYp?|qQi3JV)FNz&%jj7X
zX^A6!(MI~Di}ai+pbL7+7W9NGXwC#()Zf`6<3)4@UD4NUh4BhH(b+iB$8Ey<5`7Om
zdQz(``s;53YS<Qi?D>E-M4TfHuF7zggR5<Dbs4T!2V8}46~a{+uCj2&9^kCPc!hIM
z_&yD;%5c?#s}Qb2xGE303gIe*t1?_onwngSH)>SiJXdw*(`=pbI(mb%kTWcEhBrA2
zIYZCcqnz27oLR(~l{m8=XBH05tjw7?&V+lSxhFc{O#D8_N*nw2{oOo<qvGU<2cvs-
z?0LODv*+M8doKOUJ#Jx-XV~NJ!5(viJsyY4fIW_$SqhgaTq?L!aQOgxCKq*<{&yGX
zkp9CRfsW}z{=PoG_IH0bPe#Y_=;&{`NR8(s_2z*{We?Ke!e^Mkh0nBIcm&&M8Xkpk
zF$Whu%LFd=n5yL9Lf}H+A~)n2c_4@3;w!jVgA4M2EaX1N8(HTwj~tK_ag)35GwbjA
z<7<!4yD>cc9uFV911CMxhZ~yh!&U!3uUB~VR348M9xdb1!oZ`MA&-1bp24F$9_ib7
z<ZJTq-I*QoNaN8iJj&vc3_L2~(UBpKUc#eGc(jH`zW(_d9mX{LDbsp*BzSZdk50Na
zcXQ(|dCtUn&NkhnXLF`O4mZf-207bMj(qny&$*(TN|D!!-0qRzC2~AVUbAKu`urxx
z`Ax-mm+>y+Jd@Xo-0u1OCdZW_uj7pLY=(Nlvx(3VIzscz9+{7(zIzV1OU&2I*UZ;H
zWLQt8t)~8r)UF%R=vCNs4M)egTR9b1a<AD+Zl9~<;0B$b6LgZBH1p_r^nC7h$MgT}
zgGV!?HL*tx4`Z4waK8)dxiws$?v`7l^(fC>yTo1d^~nE5K0H#7;CB7D2Hf7NN4M@8
zHA%Q@KgMm@!(F>wZry{scKj6e==4xMQYkzSwVSzj1<zInp82egsOc-z^wE0cJ=zy<
zWce8N=$~Zy5}xe6gC{=Avx6)jBg^0SxppDYAJgysBGC8IOFqyO^vV7}@Au<me3Aa)
og+TA{`cR;E`u>AJKSaMh8|ZiFi`_ua(_elr(C^Vdb2!j{0U29Y3;+NC

diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.c
deleted file mode 100644
index bf6c7efba5..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/** @file
-  This PEIM will parse the hoblist from fsp and report them into pei core.
-  This file contains the main entrypoint of the PEIM.
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-
-#include <PiPei.h>
-#include <Ppi/MasterBootMode.h>
-
-static EFI_PEI_PPI_DESCRIPTOR       mPpiList[] = {
-  {
-    EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
-    &gEfiPeiMasterBootModePpiGuid,
-    NULL
-  },
-};
-
-/**
-  This is the entrypoint of PEIM
-
-  @param  FileHandle  Handle of the file being invoked.
-  @param  PeiServices Describes the list of possible PEI Services.
-
-  @retval EFI_SUCCESS if it completed successfully.
-**/
-EFI_STATUS
-EFIAPI
-BootModePeiEntryPoint (
-  IN       EFI_PEI_FILE_HANDLE  FileHandle,
-  IN CONST EFI_PEI_SERVICES     **PeiServices
-  )
-{
-  (*PeiServices)->SetBootMode(PeiServices, BOOT_WITH_FULL_CONFIGURATION);
-
-  (*PeiServices)->InstallPpi (PeiServices, &mPpiList[0]);
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.inf b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.inf
deleted file mode 100644
index 27200bca15..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/BootModePei/BootModePei.inf
+++ /dev/null
@@ -1,40 +0,0 @@
-## @file
-# FSP PEI Module
-#
-# Parses the hoblist from fsp and report them into pei core. It will install
-# the memory as required.
-#
-#  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = BootModePeim
-  FILE_GUID                      = 2B1D0832-2184-4C8F-A90D-8E4AF9DE5BCD
-  MODULE_TYPE                    = PEIM
-  VERSION_STRING                 = 1.0
-  ENTRY_POINT                    = BootModePeiEntryPoint
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32
-#
-
-[Sources]
-  BootModePei.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-
-[LibraryClasses]
-  PeimEntryPoint
-
-[Ppis]
-  gEfiPeiMasterBootModePpiGuid
-
-[Depex]
-  TRUE
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.c
deleted file mode 100644
index 8a97e25bd4..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.c
+++ /dev/null
@@ -1,421 +0,0 @@
-/** @file
-  Null instance of Platform Sec Lib.
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-
-#include <Library/PeiServicesLib.h>
-#include <Library/PeiServicesTablePointerLib.h>
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/HobLib.h>
-#include <Library/PcdLib.h>
-#include <Library/FspPlatformInfoLib.h>
-
-#include <Guid/GuidHobFsp.h>
-#include <Guid/MemoryTypeInformation.h>
-#include <Ppi/Capsule.h>
-
-#include <PlatformFspLib.h>
-#include <Guid/SmramMemoryReserve.h>
-EFI_GUID gFspReservedMemoryResourceHobTsegGuid = {0xd038747c, 0xd00c, 0x4980, {0xb3, 0x19, 0x49, 0x01, 0x99, 0xa4, 0x7d, 0x55}};
-
-//
-// Additional pages are used by DXE memory manager.
-// It should be consistent between RetrieveRequiredMemorySize() and GetPeiMemSize()
-//
-#define PEI_ADDITIONAL_MEMORY_SIZE    (16 * EFI_PAGE_SIZE)
-
-/**
-  Get the mem size in memory type infromation table.
-
-  @param PeiServices  PEI Services table.
-
-  @return the mem size in memory type infromation table.
-**/
-UINT64
-GetMemorySizeInMemoryTypeInformation (
-  IN EFI_PEI_SERVICES **PeiServices
-  )
-{
-  EFI_PEI_HOB_POINTERS        Hob;
-  EFI_MEMORY_TYPE_INFORMATION *MemoryData;
-  UINT8                       Index;
-  UINTN                       TempPageNum;
-
-  MemoryData = NULL;
-  (*PeiServices)->GetHobList ((CONST EFI_PEI_SERVICES **)PeiServices, (VOID **) &Hob.Raw);
-  while (!END_OF_HOB_LIST (Hob)) {
-    if (Hob.Header->HobType == EFI_HOB_TYPE_GUID_EXTENSION &&
-      CompareGuid (&Hob.Guid->Name, &gEfiMemoryTypeInformationGuid)) {
-      MemoryData = (EFI_MEMORY_TYPE_INFORMATION *) (Hob.Raw + sizeof (EFI_HOB_GENERIC_HEADER) + sizeof (EFI_GUID));
-      break;
-    }
-
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-
-  if (MemoryData == NULL) {
-    return 0;
-  }
-
-  TempPageNum = 0;
-  for (Index = 0; MemoryData[Index].Type != EfiMaxMemoryType; Index++) {
-    //
-    // Accumulate default memory size requirements
-    //
-    TempPageNum += MemoryData[Index].NumberOfPages;
-  }
-
-  return TempPageNum * EFI_PAGE_SIZE;
-}
-
-/**
-  Get the mem size need to be reserved in PEI phase.
-
-  @param PeiServices  PEI Services table.
-
-  @return the mem size need to be reserved in PEI phase.
-**/
-UINT64
-RetrieveRequiredMemorySize (
-  IN EFI_PEI_SERVICES **PeiServices
-  )
-{
-  UINT64                      Size;
-
-  Size = GetMemorySizeInMemoryTypeInformation (PeiServices);
-  return Size + PEI_ADDITIONAL_MEMORY_SIZE;
-}
-
-/**
-  Get the mem size need to be consumed and reserved in PEI phase.
-
-  @param PeiServices  PEI Services table.
-  @param BootMode     Current boot mode.
-
-  @return the mem size need to be consumed and reserved in PEI phase.
-**/
-UINT64
-GetPeiMemSize (
-  IN EFI_PEI_SERVICES **PeiServices,
-  IN UINT32           BootMode
-  )
-{
-  UINT64                      Size;
-  UINT64                      MinSize;
-
-  if (BootMode == BOOT_IN_RECOVERY_MODE) {
-    return PcdGet32 (PcdPeiRecoveryMinMemSize);
-  }
-
-  Size = GetMemorySizeInMemoryTypeInformation (PeiServices);
-
-  if (BootMode == BOOT_ON_FLASH_UPDATE) {
-    //
-    // Maybe more size when in CapsuleUpdate phase ?
-    //
-    MinSize = PcdGet32 (PcdPeiMinMemSize);
-  } else {
-    MinSize = PcdGet32 (PcdPeiMinMemSize);
-  }
-
-  return MinSize + Size + PEI_ADDITIONAL_MEMORY_SIZE;
-}
-
-/**
-  BIOS process FspBobList.
-
-  @param FspHobList  Pointer to the HOB data structure produced by FSP.
-
-  @return If platform process the FSP hob list successfully.
-**/
-EFI_STATUS
-EFIAPI
-FspHobProcessForMemoryResource (
-  IN VOID                 *FspHobList
-  )
-{
-  EFI_PEI_HOB_POINTERS Hob;
-  UINT64               LowMemorySize;
-  UINT64               FspMemorySize;
-  EFI_PHYSICAL_ADDRESS FspMemoryBase;
-  UINT64               PeiMemSize;
-  EFI_PHYSICAL_ADDRESS PeiMemBase;
-  UINT64               S3PeiMemSize;
-  EFI_PHYSICAL_ADDRESS S3PeiMemBase;
-  BOOLEAN              FoundFspMemHob;
-  EFI_STATUS           Status;
-  EFI_BOOT_MODE        BootMode;
-  PEI_CAPSULE_PPI      *Capsule;
-  VOID                 *CapsuleBuffer;
-  UINTN                CapsuleBufferLength;
-  UINT64               RequiredMemSize;
-  EFI_PEI_SERVICES     **PeiServices;
-  UINT64               TsegSize;
-  EFI_PHYSICAL_ADDRESS TsegBase;
-  BOOLEAN              FoundTsegHob;
-
-  PeiServices = (EFI_PEI_SERVICES **)GetPeiServicesTablePointer ();
-
-  PeiServicesGetBootMode (&BootMode);
-
-  PeiMemBase = 0;
-  LowMemorySize = 0;
-  FspMemorySize = 0;
-  FspMemoryBase = 0;
-  FoundFspMemHob = FALSE;
-  TsegSize      = 0;
-  TsegBase      = 0;
-  FoundTsegHob   = FALSE;
-
-  //
-  // Parse the hob list from fsp
-  // Report all the resource hob except the memory between 1M and 4G
-  //
-  Hob.Raw = (UINT8 *)(UINTN)FspHobList;
-  DEBUG((DEBUG_INFO, "FspHobList - 0x%x\n", FspHobList));
-
-  while ((Hob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, Hob.Raw)) != NULL) {
-    DEBUG((DEBUG_INFO, "\nResourceType: 0x%x\n", Hob.ResourceDescriptor->ResourceType));
-    if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) ||
-        (Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED)) {
-      DEBUG((DEBUG_INFO, "ResourceAttribute: 0x%x\n", Hob.ResourceDescriptor->ResourceAttribute));
-      DEBUG((DEBUG_INFO, "PhysicalStart: 0x%x\n", Hob.ResourceDescriptor->PhysicalStart));
-      DEBUG((DEBUG_INFO, "ResourceLength: 0x%x\n", Hob.ResourceDescriptor->ResourceLength));
-      DEBUG((DEBUG_INFO, "Owner: %g\n\n", &Hob.ResourceDescriptor->Owner));
-    }
-
-    if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY)  // Found the low memory length below 4G
-        && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB)
-        && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB)) {
-        LowMemorySize += Hob.ResourceDescriptor->ResourceLength;
-      Hob.Raw = GET_NEXT_HOB (Hob);
-      continue;
-    }
-
-    if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED)  // Found the low memory length below 4G
-        && (Hob.ResourceDescriptor->PhysicalStart >= BASE_1MB)
-        && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= BASE_4GB)
-        && (CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspReservedMemoryResourceHobGuid))) {
-      FoundFspMemHob = TRUE;
-      FspMemoryBase = Hob.ResourceDescriptor->PhysicalStart;
-      FspMemorySize = Hob.ResourceDescriptor->ResourceLength;
-      DEBUG((DEBUG_INFO, "Find fsp mem hob, base 0x%x, len 0x%x\n", FspMemoryBase, FspMemorySize));
-    }
-
-    if ((Hob.ResourceDescriptor->ResourceType == EFI_RESOURCE_MEMORY_RESERVED)  // Found the low memory length below 4G
-      && (Hob.ResourceDescriptor->PhysicalStart >= 0x100000)
-      && (Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength <= 0x100000000)
-      && (CompareGuid (&Hob.ResourceDescriptor->Owner, &gFspReservedMemoryResourceHobTsegGuid))) {
-        FoundTsegHob = TRUE;
-        TsegBase = Hob.ResourceDescriptor->PhysicalStart;
-
-
-        if ((Hob.ResourceDescriptor->ResourceLength == 0  ) || (Hob.ResourceDescriptor->ResourceLength > 0x800000)){
-          Hob.ResourceDescriptor->ResourceLength = 0x800000;
-        }
-
-
-        TsegSize = Hob.ResourceDescriptor->ResourceLength;
-        DEBUG((EFI_D_ERROR, "Find Tseg mem hob, base 0x%lx, len 0x%lx\n", TsegBase, TsegSize));
-      }
-
-    //
-    // Report the resource hob
-    //
-    BuildResourceDescriptorHob (
-      Hob.ResourceDescriptor->ResourceType,
-      Hob.ResourceDescriptor->ResourceAttribute,
-      Hob.ResourceDescriptor->PhysicalStart,
-      Hob.ResourceDescriptor->ResourceLength
-      );
-
-    Hob.Raw = GET_NEXT_HOB (Hob);
-  }
-
-  if (!FoundFspMemHob) {
-    DEBUG((DEBUG_INFO, "Didn't find the fsp used memory information.\n"));
-    //ASSERT(FALSE);
-  }
-
-  DEBUG((DEBUG_INFO, "LowMemorySize: 0x%x.\n", LowMemorySize));
-  DEBUG((DEBUG_INFO, "FspMemoryBase: 0x%x.\n", FspMemoryBase));
-  DEBUG((DEBUG_INFO, "FspMemorySize: 0x%x.\n", FspMemorySize));
-
-  if (BootMode == BOOT_ON_S3_RESUME) {
-    BuildResourceDescriptorHob (
-      EFI_RESOURCE_SYSTEM_MEMORY,
-      (
-         EFI_RESOURCE_ATTRIBUTE_PRESENT |
-         EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
-         // EFI_RESOURCE_ATTRIBUTE_TESTED |
-         EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |
-         EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |
-         EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |
-         EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE
-      ),
-      BASE_1MB,
-      LowMemorySize
-      );
-
-    Status = GetS3MemoryInfo (&S3PeiMemBase, &S3PeiMemSize);
-    ASSERT_EFI_ERROR (Status);
-    DEBUG((DEBUG_INFO, "S3 memory %Xh - %Xh bytes\n", S3PeiMemBase, S3PeiMemSize));
-
-    //
-    // Make sure Stack and PeiMemory are not overlap - JYAO1
-    //
-
-    Status = PeiServicesInstallPeiMemory (
-               S3PeiMemBase,
-               S3PeiMemSize
-               );
-    ASSERT_EFI_ERROR (Status);
-  } else {
-    PeiMemSize = GetPeiMemSize (PeiServices, BootMode);
-    DEBUG((DEBUG_INFO, "PEI memory size = %Xh bytes\n", PeiMemSize));
-
-    //
-    // Capsule mode
-    //
-    Capsule = NULL;
-    CapsuleBuffer = NULL;
-    CapsuleBufferLength = 0;
-    if (BootMode == BOOT_ON_FLASH_UPDATE) {
-      Status = PeiServicesLocatePpi (
-                 &gPeiCapsulePpiGuid,
-                 0,
-                 NULL,
-                 (VOID **) &Capsule
-                 );
-      ASSERT_EFI_ERROR (Status);
-
-      if (Status == EFI_SUCCESS) {
-        //
-        // Make sure Stack and CapsuleBuffer are not overlap - JYAO1
-        //
-        CapsuleBuffer = (VOID *)(UINTN)BASE_1MB;
-        CapsuleBufferLength = (UINTN)(LowMemorySize - PeiMemSize);
-        //
-        // Call the Capsule PPI Coalesce function to coalesce the capsule data.
-        //
-        Status = Capsule->Coalesce (PeiServices, &CapsuleBuffer, &CapsuleBufferLength);
-      }
-    }
-
-    RequiredMemSize = RetrieveRequiredMemorySize (PeiServices);
-    DEBUG((DEBUG_INFO, "Required memory size = %Xh bytes\n", RequiredMemSize));
-
-    //
-    // Report the main memory
-    //
-    BuildResourceDescriptorHob (
-      EFI_RESOURCE_SYSTEM_MEMORY,
-      (
-         EFI_RESOURCE_ATTRIBUTE_PRESENT |
-         EFI_RESOURCE_ATTRIBUTE_INITIALIZED |
-         EFI_RESOURCE_ATTRIBUTE_TESTED |
-         EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |
-         EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |
-         EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |
-         EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE
-      ),
-      BASE_1MB,
-      LowMemorySize
-      );
-
-    //
-    // Make sure Stack and CapsuleBuffer are not overlap - JYAO1
-    //
-
-    //
-    // Install efi memory
-    //
-    PeiMemBase = BASE_1MB + LowMemorySize - PeiMemSize;
-    Status = PeiServicesInstallPeiMemory (
-               PeiMemBase,
-               PeiMemSize - RequiredMemSize
-               );
-    ASSERT_EFI_ERROR (Status);
-
-    if (Capsule != NULL) {
-      Status = Capsule->CreateState (PeiServices, CapsuleBuffer, CapsuleBufferLength);
-    }
-  }
-
-  //
-  // Report GUIDed HOB for reserving SMRAM regions
-  //
-  if (FoundTsegHob) {
-    EFI_SMRAM_HOB_DESCRIPTOR_BLOCK  *SmramHobDescriptorBlock;
-
-    SmramHobDescriptorBlock = BuildGuidHob (
-             &gEfiSmmPeiSmramMemoryReserveGuid,
-             sizeof (EFI_SMRAM_HOB_DESCRIPTOR_BLOCK)
-             );
-    ASSERT (SmramHobDescriptorBlock != NULL);
-
-    SmramHobDescriptorBlock->NumberOfSmmReservedRegions = 1;
-
-    SmramHobDescriptorBlock->Descriptor[0].PhysicalStart = TsegBase;
-    SmramHobDescriptorBlock->Descriptor[0].CpuStart      = TsegBase;
-    SmramHobDescriptorBlock->Descriptor[0].PhysicalSize  = TsegSize;
-    SmramHobDescriptorBlock->Descriptor[0].RegionState   = EFI_SMRAM_CLOSED;
-  }
-  return EFI_SUCCESS;
-}
-
-/**
-  BIOS process FspBobList for other data (not Memory Resource Descriptor).
-
-  @param[in] FspHobList  Pointer to the HOB data structure produced by FSP.
-
-  @return If platform process the FSP hob list successfully.
-**/
-EFI_STATUS
-EFIAPI
-FspHobProcessForOtherData (
-  IN VOID                 *FspHobList
-  )
-{
-  EFI_PEI_SERVICES     **PeiServices;
-
-  PeiServices = (EFI_PEI_SERVICES **)GetPeiServicesTablePointer ();
-
-  //
-  // Other hob for platform
-  //
-  PlatformHobCreateFromFsp ((CONST EFI_PEI_SERVICES **) PeiServices,  FspHobList);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  BIOS process FspBobList.
-
-  @param[in] FspHobList  Pointer to the HOB data structure produced by FSP.
-
-  @return If platform process the FSP hob list successfully.
-**/
-EFI_STATUS
-EFIAPI
-FspHobProcess (
-  IN VOID                 *FspHobList
-  )
-{
-  EFI_STATUS  Status;
-
-  Status = FspHobProcessForMemoryResource (FspHobList);
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-  Status = FspHobProcessForOtherData (FspHobList);
-
-  return Status;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.inf b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.inf
deleted file mode 100644
index b789b27f4c..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/PeiFspHobProcessLibVlv2/FspHobProcessLibVlv2.inf
+++ /dev/null
@@ -1,74 +0,0 @@
-## @file
-#
-#  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-################################################################################
-#
-# Defines Section - statements that will be processed to create a Makefile.
-#
-################################################################################
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = PeiFspHobProcessLibVlv2
-  FILE_GUID                      = C7B7070B-E5A8-4b86-9110-BDCA1095F496
-  MODULE_TYPE                    = SEC
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = FspHobProcessLib
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64
-#
-
-################################################################################
-#
-# Sources Section - list of files that are required for the build to succeed.
-#
-################################################################################
-
-[Sources]
-  FspHobProcessLibVlv2.c
-
-
-################################################################################
-#
-# Package Dependency Section - list of Package files that are required for
-#                              this module.
-#
-################################################################################
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
-  IntelFspPkg/IntelFspPkg.dec
-  IntelFspWrapperPkg/IntelFspWrapperPkg.dec
-  Vlv2TbltDevicePkg/PlatformPkg.dec
-
-[LibraryClasses]
-  BaseLib
-  BaseMemoryLib
-  HobLib
-  DebugLib
-  FspPlatformInfoLib
-  PeiServicesLib
-  PeiServicesTablePointerLib
-  PlatformFspLib
-
-[Pcd]
-  gFspWrapperTokenSpaceGuid.PcdPeiMinMemSize
-  gFspWrapperTokenSpaceGuid.PcdPeiRecoveryMinMemSize
-
-[Guids]
-  gFspReservedMemoryResourceHobGuid
-  gEfiMemoryTypeInformationGuid
-  gEfiSmmPeiSmramMemoryReserveGuid
-
-[Ppis]
-  gPeiCapsulePpiGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.c
deleted file mode 100644
index 2b03cfaec9..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/** @file
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-
-#include <Ppi/SecPlatformInformation.h>
-#include <Ppi/SecPerformance.h>
-#include <Ppi/TemporaryRamSupport.h>
-
-#include <Library/LocalApicLib.h>
-
-/**
-  This interface conveys state information out of the Security (SEC) phase into PEI.
-
-  @param  PeiServices               Pointer to the PEI Services Table.
-  @param  StructureSize             Pointer to the variable describing size of the input buffer.
-  @param  PlatformInformationRecord Pointer to the EFI_SEC_PLATFORM_INFORMATION_RECORD.
-
-  @retval EFI_SUCCESS               The data was successfully returned.
-  @retval EFI_BUFFER_TOO_SMALL      The buffer was too small.
-
-**/
-EFI_STATUS
-EFIAPI
-SecPlatformInformation (
-  IN CONST EFI_PEI_SERVICES                     **PeiServices,
-  IN OUT   UINT64                               *StructureSize,
-     OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord
-  );
-
-/**
-  This interface conveys performance information out of the Security (SEC) phase into PEI.
-
-  This service is published by the SEC phase. The SEC phase handoff has an optional
-  EFI_PEI_PPI_DESCRIPTOR list as its final argument when control is passed from SEC into the
-  PEI Foundation. As such, if the platform supports collecting performance data in SEC,
-  this information is encapsulated into the data structure abstracted by this service.
-  This information is collected for the boot-strap processor (BSP) on IA-32.
-
-  @param[in]  PeiServices  The pointer to the PEI Services Table.
-  @param[in]  This         The pointer to this instance of the PEI_SEC_PERFORMANCE_PPI.
-  @param[out] Performance  The pointer to performance data collected in SEC phase.
-
-  @retval EFI_SUCCESS      The data was successfully returned.
-
-**/
-EFI_STATUS
-EFIAPI
-SecGetPerformance (
-  IN CONST EFI_PEI_SERVICES          **PeiServices,
-  IN       PEI_SEC_PERFORMANCE_PPI   *This,
-  OUT      FIRMWARE_SEC_PERFORMANCE  *Performance
-  );
-
-/**
-  This service of the TEMPORARY_RAM_SUPPORT_PPI that migrates temporary RAM into
-  permanent memory.
-
-  @param PeiServices            Pointer to the PEI Services Table.
-  @param TemporaryMemoryBase    Source Address in temporary memory from which the SEC or PEIM will copy the
-                                Temporary RAM contents.
-  @param PermanentMemoryBase    Destination Address in permanent memory into which the SEC or PEIM will copy the
-                                Temporary RAM contents.
-  @param CopySize               Amount of memory to migrate from temporary to permanent memory.
-
-  @retval EFI_SUCCESS           The data was successfully returned.
-  @retval EFI_INVALID_PARAMETER PermanentMemoryBase + CopySize > TemporaryMemoryBase when
-                                TemporaryMemoryBase > PermanentMemoryBase.
-
-**/
-EFI_STATUS
-EFIAPI
-SecTemporaryRamSupport (
-  IN CONST EFI_PEI_SERVICES   **PeiServices,
-  IN EFI_PHYSICAL_ADDRESS     TemporaryMemoryBase,
-  IN EFI_PHYSICAL_ADDRESS     PermanentMemoryBase,
-  IN UINTN                    CopySize
-  );
-
-EFI_SEC_PLATFORM_INFORMATION_PPI  mSecPlatformInformationPpi = {
-  SecPlatformInformation
-};
-
-PEI_SEC_PERFORMANCE_PPI  mSecPerformancePpi = {
-  SecGetPerformance
-};
-
-EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI gSecTemporaryRamSupportPpi = {
-  SecTemporaryRamSupport
-};
-
-EFI_PEI_PPI_DESCRIPTOR  mPeiSecPlatformPpi[] = {
-  {
-    EFI_PEI_PPI_DESCRIPTOR_PPI,
-    &gEfiSecPlatformInformationPpiGuid,
-    &mSecPlatformInformationPpi
-  },
-  {
-    EFI_PEI_PPI_DESCRIPTOR_PPI,
-    &gPeiSecPerformancePpiGuid,
-    &mSecPerformancePpi
-  },
-  {
-    EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
-    &gEfiTemporaryRamSupportPpiGuid,
-    &gSecTemporaryRamSupportPpi
-  },
-};
-
-/**
-  A developer supplied function to perform platform specific operations.
-
-  It's a developer supplied function to perform any operations appropriate to a
-  given platform. It's invoked just before passing control to PEI core by SEC
-  core. Platform developer may modify the SecCoreData passed to PEI Core.
-  It returns a platform specific PPI list that platform wishes to pass to PEI core.
-  The Generic SEC core module will merge this list to join the final list passed to
-  PEI core.
-
-  @param  SecCoreData           The same parameter as passing to PEI core. It
-                                could be overridden by this function.
-
-  @return The platform specific PPI list to be passed to PEI core or
-          NULL if there is no need of such platform specific PPI list.
-
-**/
-EFI_PEI_PPI_DESCRIPTOR *
-EFIAPI
-SecPlatformMain (
-  IN OUT   EFI_SEC_PEI_HAND_OFF        *SecCoreData
-  )
-{
-  EFI_PEI_PPI_DESCRIPTOR      *PpiList;
-
-  InitializeApicTimer (0, (UINT32) -1, TRUE, 5);
-
-  PpiList = &mPeiSecPlatformPpi[0];
-
-  return PpiList;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.inf b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.inf
deleted file mode 100644
index 578066d98f..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/FspPlatformSecLibVlv2.inf
+++ /dev/null
@@ -1,82 +0,0 @@
-## @file
-#
-#  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-################################################################################
-#
-# Defines Section - statements that will be processed to create a Makefile.
-#
-################################################################################
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = SecPeiFspPlatformSecLibVlv2
-  FILE_GUID                      = 6653876C-F6A1-45BB-A027-20455093BC6D
-  MODULE_TYPE                    = SEC
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = FspPlatformSecLib
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64
-#
-
-################################################################################
-#
-# Sources Section - list of files that are required for the build to succeed.
-#
-################################################################################
-
-[Sources]
-  FspPlatformSecLibVlv2.c
-  SecRamInitData.c
-  SaveSecContext.c
-  SecPlatformInformation.c
-  SecGetPerformance.c
-  SecTempRamSupport.c
-  PlatformInit.c
-  UartInit.c
-
-[Sources.IA32]
-  Ia32/SecEntry.asm
-  Ia32/PeiCoreEntry.asm
-  Ia32/AsmSaveSecContext.asm
-  Ia32/Stack.asm
-
-################################################################################
-#
-# Package Dependency Section - list of Package files that are required for
-#                              this module.
-#
-################################################################################
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  UefiCpuPkg/UefiCpuPkg.dec
-  IntelFspWrapperPkg/IntelFspWrapperPkg.dec
-
-[LibraryClasses]
-  LocalApicLib
-  SerialPortLib
-
-[Ppis]
-  gEfiSecPlatformInformationPpiGuid
-  gPeiSecPerformancePpiGuid
-  gEfiTemporaryRamSupportPpiGuid
-
-[Pcd]
-  gFspWrapperTokenSpaceGuid.PcdPeiTemporaryRamStackSize
-  gFspWrapperTokenSpaceGuid.PcdFlashFvFspBase
-  gFspWrapperTokenSpaceGuid.PcdFlashFvFspSize
-
-[FixedPcd]
-  gFspWrapperTokenSpaceGuid.PcdCpuMicrocodePatchAddress
-  gFspWrapperTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize
-  gFspWrapperTokenSpaceGuid.PcdFlashMicroCodeOffset
-  gFspWrapperTokenSpaceGuid.PcdFlashCodeCacheAddress
-  gFspWrapperTokenSpaceGuid.PcdFlashCodeCacheSize
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/AsmSaveSecContext.asm b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/AsmSaveSecContext.asm
deleted file mode 100644
index 2546a09a1a..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/AsmSaveSecContext.asm
+++ /dev/null
@@ -1,45 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-; SPDX-License-Identifier: BSD-2-Clause-Patent
-;
-; Module Name:
-;
-;  SecEntry.asm
-;
-; Abstract:
-;
-;  This is the code that goes from real-mode to protected mode.
-;  It consumes the reset vector, calls two basic APIs from FSP binary.
-;
-;------------------------------------------------------------------------------
-
-.686p
-.xmm
-.model flat,c
-.code
-
-;----------------------------------------------------------------------------
-;  MMX Usage:
-;              MM0 = BIST State
-;              MM5 = Save time-stamp counter value high32bit
-;              MM6 = Save time-stamp counter value low32bit.
-;
-;  It should be same as SecEntry.asm and PeiCoreEntry.asm.
-;----------------------------------------------------------------------------
-
-AsmSaveBistValue   PROC PUBLIC
-  mov     eax, [esp+4]
-  movd    mm0, eax
-  ret
-AsmSaveBistValue   ENDP
-
-AsmSaveTickerValue   PROC PUBLIC
-  mov     eax, [esp+4]
-  movd    mm6, eax
-  mov     eax, [esp+8]
-  movd    mm5, eax
-  ret
-AsmSaveTickerValue   ENDP
-
-END
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Fsp.inc b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Fsp.inc
deleted file mode 100644
index 23295587b4..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Fsp.inc
+++ /dev/null
@@ -1,45 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-; SPDX-License-Identifier: BSD-2-Clause-Patent
-;
-; Module Name:
-;
-;   Fsp.inc
-;
-; Abstract:
-;
-;   Fsp related definitions
-;
-;------------------------------------------------------------------------------
-
-
-;
-; Fv Header
-;
-FVH_SIGINATURE_OFFSET       EQU  028h
-FVH_SIGINATURE_VALID_VALUE  EQU  04856465Fh    ; valid signature:_FVH
-FVH_HEADER_LENGTH_OFFSET    EQU  030h
-FVH_EXTHEADER_OFFSET_OFFSET EQU  034h
-FVH_EXTHEADER_SIZE_OFFSET   EQU  010h
-
-;
-; Ffs Header
-;
-FSP_HEADER_GUID_DWORD1      EQU  0912740BEh
-FSP_HEADER_GUID_DWORD2      EQU  047342284h
-FSP_HEADER_GUID_DWORD3      EQU  0B08471B9h
-FSP_HEADER_GUID_DWORD4      EQU  00C3F3527h
-FFS_HEADER_SIZE_VALUE       EQU  018h
-
-;
-; Section Header
-;
-SECTION_HEADER_TYPE_OFFSET  EQU  03h
-RAW_SECTION_HEADER_SIZE_VALUE  EQU  04h
-
-;
-; Fsp Header
-;
-FSP_HEADER_IMAGEBASE_OFFSET   EQU  01Ch
-FSP_HEADER_TEMPRAMINIT_OFFSET EQU  030h
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/PeiCoreEntry.asm b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/PeiCoreEntry.asm
deleted file mode 100644
index 3d34c62ea4..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/PeiCoreEntry.asm
+++ /dev/null
@@ -1,135 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-; SPDX-License-Identifier: BSD-2-Clause-Patent
-;
-; Module Name:
-;
-;  SecEntry.asm
-;
-; Abstract:
-;
-;  This is the code that goes from real-mode to protected mode.
-;  It consumes the reset vector, calls two basic APIs from FSP binary.
-;
-;------------------------------------------------------------------------------
-
-.686p
-.xmm
-.model flat, c
-.code
-
-EXTRN   SecStartup:NEAR
-EXTRN   PlatformInit:NEAR
-
-CallPeiCoreEntryPoint   PROC PUBLIC
-  ;
-  ; Obtain the hob list pointer
-  ;
-  mov     eax, [esp+4]
-  ;
-  ; Obtain the stack information
-  ;   ECX: start of range
-  ;   EDX: end of range
-  ;
-  mov     ecx, [esp+8]
-  mov     edx, [esp+0Ch]
-
-  ;
-  ; Platform init
-  ;
-  pushad
-  push edx
-  push ecx
-  push eax
-  call PlatformInit
-  pop  eax
-  pop  eax
-  pop  eax
-  popad
-
-  ;
-  ; Set stack top pointer
-  ;
-  mov     esp, edx
-
-  ;
-  ; Push the hob list pointer
-  ;
-  push    eax
-
-  ;
-  ; Save the value
-  ;   ECX: start of range
-  ;   EDX: end of range
-  ;
-  mov     ebp, esp
-  push    ecx
-  push    edx
-
-  ;
-  ; Push processor count to stack first, then BIST status (AP then BSP)
-  ;
-  mov     eax, 1
-  cpuid
-  shr     ebx, 16
-  and     ebx, 0000000FFh
-  cmp     bl, 1
-  jae     PushProcessorCount
-
-  ;
-  ; Some processors report 0 logical processors.  Effectively 0 = 1.
-  ; So we fix up the processor count
-  ;
-  inc     ebx
-
-PushProcessorCount:
-  push    ebx
-
-  ;
-  ; We need to implement a long-term solution for BIST capture.  For now, we just copy BSP BIST
-  ; for all processor threads
-  ;
-  xor     ecx, ecx
-  mov     cl, bl
-PushBist:
-  movd    eax, mm0
-  push    eax
-  loop    PushBist
-
-  ; Save Time-Stamp Counter
-  movd eax, mm5
-  push eax
-
-  movd eax, mm6
-  push eax
-
-  ;
-  ; Pass entry point of the PEI core
-  ;
-  mov     edi, 0FFFFFFE0h
-  push    DWORD PTR ds:[edi]
-
-  ;
-  ; Pass BFV into the PEI Core
-  ;
-  mov     edi, 0FFFFFFFCh
-  push    DWORD PTR ds:[edi]
-
-  ;
-  ; Pass stack size into the PEI Core
-  ;
-  mov     ecx, [ebp - 4]
-  mov     edx, [ebp - 8]
-  push    ecx       ; RamBase
-
-  sub     edx, ecx
-  push    edx       ; RamSize
-
-  ;
-  ; Pass Control into the PEI Core
-  ;
-  call SecStartup
-CallPeiCoreEntryPoint   ENDP
-
-END
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/SecEntry.asm b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/SecEntry.asm
deleted file mode 100644
index b7026c433f..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/SecEntry.asm
+++ /dev/null
@@ -1,338 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-; SPDX-License-Identifier: BSD-2-Clause-Patent
-;
-; Module Name:
-;
-;  SecEntry.asm
-;
-; Abstract:
-;
-;  This is the code that goes from real-mode to protected mode.
-;  It consumes the reset vector, calls two basic APIs from FSP binary.
-;
-;------------------------------------------------------------------------------
-  INCLUDE Fsp.inc
-
-.686p
-.xmm
-.model small, c
-
-EXTRN   CallPeiCoreEntryPoint:NEAR
-EXTRN   TempRamInitParams:FAR
-
-; Pcds
-EXTRN   PcdGet32 (PcdFlashFvFspBase):DWORD
-EXTRN   PcdGet32 (PcdFlashFvFspSize):DWORD
-
-_TEXT_REALMODE      SEGMENT PARA PUBLIC USE16 'CODE'
-                    ASSUME  CS:_TEXT_REALMODE, DS:_TEXT_REALMODE
-
-;----------------------------------------------------------------------------
-;
-; Procedure:    _ModuleEntryPoint
-;
-; Input:        None
-;
-; Output:       None
-;
-; Destroys:     Assume all registers
-;
-; Description:
-;
-;   Transition to non-paged flat-model protected mode from a
-;   hard-coded GDT that provides exactly two descriptors.
-;   This is a bare bones transition to protected mode only
-;   used for a while in PEI and possibly DXE.
-;
-;   After enabling protected mode, a far jump is executed to
-;   transfer to PEI using the newly loaded GDT.
-;
-; Return:       None
-;
-;  MMX Usage:
-;              MM0 = BIST State
-;              MM5 = Save time-stamp counter value high32bit
-;              MM6 = Save time-stamp counter value low32bit.
-;
-;----------------------------------------------------------------------------
-
-align 4
-_ModuleEntryPoint PROC NEAR C PUBLIC
-  fninit                                ; clear any pending Floating point exceptions
-  ;
-  ; Store the BIST value in mm0
-  ;
-  movd    mm0, eax
-
-  ;
-  ; Save time-stamp counter value
-  ; rdtsc load 64bit time-stamp counter to EDX:EAX
-  ;
-  rdtsc
-  movd    mm5, edx
-  movd    mm6, eax
-
-  ;
-  ; Load the GDT table in GdtDesc
-  ;
-  mov     esi,  OFFSET GdtDesc
-  DB      66h
-  lgdt    fword ptr cs:[si]
-
-  ;
-  ; Transition to 16 bit protected mode
-  ;
-  mov     eax, cr0                   ; Get control register 0
-  or      eax, 00000003h             ; Set PE bit (bit #0) & MP bit (bit #1)
-  mov     cr0, eax                   ; Activate protected mode
-
-  mov     eax, cr4                   ; Get control register 4
-  or      eax, 00000600h             ; Set OSFXSR bit (bit #9) & OSXMMEXCPT bit (bit #10)
-  mov     cr4, eax
-
-  ;
-  ; Now we're in 16 bit protected mode
-  ; Set up the selectors for 32 bit protected mode entry
-  ;
-  mov     ax, SYS_DATA_SEL
-  mov     ds, ax
-  mov     es, ax
-  mov     fs, ax
-  mov     gs, ax
-  mov     ss, ax
-
-  ;
-  ; Transition to Flat 32 bit protected mode
-  ; The jump to a far pointer causes the transition to 32 bit mode
-  ;
-  mov esi, offset ProtectedModeEntryLinearAddress
-  jmp     fword ptr cs:[si]
-
-_ModuleEntryPoint   ENDP
-_TEXT_REALMODE      ENDS
-
-_TEXT_PROTECTED_MODE      SEGMENT PARA PUBLIC USE32 'CODE'
-                          ASSUME  CS:_TEXT_PROTECTED_MODE, DS:_TEXT_PROTECTED_MODE
-
-;----------------------------------------------------------------------------
-;
-; Procedure:    ProtectedModeEntryPoint
-;
-; Input:        None
-;
-; Output:       None
-;
-; Destroys:     Assume all registers
-;
-; Description:
-;
-; This function handles:
-;   Call two basic APIs from FSP binary
-;   Initializes stack with some early data (BIST, PEI entry, etc)
-;
-; Return:       None
-;
-;----------------------------------------------------------------------------
-
-align 4
-ProtectedModeEntryPoint PROC NEAR PUBLIC
-
-  ; Find the fsp info header
-  mov  edi, PcdGet32 (PcdFlashFvFspBase)
-  mov  ecx, PcdGet32 (PcdFlashFvFspSize)
-
-  mov  eax, dword ptr [edi + FVH_SIGINATURE_OFFSET]
-  cmp  eax, FVH_SIGINATURE_VALID_VALUE
-  jnz  FspHeaderNotFound
-
-  xor  eax, eax
-  mov  ax, word ptr [edi + FVH_EXTHEADER_OFFSET_OFFSET]
-  cmp  ax, 0
-  jnz  FspFvExtHeaderExist
-
-  xor  eax, eax
-  mov  ax, word ptr [edi + FVH_HEADER_LENGTH_OFFSET]   ; Bypass Fv Header
-  add  edi, eax
-  jmp  FspCheckFfsHeader
-
-FspFvExtHeaderExist:
-  add  edi, eax
-  mov  eax, dword ptr [edi + FVH_EXTHEADER_SIZE_OFFSET]  ; Bypass Ext Fv Header
-  add  edi, eax
-
-  ; Round up to 8 byte alignment
-  mov  eax, edi
-  and  al,  07h
-  jz FspCheckFfsHeader
-
-  and  edi, 0FFFFFFF8h
-  add  edi, 08h
-
-FspCheckFfsHeader:
-  ; Check the ffs guid
-  mov  eax, dword ptr [edi]
-  cmp  eax, FSP_HEADER_GUID_DWORD1
-  jnz FspHeaderNotFound
-
-  mov  eax, dword ptr [edi + 4]
-  cmp  eax, FSP_HEADER_GUID_DWORD2
-  jnz FspHeaderNotFound
-
-  mov  eax, dword ptr [edi + 8]
-  cmp  eax, FSP_HEADER_GUID_DWORD3
-  jnz FspHeaderNotFound
-
-  mov  eax, dword ptr [edi + 0Ch]
-  cmp  eax, FSP_HEADER_GUID_DWORD4
-  jnz FspHeaderNotFound
-
-  add  edi, FFS_HEADER_SIZE_VALUE       ; Bypass the ffs header
-
-  ; Check the section type as raw section
-  mov  al, byte ptr [edi + SECTION_HEADER_TYPE_OFFSET]
-  cmp  al, 019h
-  jnz FspHeaderNotFound
-
-  add  edi, RAW_SECTION_HEADER_SIZE_VALUE ; Bypass the section header
-  jmp FspHeaderFound
-
-FspHeaderNotFound:
-  jmp  $
-
-FspHeaderFound:
-  ; Get the fsp TempRamInit Api address
-  mov eax, dword ptr [edi + FSP_HEADER_IMAGEBASE_OFFSET]
-  add eax, dword ptr [edi + FSP_HEADER_TEMPRAMINIT_OFFSET]
-
-  ; Setup the hardcode stack
-  mov esp, OFFSET TempRamInitStack
-
-  ; Call the fsp TempRamInit Api
-  jmp eax
-
-TempRamInitDone:
-  cmp eax, 0
-  jnz FspApiFailed
-
-  ;   ECX: start of range
-  ;   EDX: end of range
-  mov     esp, edx
-  push    edx
-  push    ecx
-  push    eax ; zero - no hob list yet
-  call CallPeiCoreEntryPoint
-
-FspApiFailed:
-  jmp $
-
-align 10h
-TempRamInitStack:
-    DD  OFFSET TempRamInitDone
-    DD  OFFSET TempRamInitParams
-
-ProtectedModeEntryPoint ENDP
-
-;
-; ROM-based Global-Descriptor Table for the Tiano PEI Phase
-;
-align 16
-PUBLIC  BootGdtTable
-
-;
-; GDT[0]: 0x00: Null entry, never used.
-;
-NULL_SEL            EQU $ - GDT_BASE    ; Selector [0]
-GDT_BASE:
-BootGdtTable        DD  0
-                    DD  0
-;
-; Linear data segment descriptor
-;
-LINEAR_SEL          EQU $ - GDT_BASE    ; Selector [0x8]
-    DW  0FFFFh                          ; limit 0xFFFFF
-    DW  0                               ; base 0
-    DB  0
-    DB  092h                            ; present, ring 0, data, expand-up, writable
-    DB  0CFh                            ; page-granular, 32-bit
-    DB  0
-;
-; Linear code segment descriptor
-;
-LINEAR_CODE_SEL     EQU $ - GDT_BASE    ; Selector [0x10]
-    DW  0FFFFh                          ; limit 0xFFFFF
-    DW  0                               ; base 0
-    DB  0
-    DB  09Bh                            ; present, ring 0, data, expand-up, not-writable
-    DB  0CFh                            ; page-granular, 32-bit
-    DB  0
-;
-; System data segment descriptor
-;
-SYS_DATA_SEL        EQU $ - GDT_BASE    ; Selector [0x18]
-    DW  0FFFFh                          ; limit 0xFFFFF
-    DW  0                               ; base 0
-    DB  0
-    DB  093h                            ; present, ring 0, data, expand-up, not-writable
-    DB  0CFh                            ; page-granular, 32-bit
-    DB  0
-
-;
-; System code segment descriptor
-;
-SYS_CODE_SEL        EQU $ - GDT_BASE    ; Selector [0x20]
-    DW  0FFFFh                          ; limit 0xFFFFF
-    DW  0                               ; base 0
-    DB  0
-    DB  09Ah                            ; present, ring 0, data, expand-up, writable
-    DB  0CFh                            ; page-granular, 32-bit
-    DB  0
-;
-; Spare segment descriptor
-;
-SYS16_CODE_SEL      EQU $ - GDT_BASE    ; Selector [0x28]
-    DW  0FFFFh                          ; limit 0xFFFFF
-    DW  0                               ; base 0
-    DB  0Eh                             ; Changed from F000 to E000.
-    DB  09Bh                            ; present, ring 0, code, expand-up, writable
-    DB  00h                             ; byte-granular, 16-bit
-    DB  0
-;
-; Spare segment descriptor
-;
-SYS16_DATA_SEL      EQU $ - GDT_BASE    ; Selector [0x30]
-    DW  0FFFFh                          ; limit 0xFFFF
-    DW  0                               ; base 0
-    DB  0
-    DB  093h                            ; present, ring 0, data, expand-up, not-writable
-    DB  00h                             ; byte-granular, 16-bit
-    DB  0
-
-;
-; Spare segment descriptor
-;
-SPARE5_SEL          EQU $ - GDT_BASE    ; Selector [0x38]
-    DW  0                               ; limit 0
-    DW  0                               ; base 0
-    DB  0
-    DB  0                               ; present, ring 0, data, expand-up, writable
-    DB  0                               ; page-granular, 32-bit
-    DB  0
-GDT_SIZE            EQU $ - BootGdtTable    ; Size, in bytes
-
-;
-; GDT Descriptor
-;
-GdtDesc:                                ; GDT descriptor
-    DW  GDT_SIZE - 1                    ; GDT limit
-    DD  OFFSET BootGdtTable             ; GDT base address
-
-
-ProtectedModeEntryLinearAddress   LABEL   FWORD
-ProtectedModeEntryLinearOffset    LABEL   DWORD
-  DD      OFFSET ProtectedModeEntryPoint  ; Offset of our 32 bit code
-  DW      LINEAR_CODE_SEL
-
-_TEXT_PROTECTED_MODE    ENDS
-END
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.S b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.S
deleted file mode 100644
index 9bd29ce0f4..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.S
+++ /dev/null
@@ -1,71 +0,0 @@
-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-# Abstract:
-#
-#   Switch the stack from temporary memory to permenent memory.
-#
-#------------------------------------------------------------------------------
-
-
-#------------------------------------------------------------------------------
-# VOID
-# EFIAPI
-# SecSwitchStack (
-#   UINT32   TemporaryMemoryBase,
-#   UINT32   PermenentMemoryBase
-#   )#
-#------------------------------------------------------------------------------
-ASM_GLOBAL ASM_PFX (SecSwitchStack)
-ASM_PFX(SecSwitchStack):
-    #
-    # Save standard registers so they can be used to change stack
-    #
-    pushl %eax
-    pushl %ebx
-    pushl %ecx
-    pushl %edx
-
-    #
-    # !!CAUTION!! this function address's is pushed into stack after
-    # migration of whole temporary memory, so need save it to permenent
-    # memory at first!
-    #
-    movl  20(%esp), %ebx         # Save the first parameter
-    movl  24(%esp), %ecx         # Save the second parameter
-
-    #
-    # Save this function's return address into permenent memory at first.
-    # Then, Fixup the esp point to permenent memory
-    #
-    movl  %esp, %eax
-    subl  %ebx, %eax
-    addl  %ecx, %eax
-    movl  0(%esp), %edx          # copy pushed register's value to permenent memory
-    movl  %edx, 0(%eax)
-    movl  4(%esp), %edx
-    movl  %edx, 4(%eax)
-    movl  8(%esp), %edx
-    movl  %edx, 8(%eax)
-    movl  12(%esp), %edx
-    movl  %edx, 12(%eax)
-    movl  16(%esp), %edx        # Update this function's return address into permenent memory
-    movl  %edx, 16(%eax)
-    movl  %eax, %esp            # From now, esp is pointed to permenent memory
-
-    #
-    # Fixup the ebp point to permenent memory
-    #
-    movl  %ebp, %eax
-    subl  %ebx, %eax
-    addl  %ecx, %eax
-    movl  %eax, %ebp            # From now, ebp is pointed to permenent memory
-
-    popl  %edx
-    popl  %ecx
-    popl  %ebx
-    popl  %eax
-    ret
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.asm b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.asm
deleted file mode 100644
index 95e56cec9b..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/Ia32/Stack.asm
+++ /dev/null
@@ -1,76 +0,0 @@
-;------------------------------------------------------------------------------
-;
-; Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-; SPDX-License-Identifier: BSD-2-Clause-Patent
-;
-; Abstract:
-;
-;   Switch the stack from temporary memory to permenent memory.
-;
-;------------------------------------------------------------------------------
-
-    .586p
-    .model  flat,C
-    .code
-
-;------------------------------------------------------------------------------
-; VOID
-; EFIAPI
-; SecSwitchStack (
-;   UINT32   TemporaryMemoryBase,
-;   UINT32   PermenentMemoryBase
-;   );
-;------------------------------------------------------------------------------
-SecSwitchStack   PROC
-    ;
-    ; Save three register: eax, ebx, ecx
-    ;
-    push  eax
-    push  ebx
-    push  ecx
-    push  edx
-
-    ;
-    ; !!CAUTION!! this function address's is pushed into stack after
-    ; migration of whole temporary memory, so need save it to permenent
-    ; memory at first!
-    ;
-
-    mov   ebx, [esp + 20]          ; Save the first parameter
-    mov   ecx, [esp + 24]          ; Save the second parameter
-
-    ;
-    ; Save this function's return address into permenent memory at first.
-    ; Then, Fixup the esp point to permenent memory
-    ;
-    mov   eax, esp
-    sub   eax, ebx
-    add   eax, ecx
-    mov   edx, dword ptr [esp]         ; copy pushed register's value to permenent memory
-    mov   dword ptr [eax], edx
-    mov   edx, dword ptr [esp + 4]
-    mov   dword ptr [eax + 4], edx
-    mov   edx, dword ptr [esp + 8]
-    mov   dword ptr [eax + 8], edx
-    mov   edx, dword ptr [esp + 12]
-    mov   dword ptr [eax + 12], edx
-    mov   edx, dword ptr [esp + 16]    ; Update this function's return address into permenent memory
-    mov   dword ptr [eax + 16], edx
-    mov   esp, eax                     ; From now, esp is pointed to permenent memory
-
-    ;
-    ; Fixup the ebp point to permenent memory
-    ;
-    mov   eax, ebp
-    sub   eax, ebx
-    add   eax, ecx
-    mov   ebp, eax                ; From now, ebp is pointed to permenent memory
-
-    pop   edx
-    pop   ecx
-    pop   ebx
-    pop   eax
-    ret
-SecSwitchStack   ENDP
-
-    END
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/PlatformInit.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/PlatformInit.c
deleted file mode 100644
index d4e1c2a425..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/PlatformInit.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/** @file
-  This PEIM will parse the hoblist from fsp and report them into pei core.
-  This file contains the main entrypoint of the PEIM.
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-
-#include <PiPei.h>
-#include <Library/DebugLib.h>
-#include <Library/SerialPortLib.h>
-
-VOID EnableInternalUart ();
-
-VOID
-EFIAPI
-PlatformInit (
-  IN VOID                 *FspHobList,
-  IN VOID                 *StartOfRange,
-  IN VOID                 *EndOfRange
-  )
-{
-  //
-  // Platform initialization
-  // Enable Serial port here
-  //
-  EnableInternalUart ();
-  SerialPortInitialize ();
-
-  DEBUG ((DEBUG_INFO, "PlatformInit\n"));
-  DEBUG ((DEBUG_INFO, "FspHobList - 0x%x\n", FspHobList));
-  DEBUG ((DEBUG_INFO, "StartOfRange - 0x%x\n", StartOfRange));
-  DEBUG ((DEBUG_INFO, "EndOfRange - 0x%x\n", EndOfRange));
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SaveSecContext.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SaveSecContext.c
deleted file mode 100644
index 382e617b27..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SaveSecContext.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/** @file
-  This PEIM will parse the hoblist from fsp and report them into pei core.
-  This file contains the main entrypoint of the PEIM.
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-
-#include <PiPei.h>
-#include <Library/DebugLib.h>
-
-#include <Ppi/TopOfTemporaryRam.h>
-#include <Ppi/SecPlatformInformation.h>
-
-/**
-  Save BIST value before call FspInit.
-
-  @param Bist   BIST value.
-**/
-VOID
-AsmSaveBistValue (
-  IN UINT32  Bist
-  );
-
-/**
-  Save Ticker value before call FspInit.
-
-  @param Ticker   Ticker value.
-**/
-VOID
-AsmSaveTickerValue (
-  IN UINT64  Ticker
-  );
-
-/**
-  Save SEC context before call FspInit.
-
-  @param PeiServices  Pointer to PEI Services Table.
-**/
-VOID
-EFIAPI
-SaveSecContext (
-  IN CONST EFI_PEI_SERVICES                     **PeiServices
-  )
-{
-  UINT32      *Bist;
-  UINT64      *Ticker;
-  UINT32      Size;
-  UINT32      Count;
-  UINT32      TopOfTemporaryRam;
-  VOID        *TopOfTemporaryRamPpi;
-  EFI_STATUS  Status;
-
-  DEBUG ((DEBUG_INFO, "SaveSecContext - 0x%x\n", PeiServices));
-
-  Status = (*PeiServices)->LocatePpi (
-                             PeiServices,
-                             &gTopOfTemporaryRamPpiGuid,
-                             0,
-                             NULL,
-                             (VOID **) &TopOfTemporaryRamPpi
-                             );
-  if (EFI_ERROR (Status)) {
-    return ;
-  }
-
-  DEBUG ((DEBUG_INFO, "TopOfTemporaryRamPpi - 0x%x\n", TopOfTemporaryRamPpi));
-
-  //
-  // The entries of BIST information, together with the number of them,
-  // reside in the bottom of stack, left untouched by normal stack operation.
-  // This routine copies the BIST information to the buffer pointed by
-  // PlatformInformationRecord for output.
-  //
-  // |--------------| <- TopOfTemporaryRam
-  // |Number of BSPs|
-  // |--------------|
-  // |     BIST     |
-  // |--------------|
-  // |     ....     |
-  // |--------------|
-  // |  TSC[63:32]  |
-  // |--------------|
-  // |  TSC[31:00]  |
-  // |--------------|
-  //
-
-  TopOfTemporaryRam = (UINT32)(UINTN)TopOfTemporaryRamPpi - sizeof(UINT32);
-  TopOfTemporaryRam -= sizeof(UINT32) * 2;
-  DEBUG ((DEBUG_INFO, "TopOfTemporaryRam - 0x%x\n", TopOfTemporaryRam));
-  Count             = *(UINT32 *)(UINTN)(TopOfTemporaryRam - sizeof(UINT32));
-  DEBUG ((DEBUG_INFO, "Count - 0x%x\n", Count));
-  Size              = Count * sizeof (IA32_HANDOFF_STATUS);
-  DEBUG ((DEBUG_INFO, "Size - 0x%x\n", Size));
-
-  Bist   = (UINT32 *)(UINTN)(TopOfTemporaryRam - sizeof(UINT32) - Size);
-  DEBUG ((DEBUG_INFO, "Bist - 0x%x\n", *Bist));
-  Ticker = (UINT64 *)(UINTN)(TopOfTemporaryRam - sizeof(UINT32) - Size - sizeof(UINT64));
-  DEBUG ((DEBUG_INFO, "Ticker - 0x%lx\n", *Ticker));
-
-  //
-  // Just need record BSP
-  //
-  AsmSaveBistValue (*Bist);
-  AsmSaveTickerValue (*Ticker);
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecGetPerformance.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecGetPerformance.c
deleted file mode 100644
index c5c22a29c2..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecGetPerformance.c
+++ /dev/null
@@ -1,83 +0,0 @@
-/** @file
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-
-#include <Ppi/SecPerformance.h>
-#include <Ppi/TopOfTemporaryRam.h>
-
-#include <Library/BaseMemoryLib.h>
-#include <Library/TimerLib.h>
-#include <Library/DebugLib.h>
-
-/**
-  This interface conveys performance information out of the Security (SEC) phase into PEI.
-
-  This service is published by the SEC phase. The SEC phase handoff has an optional
-  EFI_PEI_PPI_DESCRIPTOR list as its final argument when control is passed from SEC into the
-  PEI Foundation. As such, if the platform supports collecting performance data in SEC,
-  this information is encapsulated into the data structure abstracted by this service.
-  This information is collected for the boot-strap processor (BSP) on IA-32.
-
-  @param[in]  PeiServices  The pointer to the PEI Services Table.
-  @param[in]  This         The pointer to this instance of the PEI_SEC_PERFORMANCE_PPI.
-  @param[out] Performance  The pointer to performance data collected in SEC phase.
-
-  @retval EFI_SUCCESS  The data was successfully returned.
-
-**/
-EFI_STATUS
-EFIAPI
-SecGetPerformance (
-  IN CONST EFI_PEI_SERVICES          **PeiServices,
-  IN       PEI_SEC_PERFORMANCE_PPI   *This,
-  OUT      FIRMWARE_SEC_PERFORMANCE  *Performance
-  )
-{
-  UINT32      Size;
-  UINT32      Count;
-  UINT32      TopOfTemporaryRam;
-  UINT64      Ticker;
-  VOID        *TopOfTemporaryRamPpi;
-  EFI_STATUS  Status;
-
-  DEBUG ((DEBUG_INFO, "SecGetPerformance\n"));
-
-  Status = (*PeiServices)->LocatePpi (
-                             PeiServices,
-                             &gTopOfTemporaryRamPpiGuid,
-                             0,
-                             NULL,
-                             (VOID **) &TopOfTemporaryRamPpi
-                             );
-  if (EFI_ERROR (Status)) {
-    return EFI_NOT_FOUND;
-  }
-
-  //
-  // |--------------| <- TopOfTemporaryRam
-  // |Number of BSPs|
-  // |--------------|
-  // |     BIST     |
-  // |--------------|
-  // |     ....     |
-  // |--------------|
-  // |  TSC[63:32]  |
-  // |--------------|
-  // |  TSC[31:00]  |
-  // |--------------|
-  //
-  TopOfTemporaryRam = (UINT32)(UINTN)TopOfTemporaryRamPpi - sizeof(UINT32);
-  TopOfTemporaryRam -= sizeof(UINT32) * 2;
-  Count             = *(UINT32 *) (UINTN) (TopOfTemporaryRam - sizeof (UINT32));
-  Size              = Count * sizeof (UINT64);
-
-  Ticker = *(UINT64 *) (UINTN) (TopOfTemporaryRam - sizeof (UINT32) - Size - sizeof (UINT32) * 2);
-  Performance->ResetEnd = GetTimeInNanoSecond (Ticker);
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecPlatformInformation.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecPlatformInformation.c
deleted file mode 100644
index a1ba35d47d..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecPlatformInformation.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/** @file
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-
-#include <Ppi/SecPlatformInformation.h>
-#include <Ppi/TopOfTemporaryRam.h>
-
-#include <Library/BaseMemoryLib.h>
-#include <Library/DebugLib.h>
-
-/**
-  This interface conveys state information out of the Security (SEC) phase into PEI.
-
-  @param  PeiServices               Pointer to the PEI Services Table.
-  @param  StructureSize             Pointer to the variable describing size of the input buffer.
-  @param  PlatformInformationRecord Pointer to the EFI_SEC_PLATFORM_INFORMATION_RECORD.
-
-  @retval EFI_SUCCESS           The data was successfully returned.
-  @retval EFI_BUFFER_TOO_SMALL  The buffer was too small.
-
-**/
-EFI_STATUS
-EFIAPI
-SecPlatformInformation (
-  IN CONST EFI_PEI_SERVICES                     **PeiServices,
-  IN OUT   UINT64                               *StructureSize,
-     OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord
-  )
-{
-  UINT32      *Bist;
-  UINT32      Size;
-  UINT32      Count;
-  UINT32      TopOfTemporaryRam;
-  VOID        *TopOfTemporaryRamPpi;
-  EFI_STATUS  Status;
-
-  DEBUG ((DEBUG_INFO, "SecPlatformInformation\n"));
-
-  Status = (*PeiServices)->LocatePpi (
-                             PeiServices,
-                             &gTopOfTemporaryRamPpiGuid,
-                             0,
-                             NULL,
-                             (VOID **) &TopOfTemporaryRamPpi
-                             );
-  if (EFI_ERROR (Status)) {
-    return EFI_NOT_FOUND;
-  }
-
-  //
-  // The entries of BIST information, together with the number of them,
-  // reside in the bottom of stack, left untouched by normal stack operation.
-  // This routine copies the BIST information to the buffer pointed by
-  // PlatformInformationRecord for output.
-  //
-  TopOfTemporaryRam = (UINT32)(UINTN)TopOfTemporaryRamPpi - sizeof (UINT32);
-  TopOfTemporaryRam -= sizeof(UINT32) * 2;
-  Count             = *((UINT32 *)(UINTN) (TopOfTemporaryRam - sizeof (UINT32)));
-  Size              = Count * sizeof (IA32_HANDOFF_STATUS);
-
-  if ((*StructureSize) < (UINT64) Size) {
-    *StructureSize = Size;
-    return EFI_BUFFER_TOO_SMALL;
-  }
-
-  *StructureSize  = Size;
-  Bist            = (UINT32 *) (TopOfTemporaryRam - sizeof (UINT32) - Size);
-
-  CopyMem (PlatformInformationRecord, Bist, Size);
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecRamInitData.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecRamInitData.c
deleted file mode 100644
index 33734e3111..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecRamInitData.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/** @file
-  Calling Fsp Apis in SEC
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <Library/PcdLib.h>
-
-GLOBAL_REMOVE_IF_UNREFERENCED CONST UINT32 TempRamInitParams[4] = {
-  ((UINT32)FixedPcdGet64 (PcdCpuMicrocodePatchAddress) + FixedPcdGet32 (PcdFlashMicroCodeOffset)),
-  ((UINT32)FixedPcdGet64 (PcdCpuMicrocodePatchRegionSize) - FixedPcdGet32 (PcdFlashMicroCodeOffset)),
-  FixedPcdGet32 (PcdFlashCodeCacheAddress),
-  FixedPcdGet32 (PcdFlashCodeCacheSize)
-};
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecTempRamSupport.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecTempRamSupport.c
deleted file mode 100644
index 8dd1367980..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/SecTempRamSupport.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/** @file
-  C functions in SEC
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-
-#include <Ppi/TemporaryRamSupport.h>
-
-#include <Library/BaseMemoryLib.h>
-#include <Library/DebugLib.h>
-#include <Library/PcdLib.h>
-#include <Library/DebugAgentLib.h>
-
-/**
-  Switch the stack in the temporary memory to the one in the permanent memory.
-
-  This function must be invoked after the memory migration immediately. The relative
-  position of the stack in the temporary and permanent memory is same.
-
-  @param TemporaryMemoryBase  Base address of the temporary memory.
-  @param PermenentMemoryBase  Base address of the permanent memory.
-**/
-VOID
-EFIAPI
-SecSwitchStack (
-  UINT32   TemporaryMemoryBase,
-  UINT32   PermenentMemoryBase
-  );
-
-/**
-  This service of the TEMPORARY_RAM_SUPPORT_PPI that migrates temporary RAM into
-  permanent memory.
-
-  @param PeiServices            Pointer to the PEI Services Table.
-  @param TemporaryMemoryBase    Source Address in temporary memory from which the SEC or PEIM will copy the
-                                Temporary RAM contents.
-  @param PermanentMemoryBase    Destination Address in permanent memory into which the SEC or PEIM will copy the
-                                Temporary RAM contents.
-  @param CopySize               Amount of memory to migrate from temporary to permanent memory.
-
-  @retval EFI_SUCCESS           The data was successfully returned.
-  @retval EFI_INVALID_PARAMETER PermanentMemoryBase + CopySize > TemporaryMemoryBase when
-                                TemporaryMemoryBase > PermanentMemoryBase.
-
-**/
-EFI_STATUS
-EFIAPI
-SecTemporaryRamSupport (
-  IN CONST EFI_PEI_SERVICES   **PeiServices,
-  IN EFI_PHYSICAL_ADDRESS     TemporaryMemoryBase,
-  IN EFI_PHYSICAL_ADDRESS     PermanentMemoryBase,
-  IN UINTN                    CopySize
-  )
-{
-  IA32_DESCRIPTOR   IdtDescriptor;
-  VOID*             OldHeap;
-  VOID*             NewHeap;
-  VOID*             OldStack;
-  VOID*             NewStack;
-  DEBUG_AGENT_CONTEXT_POSTMEM_SEC  DebugAgentContext;
-  BOOLEAN           OldStatus;
-  UINTN             PeiStackSize;
-
-  PeiStackSize = (UINTN)PcdGet32 (PcdPeiTemporaryRamStackSize);
-  if (PeiStackSize == 0) {
-    PeiStackSize = (CopySize >> 1);
-  }
-
-  ASSERT (PeiStackSize < CopySize);
-
-  //
-  // |-------------------|---->
-  // |      Stack        |    PeiStackSize
-  // |-------------------|---->
-  // |      Heap         |    PeiTemporayRamSize
-  // |-------------------|---->  TempRamBase
-  //
-  // |-------------------|---->
-  // |      Heap         |    PeiTemporayRamSize
-  // |-------------------|---->
-  // |      Stack        |    PeiStackSize
-  // |-------------------|---->  PermanentMemoryBase
-  //
-
-  OldHeap = (VOID*)(UINTN)TemporaryMemoryBase;
-  NewHeap = (VOID*)((UINTN)PermanentMemoryBase + PeiStackSize);
-
-  OldStack = (VOID*)((UINTN)TemporaryMemoryBase + CopySize - PeiStackSize);
-  NewStack = (VOID*)(UINTN)PermanentMemoryBase;
-
-  DebugAgentContext.HeapMigrateOffset = (UINTN)NewHeap - (UINTN)OldHeap;
-  DebugAgentContext.StackMigrateOffset = (UINTN)NewStack - (UINTN)OldStack;
-
-  OldStatus = SaveAndSetDebugTimerInterrupt (FALSE);
-
-  //
-  // Initialize Debug Agent to support source level debug in PEI phase after memory ready.
-  // It will build HOB and fix up the pointer in IDT table.
-  //
-  InitializeDebugAgent (DEBUG_AGENT_INIT_POSTMEM_SEC, (VOID *) &DebugAgentContext, NULL);
-
-  //
-  // Migrate Heap
-  //
-  CopyMem (NewHeap, OldHeap, CopySize - PeiStackSize);
-
-  //
-  // Migrate Stack
-  //
-  CopyMem (NewStack, OldStack, PeiStackSize);
-
-
-  //
-  // We need *not* fix the return address because currently,
-  // The PeiCore is executed in flash.
-  //
-
-  //
-  // Rebase IDT table in permanent memory
-  //
-  AsmReadIdtr (&IdtDescriptor);
-  IdtDescriptor.Base = IdtDescriptor.Base - (UINTN)OldStack + (UINTN)NewStack;
-
-  AsmWriteIdtr (&IdtDescriptor);
-
-
-  //
-  // Program MTRR
-  //
-
-  //
-  // SecSwitchStack function must be invoked after the memory migration
-  // immediately, also we need fixup the stack change caused by new call into
-  // permanent memory.
-  //
-  SecSwitchStack (
-    (UINT32) (UINTN) OldStack,
-    (UINT32) (UINTN) NewStack
-    );
-
-  SaveAndSetDebugTimerInterrupt (OldStatus);
-
-  return EFI_SUCCESS;
-}
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/UartInit.c b/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/UartInit.c
deleted file mode 100644
index 2a9ab17120..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/FspSupport/Library/SecFspPlatformSecLibVlv2/UartInit.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/** @file
-  This PEIM will parse the hoblist from fsp and report them into pei core.
-  This file contains the main entrypoint of the PEIM.
-
-  Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-
-#include <PiPei.h>
-#include <Library/IoLib.h>
-#include <Library/SerialPortLib.h>
-
-#define PCI_IDX        0xCF8
-#define PCI_DAT        0xCFC
-
-#define PCI_LPC_BASE    (0x8000F800)
-#define PCI_LPC_REG(x)  (PCI_LPC_BASE + (x))
-
-#define PMC_BASE_ADDRESS                  0xFED03000    // PMC Memory Base Address
-#define R_PCH_LPC_PMC_BASE                        0x44  // PBASE, 32bit, 512 Bytes
-#define B_PCH_LPC_PMC_BASE_EN                     BIT1  // Enable Bit
-#define R_PCH_PMC_GEN_PMCON_1                     0x20  // General PM Configuration 1
-#define B_PCH_PMC_GEN_PMCON_SUS_PWR_FLR           BIT14 // SUS Well Power Failure
-#define B_PCH_PMC_GEN_PMCON_PWROK_FLR             BIT16 // PWROK Failure
-
-#define R_PCH_LPC_UART_CTRL                       0x80  // UART Control
-#define B_PCH_LPC_UART_CTRL_COM1_EN               BIT0  // COM1 Enable
-
-#define ILB_BASE_ADDRESS                  0xFED08000    // ILB Memory Base Address
-#define R_PCH_ILB_IRQE                            0x88  // IRQ Enable Control
-
-#define IO_BASE_ADDRESS                   0xFED0C000    // IO Memory Base Address
-
-#define V_PCH_ILB_IRQE_UARTIRQEN_IRQ3             BIT3  // UART IRQ3 Enable
-#define V_PCH_ILB_IRQE_UARTIRQEN_IRQ4             BIT4  // UART IRQ4 Enable
-#define PCIEX_BASE_ADDRESS                        0xE0000000
-#define PCI_EXPRESS_BASE_ADDRESS                  PCIEX_BASE_ADDRESS
-#define PciD31F0RegBase                           PCIEX_BASE_ADDRESS + (UINT32) (31 << 15)
-#define SB_RCBA                                   0xfed1c000
-
-typedef enum {
-  PchA0         = 0,
-  PchA1         = 1,
-  PchB0         = 2,
-  PchB1         = 3,
-  PchB2         = 4,
-  PchB3         = 5,
-  PchC0         = 6,
-  PchSteppingMax
-} PCH_STEPPING;
-
-#define MmPciAddress( Segment, Bus, Device, Function, Register ) \
-  ( (UINTN)PCI_EXPRESS_BASE_ADDRESS + \
-    (UINTN)(Bus << 20) + \
-    (UINTN)(Device << 15) + \
-    (UINTN)(Function << 12) + \
-    (UINTN)(Register) \
-  )
-
-#define DEFAULT_PCI_BUS_NUMBER_PCH  0
-#define PCI_DEVICE_NUMBER_PCH_LPC                 31
-#define PCI_FUNCTION_NUMBER_PCH_LPC               0
-
-#define R_PCH_LPC_RID_CC                          0x08  // Revision ID & Class Code
-
-#define V_PCH_LPC_RID_0                           0x01  // A0 Stepping (17 x 17)
-#define V_PCH_LPC_RID_1                           0x02  // A0 Stepping (25 x 27)
-#define V_PCH_LPC_RID_2                           0x03  // A1 Stepping (17 x 17)
-#define V_PCH_LPC_RID_3                           0x04  // A1 Stepping (25 x 27)
-#define V_PCH_LPC_RID_4                           0x05  // B0 Stepping (17 x 17)
-#define V_PCH_LPC_RID_5                           0x06  // B0 Stepping (25 x 27)
-#define V_PCH_LPC_RID_6                           0x07  // B1 Stepping (17 x 17)
-#define V_PCH_LPC_RID_7                           0x08  // B1 Stepping (25 x 27)
-#define V_PCH_LPC_RID_8                           0x09  // B2 Stepping (17 x 17)
-#define V_PCH_LPC_RID_9                           0x0A  // B2 Stepping (25 x 27)
-#define V_PCH_LPC_RID_A                           0x0B  // B3 Stepping (17 x 17)
-#define V_PCH_LPC_RID_B                           0x0C  // B3 Stepping (25 x 27)
-#define V_PCH_LPC_RID_C                           0x0D  // C0 Stepping (17 x 17)
-#define V_PCH_LPC_RID_D                           0x0E  // C0 Stepping (25 x 27)
-
-/**
-  Return Pch stepping type
-
-  @param[in] None
-
-  @retval PCH_STEPPING            Pch stepping type
-
-**/
-PCH_STEPPING
-EFIAPI
-PchStepping (
-  VOID
-  )
-{
-  UINT8 RevId;
-
-  RevId = MmioRead8 (
-          MmPciAddress (0,
-            DEFAULT_PCI_BUS_NUMBER_PCH,
-            PCI_DEVICE_NUMBER_PCH_LPC,
-            PCI_FUNCTION_NUMBER_PCH_LPC,
-            R_PCH_LPC_RID_CC)
-          );
-
-  switch (RevId) {
-    case V_PCH_LPC_RID_0:
-    case V_PCH_LPC_RID_1:
-      return PchA0;
-      break;
-
-    case V_PCH_LPC_RID_2:
-    case V_PCH_LPC_RID_3:
-      return PchA1;
-      break;
-
-    case V_PCH_LPC_RID_4:
-    case V_PCH_LPC_RID_5:
-      return PchB0;
-      break;
-
-    case V_PCH_LPC_RID_6:
-    case V_PCH_LPC_RID_7:
-      return PchB1;
-      break;
-
-    case V_PCH_LPC_RID_8:
-    case V_PCH_LPC_RID_9:
-      return PchB2;
-      break;
-
-    case V_PCH_LPC_RID_A:
-    case V_PCH_LPC_RID_B:
-      return PchB3;
-      break;
-
-    case V_PCH_LPC_RID_C:
-    case V_PCH_LPC_RID_D:
-      return PchC0;
-      break;
-
-    default:
-      return PchSteppingMax;
-      break;
-
-  }
-}
-
-/**
-  Enable legacy decoding on ICH6
-
- @param[in] none
-
- @retval EFI_SUCCESS     Always returns success.
-
-**/
-VOID
-EnableInternalUart(
-  VOID
-  )
-{
-
-  //
-  // Program and enable PMC Base.
-  //
-  IoWrite32 (PCI_IDX,  PCI_LPC_REG(R_PCH_LPC_PMC_BASE));
-  IoWrite32 (PCI_DAT,  (PMC_BASE_ADDRESS | B_PCH_LPC_PMC_BASE_EN));
-
-  //
-  // Enable COM1 for debug message output.
-  //
-  MmioAndThenOr32 (PMC_BASE_ADDRESS + R_PCH_PMC_GEN_PMCON_1, (UINT32) (~(B_PCH_PMC_GEN_PMCON_SUS_PWR_FLR + B_PCH_PMC_GEN_PMCON_PWROK_FLR)), BIT24);
-
-  //
-  // Silicon Steppings
-  //
-  if (PchStepping()>= PchB0)
-    MmioOr8 (ILB_BASE_ADDRESS + R_PCH_ILB_IRQE, (UINT8) V_PCH_ILB_IRQE_UARTIRQEN_IRQ4);
-  else
-    MmioOr8 (ILB_BASE_ADDRESS + R_PCH_ILB_IRQE, (UINT8) V_PCH_ILB_IRQE_UARTIRQEN_IRQ3);
-  MmioAnd32(IO_BASE_ADDRESS + 0x0520, (UINT32)~(0x00000187));
-  MmioOr32 (IO_BASE_ADDRESS + 0x0520, (UINT32)0x81); // UART3_RXD-L
-  MmioAnd32(IO_BASE_ADDRESS + 0x0530, (UINT32)~(0x00000007));
-  MmioOr32 (IO_BASE_ADDRESS + 0x0530, (UINT32)0x1); // UART3_RXD-L
-  MmioOr8 (PciD31F0RegBase + R_PCH_LPC_UART_CTRL, (UINT8) B_PCH_LPC_UART_CTRL_COM1_EN);
-
-  SerialPortInitialize ();
-  SerialPortWrite ((UINT8 *)"EnableInternalUart!\r\n", sizeof("EnableInternalUart!\r\n") - 1);
-
-  return  ;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/TpmMp.h b/Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/TpmMp.h
deleted file mode 100644
index 415e53daf2..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/TpmMp.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*++
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-
-Module Name:
-
-  Tpm.h
-
-Abstract:
-
-
---*/
-
-#ifndef __EFI_TPM_MP_DRIVER_PROTOCOL_H__
-#define __EFI_TPM_MP_DRIVER_PROTOCOL_H__
-
-
-#define EFI_TPM_MP_DRIVER_PROTOCOL_GUID \
-  { 0xde161cfe, 0x1e60, 0x42a1, 0x8c, 0xc3, 0xee, 0x7e, 0xf0, 0x73, 0x52, 0x12 }
-
-
-EFI_FORWARD_DECLARATION (EFI_TPM_MP_DRIVER_PROTOCOL);
-
-#define TPM_DRIVER_STATUS         0
-#define TPM_DEVICE_STATUS         1
-
-#define TPM_DRIVER_OK             0
-#define TPM_DRIVER_FAILED         1
-#define TPM_DRIVER_NOT_OPENED     2
-#define TPM_DEVICE_OK             0
-#define TPM_DEVICE_UNRECOVERABLE  1
-#define TPM_DEVICE_RECOVERABLE    2
-#define TPM_DEVICE_NOT_FOUND      3
-
-//
-// Prototypes for the TPM MP Driver Protocol
-//
-
-/**
-  This service Open the TPM interface
-
-  @param[in] This             A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
-
-  @retval  EFI_SUCCESS        Operation completed successfully
-  @retval  EFI_DEVICE_ERROR   The command was unsuccessful
-  @retval  EFI_NOT_FOUND      The component was not running
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TPM_MP_INIT) (
-  IN EFI_TPM_MP_DRIVER_PROTOCOL   *This
-  );
-
-/**
-  This service close the TPM interface and deactivate TPM
-
-  @param[in] This            A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
-
-  @retval EFI_SUCCESS        Operation completed successfully
-  @retval EFI_DEVICE_ERROR   The command was unsuccessful
-  @retval EFI_NOT_FOUND      The component was not running
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TPM_MP_CLOSE) (
-  IN EFI_TPM_MP_DRIVER_PROTOCOL   *This
-  );
-
-/**
-  This service get the current status infomation of TPM
-
-  @param[in]  This                  A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
-  @param[in]  ReqStatusType	        Requested type of status information, driver or device.
-  @param[in]  Status	              Pointer to the returned status.
-
-  @retval  EFI_SUCCESS              Operation completed successfully
-  @retval  EFI_DEVICE_ERROR         The command was unsuccessful
-  @retval  EFI_INVALID_PARAMETER    One or more of the parameters are incorrect
-  @retval  EFI_BUFFER_TOO_SMALL     The receive buffer is too small
-  @retval  EFI_NOT_FOUND            The component was not running
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TPM_MP_GET_STATUS_INFO) (
-  IN EFI_TPM_MP_DRIVER_PROTOCOL   *This,
-  IN UINT32				                ReqStatusType,
-  OUT UINT32				              *Status
-  );
-
-/**
-  This service transmit data to the TPM and get response from TPM
-
-  @param[in] This                  A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
-  @param[in] TransmitBuf	         Pointer to a buffer containing TPM transmit data.
-  @param[in] TransmitBufLen	       Sizeof TPM input buffer in bytes.
-  @param[in] ReceiveBuf	           Pointer to a buffer containing TPM receive data.
-  @param[in]  ReceiveBufLen	       On input, size of TPM receive buffer in bytes.
-                                   On output, number of bytes written.
-
-  @retval  EFI_SUCCESS             Operation completed successfully
-  @retval  EFI_DEVICE_ERROR        The command was unsuccessful
-  @retval  EFI_INVALID_PARAMETER   One or more of the parameters are incorrect
-  @retval  EFI_BUFFER_TOO_SMALL    The receive buffer is too small
-  @retval  EFI_NOT_FOUND           The component was not running
-
-**/
-typedef
-EFI_STATUS
-(EFIAPI *EFI_TPM_MP_TRANSMIT) (
-  IN EFI_TPM_MP_DRIVER_PROTOCOL   *This,
-  IN UINT8				  	            *TransmitBuffer,
-  IN UINT32			  	              TransmitBufferLen,
-  OUT UINT8				  	            *ReceiveBuf,
-  IN OUT UINT32			  	          *ReceiveBufLen
-  );
-
-
-
-typedef struct _EFI_TPM_MP_DRIVER_PROTOCOL {
-  EFI_TPM_MP_INIT			              Init;
-  EFI_TPM_MP_CLOSE			            Close;
-  EFI_TPM_MP_GET_STATUS_INFO 		    GetStatusInfo;
-  EFI_TPM_MP_TRANSMIT		            Transmit;
-} EFI_TPM_MP_DRIVER_PROTOCOL;
-
-extern EFI_GUID gEfiTpmMpDriverProtocolGuid;
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/UsbPolicy.h b/Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/UsbPolicy.h
deleted file mode 100644
index 16e9f9c6bc..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Include/Protocol/UsbPolicy.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/*++
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-Module Name:
-  UsbPolicy.h
-
-Abstract:
-
---*/
-
-#ifndef _USB_POLICY_H_
-#define _USB_POLICY_H_
-
-EFI_FORWARD_DECLARATION (EFI_USB_POLICY_PROTOCOL);
-
-#define USB_POLICY_GUID \
-  {\
-    0xf617b358, 0x12cf, 0x414a, 0xa0, 0x69, 0x60, 0x67, 0x7b, 0xda, 0x13, 0xb4\
-  }
-
-#define TIANO_CODE_BASE           0x00
-#define ICBD_CODE_BASE            0x01
-
-#define ATUO_TYPE                 0x00
-#define USB_FDD_TYPE              0x01
-#define HDD_TYPE                  0x02
-#define ZIP_TYPE                  0x03
-#define CDROM_TYPE                0x04
-#define SIZE_TYPE                 0x05
-
-#define ZIP_FDD                 0x80
-
-#define FDD_EMULATION             0x00
-#define HDD_EMULATION             0x01
-
-#define HIGH_SPEED                0x00
-#define FULL_SPEED                0x01
-#define SUPER_SPEED               0x02
-
-#define LEGACY_KB_EN              0x01
-#define LEGACY_KB_DIS             0x00
-#define LEGACY_MS_EN              0x01
-#define LEGACY_MS_DIS             0x00
-#define LEGACY_USB_EN             0x00
-#define LEGACY_USB_DIS            0x01
-#define LEGACY_FREE_SUPP          0x01
-#define LEGACY_FREE_UN_SUPP       0x00
-#define LEGACY_PERIOD_SUPP        0x01
-#define LEGACY_PERIOD_UN_SUPP     0x00
-
-#define LEGACY_USB_TIME_TUE_ENABLE       0x01
-#define LEGACY_USB_TIME_TUE_DISABLE      0x00
-#define USB_HAVE_HUB_INTERNEL            0x01
-#define USB_NOT_HAVE_HUB_INTERNEL        0x00
-
-#define USB_POLICY_PROTOCOL_REVISION_1 1
-#define USB_POLICY_PROTOCOL_REVISION_2 2
-
-#ifndef __GNUC__
-#pragma warning ( disable : 4306 )
-#pragma warning ( disable : 4054 )
-#endif
-
-#define GET_USB_CFG (UsbCfg);\
- do{\
-  UINT16                *pSegOfEbda;\
-  UINT32                mToEbda;\
-  pSegOfEbda = (UINT16 *)(UINTN)0x40E;\
-  mToEbda    = (UINT32)(((UINTN)(*pSegOfEbda) << 4) + 0x80);\
-  UsbCfg     = (USB_CFG *)(UINTN)mToEbda;\
- }while(0);
-
-#pragma    pack(1)
-typedef struct {
-    UINT8   HasUSBKeyboard:1;
-    UINT8   HasUSBMouse:1;
-    UINT8   LegacyFreeSupport:1;
-    UINT8   UsbOperationMode:1;
-    UINT8   LegacyKBEnable:1;
-    UINT8   LegacyMSEnable:1;
-    UINT8   USBPeriodSupport:1;
-    UINT8   Reserved:1;
-} USB_DEVICE_INFOR;
-
-typedef struct {
-    UINT8               Codebase;
-    UINT8               USBHDDForceType;
-    UINT8               Configurated;
-    UINT8               LpcAcpiBase;
-    UINT8               AcpiTimerReg;
-    UINT8               Reserved1[0x01];
-    UINT8               LegacyUsbEnable;
-    USB_DEVICE_INFOR    UsbDeviceInfor;
-    UINT16              UsbEmulationSize;
-    UINT8               Reserved2[0x06];
-} USB_CFG;
-#pragma pack()
-
-typedef struct _EFI_USB_POLICY_PROTOCOL{
-  UINT8   Version;
-  UINT8   UsbMassStorageEmulationType;  // 1: FDD_Type; 2: HDD_Type; other:Auto_Type*
-  UINT8   UsbOperationMode;             // 0: High_Speed; 1: Full_Speed;
-  UINT8   LegacyKBEnable;               // 0: Disabled;   1: Enabled*
-  UINT8   LegacyMSEnable;               // 0: Disabled;   1: Enabled*
-  UINT8   USBPeriodSupport;             // 0; Unsupport;  1: Support
-  UINT8   LegacyUsbEnable;              // 1: Disabled;   0: Enabled*
-  UINT8   LegacyFreeSupport;            // 0: Unsupport;  1: Support
-  UINT8   CodeBase;
-  UINT8   LpcAcpiBase;                  // 40h(default)
-  UINT8   AcpiTimerReg;
-  UINT8   UsbTimeTue;
-  UINT8   InternelHubExist;             // 1: Host have internel hub on board; 0: No internel hub on board
-  UINT8   EnumWaitPortStableStall;      // Value for wait port stable when enum a new dev.
-  UINT16  UsbEmulationSize;             // Mbytes.
-  UINT8   UsbZipEmulationType;
-  UINT8   Reserved[3];                  // Reserved fields for future expansion w/o protocol change
-} EFI_USB_POLICY_PROTOCOL;
-
-extern EFI_GUID gUsbPolicyGuid;
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLib.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLib.c
deleted file mode 100644
index 85f066a9e3..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLib.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/*++
-
-Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-
-Module Name:
-
-  I2CLib.c
-
-
-
---*/
-#ifdef ECP_FLAG
-#include "EdkIIGlueDxe.h"
-#else
-#include <Library/DebugLib.h>
-#include <Library/TimerLib.h>
-#endif
-#include <PchRegs/PchRegsPcu.h>
-#include <PchRegs.h>
-#include <PlatformBaseAddresses.h>
-#include <PchRegs/PchRegsLpss.h>
-#ifdef ECP_FLAG
-#include "I2CLib.h"
-#else
-#include <Library/I2CLib.h>
-#endif
-#include <Protocol/GlobalNvsArea.h>
-#ifndef ECP_FLAG
-#include <Library/UefiBootServicesTableLib.h>
-#endif
-
-EFI_STATUS ByteReadI2C(
-  IN  UINT8 BusNo,
-  IN  UINT8 SlaveAddress,
-  IN  UINT8 Offset,
-  IN  UINTN ReadBytes,
-  OUT UINT8 *ReadBuffer
-  )
-{
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLibNull.inf b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLibNull.inf
deleted file mode 100644
index d669a4eaf8..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLib/I2CLibNull.inf
+++ /dev/null
@@ -1,39 +0,0 @@
-## @file
-# Null instance of Debug Agent Library with empty functions.
-#
-#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = I2CLib
-  FILE_GUID                      = 7f62bf44-2ba7-4c2d-9d4a-91c8906ff053
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = I2CLib
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources.common]
-  I2CLib.c
-
-[LibraryClasses]
-  BaseLib
-  IoLib
-  TimerLib
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  Vlv2TbltDevicePkg/PlatformPkg.dec
-  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
-
-[Protocols]
-  gEfiGlobalNvsAreaProtocolGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLib.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLib.c
deleted file mode 100644
index 104c2ded43..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLib.c
+++ /dev/null
@@ -1,735 +0,0 @@
-/** @file
-  Functions for accessing I2C registers.
-  
-  Copyright (c) 2004  - 2015, Intel Corporation. All rights reserved.<BR>
-                                                                                   
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-                                                                               
---*/
-
-#include <Library/DebugLib.h>
-#include <Library/TimerLib.h>
-#include <PchRegs/PchRegsPcu.h> 
-#include <PchRegs.h>
-#include <PlatformBaseAddresses.h>
-#include <PchRegs/PchRegsLpss.h> 
-#include <Library/I2CLib.h>
-#include <Protocol/GlobalNvsArea.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <I2CRegs.h>
-
-#define GLOBAL_NVS_OFFSET(Field)    (UINTN)((CHAR8*)&((EFI_GLOBAL_NVS_AREA*)0)->Field - (CHAR8*)0)
-
-#define PCIEX_BASE_ADDRESS  0xE0000000
-#define PCI_EXPRESS_BASE_ADDRESS ((VOID *) (UINTN) PCIEX_BASE_ADDRESS)
-#define MmPciAddress( Segment, Bus, Device, Function, Register ) \
-         ((UINTN)PCI_EXPRESS_BASE_ADDRESS + \
-         (UINTN)(Bus << 20) + \
-         (UINTN)(Device << 15) + \
-         (UINTN)(Function << 12) + \
-         (UINTN)(Register) \
-        )
-#define PCI_D31F0_REG_BASE             PCIEX_BASE_ADDRESS + (UINT32) (31 << 15)
-
-typedef struct _LPSS_PCI_DEVICE_INFO {
-  UINTN        Segment;
-  UINTN        BusNum;
-  UINTN        DeviceNum;
-  UINTN        FunctionNum;
-  UINTN        Bar0;
-  UINTN        Bar1;
-} LPSS_PCI_DEVICE_INFO;
-
-LPSS_PCI_DEVICE_INFO  mLpssPciDeviceList[] = {
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_DMAC1, PCI_FUNCTION_NUMBER_PCH_LPSS_DMAC, 0xFE900000, 0xFE908000},
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_I2C,   PCI_FUNCTION_NUMBER_PCH_LPSS_I2C0, 0xFE910000, 0xFE918000},
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_I2C,   PCI_FUNCTION_NUMBER_PCH_LPSS_I2C1, 0xFE920000, 0xFE928000},
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_I2C,   PCI_FUNCTION_NUMBER_PCH_LPSS_I2C2, 0xFE930000, 0xFE938000},
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_I2C,   PCI_FUNCTION_NUMBER_PCH_LPSS_I2C3, 0xFE940000, 0xFE948000},
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_I2C,   PCI_FUNCTION_NUMBER_PCH_LPSS_I2C4, 0xFE950000, 0xFE958000},
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_I2C,   PCI_FUNCTION_NUMBER_PCH_LPSS_I2C5, 0xFE960000, 0xFE968000},
-  {0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPSS_I2C,   PCI_FUNCTION_NUMBER_PCH_LPSS_I2C6, 0xFE970000, 0xFE978000}
-};
-
-#define LPSS_PCI_DEVICE_NUMBER  sizeof(mLpssPciDeviceList)/sizeof(LPSS_PCI_DEVICE_INFO)
-
-STATIC UINTN mI2CBaseAddress = 0;
-STATIC UINT16 mI2CSlaveAddress = 0;
-
-UINT16 mI2cMode=B_IC_RESTART_EN | B_IC_SLAVE_DISABLE | B_MASTER_MODE ;
-
-UINTN mI2cNvsBaseAddress[] = {
-        GLOBAL_NVS_OFFSET(LDMA2Addr),
-        GLOBAL_NVS_OFFSET(I2C1Addr),
-        GLOBAL_NVS_OFFSET(I2C2Addr),
-        GLOBAL_NVS_OFFSET(I2C3Addr),
-        GLOBAL_NVS_OFFSET(I2C4Addr),
-        GLOBAL_NVS_OFFSET(I2C5Addr),
-        GLOBAL_NVS_OFFSET(I2C6Addr),
-        GLOBAL_NVS_OFFSET(I2C7Addr)
-      };
-
-/**
-  This function get I2Cx controller base address (BAR0).
-
-  @param I2cControllerIndex  Bus Number of I2C controller.
-
-  @return I2C BAR. 
-**/
-UINTN
-GetI2cBarAddr(
-  IN    UINT8 I2cControllerIndex
-  )
-{
-  EFI_STATUS           Status;
-  EFI_GLOBAL_NVS_AREA_PROTOCOL  *GlobalNvsArea;
-  UINTN  AcpiBaseAddr;
-  UINTN  PciMmBase=0;
-
-  ASSERT(gBS!=NULL);
-
-  Status = gBS->LocateProtocol (
-                  &gEfiGlobalNvsAreaProtocolGuid,
-                  NULL,
-                  &GlobalNvsArea
-                  );
-                  
-  //
-  // PCI mode from PEI ( Global NVS is not ready).
-  //
-  if (EFI_ERROR(Status)) {
-    DEBUG ((EFI_D_INFO, "GetI2cBarAddr() gEfiGlobalNvsAreaProtocolGuid:%r\n", Status));
-    //
-    // Global NVS is not ready.
-    //
-    return 0;
-  }
-
-  AcpiBaseAddr =  *(UINTN*)((CHAR8*)GlobalNvsArea->Area + mI2cNvsBaseAddress[I2cControllerIndex + 1]);
-  
-  //
-  //PCI mode from DXE (global NVS protocal) to LPSS OnReadytoBoot(swith to ACPI).
-  //
-  if(AcpiBaseAddr==0) {
-    PciMmBase = MmPciAddress (
-                  mLpssPciDeviceList[I2cControllerIndex + 1].Segment,
-                  mLpssPciDeviceList[I2cControllerIndex + 1].BusNum,
-                  mLpssPciDeviceList[I2cControllerIndex + 1].DeviceNum,
-                  mLpssPciDeviceList[I2cControllerIndex + 1].FunctionNum,
-                  0
-                  );
-    DEBUG((EFI_D_ERROR, "\nGetI2cBarAddr() I2C Device %x %x %x PciMmBase:%x\n", \
-           mLpssPciDeviceList[I2cControllerIndex + 1].BusNum, \
-           mLpssPciDeviceList[I2cControllerIndex + 1].DeviceNum, \
-           mLpssPciDeviceList[I2cControllerIndex + 1].FunctionNum, PciMmBase));
-
-    if (MmioRead32 (PciMmBase) != 0xFFFFFFFF)    {
-      if((MmioRead32 (PciMmBase+R_PCH_LPSS_I2C_STSCMD)& B_PCH_LPSS_I2C_STSCMD_MSE)) {
-        //
-        // Get the address allocted.
-        //
-        mLpssPciDeviceList[I2cControllerIndex + 1].Bar0=MmioRead32 (PciMmBase+R_PCH_LPSS_I2C_BAR);     
-        mLpssPciDeviceList[I2cControllerIndex + 1].Bar1=MmioRead32 (PciMmBase+R_PCH_LPSS_I2C_BAR1);
-      }
-    }
-    AcpiBaseAddr =mLpssPciDeviceList[I2cControllerIndex+1].Bar0;
-  }
-  
-  //
-  // ACPI mode from BDS: LPSS OnReadytoBoot
-  //
-  else {
-    DEBUG ((EFI_D_INFO, "GetI2cBarAddr() NVS Varialable is updated by this LIB or LPSS  \n"));
-  }
-  
-  DEBUG ((EFI_D_INFO, "GetI2cBarAddr() I2cControllerIndex+1 0x%x AcpiBaseAddr:0x%x \n", (I2cControllerIndex + 1), AcpiBaseAddr));
-  return AcpiBaseAddr;
-}
-
-
-/**
-  This function enables I2C controllers.
-
-  @param I2cControllerIndex  Bus Number of I2C controllers.
-
-  @return Result of the I2C initialization.
-**/
-EFI_STATUS
-ProgramPciLpssI2C (
-  IN  UINT8 I2cControllerIndex
-  )
-{
-  UINT32                        PmcBase;
-  UINTN                         PciMmBase=0;
-  EFI_STATUS                    Status;
-  EFI_GLOBAL_NVS_AREA_PROTOCOL  *GlobalNvsArea;
-
-  UINT32 PmcFunctionDsiable[]= {
-    B_PCH_PMC_FUNC_DIS_LPSS2_FUNC1,
-    B_PCH_PMC_FUNC_DIS_LPSS2_FUNC2,
-    B_PCH_PMC_FUNC_DIS_LPSS2_FUNC3,
-    B_PCH_PMC_FUNC_DIS_LPSS2_FUNC4,
-    B_PCH_PMC_FUNC_DIS_LPSS2_FUNC5,
-    B_PCH_PMC_FUNC_DIS_LPSS2_FUNC6,
-    B_PCH_PMC_FUNC_DIS_LPSS2_FUNC7
-  };
-
-  DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C() Start\n"));
-
-  //
-  // Set the VLV Function Disable Register to ZERO
-  //
-  PmcBase = MmioRead32 (PCI_D31F0_REG_BASE + R_PCH_LPC_PMC_BASE) & B_PCH_LPC_PMC_BASE_BAR;
-  if(MmioRead32(PmcBase+R_PCH_PMC_FUNC_DIS)&PmcFunctionDsiable[I2cControllerIndex]) {
-    DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C() End:I2C[%x] is disabled\n",I2cControllerIndex));
-    return EFI_NOT_READY;
-  }
-  
-  DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C()------------I2cControllerIndex=%x,PMC=%x\n",I2cControllerIndex,MmioRead32(PmcBase+R_PCH_PMC_FUNC_DIS)));
-
-  {
-    PciMmBase = MmPciAddress (
-                  mLpssPciDeviceList[I2cControllerIndex+1].Segment,
-                  mLpssPciDeviceList[I2cControllerIndex+1].BusNum,
-                  mLpssPciDeviceList[I2cControllerIndex+1].DeviceNum,
-                  mLpssPciDeviceList[I2cControllerIndex+1].FunctionNum,
-                  0
-                  );
-                  
-    DEBUG((EFI_D_ERROR, "Program Pci Lpss I2C Device  %x %x %x PciMmBase:%x\n", \
-           mLpssPciDeviceList[I2cControllerIndex+1].BusNum, \
-           mLpssPciDeviceList[I2cControllerIndex+1].DeviceNum, \
-           mLpssPciDeviceList[I2cControllerIndex+1].FunctionNum, PciMmBase));
-
-    if (MmioRead32 (PciMmBase) != 0xFFFFFFFF)     {
-      if((MmioRead32 (PciMmBase+R_PCH_LPSS_I2C_STSCMD)& B_PCH_LPSS_I2C_STSCMD_MSE)) {
-        //
-        // Get the address allocted.
-        //
-        mLpssPciDeviceList[I2cControllerIndex+1].Bar0=MmioRead32 (PciMmBase+R_PCH_LPSS_I2C_BAR);     
-        mLpssPciDeviceList[I2cControllerIndex+1].Bar1=MmioRead32 (PciMmBase+R_PCH_LPSS_I2C_BAR1);
-        DEBUG((EFI_D_ERROR, "ProgramPciLpssI2C() bar0:0x%x bar1:0x%x\n",mLpssPciDeviceList[I2cControllerIndex+1].Bar0, mLpssPciDeviceList[I2cControllerIndex+1].Bar1));
-      } else {
-        
-        //
-        // Program BAR 0
-        //
-        ASSERT (((mLpssPciDeviceList[I2cControllerIndex+1].Bar0 & B_PCH_LPSS_I2C_BAR_BA) == mLpssPciDeviceList[I2cControllerIndex+1].Bar0) && (mLpssPciDeviceList[I2cControllerIndex+1].Bar0 != 0));
-        MmioWrite32 ((UINTN) (PciMmBase + R_PCH_LPSS_I2C_BAR), (UINT32) (mLpssPciDeviceList[I2cControllerIndex+1].Bar0 & B_PCH_LPSS_I2C_BAR_BA));
-       
-        //
-        // Program BAR 1
-        //
-        ASSERT (((mLpssPciDeviceList[I2cControllerIndex+1].Bar1 & B_PCH_LPSS_I2C_BAR1_BA) == mLpssPciDeviceList[I2cControllerIndex+1].Bar1) && (mLpssPciDeviceList[I2cControllerIndex+1].Bar1 != 0));
-        MmioWrite32 ((UINTN) (PciMmBase + R_PCH_LPSS_I2C_BAR1), (UINT32) (mLpssPciDeviceList[I2cControllerIndex+1].Bar1 & B_PCH_LPSS_I2C_BAR1_BA));
-        
-        //
-        // Bus Master Enable & Memory Space Enable
-        //
-        MmioOr32 ((UINTN) (PciMmBase + R_PCH_LPSS_I2C_STSCMD), (UINT32) (B_PCH_LPSS_I2C_STSCMD_BME | B_PCH_LPSS_I2C_STSCMD_MSE));
-        ASSERT (MmioRead32 (mLpssPciDeviceList[I2cControllerIndex+1].Bar0) != 0xFFFFFFFF);
-      }
-      
-      //
-      // Release Resets
-      //
-      MmioWrite32 (mLpssPciDeviceList[I2cControllerIndex+1].Bar0 + R_PCH_LPIO_I2C_MEM_RESETS,(B_PCH_LPIO_I2C_MEM_RESETS_FUNC | B_PCH_LPIO_I2C_MEM_RESETS_APB));
-      
-      //
-      // Activate Clocks
-      //
-      MmioWrite32 (mLpssPciDeviceList[I2cControllerIndex+1].Bar0 + R_PCH_LPSS_I2C_MEM_PCP,0x80020003);//No use for A0
-
-      DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C() Programmed()\n"));
-    }
-    
-    //
-    // BDS: already switched to ACPI mode
-    //
-    else {
-      ASSERT(gBS!=NULL);
-      Status = gBS->LocateProtocol (
-                      &gEfiGlobalNvsAreaProtocolGuid,
-                      NULL,
-                      &GlobalNvsArea
-                      );
-      if (EFI_ERROR(Status)) {
-        DEBUG ((EFI_D_INFO, "GetI2cBarAddr() gEfiGlobalNvsAreaProtocolGuid:%r\n", Status));
-        //
-        // gEfiGlobalNvsAreaProtocolGuid is not ready.
-        //
-        return 0;
-      }
-      mLpssPciDeviceList[I2cControllerIndex + 1].Bar0 = *(UINTN*)((CHAR8*)GlobalNvsArea->Area + mI2cNvsBaseAddress[I2cControllerIndex + 1]);
-      DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C(): is switched to ACPI 0x:%x \n",mLpssPciDeviceList[I2cControllerIndex + 1].Bar0));
-    }
-  }
-  
-  DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C() End\n"));
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Disable I2C Bus.
-
-  @param VOID.
-
-  @return Result of the I2C disabling.
-**/
-RETURN_STATUS
-I2cDisable (
-  VOID
-  )
-{ 
-  //
-  // 0.1 seconds
-  //
-  UINT32 NumTries = 10000;
-  
-  MmioWrite32 ( mI2CBaseAddress + R_IC_ENABLE, 0 );
-  while ( 0 != ( MmioRead32 ( mI2CBaseAddress + R_IC_ENABLE_STATUS) & 1)) {
-    MicroSecondDelay (10);
-    NumTries --;
-    if(0 == NumTries) {
-      return RETURN_NOT_READY;
-    }
-  }
-  
-  return RETURN_SUCCESS;
-}
-
-/**
-  Enable I2C Bus.
-
-  @param VOID.
-
-  @return Result of the I2C disabling.
-**/
-RETURN_STATUS
-I2cEnable (
-  VOID
-  )
-{
-  //
-  // 0.1 seconds
-  //
-  UINT32 NumTries = 10000;
-  
-  MmioWrite32 (mI2CBaseAddress + R_IC_ENABLE, 1);
-  
-  while (0 == (MmioRead32 (mI2CBaseAddress + R_IC_ENABLE_STATUS) & 1)) {
-    MicroSecondDelay (10);
-    NumTries --;
-    if(0 == NumTries){
-       return RETURN_NOT_READY;
-    }
-  }
-  
-  return RETURN_SUCCESS;
-}
-
-/**
-  Enable I2C Bus.
-
-  @param VOID.
-
-  @return Result of the I2C enabling.
-**/
-RETURN_STATUS
-I2cBusFrequencySet (
-  IN UINTN BusClockHertz
-  )
-{
-  DEBUG((EFI_D_INFO,"InputFreq BusClockHertz: %d\r\n",BusClockHertz));
-  
-  //
-  //  Set the 100 KHz clock divider according to SV result and I2C spec
-  //
-  MmioWrite32 ( mI2CBaseAddress + R_IC_SS_SCL_HCNT, (UINT16)0x214 );
-  MmioWrite32 ( mI2CBaseAddress + R_IC_SS_SCL_LCNT, (UINT16)0x272 );
-  
-  //
-  //  Set the 400 KHz clock divider according to SV result and I2C spec
-  //
-  MmioWrite32 ( mI2CBaseAddress + R_IC_FS_SCL_HCNT, (UINT16)0x50 );
-  MmioWrite32 ( mI2CBaseAddress + R_IC_FS_SCL_LCNT, (UINT16)0xAD );
-
-  switch ( BusClockHertz ) {
-    case 100 * 1000:
-      MmioWrite32 ( mI2CBaseAddress + R_IC_SDA_HOLD, (UINT16)0x40);//100K
-      mI2cMode = V_SPEED_STANDARD;
-      break;
-    case 400 * 1000:
-      MmioWrite32 ( mI2CBaseAddress + R_IC_SDA_HOLD, (UINT16)0x32);//400K
-      mI2cMode = V_SPEED_FAST;
-      break;
-    default:
-      MmioWrite32 ( mI2CBaseAddress + R_IC_SDA_HOLD, (UINT16)0x09);//3.4M
-      mI2cMode = V_SPEED_HIGH;
-  }
-
-  //
-  //  Select the frequency counter,
-  //  Enable restart condition,
-  //  Enable master FSM, disable slave FSM.
-  //
-  mI2cMode |= B_IC_RESTART_EN | B_IC_SLAVE_DISABLE | B_MASTER_MODE;
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Initializes the host controller to execute I2C commands.
-
-  @param I2cControllerIndex Index of I2C controller in LPSS device. 0 represents I2C0, which is PCI function 1 of LPSS device.   
-                                
-  @return EFI_SUCCESS       Opcode initialization on the I2C host controller completed.
-  @return EFI_DEVICE_ERROR  Device error, operation failed.
-**/
-EFI_STATUS
-I2CInit (
-  IN  UINT8  I2cControllerIndex,
-  IN  UINT16 SlaveAddress
-  )
-{
-  EFI_STATUS Status=RETURN_SUCCESS;
-  UINT32    NumTries = 0;
-  UINTN    GnvsI2cBarAddr=0;
-  
-  //
-  // Verify the parameters
-  //
-  if ((1023 < SlaveAddress) || (6 < I2cControllerIndex)) {
-    Status =  RETURN_INVALID_PARAMETER;
-    DEBUG((EFI_D_INFO,"I2CInit Exit with RETURN_INVALID_PARAMETER\r\n"));
-    return Status;
-  }
-  MmioWrite32 ( mI2CBaseAddress + R_IC_TAR, (UINT16)SlaveAddress );
-  mI2CSlaveAddress = SlaveAddress;
-
-  //
-  // 1.PEI: program and init ( before pci enumeration).
-  // 2.DXE:update address and re-init ( after pci enumeration).
-  // 3.BDS:update ACPI address and re-init ( after acpi mode is enabled).
-  //
-  if(mI2CBaseAddress == mLpssPciDeviceList[I2cControllerIndex + 1].Bar0) {
-    
-    //
-    // I2CInit is already  called.
-    //
-    GnvsI2cBarAddr=GetI2cBarAddr(I2cControllerIndex);
-    
-    if((GnvsI2cBarAddr == 0)||(GnvsI2cBarAddr == mI2CBaseAddress)) {
-      DEBUG((EFI_D_INFO,"I2CInit Exit with mI2CBaseAddress:%x == [%x].Bar0\r\n",mI2CBaseAddress,I2cControllerIndex+1));
-      return RETURN_SUCCESS;
-    }
-  }
-  
-  Status=ProgramPciLpssI2C(I2cControllerIndex);
-  if(Status!=EFI_SUCCESS) {
-    return Status;
-  }
-
-
-  mI2CBaseAddress = (UINT32) mLpssPciDeviceList[I2cControllerIndex + 1].Bar0;
-  DEBUG ((EFI_D_ERROR, "mI2CBaseAddress = 0x%x \n",mI2CBaseAddress));
-  
-  //
-  // 1 seconds.
-  //
-  NumTries = 10000; 
-  while ((1 == ( MmioRead32 ( mI2CBaseAddress + R_IC_STATUS) & STAT_MST_ACTIVITY ))) {
-    MicroSecondDelay(10);
-    NumTries --;
-    if(0 == NumTries) {
-      DEBUG((EFI_D_INFO, "Try timeout\r\n"));
-      return RETURN_DEVICE_ERROR;
-    }
-  }
-  
-  Status = I2cDisable();
-  DEBUG((EFI_D_INFO, "I2cDisable Status = %r\r\n", Status));
-  I2cBusFrequencySet(400 * 1000);
-
-  MmioWrite32(mI2CBaseAddress + R_IC_INTR_MASK, 0x0);
-  if (0x7f < SlaveAddress )
-    SlaveAddress = ( SlaveAddress & 0x3ff ) | IC_TAR_10BITADDR_MASTER;
-  MmioWrite32 ( mI2CBaseAddress + R_IC_TAR, (UINT16)SlaveAddress );
-  MmioWrite32 ( mI2CBaseAddress + R_IC_RX_TL, 0);
-  MmioWrite32 ( mI2CBaseAddress + R_IC_TX_TL, 0 );
-  MmioWrite32 ( mI2CBaseAddress + R_IC_CON, mI2cMode);
-  Status = I2cEnable();
-
-  DEBUG((EFI_D_INFO, "I2cEnable Status = %r\r\n", Status));
-  MmioRead32 ( mI2CBaseAddress + R_IC_CLR_TX_ABRT );
-  
-  return EFI_SUCCESS;
-}
-
-/**
-  Reads a Byte from I2C Device.
- 
-  @param  I2cControllerIndex             I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress      Device Address from which the byte value has to be read
-  @param  Offset            Offset from which the data has to be read
-  @param  *Byte             Address to which the value read has to be stored
-  @param  Start               Whether a RESTART is issued before the byte is sent or received
-  @param  End                 Whether STOP is generated after a data byte is sent or received  
-                                  
-  @return  EFI_SUCCESS       IF the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR  Operation Failed, Device Error
-**/
-EFI_STATUS 
-ByteReadI2CBasic(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINTN ReadBytes,
-  OUT UINT8 *ReadBuffer,
-  IN  UINT8 Start,
-  IN  UINT8 End
-  )
-{
-
-  EFI_STATUS Status;
-  UINT32 I2cStatus;
-  UINT16 ReceiveData;
-  UINT8 *ReceiveDataEnd;
-  UINT8 *ReceiveRequest;
-  UINT16 RawIntrStat;
-  UINT32 Count=0;
-
-  Status = EFI_SUCCESS;
-
-  ReceiveDataEnd = &ReadBuffer [ReadBytes];
-  if( ReadBytes ) {
-
-    ReceiveRequest = ReadBuffer;
-    DEBUG((EFI_D_INFO,"Read: ---------------%d bytes to RX\r\n",ReceiveDataEnd - ReceiveRequest));
-
-    while ((ReceiveDataEnd > ReceiveRequest) || (ReceiveDataEnd > ReadBuffer)) {
-      
-      //
-      //  Check for NACK
-      //
-      RawIntrStat = (UINT16)MmioRead32 (mI2CBaseAddress + R_IC_RawIntrStat);
-      if ( 0 != ( RawIntrStat & I2C_INTR_TX_ABRT )) {
-        MmioRead32 ( mI2CBaseAddress + R_IC_CLR_TX_ABRT );
-        Status = RETURN_DEVICE_ERROR;
-        DEBUG((EFI_D_INFO,"TX ABRT ,%d bytes hasn't been transferred\r\n",ReceiveDataEnd - ReceiveRequest));
-        break;
-      }
-      
-      //
-      // Determine if another byte was received
-      //
-      I2cStatus = (UINT16)MmioRead32 (mI2CBaseAddress + R_IC_STATUS);
-      if (0 != ( I2cStatus & STAT_RFNE )) {
-        ReceiveData = (UINT16)MmioRead32 ( mI2CBaseAddress + R_IC_DATA_CMD );
-        *ReadBuffer++ = (UINT8)ReceiveData;
-        DEBUG((EFI_D_INFO,"MmioRead32 ,1 byte 0x:%x is received\r\n",ReceiveData));
-      }
-
-      if(ReceiveDataEnd == ReceiveRequest) {
-        MicroSecondDelay ( FIFO_WRITE_DELAY );
-        DEBUG((EFI_D_INFO,"ReceiveDataEnd==ReceiveRequest------------%x\r\n",I2cStatus & STAT_RFNE));
-        Count++;
-        if(Count<1024) {
-          //
-          // To avoid sys hung  without ul-pmc device  on RVP,
-          // waiting the last request to get data and make (ReceiveDataEnd > ReadBuffer) =TRUE.
-          //
-          continue;
-        } else {
-          break;
-        }
-      }
-      
-      //
-      //  Wait until a read request will fit.
-      //
-      if (0 == (I2cStatus & STAT_TFNF)) {
-        DEBUG((EFI_D_INFO,"Wait until a read request will fit\r\n"));
-        MicroSecondDelay (10);
-        continue;
-      }
-      
-      //
-      //  Issue the next read request.
-      //
-      if(End && Start) {
-        MmioWrite32 ( mI2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD|B_CMD_RESTART|B_CMD_STOP);
-      } else if (!End && Start) {
-        MmioWrite32 ( mI2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD|B_CMD_RESTART);
-      } else if (End && !Start) {
-        MmioWrite32 ( mI2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD|B_CMD_STOP);
-      } else if (!End && !Start) {
-        MmioWrite32 ( mI2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD);
-      }
-      MicroSecondDelay (FIFO_WRITE_DELAY);
-
-      ReceiveRequest += 1;
-    }
-  }
-  
-  return Status;
-}
-
-/**
-  Writes a Byte to I2C Device.
- 
-  @param  I2cControllerIndex   I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress         Device Address from which the byte value has to be written
-  @param  Offset               Offset from which the data has to be read
-  @param  *Byte                Address to which the value written is stored
-  @param  Start               Whether a RESTART is issued before the byte is sent or received
-  @param  End                 Whether STOP is generated after a data byte is sent or received  
-                                    
-  @return  EFI_SUCCESS         IF the byte value has been successfully written
-  @return  EFI_DEVICE_ERROR    Operation Failed, Device Error
-**/
-EFI_STATUS ByteWriteI2CBasic(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINTN WriteBytes,
-  IN  UINT8 *WriteBuffer,
-  IN  UINT8 Start,
-  IN  UINT8 End
-  )
-{
-
-  EFI_STATUS Status;
-  UINT32 I2cStatus;
-  UINT8 *TransmitEnd;
-  UINT16 RawIntrStat;
-  UINT32 Count=0;
-
-  Status = EFI_SUCCESS;
-
-  Status=I2CInit(I2cControllerIndex, SlaveAddress);
-  if(Status!=EFI_SUCCESS)
-    return Status;
-
-  TransmitEnd = &WriteBuffer[WriteBytes];
-  if( WriteBytes ) {
-    DEBUG((EFI_D_INFO,"Write: --------------%d bytes to TX\r\n",TransmitEnd - WriteBuffer));
-    while (TransmitEnd > WriteBuffer) {
-      I2cStatus = MmioRead32 (mI2CBaseAddress + R_IC_STATUS);
-      RawIntrStat = (UINT16)MmioRead32 (mI2CBaseAddress + R_IC_RawIntrStat);
-      if (0 != ( RawIntrStat & I2C_INTR_TX_ABRT)) {
-        MmioRead32 ( mI2CBaseAddress + R_IC_CLR_TX_ABRT);
-        Status = RETURN_DEVICE_ERROR;
-        DEBUG((EFI_D_ERROR,"TX ABRT TransmitEnd:0x%x WriteBuffer:0x%x\r\n", TransmitEnd, WriteBuffer));
-        break;
-      }
-      if (0 == (I2cStatus & STAT_TFNF)) {
-        //
-        // If TX not full , will  send cmd  or continue to wait
-        //
-        MicroSecondDelay (FIFO_WRITE_DELAY);
-        continue;
-      }
-
-      if(End && Start) {
-        MmioWrite32 (mI2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++)|B_CMD_RESTART|B_CMD_STOP);
-      } else if (!End && Start) {
-        MmioWrite32 (mI2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++)|B_CMD_RESTART);
-      } else if (End && !Start) {
-        MmioWrite32 (mI2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++)|B_CMD_STOP);
-      } else if (!End && !Start ) {
-        MmioWrite32 (mI2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++));
-      }
-      
-      //
-      // Add a small delay to work around some odd behavior being seen.  Without this delay bytes get dropped.
-      //
-      MicroSecondDelay ( FIFO_WRITE_DELAY );//wait after send cmd
-      
-      //
-      // Time out
-      //
-      while(1) {
-        RawIntrStat = MmioRead16 ( mI2CBaseAddress + R_IC_RawIntrStat );
-        if (0 != ( RawIntrStat & I2C_INTR_TX_ABRT)) {
-          MmioRead16 (mI2CBaseAddress + R_IC_CLR_TX_ABRT);
-          Status = RETURN_DEVICE_ERROR;
-          DEBUG((EFI_D_ERROR,"TX ABRT TransmitEnd:0x%x WriteBuffer:0x%x\r\n", TransmitEnd, WriteBuffer));
-        }
-        if(0 == MmioRead16(mI2CBaseAddress + R_IC_TXFLR)) break;
-
-        MicroSecondDelay (FIFO_WRITE_DELAY);
-        Count++;
-        if(Count<1024) {
-          //
-          // to avoid sys hung without ul-pmc device on RVP.
-          // Waiting the last request to get data and make (ReceiveDataEnd > ReadBuffer) =TRUE.
-          //
-          continue;
-        } else {
-          break;
-        }
-      }//while( 1 )
-    }
-
-  }
-
-  return Status;
-}
-
-/**
-  Reads a Byte from I2C Device.
- 
-  @param  I2cControllerIndex   I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress         Device Address from which the byte value has to be read
-  @param  Offset               Offset from which the data has to be read
-  @param  ReadBytes            Number of bytes to be read
-  @param  *ReadBuffer          Address to which the value read has to be stored
-                                
-  @return  EFI_SUCCESS       IF the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR  Operation Failed, Device Error
-**/
-EFI_STATUS ByteReadI2C(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINT8 Offset,
-  IN  UINTN ReadBytes,
-  OUT UINT8 *ReadBuffer
-  )
-{
-  EFI_STATUS          Status;
-
-  DEBUG ((EFI_D_INFO, "ByteReadI2C:---offset:0x%x\n",Offset));
-  Status = ByteWriteI2CBasic(I2cControllerIndex, SlaveAddress,1,&Offset,TRUE,FALSE);
-  Status = ByteReadI2CBasic(I2cControllerIndex, SlaveAddress,ReadBytes,ReadBuffer,TRUE,TRUE);
-
-  return Status;
-}
-
-/**
-  Writes a Byte to I2C Device.
- 
-  @param  I2cControllerIndex  I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress        Device Address from which the byte value has to be written
-  @param  Offset              Offset from which the data has to be written
-  @param  WriteBytes          Number of bytes to be written
-  @param  *Byte               Address to which the value written is stored
-                                
-  @return  EFI_SUCCESS       IF the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR  Operation Failed, Device Error
-**/
-EFI_STATUS ByteWriteI2C(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINT8 Offset,
-  IN  UINTN WriteBytes,
-  IN  UINT8 *WriteBuffer
-  )
-{
-  EFI_STATUS          Status;
-
-  DEBUG ((EFI_D_INFO, "ByteWriteI2C:---offset/bytes/buf:0x%x,0x%x,0x%x,0x%x\n",Offset,WriteBytes,WriteBuffer,*WriteBuffer));
-  Status = ByteWriteI2CBasic(I2cControllerIndex, SlaveAddress,1,&Offset,TRUE,FALSE);
-  Status = ByteWriteI2CBasic(I2cControllerIndex, SlaveAddress,WriteBytes,WriteBuffer,FALSE,TRUE);
-
-  return Status;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLibDxe.inf b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLibDxe.inf
deleted file mode 100644
index cd10f1de93..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CLibDxe.inf
+++ /dev/null
@@ -1,39 +0,0 @@
-## @file
-#  Instance of I2C Library.
-#
-#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = I2CLib
-  FILE_GUID                      = 7f62bf44-2ba7-4c2d-9d4a-91c8906ff053
-  MODULE_TYPE                    = DXE_DRIVER
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = I2CLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_DRIVER UEFI_APPLICATION
-  
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources.common]
-  I2CLib.c
-
-[LibraryClasses]
-  BaseLib
-  IoLib
-  TimerLib
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  Vlv2TbltDevicePkg/PlatformPkg.dec
-  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
-
-[Protocols]
-  gEfiGlobalNvsAreaProtocolGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CRegs.h b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CRegs.h
deleted file mode 100644
index 57455162f6..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibDxe/I2CRegs.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/** @file
-  Register Definitions for I2C Driver/PEIM.
-  
-  Copyright (c) 2004  - 2015, Intel Corporation. All rights reserved.<BR>
-                                                                                   
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-                                                                               
---*/
-
-#ifndef I2C_REGS_H
-#define I2C_REGS_H
-
-//
-// FIFO write delay value.
-//
-#define FIFO_WRITE_DELAY    2
-
-//
-// MMIO Register Definitions.
-//
-#define    R_IC_CON                          ( 0x00) // I2C Control  
-#define     B_IC_RESTART_EN                  BIT5
-#define     B_IC_SLAVE_DISABLE               BIT6
-#define     V_SPEED_STANDARD                 0x02
-#define     V_SPEED_FAST                     0x04
-#define     V_SPEED_HIGH                     0x06
-#define     B_MASTER_MODE                    BIT0
-
-#define    R_IC_TAR                          ( 0x04) // I2C Target Address
-#define     IC_TAR_10BITADDR_MASTER           BIT12
-
-#define    R_IC_SAR                          ( 0x08) // I2C Slave Address
-#define    R_IC_HS_MADDR                     ( 0x0C) // I2C HS MasterMode Code Address
-#define    R_IC_DATA_CMD                     ( 0x10) // I2C Rx/Tx Data Buffer and Command
-
-#define    B_READ_CMD                         BIT8    // 1 = read, 0 = write
-#define    B_CMD_STOP                         BIT9    // 1 = STOP
-#define    B_CMD_RESTART                      BIT10   // 1 = IC_RESTART_EN
-
-#define    V_WRITE_CMD_MASK                  ( 0xFF)
-
-#define    R_IC_SS_SCL_HCNT                  ( 0x14) // Standard Speed I2C Clock SCL High Count
-#define    R_IC_SS_SCL_LCNT                  ( 0x18) // Standard Speed I2C Clock SCL Low Count
-#define    R_IC_FS_SCL_HCNT                  ( 0x1C) // Full Speed I2C Clock SCL High Count
-#define    R_IC_FS_SCL_LCNT                  ( 0x20) // Full Speed I2C Clock SCL Low Count
-#define    R_IC_HS_SCL_HCNT                  ( 0x24) // High Speed I2C Clock SCL High Count
-#define    R_IC_HS_SCL_LCNT                  ( 0x28) // High Speed I2C Clock SCL Low Count
-#define    R_IC_INTR_STAT                    ( 0x2C) // I2C Inetrrupt Status
-#define    R_IC_INTR_MASK                    ( 0x30) // I2C Interrupt Mask
-#define     I2C_INTR_GEN_CALL                 BIT11  // General call received
-#define     I2C_INTR_START_DET                BIT10
-#define     I2C_INTR_STOP_DET                 BIT9
-#define     I2C_INTR_ACTIVITY                 BIT8
-#define     I2C_INTR_TX_ABRT                  BIT6   // Set on NACK
-#define     I2C_INTR_TX_EMPTY                 BIT4
-#define     I2C_INTR_TX_OVER                  BIT3
-#define     I2C_INTR_RX_FULL                  BIT2   // Data bytes in RX FIFO over threshold
-#define     I2C_INTR_RX_OVER                  BIT1
-#define     I2C_INTR_RX_UNDER                 BIT0
-#define    R_IC_RawIntrStat                ( 0x34) // I2C Raw Interrupt Status
-#define    R_IC_RX_TL                        ( 0x38) // I2C Receive FIFO Threshold
-#define    R_IC_TX_TL                        ( 0x3C) // I2C Transmit FIFO Threshold
-#define    R_IC_CLR_INTR                     ( 0x40) // Clear Combined and Individual Interrupts
-#define    R_IC_CLR_RX_UNDER                 ( 0x44) // Clear RX_UNDER Interrupt
-#define    R_IC_CLR_RX_OVER                  ( 0x48) // Clear RX_OVERinterrupt
-#define    R_IC_CLR_TX_OVER                  ( 0x4C) // Clear TX_OVER interrupt
-#define    R_IC_CLR_RD_REQ                   ( 0x50) // Clear RD_REQ interrupt
-#define    R_IC_CLR_TX_ABRT                  ( 0x54) // Clear TX_ABRT interrupt
-#define    R_IC_CLR_RX_DONE                  ( 0x58) // Clear RX_DONE interrupt
-#define    R_IC_CLR_ACTIVITY                 ( 0x5C) // Clear ACTIVITY interrupt
-#define    R_IC_CLR_STOP_DET                 ( 0x60) // Clear STOP_DET interrupt
-#define    R_IC_CLR_START_DET                ( 0x64) // Clear START_DET interrupt
-#define    R_IC_CLR_GEN_CALL                 ( 0x68) // Clear GEN_CALL interrupt
-#define    R_IC_ENABLE                       ( 0x6C) // I2C Enable
-#define    R_IC_STATUS                       ( 0x70) // I2C Status
-
-#define    R_IC_SDA_HOLD                     ( 0x7C) // I2C IC_DEFAULT_SDA_HOLD//16bits
-
-#define     STAT_MST_ACTIVITY                 BIT5   // Master FSM Activity Status.
-#define     STAT_RFF                          BIT4   // RX FIFO is completely full
-#define     STAT_RFNE                         BIT3   // RX FIFO is not empty
-#define     STAT_TFE                          BIT2   // TX FIFO is completely empty
-#define     STAT_TFNF                         BIT1   // TX FIFO is not full
-
-#define    R_IC_TXFLR                        ( 0x74) // Transmit FIFO Level Register
-#define    R_IC_RXFLR                        ( 0x78) // Receive FIFO Level Register
-#define    R_IC_TX_ABRT_SOURCE               ( 0x80) // I2C Transmit Abort Status Register
-#define    R_IC_SLV_DATA_NACK_ONLY           ( 0x84) // Generate SLV_DATA_NACK Register
-#define    R_IC_DMA_CR                       ( 0x88) // DMA Control Register
-#define    R_IC_DMA_TDLR                     ( 0x8C) // DMA Transmit Data Level
-#define    R_IC_DMA_RDLR                     ( 0x90) // DMA Receive Data Level
-#define    R_IC_SDA_SETUP                    ( 0x94) // I2C SDA Setup Register
-#define    R_IC_ACK_GENERAL_CALL             ( 0x98) // I2C ACK General Call Register
-#define    R_IC_ENABLE_STATUS                ( 0x9C) // I2C Enable Status Register
-#define    R_IC_COMP_PARAM                   ( 0xF4) // Component Parameter Register
-#define    R_IC_COMP_VERSION                 ( 0xF8) // Component Version ID
-#define    R_IC_COMP_TYPE                    ( 0xFC) // Component Type
-
-#define    I2C_SS_SCL_HCNT_VALUE_100M        0x1DD
-#define    I2C_SS_SCL_LCNT_VALUE_100M        0x1E4
-#define    I2C_FS_SCL_HCNT_VALUE_100M        0x54
-#define    I2C_FS_SCL_LCNT_VALUE_100M        0x9a
-#define    I2C_HS_SCL_HCNT_VALUE_100M        0x7
-#define    I2C_HS_SCL_LCNT_VALUE_100M        0xE
-
-#define     IC_TAR_10BITADDR_MASTER           BIT12
-#define     FIFO_SIZE                         32
-#define     R_IC_INTR_STAT                    ( 0x2C) // I2c Inetrrupt Status
-#define     R_IC_INTR_MASK                    ( 0x30) // I2c Interrupt Mask
-#define     I2C_INTR_GEN_CALL                 BIT11  // General call received
-#define     I2C_INTR_START_DET                BIT10
-#define     I2C_INTR_STOP_DET                 BIT9
-#define     I2C_INTR_ACTIVITY                 BIT8
-#define     I2C_INTR_TX_ABRT                  BIT6   // Set on NACK
-#define     I2C_INTR_TX_EMPTY                 BIT4
-#define     I2C_INTR_TX_OVER                  BIT3
-#define     I2C_INTR_RX_FULL                  BIT2   // Data bytes in RX FIFO over threshold
-#define     I2C_INTR_RX_OVER                  BIT1
-#define     I2C_INTR_RX_UNDER                 BIT0
-
-#define R_PCH_LPIO_I2C_MEM_RESETS                 0x804 // Software Reset
-#define B_PCH_LPIO_I2C_MEM_RESETS_FUNC            BIT1  // Function Clock Domain Reset
-#define B_PCH_LPIO_I2C_MEM_RESETS_APB             BIT0  // APB Domain Reset
-#define R_PCH_LPSS_I2C_MEM_PCP                    0x800 // Private Clock Parameters
-
-#endif
\ No newline at end of file
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CAccess.h b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CAccess.h
deleted file mode 100644
index bf6ef4c747..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CAccess.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/** @file
-  Misc Registers Definition.
-  
-  Copyright (c) 2011  - 2015, Intel Corporation. All rights reserved.<BR>
-                                                                                   
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-                                                                               
---*/
-
-#ifndef _I2C_ACCESS_H_
-#define _I2C_ACCESS_H_
-
-#include "I2CIoLibPei.h"
-
-#define DEFAULT_PCI_BUS_NUMBER_PCH             0
-
-#define PCI_DEVICE_NUMBER_PCH_LPC              31
-#define PCI_FUNCTION_NUMBER_PCH_LPC            0
-
-#define R_PCH_LPC_ACPI_BASE                    0x40            // ABASE, 16bit
-#define R_PCH_LPC_ACPI_BASEADR                 0x400           // ABASE, 16bit
-#define B_PCH_LPC_ACPI_BASE_EN                 BIT1            // Enable Bit
-#define B_PCH_LPC_ACPI_BASE_BAR                0x0000FF80      // Base Address, 128 Bytes
-#define V_PCH_ACPI_PM1_TMR_MAX_VAL             0x1000000       // The timer is 24 bit overflow
-#define B_PCH_ACPI_PM1_TMR_VAL                 0xFFFFFF        // The timer value mask
-
-#define R_PCH_ACPI_PM1_TMR                     0x08            // Power Management 1 Timer
-#define V_PCH_ACPI_PM1_TMR_FREQUENCY           3579545         // Timer Frequency
-
-
-#define PchLpcPciCfg8(Register) I2CLibPeiMmioRead8 (MmPciAddress (0, DEFAULT_PCI_BUS_NUMBER_PCH, PCI_DEVICE_NUMBER_PCH_LPC, 0, Register))
-
-#define PCIEX_BASE_ADDRESS                     0xE0000000
-#define PCI_EXPRESS_BASE_ADDRESS               ((VOID *) (UINTN) PCIEX_BASE_ADDRESS)
-
-#define MmPciAddress( Segment, Bus, Device, Function, Register ) \
-  ( (UINTN)PCI_EXPRESS_BASE_ADDRESS + \
-    (UINTN)(Bus << 20) + \
-    (UINTN)(Device << 15) + \
-    (UINTN)(Function << 12) + \
-    (UINTN)(Register) \
-  )
-#endif
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.c
deleted file mode 100644
index d5f8dfd012..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/** @file
-  MicroSecondDelay implementation of ACPI Timer.
-  
-  Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
-                                                                                   
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-                                                                               
---*/
-
-#include "PiPei.h"
-#include "I2CAccess.h"
-#include "I2CDelayPei.h"
-#include <Library/DebugLib.h>
-#include <Library/PeiServicesTablePointerLib.h>
-#include <Ppi/Stall.h>
-
-/**
-  Stalls the CPU for at least the given number of microseconds.
-  Stalls the CPU for the number of microseconds specified by MicroSeconds.
-
-  @param  MicroSeconds  The minimum number of microseconds to delay.
-
-  @return EFI_STATUS
-
-**/
-EFI_STATUS
-EFIAPI
-MicroSecondDelay (
-  IN      UINTN                     MicroSeconds
-  )
-{
-
-  EFI_PEI_STALL_PPI              *StallPpi;
-  EFI_STATUS                     Status;
-  CONST EFI_PEI_SERVICES         **PeiServices;
-  
-  PeiServices = GetPeiServicesTablePointer();
-
-
-  Status = (**PeiServices).LocatePpi (PeiServices, &gEfiPeiStallPpiGuid, 0, NULL, &StallPpi);
-  ASSERT(!EFI_ERROR(Status));
-
-  StallPpi->Stall (PeiServices, StallPpi, MicroSeconds);
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.h b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.h
deleted file mode 100644
index 604f1f67c5..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CDelayPei.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/** @file
-  MicroSecondDelay implementation of ACPI Timer.
-
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef __I2C_DELAY_PEI__
-
-#define __I2C_DELAY_PEI__
-#include "PiPei.h"
-
-/**
-  Stalls the CPU for at least the given number of microseconds.
-
-  Stalls the CPU for the number of microseconds specified by MicroSeconds.
-
-  @param  MicroSeconds  The minimum number of microseconds to delay.
-
-  @return MicroSeconds
-
-**/
-EFI_STATUS
-EFIAPI
-MicroSecondDelay (
-  IN      UINTN                     MicroSeconds
-  );
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.c
deleted file mode 100644
index 6a37dbec1d..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/** @file
-  Functions for access I2C MMIO register.
-
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <PiPei.h>
-#include <Library/DebugLib.h>
-#include <Library/PeiServicesTablePointerLib.h>
-
-/**
-  Reads an 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address. The 8-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  If 8-bit MMIO register operations are not supported, then ASSERT().
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT8
-EFIAPI
-I2CLibPeiMmioRead8 (
-  IN UINTN Address
-  )
-{
-  UINT8 Value;
-
-  Value = *(volatile UINT8*)Address;
-  return Value;
-}
-
-/**
-  Reads a 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address. The 16-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 16-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT16
-EFIAPI
-I2CLibPeiMmioRead16 (
-  IN UINTN  Address
-  )
-{
-  UINT16 Value;
-
-  ASSERT ((Address & 1) == 0);
-  Value = *(volatile UINT16*)Address;
-  return Value;
-}
-
-/**
-  Writes a 16-bit MMIO register.
-
-  Writes the 16-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 16-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to write.
-  @param  Value   The value to write to the MMIO register.
-
-  @return Value.
-
-**/
-UINT16
-EFIAPI
-I2CLibPeiMmioWrite16 (
-  IN  UINTN   Address,
-  IN  UINT16  Value
-  )
-{
-  ASSERT ((Address & 1) == 0);
-  *(volatile UINT16*)Address = Value;
-  return Value;
-}
-
-/**
-  Reads a 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address. The 32-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT32
-EFIAPI
-I2CLibPeiMmioRead32 (
-  IN UINTN Address
-  )
-{
-  UINT32  Value;
-
-  ASSERT ((Address & 3) == 0);
-  Value = *(volatile UINT32*)Address;
-
-  return Value;
-}
-
-/**
-  Writes a 32-bit MMIO register.
-
-  Writes the 32-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to write.
-  @param  Value   The value to write to the MMIO register.
-
-  @return Value.
-
-**/
-UINT32
-EFIAPI
-I2CLibPeiMmioWrite32 (
-  IN      UINTN                     Address,
-  IN      UINT32                    Value
-  )
-{
-  ASSERT ((Address & 3) == 0);
-  *(volatile UINT32*)Address = Value;
-  return Value;
-}
-
-/**
-  OR a 32-bit MMIO register.
-
-  OR the 32-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to write OR.
-  @param  Value   The value to OR to the MMIO register.
-
-  @return Value.
-
-**/
-UINT32
-EFIAPI
-I2CLibPeiMmioOr32 (
-  IN      UINTN                     Address,
-  IN      UINT32                    OrData
-  )
-{
-  return I2CLibPeiMmioWrite32 (Address, I2CLibPeiMmioRead32(Address) | OrData);
-}
-
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.h b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.h
deleted file mode 100644
index b68bc1ed09..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CIoLibPei.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/** @file
-  Functions for access I2C MMIO register.
-
-  Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef __I2C_IOLIB_PEI__
-
-#define __I2C_IOLIB_PEI__
-#include <PiPei.h>
-
-
-/**
-  Reads an 8-bit MMIO register.
-
-  Reads the 8-bit MMIO register specified by Address. The 8-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  If 8-bit MMIO register operations are not supported, then ASSERT().
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-
-UINT8
-EFIAPI
-I2CLibPeiMmioRead8 (
-  IN      UINTN                     Address
-  );
-
-
-/**
-  Reads a 16-bit MMIO register.
-
-  Reads the 16-bit MMIO register specified by Address. The 16-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 16-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT16
-EFIAPI
-I2CLibPeiMmioRead16 (
-  IN      UINTN                     Address
-  );
-
-
-/**
-  Writes a 16-bit MMIO register.
-
-  Writes the 16-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  If 16-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 16-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to write.
-  @param  Value   The value to write to the MMIO register.
-
-  @return Value.
-
-**/
-UINT16
-EFIAPI
-I2CLibPeiMmioWrite16 (
-  IN      UINTN                     Address,
-  IN      UINT16                    Value
-  );
-
-
-/**
-  Reads a 32-bit MMIO register.
-
-  Reads the 32-bit MMIO register specified by Address. The 32-bit read value is
-  returned. This function must guarantee that all MMIO read and write
-  operations are serialized.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to read.
-
-  @return The value read.
-
-**/
-UINT32
-EFIAPI
-I2CLibPeiMmioRead32 (
-  IN      UINTN                     Address
-  );
-
-
-/**
-  Writes a 32-bit MMIO register.
-
-  Writes the 32-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to write.
-  @param  Value   The value to write to the MMIO register.
-
-  @return Value.
-
-**/
-UINT32
-EFIAPI
-I2CLibPeiMmioWrite32 (
-  IN      UINTN                     Address,
-  IN      UINT32                    Value
-  );
-
-
-/**
-  OR a 32-bit MMIO register.
-
-  OR the 32-bit MMIO register specified by Address with the value specified
-  by Value and returns Value. This function must guarantee that all MMIO read
-  and write operations are serialized.
-
-  If 32-bit MMIO register operations are not supported, then ASSERT().
-  If Address is not aligned on a 32-bit boundary, then ASSERT().
-
-  @param  Address The MMIO register to write OR.
-  @param  Value   The value to OR to the MMIO register.
-
-  @return Value.
-
-**/
-UINT32
-EFIAPI
-I2CLibPeiMmioOr32 (
-  IN      UINTN                     Address,
-  IN      UINT32                    OrData
-  );
-
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.c
deleted file mode 100644
index dd5cceb70d..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/** @file
-  I2C PEI Lib Instance.
-
-  Copyright (c) 1999- 2015, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "I2CDelayPei.h"
-#include "I2CIoLibPei.h"
-#include "I2CAccess.h"
-#include "I2CLibPei.h"
-#include <PlatformBaseAddresses.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/PeiServicesTablePointerLib.h>
-#include <Library/HobLib.h>
-#include <PchRegs/PchRegsPcu.h> 
-#include <PchRegs/PchRegsLpss.h> 
-
-#define LPSS_PCI_DEVICE_NUMBER  8
-
-#define R_PCH_LPIO_I2C_MEM_RESETS                 0x804 // Software Reset
-#define B_PCH_LPIO_I2C_MEM_RESETS_FUNC            BIT1  // Function Clock Domain Reset
-#define B_PCH_LPIO_I2C_MEM_RESETS_APB             BIT0  // APB Domain Reset
-#define R_PCH_LPSS_I2C_MEM_PCP                    0x800 // Private Clock Parameters
-
-#define PEI_TEPM_LPSS_DMA_BAR                     0xFE900000
-#define PEI_TEPM_LPSS_I2C0_BAR                    0xFE910000
-#define PCI_CONFIG_SPACE_SIZE                     0x10000
-
-EFI_GUID  mI2CPeiInitGuid = {
-  0x96DED71A, 0xB9E7, 0x4EAD, 0x96, 0x2C, 0x01, 0x69, 0x3C, 0xED, 0x2A, 0x64
-};
-
-
-UINT16 I2CGPIO[]= {
-  //
-  // 19.1.6  I2C0
-  // I2C0_SDA-OD-O -    write 0x2003CC81 to IOBASE + 0x0210
-  // I2C0_SCL-OD-O -    write 0x2003CC81 to IOBASE + 0x0200
-  //
-  0x0210,
-  0x0200,
-
-  //
-  // 19.1.7  I2C1
-  // I2C1_SDA-OD-O/I - write 0x2003CC81 to IOBASE + 0x01F0
-  // I2C1_SCL-OD-O/I - write 0x2003CC81 to IOBASE + 0x01E0
-  //
-  0x01F0,
-  0x01E0,
-
-  //
-  // 19.1.8  I2C2
-  // I2C2_SDA-OD-O/I - write 0x2003CC81 to IOBASE + 0x01D0
-  // I2C2_SCL-OD-O/I - write 0x2003CC81 to IOBASE + 0x01B0
-  //
-  0x01D0,
-  0x01B0,
-
-  //
-  // 19.1.9  I2C3
-  // I2C3_SDA-OD-O/I - write 0x2003CC81 to IOBASE + 0x0190
-  // I2C3_SCL-OD-O/I - write 0x2003CC81 to IOBASE + 0x01C0
-  // 
-  0x0190,
-  0x01C0,
-
-  //
-  // 19.1.10 I2C4
-  // I2C4_SDA-OD-O/I - write 0x2003CC81 to IOBASE + 0x01A0
-  // I2C4_SCL-OD-O/I - write 0x2003CC81 to IOBASE + 0x0170
-  //
-  0x01A0,
-  0x0170,
-
-  // 
-  // 19.1.11 I2C5
-  // I2C5_SDA-OD-O/I - write 0x2003CC81 to IOBASE + 0x0150
-  // I2C5_SCL-OD-O/I - write 0x2003CC81 to IOBASE + 0x0140
-  // 
-  0x0150,
-  0x0140,
-
-  //
-  // 19.1.12 I2C6
-  // I2C6_SDA-OD-O/I - write 0x2003CC81 to IOBASE + 0x0180
-  // I2C6_SCL-OD-O/I -  write 0x2003CC81 to IOBASE + 0x0160
-  // 
-  0x0180,
-  0x0160
-};
-
-/**
-  Constructor of this library.
-
-  @param   VOID
-
-  @return  EFI_SUCCESS
-**/
-EFI_STATUS
-EFIAPI
-IntelI2CPeiLibConstructor (
-  IN EFI_PEI_FILE_HANDLE     FileHandle,
-  IN CONST EFI_PEI_SERVICES  **PeiServices
-  )
-{
-  UINTN Index;
-  
-  for (Index = 0; Index < sizeof(I2CGPIO)/sizeof(UINT16); Index ++) {
-    I2CLibPeiMmioWrite32(IO_BASE_ADDRESS+I2CGPIO[Index], 0x2003CC81);
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Programe all I2C controllers on LPSS. 
-  
-  I2C0 is function 1 of LPSS. I2C1 is function 2 of LPSS, etc..
-
-  @param   VOID
-
-  @return  EFI_SUCCESS
-**/
-EFI_STATUS
-ProgramPciLpssI2C (
-  VOID
-  )
-{
-  UINT32       PmcBase;
-  UINT32       DevID;
-  UINTN        PciMmBase=0;
-  UINTN        Index;
-  UINTN        Bar0;
-  UINTN        Bar1;
-  DEBUG ((EFI_D_INFO, "Pei ProgramPciLpssI2C() Start\n"));
-  
-  //
-  // Set the VLV Function Disable Register to ZERO
-  //
-  PmcBase         = I2CLibPeiMmioRead32(PciD31F0RegBase + R_PCH_LPC_PMC_BASE) & B_PCH_LPC_PMC_BASE_BAR;
-  
-  if(I2CLibPeiMmioRead32(PmcBase + R_PCH_PMC_FUNC_DIS)&
-      (B_PCH_PMC_FUNC_DIS_LPSS2_FUNC1 | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC2
-       | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC3 | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC4 | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC5
-       | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC6 | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC7)) {
-    I2CLibPeiMmioWrite32(
-      PmcBase+R_PCH_PMC_FUNC_DIS,
-      I2CLibPeiMmioRead32(PmcBase + R_PCH_PMC_FUNC_DIS)& \
-      ~(B_PCH_PMC_FUNC_DIS_LPSS2_FUNC1 | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC2 \
-        | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC3 | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC4 \
-        | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC5 | B_PCH_PMC_FUNC_DIS_LPSS2_FUNC6|B_PCH_PMC_FUNC_DIS_LPSS2_FUNC7)
-      );
-    DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C() enable all I2C controllers\n"));
-  }
-
-  for(Index = 0; Index < LPSS_PCI_DEVICE_NUMBER; Index ++) {
-
-    PciMmBase = MmPciAddress (
-                  0,
-                  DEFAULT_PCI_BUS_NUMBER_PCH,
-                  PCI_DEVICE_NUMBER_PCH_LPSS_I2C,
-                  Index,
-                  0
-                  );
-    DevID =  I2CLibPeiMmioRead32(PciMmBase);
-
-    Bar0 = PEI_TEPM_LPSS_DMA_BAR + (Index * PCI_CONFIG_SPACE_SIZE);
-    Bar1 = Bar0 + 0x8000;
-
-    DEBUG((EFI_D_ERROR, "Program Pci Lpss I2C Device  Function=%x DevID=%08x\n", Index, DevID));
-    
-    //
-    // Check if device present
-    //
-    if (DevID  != 0xFFFFFFFF)  {
-      if(!(I2CLibPeiMmioRead32 (PciMmBase + R_PCH_LPSS_I2C_STSCMD) & B_PCH_LPSS_I2C_STSCMD_MSE)) {
-        //
-        // Program BAR 0
-        //
-        I2CLibPeiMmioWrite32((UINTN) (PciMmBase + R_PCH_LPSS_I2C_BAR), (UINT32)(Bar0 & B_PCH_LPSS_I2C_BAR_BA));
-        
-        DEBUG ((EFI_D_ERROR, "I2CBaseAddress1 = 0x%x \n",I2CLibPeiMmioRead32 (PciMmBase+R_PCH_LPSS_I2C_BAR)));
-        
-        //
-        // Program BAR 1
-        //
-        I2CLibPeiMmioWrite32 ((UINTN)(PciMmBase + R_PCH_LPSS_I2C_BAR1), (UINT32)(Bar1 & B_PCH_LPSS_I2C_BAR1_BA));
-        DEBUG ((EFI_D_ERROR, "I2CBaseAddress1 = 0x%x \n",I2CLibPeiMmioRead32(PciMmBase+R_PCH_LPSS_I2C_BAR1)));
-        
-        //
-        // Bus Master Enable & Memory Space Enable
-        //
-        I2CLibPeiMmioWrite32((UINTN) (PciMmBase + R_PCH_LPSS_I2C_STSCMD), (UINT32)(B_PCH_LPSS_I2C_STSCMD_BME | B_PCH_LPSS_I2C_STSCMD_MSE));
-      }
-      
-      //
-      // Release Resets
-      //
-      I2CLibPeiMmioWrite32 (Bar0 + R_PCH_LPIO_I2C_MEM_RESETS, (B_PCH_LPIO_I2C_MEM_RESETS_FUNC | B_PCH_LPIO_I2C_MEM_RESETS_APB));
-      
-      //
-      // Activate Clocks
-      //
-      I2CLibPeiMmioWrite32 (Bar0 + R_PCH_LPSS_I2C_MEM_PCP, 0x80020003);//No use for A0
-
-      DEBUG ((EFI_D_INFO, "ProgramPciLpssI2C() Programmed()\n"));
-    }
-
-  }
-  
-  DEBUG ((EFI_D_INFO, "Pei ProgramPciLpssI2C() End\n"));
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Disable I2C Bus.
-
-  @param I2cControllerIndex   Index of I2C controller.
-
-  @return EFI_SUCCESS
-**/
-EFI_STATUS
-I2cDisable (
-  IN UINT8 I2cControllerIndex
-  )
-{
-  UINTN  I2CBaseAddress;
-  UINT32 NumTries = 10000;  // 0.1 seconds
-  
-  I2CBaseAddress = (UINT32) PEI_TEPM_LPSS_I2C0_BAR + I2cControllerIndex * PCI_CONFIG_SPACE_SIZE;
-  
-  I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_ENABLE, 0);
-  while (0 != ( I2CLibPeiMmioRead16 (I2CBaseAddress + R_IC_ENABLE_STATUS ) & 1)) {
-    MicroSecondDelay (10);
-    NumTries --;
-    if(0 == NumTries) return EFI_NOT_READY;
-  }
-  
-  return EFI_SUCCESS;
-}
-
-/**
-  Enable I2C Bus.
-
-  @param I2cControllerIndex   Index of I2C controller.
-
-  @return EFI_SUCCESS
-**/
-EFI_STATUS
-I2cEnable (
-  IN UINT8 I2cControllerIndex
-  )
-{
-  UINTN   I2CBaseAddress;
-  UINT32 NumTries = 10000;  // 0.1 seconds
-  
-  I2CBaseAddress = (UINT32) PEI_TEPM_LPSS_I2C0_BAR+ I2cControllerIndex * PCI_CONFIG_SPACE_SIZE;
-  I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_ENABLE, 1);
-  while (0 == ( I2CLibPeiMmioRead16 ( I2CBaseAddress + R_IC_ENABLE_STATUS ) & 1)) {
-    MicroSecondDelay (10);
-    NumTries --;
-    if(0 == NumTries) return EFI_NOT_READY;
-  }
-  
-  return EFI_SUCCESS;
-}
-
-
-/**
-  Set the I2C controller bus clock frequency.
-
-  @param[in] This           Address of the library's I2C context structure
-  @param[in] PlatformData   Address of the platform configuration data
-  @param[in] BusClockHertz  New I2C bus clock frequency in Hertz
-
-  @retval RETURN_SUCCESS      The bus frequency was set successfully.
-  @retval RETURN_UNSUPPORTED  The controller does not support this frequency.
-
-**/
-EFI_STATUS
-I2cBusFrequencySet (
-  IN UINTN   I2CBaseAddress,
-  IN UINTN   BusClockHertz,
-  IN UINT16  *I2cMode
-  )
-{
-  DEBUG((EFI_D_INFO,"InputFreq BusClockHertz: %d\r\n",BusClockHertz));
-
-  *I2cMode = B_IC_RESTART_EN | B_IC_SLAVE_DISABLE | B_MASTER_MODE;
-
-  //
-  //  Set the 100 KHz clock divider
-  //
-  //  From Table 10 of the I2C specification
-  //
-  //    High: 4.00 uS
-  //    Low:  4.70 uS
-  //
-  I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_SS_SCL_HCNT, (UINT16)0x214 );
-  I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_SS_SCL_LCNT, (UINT16)0x272 );
-  
-  //
-  //    Set the 400 KHz clock divider
-  //
-  //    From Table 10 of the I2C specification
-  //
-  //      High: 0.60 uS
-  //      Low:  1.30 uS
-  //
-  I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_FS_SCL_HCNT, (UINT16)0x50 );
-  I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_FS_SCL_LCNT, (UINT16)0xAD );
-
-  switch ( BusClockHertz ) {
-    case 100 * 1000:
-      I2CLibPeiMmioWrite32 ( I2CBaseAddress + R_IC_SDA_HOLD, (UINT16)0x40);//100K
-      *I2cMode |= V_SPEED_STANDARD;
-      break;
-    case 400 * 1000:
-      I2CLibPeiMmioWrite32 ( I2CBaseAddress + R_IC_SDA_HOLD, (UINT16)0x32);//400K
-      *I2cMode |= V_SPEED_FAST;
-      break;
-    default:
-      I2CLibPeiMmioWrite32 ( I2CBaseAddress + R_IC_SDA_HOLD, (UINT16)0x09);//3.4M
-      *I2cMode |= V_SPEED_HIGH;
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Initializes the host controller to execute I2C commands.
-
-  @param I2cControllerIndex Index of I2C controller in LPSS device. 0 represents I2C0, which is PCI function 1 of LPSS device.   
-                                
-  @return EFI_SUCCESS       Opcode initialization on the I2C host controller completed.
-  @return EFI_DEVICE_ERROR  Device error, operation failed.
-**/
-EFI_STATUS
-I2CInit (
-  UINT8 I2cControllerIndex, 
-  UINT16 SlaveAddress
-  )
-{
-  EFI_STATUS   Status;
-  UINT32       NumTries = 0;
-  UINTN        I2CBaseAddress;
-  UINT16       I2cMode;
-  UINTN        PciMmBase=0;
-
-
-  PciMmBase = MmPciAddress (
-                0,
-                DEFAULT_PCI_BUS_NUMBER_PCH,
-                PCI_DEVICE_NUMBER_PCH_LPSS_I2C,
-                (I2cControllerIndex + 1),
-                0
-                );
-
-  I2CBaseAddress = I2CLibPeiMmioRead32 (PciMmBase+R_PCH_LPSS_I2C_BAR);
-
-  //
-  //  Verify the parameters
-  //
-  if (1023 < SlaveAddress ) {
-    Status =  EFI_INVALID_PARAMETER;
-    DEBUG((EFI_D_INFO,"I2cStartRequest Exit with Status %r\r\n", Status));
-    return Status;
-  }
-
-  if(I2CBaseAddress ==  (PEI_TEPM_LPSS_I2C0_BAR + I2cControllerIndex * PCI_CONFIG_SPACE_SIZE)) {
-    return EFI_SUCCESS;
-  }
-  ProgramPciLpssI2C();
-
-  I2CBaseAddress = (UINT32) (PEI_TEPM_LPSS_I2C0_BAR + I2cControllerIndex * PCI_CONFIG_SPACE_SIZE);
-  DEBUG ((EFI_D_ERROR, "I2CBaseAddress = 0x%x \n",I2CBaseAddress));
-  NumTries = 10000; // 1 seconds
-  while ((1 == ( I2CLibPeiMmioRead32 ( I2CBaseAddress + R_IC_STATUS) & STAT_MST_ACTIVITY ))) {
-    MicroSecondDelay(10);
-    NumTries --;
-    if(0 == NumTries)
-      return EFI_DEVICE_ERROR;
-  }
-
-  Status = I2cDisable (I2cControllerIndex);
-  DEBUG((EFI_D_INFO, "I2cDisable Status = %r\r\n", Status));
-
-  I2cBusFrequencySet(I2CBaseAddress, 400 * 1000, &I2cMode);//Set I2cMode
-
-  I2CLibPeiMmioWrite16(I2CBaseAddress + R_IC_INTR_MASK, 0x0);
-  if (0x7F < SlaveAddress) {
-    SlaveAddress = (SlaveAddress & 0x3ff ) | IC_TAR_10BITADDR_MASTER;
-  }
-  I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_TAR, (UINT16) SlaveAddress );
-  I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_RX_TL, 0);
-  I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_TX_TL, 0 );
-  I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_CON, I2cMode);
-
-  Status = I2cEnable(I2cControllerIndex);
-  DEBUG((EFI_D_INFO, "I2cEnable Status = %r\r\n", Status));
-  I2CLibPeiMmioRead16 ( I2CBaseAddress + R_IC_CLR_TX_ABRT );
-  
-  return EFI_SUCCESS;
-}
-
-/**
-  Reads a Byte from I2C Device.
- 
-  @param  I2cControllerIndex  I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress        Device Address from which the byte value has to be read
-  @param  Offset              Offset from which the data has to be read
-  @param  *Byte               Address to which the value read has to be stored
-                                
-  @return  EFI_SUCCESS        If the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR   Operation Failed, Device Error
-**/
-EFI_STATUS ByteReadI2CBasic(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINTN ReadBytes,
-  OUT UINT8 *ReadBuffer,
-  IN  UINT8 Start,
-  IN  UINT8 End
-  )
-{
-
-  EFI_STATUS Status;
-  UINT32 I2cStatus;
-  UINT16 ReceiveData;
-  UINT8 *ReceiveDataEnd;
-  UINT8 *ReceiveRequest;
-  UINT16 RawIntrStat;
-  UINTN   I2CBaseAddress;
-
-  I2CBaseAddress = (UINT32)(PEI_TEPM_LPSS_I2C0_BAR + I2cControllerIndex * PCI_CONFIG_SPACE_SIZE);
-
-  Status = EFI_SUCCESS;
-
-  I2CInit(I2cControllerIndex, SlaveAddress);
-
-  ReceiveDataEnd = &ReadBuffer [ReadBytes];
-  if(ReadBytes) {
-    ReceiveRequest = ReadBuffer;
-    DEBUG((EFI_D_INFO,"Read: ---------------%d bytes to RX\r\n",ReceiveDataEnd - ReceiveRequest));
-
-    while ((ReceiveDataEnd > ReceiveRequest) || (ReceiveDataEnd > ReadBuffer)) {
-      //
-      // Check for NACK
-      //
-      RawIntrStat = I2CLibPeiMmioRead16 (I2CBaseAddress + R_IC_RawIntrStat );
-      if ( 0 != (RawIntrStat & I2C_INTR_TX_ABRT )) {
-        I2CLibPeiMmioRead16 ( I2CBaseAddress + R_IC_CLR_TX_ABRT );
-        Status = RETURN_DEVICE_ERROR;
-        DEBUG((EFI_D_INFO,"TX ABRT ,%d bytes hasn't been transferred\r\n",ReceiveDataEnd - ReceiveRequest));
-        break;
-      }
-      
-      //
-      // Determine if another byte was received
-      //
-      I2cStatus = I2CLibPeiMmioRead16 ( I2CBaseAddress + R_IC_STATUS );
-      if ( 0 != ( I2cStatus & STAT_RFNE )) {
-        ReceiveData = I2CLibPeiMmioRead16 ( I2CBaseAddress + R_IC_DATA_CMD );
-        *ReadBuffer++ = (UINT8)ReceiveData;
-        DEBUG((EFI_D_INFO,"MmioRead32 ,1 byte 0x:%x is received\r\n",ReceiveData));
-      }
-
-      if(ReceiveDataEnd==ReceiveRequest) {
-        //
-        // Waiting the last request to get data and make (ReceiveDataEnd > ReadBuffer) =TRUE.
-        //
-        continue;
-      }
-      
-      //
-      // Wait until a read request will fit
-      //
-      if ( 0 == ( I2cStatus & STAT_TFNF )) {
-        MicroSecondDelay ( 10 );
-        continue;
-      }
-      
-      //
-      // Issue the next read request
-      //
-      if(End && Start ) {
-        I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD|B_CMD_RESTART|B_CMD_STOP);
-      } else if (!End && Start ) {
-        I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD|B_CMD_RESTART);
-      } else if (End && !Start ) {
-        I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD|B_CMD_STOP);
-      } else if (!End && !Start ) {
-        I2CLibPeiMmioWrite16 ( I2CBaseAddress + R_IC_DATA_CMD, B_READ_CMD);
-      }
-      ReceiveRequest += 1;
-    }
-
-  }
-  return Status;
-
-}
-
-/**
-  Writes a Byte to I2C Device.
- 
-  @param  I2cControllerIndex   I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress         Device Address from which the byte value has to be written
-  @param  Offset               Offset from which the data has to be read
-  @param  *Byte                Address to which the value written is stored
-                                
-  @return  EFI_SUCCESS         IF the byte value has been successfully written
-  @return  EFI_DEVICE_ERROR    Operation Failed, Device Error
-**/
-EFI_STATUS 
-ByteWriteI2CBasic(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINTN WriteBytes,
-  IN  UINT8 *WriteBuffer,
-  IN  UINT8 Start,
-  IN  UINT8 End
-  )
-{
-
-  EFI_STATUS Status;
-  UINT32 I2cStatus;
-  UINT8 *TransmitEnd;
-  UINT16 RawIntrStat;
-  UINTN   I2CBaseAddress;
-
-  I2CBaseAddress = (UINT32)PEI_TEPM_LPSS_I2C0_BAR+ I2cControllerIndex * PCI_CONFIG_SPACE_SIZE;
-
-  Status = EFI_SUCCESS;
-
-  I2CInit(I2cControllerIndex, SlaveAddress);
-
-  TransmitEnd = &WriteBuffer [WriteBytes];
-  if( WriteBytes ) {
-
-    DEBUG((EFI_D_INFO,"Write: --------------%d bytes to TX\r\n", TransmitEnd - WriteBuffer));
-
-    while ( TransmitEnd > WriteBuffer) {
-      I2cStatus = I2CLibPeiMmioRead16 (I2CBaseAddress + R_IC_STATUS);
-      RawIntrStat = I2CLibPeiMmioRead16 (I2CBaseAddress + R_IC_RawIntrStat);
-      if ( 0 != (RawIntrStat & I2C_INTR_TX_ABRT)) {
-        I2CLibPeiMmioRead16 (I2CBaseAddress + R_IC_CLR_TX_ABRT);
-        Status = RETURN_DEVICE_ERROR;
-        DEBUG((EFI_D_ERROR,"TX ABRT TransmitEnd:0x%x WriteBuffer:0x%x\r\n", TransmitEnd, WriteBuffer));
-        break;
-      }
-      if (0 == ( I2cStatus & STAT_TFNF)) {
-        continue;
-      }
-      if(End && Start) {
-        I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++) | B_CMD_RESTART | B_CMD_STOP);
-      } else if (!End && Start ) {
-        I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++) | B_CMD_RESTART);
-      } else if (End && !Start ) {
-        I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++) | B_CMD_STOP);
-      } else if (!End && !Start ) {
-        I2CLibPeiMmioWrite16 (I2CBaseAddress + R_IC_DATA_CMD, (*WriteBuffer++));
-      }
-      
-      // Add a small delay to work around some odd behavior being seen.  Without this delay bytes get dropped.
-      MicroSecondDelay ( FIFO_WRITE_DELAY );
-    }
-
-  }
-  
-  if(EFI_ERROR(Status)) {
-    DEBUG((EFI_D_INFO,"I2cStartRequest Exit with Status %r\r\n",Status));
-  }
-    
-  return Status;
-}
-
-/**
-  Reads a Byte from I2C Device.
- 
-  @param  I2cControllerIndex   I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress         Device Address from which the byte value has to be read
-  @param  Offset               Offset from which the data has to be read
-  @param  ReadBytes            Number of bytes to be read
-  @param  *ReadBuffer          Address to which the value read has to be stored
-                                
-  @return  EFI_SUCCESS       IF the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR  Operation Failed, Device Error
-**/
-EFI_STATUS 
-ByteReadI2C(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINT8 Offset,
-  IN  UINTN ReadBytes,
-  OUT UINT8 *ReadBuffer
-  )
-{
-  EFI_STATUS        Status;
-
-  DEBUG ((EFI_D_ERROR, "ByteReadI2C:---offset:0x%x\n",Offset));
-  Status = ByteWriteI2CBasic(I2cControllerIndex, SlaveAddress, 1, &Offset,TRUE,FALSE);
-  Status = ByteReadI2CBasic(I2cControllerIndex, SlaveAddress, ReadBytes, ReadBuffer, TRUE, TRUE);
-
-  return Status;
-}
-
-/**
-  Writes a Byte to I2C Device.
- 
-  @param  I2cControllerIndex  I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress        Device Address from which the byte value has to be written
-  @param  Offset              Offset from which the data has to be written
-  @param  WriteBytes          Number of bytes to be written
-  @param  *Byte               Address to which the value written is stored
-                                
-  @return  EFI_SUCCESS       IF the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR  Operation Failed, Device Error
-**/
-EFI_STATUS ByteWriteI2C(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINT8 Offset,
-  IN  UINTN WriteBytes,
-  IN  UINT8 *WriteBuffer
-  )
-{
-  EFI_STATUS        Status;
-
-  DEBUG ((EFI_D_ERROR, "ByteWriteI2C:---offset/bytes/buf:0x%x,0x%x,0x%x,0x%x\n",Offset,WriteBytes,WriteBuffer,*WriteBuffer));
-  Status = ByteWriteI2CBasic(I2cControllerIndex, SlaveAddress, 1, &Offset, TRUE, FALSE);
-  Status = ByteWriteI2CBasic(I2cControllerIndex, SlaveAddress, WriteBytes, WriteBuffer, FALSE, TRUE);
-
-  return Status;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.h b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.h
deleted file mode 100644
index 47536aebf7..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.h
+++ /dev/null
@@ -1,280 +0,0 @@
-/** @file
-  I2C PEI Lib Instance.
-
-  Copyright (c) 1999- 2015, Intel Corporation. All rights reserved.<BR>
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef I2C_PEI_REGS_H
-#define I2C_PEI_REGS_H
-
-#include "PiPei.h"
-
-#define R_PCH_LPC_PMC_BASE                        0x44
-#define B_PCH_LPC_PMC_BASE_BAR                    0xFFFFFE00
-#define R_PCH_PMC_FUNC_DIS                        0x34  // Function Disable Register
-#define PCIEX_BASE_ADDRESS                        0xE0000000
-#define PciD31F0RegBase                           PCIEX_BASE_ADDRESS + (UINT32) (31 << 15)
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC7             BIT7  // LPSS SPI Disable
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC6             BIT6  // LPSS HSUART #2 Disable
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC5             BIT5  // LPSS HSUART #1 Disable
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC4             BIT4  // LPSS I2S Disable
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC3             BIT3  // LPSS PCM Disable
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC2             BIT2  // LPSS I2C #2 Disable
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC1             BIT1  // LPSS I2C #1 Disable
-#define B_PCH_PMC_FUNC_DIS_LPSS_FUNC0             BIT0  // LPSS DMA Disable
-
-
-#define DEFAULT_PCI_BUS_NUMBER_PCH       0
-
-#define R_PCH_LPSS_I2C_STSCMD                     0x04  // Status & Command
-#define B_PCH_LPSS_I2C_STSCMD_RMA                 BIT29 // RMA
-#define B_PCH_LPSS_I2C_STSCMD_RCA                 BIT28 // RCA
-#define B_PCH_LPSS_I2C_STSCMD_CAPLIST             BIT20 // Capability List
-#define B_PCH_LPSS_I2C_STSCMD_INTRSTS             BIT19 // Interrupt Status
-#define B_PCH_LPSS_I2C_STSCMD_INTRDIS             BIT10 // Interrupt Disable
-#define B_PCH_LPSS_I2C_STSCMD_SERREN              BIT8  // SERR# Enable
-#define B_PCH_LPSS_I2C_STSCMD_BME                 BIT2  // Bus Master Enable
-#define B_PCH_LPSS_I2C_STSCMD_MSE                 BIT1  // Memory Space Enable
-
-#define R_PCH_LPSS_I2C_BAR                        0x10  // BAR
-#define B_PCH_LPSS_I2C_BAR_BA                     0xFFFFF000 // Base Address
-#define B_PCH_LPSS_I2C_BAR_SI                     0x00000FF0 // Size Indicator
-#define B_PCH_LPSS_I2C_BAR_PF                     BIT3  // Prefetchable
-#define B_PCH_LPSS_I2C_BAR_TYPE                   (BIT2 | BIT1) // Type
-#define B_PCH_LPSS_I2C_BAR_MS                     BIT0  // Message Space
-
-#define R_PCH_LPSS_I2C_BAR1                       0x14  // BAR 1
-#define B_PCH_LPSS_I2C_BAR1_BA                    0xFFFFF000 // Base Address
-#define B_PCH_LPSS_I2C_BAR1_SI                    0x00000FF0 // Size Indicator
-#define B_PCH_LPSS_I2C_BAR1_PF                    BIT3  // Prefetchable
-#define B_PCH_LPSS_I2C_BAR1_TYPE                  (BIT2 | BIT1) // Type
-#define B_PCH_LPSS_I2C_BAR1_MS                    BIT0  // Message Space
-
-#define NUM_RETRIES         0xFFFF
-
-//
-// LPIO I2C Module Memory Space Registers
-//
-#define R_PCH_LPIO_I2C_MEM_RESETS                 0x804 // Software Reset
-#define B_PCH_LPIO_I2C_MEM_RESETS_FUNC            BIT1  // Function Clock Domain Reset
-#define B_PCH_LPIO_I2C_MEM_RESETS_APB             BIT0  // APB Domain Reset
-
-#define R_PCH_LPSS_I2C_MEM_PCP                    0x800 // Private Clock Parameters
-
-#define  bit(a)                   1 << (a)
-
-//
-// MMIO Register Definitions
-//
-
-#define  I2C0_REG_SPACE_ADDR_BASE            0xFF138000  //01K
-
-#define    R_IC_CON                          ( 0x00) // I2C Control
-#define     B_IC_RESTART_EN                  BIT5
-#define     B_IC_SLAVE_DISABLE               BIT6
-#define     V_SPEED_STANDARD                 0x02
-#define     V_SPEED_FAST                     0x04
-#define     V_SPEED_HIGH                     0x06
-#define     B_MASTER_MODE                    BIT0
-
-#define    R_IC_TAR                          ( 0x04) // I2C Target Address
-#define     IC_TAR_10BITADDR_MASTER           BIT12
-
-#define    R_IC_SAR                          ( 0x08) // I2C Slave Address
-#define    R_IC_HS_MADDR                     ( 0x0C) // I2C HS MasterMode Code Address
-#define    R_IC_DATA_CMD                     ( 0x10) // I2C Rx/Tx Data Buffer and Command
-
-#define    B_READ_CMD                         BIT8    // 1 = read, 0 = write
-#define    B_CMD_STOP                         BIT9    // 1 = STOP
-#define    B_CMD_RESTART                      BIT10   // 1 = IC_RESTART_EN
-
-#define    V_WRITE_CMD_MASK                  ( 0xFF)
-
-#define    R_IC_SS_SCL_HCNT                  ( 0x14) // Standard Speed I2C Clock SCL High Count
-#define    R_IC_SS_SCL_LCNT                  ( 0x18) // Standard Speed I2C Clock SCL Low Count
-#define    R_IC_FS_SCL_HCNT                  ( 0x1C) // Full Speed I2C Clock SCL High Count
-#define    R_IC_FS_SCL_LCNT                  ( 0x20) // Full Speed I2C Clock SCL Low Count
-#define    R_IC_HS_SCL_HCNT                  ( 0x24) // High Speed I2C Clock SCL High Count
-#define    R_IC_HS_SCL_LCNT                  ( 0x28) // High Speed I2C Clock SCL Low Count
-#define    R_IC_INTR_STAT                    ( 0x2C) // I2C Inetrrupt Status
-#define    R_IC_INTR_MASK                    ( 0x30) // I2C Interrupt Mask
-#define     I2C_INTR_GEN_CALL                 BIT11  // General call received
-#define     I2C_INTR_START_DET                BIT10
-#define     I2C_INTR_STOP_DET                 BIT9
-#define     I2C_INTR_ACTIVITY                 BIT8
-#define     I2C_INTR_TX_ABRT                  BIT6   // Set on NACK
-#define     I2C_INTR_TX_EMPTY                 BIT4
-#define     I2C_INTR_TX_OVER                  BIT3
-#define     I2C_INTR_RX_FULL                  BIT2   // Data bytes in RX FIFO over threshold
-#define     I2C_INTR_RX_OVER                  BIT1
-#define     I2C_INTR_RX_UNDER                 BIT0
-#define    R_IC_RawIntrStat                ( 0x34) // I2C Raw Interrupt Status
-#define    R_IC_RX_TL                        ( 0x38) // I2C Receive FIFO Threshold
-#define    R_IC_TX_TL                        ( 0x3C) // I2C Transmit FIFO Threshold
-#define    R_IC_CLR_INTR                     ( 0x40) // Clear Combined and Individual Interrupts
-#define    R_IC_CLR_RX_UNDER                 ( 0x44) // Clear RX_UNDER Interrupt
-#define    R_IC_CLR_RX_OVER                  ( 0x48) // Clear RX_OVERinterrupt
-#define    R_IC_CLR_TX_OVER                  ( 0x4C) // Clear TX_OVER interrupt
-#define    R_IC_CLR_RD_REQ                   ( 0x50) // Clear RD_REQ interrupt
-#define    R_IC_CLR_TX_ABRT                  ( 0x54) // Clear TX_ABRT interrupt
-#define    R_IC_CLR_RX_DONE                  ( 0x58) // Clear RX_DONE interrupt
-#define    R_IC_CLR_ACTIVITY                 ( 0x5C) // Clear ACTIVITY interrupt
-#define    R_IC_CLR_STOP_DET                 ( 0x60) // Clear STOP_DET interrupt
-#define    R_IC_CLR_START_DET                ( 0x64) // Clear START_DET interrupt
-#define    R_IC_CLR_GEN_CALL                 ( 0x68) // Clear GEN_CALL interrupt
-#define    R_IC_ENABLE                       ( 0x6C) // I2C Enable
-#define    R_IC_STATUS                       ( 0x70) // I2C Status
-
-#define    R_IC_SDA_HOLD                     ( 0x7C) // I2C IC_DEFAULT_SDA_HOLD//16bits
-
-#define     STAT_MST_ACTIVITY                 BIT5   // Master FSM Activity Status.
-#define     STAT_RFF                          BIT4   // RX FIFO is completely full
-#define     STAT_RFNE                         BIT3   // RX FIFO is not empty
-#define     STAT_TFE                          BIT2   // TX FIFO is completely empty
-#define     STAT_TFNF                         BIT1   // TX FIFO is not full
-
-#define    R_IC_TXFLR                        ( 0x74) // Transmit FIFO Level Register
-#define    R_IC_RXFLR                        ( 0x78) // Receive FIFO Level Register
-#define    R_IC_TX_ABRT_SOURCE               ( 0x80) // I2C Transmit Abort Status Register
-#define    R_IC_SLV_DATA_NACK_ONLY           ( 0x84) // Generate SLV_DATA_NACK Register
-#define    R_IC_DMA_CR                       ( 0x88) // DMA Control Register
-#define    R_IC_DMA_TDLR                     ( 0x8C) // DMA Transmit Data Level
-#define    R_IC_DMA_RDLR                     ( 0x90) // DMA Receive Data Level
-#define    R_IC_SDA_SETUP                    ( 0x94) // I2C SDA Setup Register
-#define    R_IC_ACK_GENERAL_CALL             ( 0x98) // I2C ACK General Call Register
-#define    R_IC_ENABLE_STATUS                ( 0x9C) // I2C Enable Status Register
-#define    R_IC_COMP_PARAM                   ( 0xF4) // Component Parameter Register
-#define    R_IC_COMP_VERSION                 ( 0xF8) // Component Version ID
-#define    R_IC_COMP_TYPE                    ( 0xFC) // Component Type
-
-#define I2C_SS_SCL_HCNT_VALUE_100M           0x1DD
-#define I2C_SS_SCL_LCNT_VALUE_100M           0x1E4
-#define I2C_FS_SCL_HCNT_VALUE_100M           0x54
-#define I2C_FS_SCL_LCNT_VALUE_100M           0x9a
-#define I2C_HS_SCL_HCNT_VALUE_100M           0x7
-#define I2C_HS_SCL_LCNT_VALUE_100M           0xE
-
-//
-// FIFO write workaround value.
-//
-#define     FIFO_WRITE_DELAY    2
-#define     IC_TAR_10BITADDR_MASTER           BIT12
-#define     FIFO_SIZE                         32
-#define     R_IC_INTR_STAT                    ( 0x2C) // I2c Inetrrupt Status
-#define     R_IC_INTR_MASK                    ( 0x30) // I2c Interrupt Mask
-#define     I2C_INTR_GEN_CALL                 BIT11  // General call received
-#define     I2C_INTR_START_DET                BIT10
-#define     I2C_INTR_STOP_DET                 BIT9
-#define     I2C_INTR_ACTIVITY                 BIT8
-#define     I2C_INTR_TX_ABRT                  BIT6   // Set on NACK
-#define     I2C_INTR_TX_EMPTY                 BIT4
-#define     I2C_INTR_TX_OVER                  BIT3
-#define     I2C_INTR_RX_FULL                  BIT2   // Data bytes in RX FIFO over threshold
-#define     I2C_INTR_RX_OVER                  BIT1
-#define     I2C_INTR_RX_UNDER                 BIT0
-
-/**
-  Programe all I2C controllers on LPSS. 
-  
-  I2C0 is function 1 of LPSS. I2C1 is function 2 of LPSS, etc..
-
-  @param   VOID
-
-  @return  EFI_SUCCESS
-**/
-EFI_STATUS
-ProgramPciLpssI2C (
-  VOID
-  );
-
-/**
-  Reads a Byte from I2C Device.
- 
-  @param  I2cControllerIndex  I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress        Device Address from which the byte value has to be read
-  @param  Offset              Offset from which the data has to be read
-  @param  *Byte               Address to which the value read has to be stored
-  @param  Start               Whether a RESTART is issued before the byte is sent or received
-  @param  End                 Whether STOP is generated after a data byte is sent or received  
-                                  
-  @return  EFI_SUCCESS        If the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR   Operation Failed, Device Error
-**/
-EFI_STATUS
-ByteReadI2CBasic(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINTN ReadBytes,
-  OUT UINT8 *ReadBuffer,
-  IN  UINT8 Start,
-  IN  UINT8 End
-  );
-
-/**
-  Writes a Byte to I2C Device.
- 
-  @param  I2cControllerIndex   I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress         Device Address from which the byte value has to be written
-  @param  Offset               Offset from which the data has to be read
-  @param  *Byte                Address to which the value written is stored
-  @param  Start               Whether a RESTART is issued before the byte is sent or received
-  @param  End                 Whether STOP is generated after a data byte is sent or received  
-                                  
-  @return  EFI_SUCCESS         IF the byte value has been successfully written
-  @return  EFI_DEVICE_ERROR    Operation Failed, Device Error
-**/
-EFI_STATUS
-ByteWriteI2CBasic(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINTN WriteBytes,
-  IN  UINT8 *WriteBuffer,
-  IN  UINT8 Start,
-  IN  UINT8 End
-  );
-
-/**
-  Reads a Byte from I2C Device.
- 
-  @param  I2cControllerIndex   I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress         Device Address from which the byte value has to be read
-  @param  Offset               Offset from which the data has to be read
-  @param  ReadBytes            Number of bytes to be read
-  @param  *ReadBuffer          Address to which the value read has to be stored
-                                
-  @return  EFI_SUCCESS       IF the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR  Operation Failed, Device Error
-**/
-EFI_STATUS
-ByteReadI2C(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINT8 Offset,
-  IN  UINTN ReadBytes,
-  OUT UINT8 *ReadBuffer
-  );
-
-/**
-  Writes a Byte to I2C Device.
- 
-  @param  I2cControllerIndex  I2C Bus no to which the I2C device has been connected
-  @param  SlaveAddress        Device Address from which the byte value has to be written
-  @param  Offset              Offset from which the data has to be written
-  @param  WriteBytes          Number of bytes to be written
-  @param  *Byte               Address to which the value written is stored
-                                
-  @return  EFI_SUCCESS       IF the byte value has been successfully read
-  @return  EFI_DEVICE_ERROR  Operation Failed, Device Error
-**/
-EFI_STATUS
-ByteWriteI2C(
-  IN  UINT8 I2cControllerIndex,
-  IN  UINT8 SlaveAddress,
-  IN  UINT8 Offset,
-  IN  UINTN WriteBytes,
-  IN  UINT8 *WriteBuffer
-  );
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.inf b/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.inf
deleted file mode 100644
index a78212a0e7..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/I2CLibPei/I2CLibPei.inf
+++ /dev/null
@@ -1,40 +0,0 @@
-## @file
-#  Instance of I2C Library.
-#
-#  Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
-#
-#  SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = I2CLibPei
-  FILE_GUID                      = 8EF61509-890B-4FF2-B352-1C0E9CDDEC8B
-  MODULE_TYPE                    = PEIM
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = LockBoxLib|PEIM
-  CONSTRUCTOR                    = IntelI2CPeiLibConstructor
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources.common]
-  I2CLibPei.c
-  I2CIoLibPei.c
-
-[LibraryClasses]
-  TimerLib
-
-[PPIs]
-  gEfiPeiStallPpiGuid
-
-
-[Packages]
-  MdePkg/MdePkg.dec
-  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
-
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.c
deleted file mode 100644
index b99c3b0122..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/** @file
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-**/
-#include "PiPei.h"
-#include <Library/HobLib.h>
-#include <Library/BaseLib.h>
-#include <Library/DebugLib.h>
-#include <Guid/MemoryConfigData.h>
-#include <PlatformFspLib.h>
-
-EFI_STATUS
-PlatformHobCreateFromFsp (
-  IN CONST EFI_PEI_SERVICES     **PeiServices,
-  VOID                          *HobList
-  )
-{
-  VOID       *HobData;
-  VOID       *NewHobData;
-  UINTN      DataSize;
-
-  //
-  // Other hob, todo: put this into FspWrapPlatformLib
-  //
-  if ((HobList = GetNextGuidHob (&gEfiMemoryConfigDataGuid, HobList)) != NULL) {
-    HobData = GET_GUID_HOB_DATA (HobList);
-    DataSize = GET_GUID_HOB_DATA_SIZE(HobList);
-    DEBUG((EFI_D_ERROR, "gEfiMemoryConfigDataGuid Hob found: 0x%x.\n", DataSize));
-
-    NewHobData = BuildGuidHob (&gEfiMemoryConfigDataGuid, DataSize);
-    (*PeiServices)->CopyMem (
-                      NewHobData,
-                      HobData,
-                      DataSize
-                      );
-  }
-
-  return EFI_SUCCESS;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.inf b/Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.inf
deleted file mode 100644
index ddd97c5ad9..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/PlatformFspLib/PlatformFspLib.inf
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-#
-# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#
-#    FSP Platform HOB Library
-#
-#
-#
-##
-
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = PlatformFspLib
-  FILE_GUID                      = 1305A712-33A6-4fa7-BA59-AEAC3362931A
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = PlatformFspLib
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64 EBC
-#
-
-[Sources]
-  PlatformFspLib.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-  Vlv2TbltDevicePkg/PlatformPkg.dec
-  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
-  IntelFspWrapperPkg/IntelFspWrapperPkg.dec
-
-[LibraryClasses]
-  BaseLib
-  DebugLib
-  HobLib
-
-[Guids]
-  gEfiMemoryConfigDataGuid
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/PlatformSerialPortLib.h b/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/PlatformSerialPortLib.h
deleted file mode 100644
index fe47e8f68d..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/PlatformSerialPortLib.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/** @file
-  Header file of Serial port hardware definition.
-
-  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
-                                                                                   
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef __PLATFORM_SERIAL_PORT_LIB_H_
-#define __PLATFORM_SERIAL_PORT_LIB_H_
-
-#include <Base.h>
-#include <Library/BaseLib.h>
-#include <Library/IoLib.h>
-#include <Library/PcdLib.h>
-#include <Library/SerialPortLib.h>
-
-//
-// UART Register Offsets
-//
-#define BAUD_LOW_OFFSET   0x00
-#define BAUD_HIGH_OFFSET  0x01
-#define IER_OFFSET        0x01
-#define LCR_SHADOW_OFFSET 0x01
-#define FCR_SHADOW_OFFSET 0x02
-#define IR_CONTROL_OFFSET 0x02
-#define FCR_OFFSET        0x02
-#define EIR_OFFSET        0x02
-#define BSR_OFFSET        0x03
-#define LCR_OFFSET        0x03
-#define MCR_OFFSET        0x04
-#define LSR_OFFSET        0x05
-#define MSR_OFFSET        0x06
-
-//
-// UART Register Bit Defines
-//
-#define LSR_TXRDY 0x20
-#define LSR_RXDA  0x01
-#define DLAB      0x01
-
-#define UART_DATA    8
-#define UART_STOP    1
-#define UART_PARITY  0
-#define UART_BREAK_SET  0
-
-VOID
-InitializeSio (
-  VOID
-  );
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.c
deleted file mode 100644
index f6012593d0..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/** @file
-  Serial I/O Port library functions with no library constructor/destructor
-
-  Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
-                                                                                   
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include "PlatformSerialPortLib.h"
-
-UINT16 gComBase  = 0x3f8;
-UINTN  gBps      = 115200;
-UINT8  gData     = 8;
-UINT8  gStop     = 1;
-UINT8  gParity   = 0;
-UINT8  gBreakSet = 0;
-
-/**
-  Initialize Serial Port
-
-  The Baud Rate Divisor registers are programmed and the LCR
-  is used to configure the communications format. Hard coded
-  UART config comes from globals in DebugSerialPlatform lib.
-
-  @param None
-
-  @retval None
-
-**/
-RETURN_STATUS
-EFIAPI
-UARTInitialize (
-  VOID
-  )
-{
-  UINTN Divisor;
-  UINT8 OutputData;
-  UINT8 Data;
-
-  //
-  // Map 5..8 to 0..3
-  //
-  Data = (UINT8) (gData - (UINT8) 5);
-
-  //
-  // Calculate divisor for baud generator
-  //
-  Divisor = 115200 / gBps;
-
-  //
-  // Set communications format
-  //
-  OutputData = (UINT8) ((DLAB << 7) | ((gBreakSet << 6) | ((gParity << 3) | ((gStop << 2) | Data))));
-  IoWrite8 (gComBase + LCR_OFFSET, OutputData);
-
-  //
-  // Configure baud rate
-  //
-  IoWrite8 (gComBase + BAUD_HIGH_OFFSET, (UINT8) (Divisor >> 8));
-  IoWrite8 (gComBase + BAUD_LOW_OFFSET, (UINT8) (Divisor & 0xff));
-
-  //
-  // Switch back to bank 0
-  //
-  OutputData = (UINT8) ((~DLAB << 7) | ((gBreakSet << 6) | ((gParity << 3) | ((gStop << 2) | Data))));
-  IoWrite8 (gComBase + LCR_OFFSET, OutputData);
-
-  return RETURN_SUCCESS;
-}
-
-/**
-  Common function to initialize UART Serial device and USB Serial device.
-
-  @param None
-
-  @retval None
-
-**/
-RETURN_STATUS
-EFIAPI
-SerialPortInitialize (
-  VOID
-  )
-{
-
-  UARTInitialize ();
-
-
-  return RETURN_SUCCESS;
-}
-
-/**
-  Write data to serial device.
-
-  If the buffer is NULL, then return 0;
-  if NumberOfBytes is zero, then return 0.
-
-  @param  Buffer           Point of data buffer which need to be writed.
-  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
-
-  @retval 0                Write data failed.
-  @retval !0               Actual number of bytes writed to serial device.
-
-**/
-UINTN
-EFIAPI
-UARTDbgOut (
-  IN UINT8     *Buffer,
-  IN UINTN     NumberOfBytes
-)
-{
-  UINTN Result;
-  UINT8 Data;
-
-  if (NULL == Buffer) {
-    return 0;
-  }
-
-  Result = NumberOfBytes;
-
-  while (NumberOfBytes--) {
-    //
-    // Wait for the serial port to be ready.
-    //
-    do {
-      Data = IoRead8 ((UINT16) PcdGet64 (PcdSerialRegisterBase) + LSR_OFFSET);
-    } while ((Data & LSR_TXRDY) == 0);
-    IoWrite8 ((UINT16) PcdGet64 (PcdSerialRegisterBase), *Buffer++);
-  }
-
-  return Result;
-}
-
-/**
-  Common function to write data to UART Serial device and USB Serial device.
-
-  @param  Buffer           Point of data buffer which need to be writed.
-  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
-
-**/
-UINTN
-EFIAPI
-SerialPortWrite (
-  IN UINT8     *Buffer,
-  IN UINTN     NumberOfBytes
-)
-{
-  if (FeaturePcdGet (PcdStatusCodeUseIsaSerial)) {
-    UARTDbgOut (Buffer, NumberOfBytes);
-  }
-
-  return RETURN_SUCCESS;
-}
-
-/**
-  Read data from serial device and save the datas in buffer.
-
-  If the buffer is NULL, then return 0;
-  if NumberOfBytes is zero, then return 0.
-
-  @param  Buffer           Point of data buffer which need to be writed.
-  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
-
-  @retval 0                Read data failed.
-  @retval !0               Actual number of bytes raed to serial device.
-
-**/
-UINTN
-EFIAPI
-UARTDbgIn (
-  OUT UINT8     *Buffer,
-  IN  UINTN     NumberOfBytes
-)
-{
-  UINTN Result;
-  UINT8 Data;
-
-  if (NULL == Buffer) {
-    return 0;
-  }
-
-  Result = NumberOfBytes;
-
-  while (NumberOfBytes--) {
-    //
-    // Wait for the serial port to be ready.
-    //
-    do {
-      Data = IoRead8 ((UINT16) PcdGet64 (PcdSerialRegisterBase) + LSR_OFFSET);
-    } while ((Data & LSR_RXDA) == 0);
-
-    *Buffer++ = IoRead8 ((UINT16) PcdGet64 (PcdSerialRegisterBase));
-  }
-
-  return Result;
-}
-
-/**
-  Common function to Read data from UART serial device, USB serial device and save the datas in buffer.
-
-  @param  Buffer           Point of data buffer which need to be writed.
-  @param  NumberOfBytes    Number of output bytes which are cached in Buffer.
-
-**/
-UINTN
-EFIAPI
-SerialPortRead (
-  OUT UINT8     *Buffer,
-  IN  UINTN     NumberOfBytes
-)
-{
-  if (FeaturePcdGet (PcdStatusCodeUseIsaSerial)) {
-    UARTDbgIn (Buffer, NumberOfBytes);
-  }
-
-  return RETURN_SUCCESS;
-}
-
-
-/**
-  Polls a serial device to see if there is any data waiting to be read.
-
-  Polls aserial device to see if there is any data waiting to be read.
-  If there is data waiting to be read from the serial device, then TRUE is returned.
-  If there is no data waiting to be read from the serial device, then FALSE is returned.
-
-  @retval TRUE             Data is waiting to be read from the serial device.
-  @retval FALSE            There is no data waiting to be read from the serial device.
-
-**/
-BOOLEAN
-EFIAPI
-SerialPortPoll (
-  VOID
-  )
-{
-  UINT8  Data;
-
-  //
-  // Read the serial port status.
-  //
-  Data = IoRead8 ((UINT16) PcdGet64 (PcdSerialRegisterBase) + LSR_OFFSET);
-
-  return (BOOLEAN) ((Data & LSR_RXDA) != 0);
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.inf b/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.inf
deleted file mode 100644
index 0e7a6d3cfc..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SerialPortLib.inf
+++ /dev/null
@@ -1,52 +0,0 @@
-#/** @file
-#
-# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#
-#**/
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = SerialPortLib
-  FILE_GUID                      = 15B26F43-A389-4bae-BDE3-4BB0719B7D4F
-  MODULE_TYPE                    = BASE
-  VERSION_STRING                 = 1.0
-  LIBRARY_CLASS                  = SerialPortLib
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64
-#
-
-[Sources]
-  SerialPortLib.c
-  SioInit.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  MdeModulePkg/MdeModulePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-  Vlv2TbltDevicePkg/PlatformPkg.dec
-  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
-
-[LibraryClasses]
-  BaseLib
-  PcdLib
-  IoLib
-  PciLib
-  TimerLib
-
-[FixedPcd.common]
-  gEfiSerialPortTokenSpaceGuid.PcdSerialBoudRate
-  gEfiSerialPortTokenSpaceGuid.PcdSerialRegisterBase
-
-[FeaturePcd]
-  gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseIsaSerial
-  gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseUsbSerial
-  gEfiSerialPortTokenSpaceGuid.PcdStatusCodeUseRam
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.c b/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.c
deleted file mode 100644
index d9d48539dc..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/** @file
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-Module Name:
-
-    SioInit.c
-
-Abstract:
-
-    Functions for LpcSio initialization
-
---*/
-
-#include "PlatformSerialPortLib.h"
-#include "SioInit.h"
-
-typedef struct {
-  UINT8 Register;
-  UINT8 Value;
-} EFI_SIO_TABLE;
-
-EFI_SIO_TABLE mSioTableWpcn381u[] = {
-    {0x29, 0x0A0},
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_UART0},                                       // Select UART0 device
-    {WPCN381U_BASE1_HI_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT0_BASE_ADDRESS >> 8)},       // Set Base Address MSB
-    {WPCN381U_BASE1_LO_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT0_BASE_ADDRESS & 0x00FF)},   // Set Base Address LSB
-    {WPCN381U_IRQ1_REGISTER, 0x014},                                                      // Set to IRQ4
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE},                                // Enable it with Activation bit
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_UART1},                                       // Select UART1 device
-    {WPCN381U_BASE1_HI_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT1_BASE_ADDRESS >> 8)},       // Set Base Address MSB
-    {WPCN381U_BASE1_LO_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT1_BASE_ADDRESS & 0x00FF)},   // Set Base Address LSB
-    {WPCN381U_IRQ1_REGISTER, 0x013},                                                      // Set to IRQ3
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE},                                // Enable it with Activation bit
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_GPIO},                                        // Select GPIO device
-    {WPCN381U_BASE1_HI_REGISTER, (UINT8)(WPCN381U_GPIO_BASE_ADDRESS >> 8)},               // Set Base Address MSB
-    {WPCN381U_BASE1_LO_REGISTER, (UINT8)(WPCN381U_GPIO_BASE_ADDRESS & 0x00FF)},           // Set Base Address LSB
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE},                                // Enable it with Activation bit
-    {0x21, 0x001},                                                                        // Global Device Enable
-    {0x26, 0x000}
-};
-
-EFI_SIO_TABLE mSioTableWdcp376[] = {
-    {0x29, 0x0A0},
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_UART0},                                       // Select UART0 device
-    {WPCN381U_BASE1_HI_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT0_BASE_ADDRESS >> 8)},       // Set Base Address MSB
-    {WPCN381U_BASE1_LO_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT0_BASE_ADDRESS & 0x00FF)},   // Set Base Address LSB
-    {WPCN381U_IRQ1_REGISTER, 0x014},                                                      // Set to IRQ4
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE},                                // Enable it with Activation bit
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_UART1},                                       // Select UART1 device
-    {WPCN381U_BASE1_HI_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT1_BASE_ADDRESS >> 8)},       // Set Base Address MSB
-    {WPCN381U_BASE1_LO_REGISTER, (UINT8)(WPCN381U_SERIAL_PORT1_BASE_ADDRESS & 0x00FF)},   // Set Base Address LSB
-    {WPCN381U_IRQ1_REGISTER, 0x013},                                                      // Set to IRQ3
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE},                                // Enable it with Activation bit
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_GPIO},                                        // Select GPIO device
-    {WPCN381U_BASE1_HI_REGISTER, (UINT8)(WPCN381U_GPIO_BASE_ADDRESS >> 8)},               // Set Base Address MSB
-    {WPCN381U_BASE1_LO_REGISTER, (UINT8)(WPCN381U_GPIO_BASE_ADDRESS & 0x00FF)},           // Set Base Address LSB
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE},                                // Enable it with Activation bit
-    {0x21, 0x001},                                                                        // Global Device Enable
-    {0x26, 0x000},
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_PS2K},                                        // Select PS2 Keyboard
-    {WPCN381U_BASE1_HI_REGISTER, (UINT8)(WPCN381U_KB_BASE1_ADDRESS >> 8)},                // Set Base Address MSB
-    {WPCN381U_BASE1_LO_REGISTER, (UINT8)(WPCN381U_KB_BASE1_ADDRESS & 0x00FF)},            // Set Base Address LSB
-    {WPCN381U_BASE2_HI_REGISTER, (UINT8)(WPCN381U_KB_BASE2_ADDRESS >> 8)},                // Set Base Address MSB
-    {WPCN381U_BASE2_LO_REGISTER, (UINT8)(WPCN381U_KB_BASE2_ADDRESS & 0x00FF)},            // Set Base Address LSB
-    {WPCN381U_IRQ1_REGISTER, 0x011},                                                      // Set to IRQ1
-    {0xF0, (SIO_KBC_CLOCK << 6)},                                                         // Select KBC Clock Source
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE},                                // Enable it with Activation bit
-    {WPCN381U_LD_SEL_REGISTER, WPCN381U_LDN_PS2M},                                        // Select PS2 Mouse
-    {WPCN381U_IRQ1_REGISTER, 0x01c},                                                      // Set to IRQ12
-    {WPCN381U_ACTIVATE_REGISTER, WPCN381U_ACTIVATE_VALUE}                                 // Enable it with Activation bit
-};
-
-/**
-  Initialization for SIO.
-
-  @param FfsHeader     FV this PEIM was loaded from.
-  @param PeiServices   General purpose services available to every PEIM.
-
-  None
-
-**/
-VOID
-InitializeSio (
-  VOID
-  )
-{
-  UINT16          Index;
-  UINT16          IndexPort;
-  UINT16          DataPort;
-
-  //
-  // Super I/O initialization for Winbond WPCN381U
-  //
-  IndexPort  = WPCN381U_CONFIG_INDEX;
-  DataPort   = WPCN381U_CONFIG_DATA;
-
-  //
-  // Check for Winbond WPCN381U
-  //
-  IoWrite8 (IndexPort, WPCN381U_DEV_ID_REGISTER);   // Winbond WPCN381U Device ID register is 0x20
-
-  if (IoRead8 (DataPort) == WPCN381U_CHIP_ID) {   // Winbond WPCN381U Device ID is 0xF4
-    //
-    // Configure WPCN381U SIO
-    //
-    for (Index = 0; Index < sizeof (mSioTableWpcn381u) / sizeof (EFI_SIO_TABLE); Index++) {
-      IoWrite8 (IndexPort, mSioTableWpcn381u[Index].Register);
-      IoWrite8 (DataPort, mSioTableWpcn381u[Index].Value);
-    }
-  }
-
-  if (IoRead8 (DataPort) == WDCP376_CHIP_ID) {   // Winbond WDCP376 Device ID is 0xF1
-    //
-    // Configure WDCP376 SIO
-    //
-    for (Index = 0; Index < sizeof (mSioTableWdcp376) / sizeof (EFI_SIO_TABLE); Index++) {
-      IoWrite8 (IndexPort, mSioTableWdcp376[Index].Register);
-      IoWrite8 (DataPort, mSioTableWdcp376[Index].Value);
-    }
-  }
-  return;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.h b/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.h
deleted file mode 100644
index 06fa19b93d..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Library/SerialPortLib/SioInit.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/** @file
-  Header file of Serial port hardware definition.
-
-  Copyright (c) 2012  - 2017, Intel Corporation. All rights reserved.<BR>
-                                                                                   
-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _SIO_INIT_H_
-#define _SIO_INIT_H_
-
-#define WPCN381U_CONFIG_INDEX               0x2E
-#define WPCN381U_CONFIG_DATA                0x2F
-#define WPCN381U_CONFIG_INDEX1              0x164E
-#define WPCN381U_CONFIG_DATA1               0x164F
-#define WPCN381U_CHIP_ID                    0xF4
-#define WDCP376_CHIP_ID                     0xF1
-
-//
-// SIO Logical Devices Numbers
-//
-#define WPCN381U_LDN_UART0                  0x03   // LDN for Serial Port Controller
-#define WPCN381U_LDN_UART1                  0x02   // LDN for Parallel Port Controller
-#define WPCN381U_LDN_PS2K                   0x06   // LDN for PS2 Keyboard Controller
-#define WPCN381U_LDN_PS2M                   0x05   // LDN for PS2 Mouse Controller
-#define WPCN381U_KB_BASE1_ADDRESS           0x60   // Base Address of KB controller
-#define WPCN381U_KB_BASE2_ADDRESS           0x64   // Base Address of KB controller
-#define SIO_KBC_CLOCK                       0x01   // 0/1/2 - 8/12/16 MHz KBC Clock Source
-#define WPCN381U_LDN_GPIO                   0x07   // LDN for GPIO
-
-//
-// SIO Registers Layout
-//
-#define WPCN381U_LD_SEL_REGISTER            0x07   // Logical Device Select Register Address
-#define WPCN381U_DEV_ID_REGISTER            0x20   // Device Identification Register Address
-#define WPCN381U_ACTIVATE_REGISTER          0x30   // Device Identification Register Address
-#define WPCN381U_BASE1_HI_REGISTER          0x60   // Device BaseAddres Register #1 MSB Address
-#define WPCN381U_BASE1_LO_REGISTER          0x61   // Device BaseAddres Register #1 LSB Address
-#define WPCN381U_BASE2_HI_REGISTER          0x62   // Device BaseAddres Register #1 MSB Address
-#define WPCN381U_BASE2_LO_REGISTER          0x63   // Device Ba1eAddres Register #1 LSB Address
-#define WPCN381U_IRQ1_REGISTER              0x70   // Device IRQ Register #1 Address
-#define WPCN381U_IRQ2_REGISTER              0x71   // Device IRQ Register #2 Address
-
-//
-// SIO Activation Values
-//
-#define WPCN381U_ACTIVATE_VALUE             0x01   // Value to activate Device
-#define WPCN381U_DEACTIVATE_VALUE           0x00   // Value to deactivate Device
-
-//
-// SIO GPIO
-//
-#define WPCN381U_GPIO_BASE_ADDRESS          0x0A20 // SIO GPIO Base Address
-
-//
-// SIO Serial Port Settings
-//
-#define WPCN381U_SERIAL_PORT0_BASE_ADDRESS  0x03F8 // Base Address of Serial Port 0 (COMA / UART0)
-#define WPCN381U_SERIAL_PORT1_BASE_ADDRESS  0x02F8 // Base Address of Serial Port 1 (COMB / UART1)
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.c b/Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.c
deleted file mode 100644
index b1fb4adb34..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.c
+++ /dev/null
@@ -1,185 +0,0 @@
-/** @file
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-Module Name:
-
-
-  LegacyMetronome.c
-
-Abstract:
-
-  This contains the installation function for the driver.
-
---*/
-
-#include "LegacyMetronome.h"
-
-//
-// Handle for the Metronome Architectural Protocol instance produced by this driver
-//
-EFI_HANDLE                  mMetronomeHandle = NULL;
-
-//
-// The Metronome Architectural Protocol instance produced by this driver
-//
-EFI_METRONOME_ARCH_PROTOCOL mMetronome = {
-  WaitForTick,
-  TICK_PERIOD
-};
-
-//
-// The CPU I/O Protocol used to access system hardware
-//
-EFI_CPU_IO_PROTOCOL         *mCpuIo = NULL;
-
-//
-// Worker Functions
-//
-
-/**
-  Write an 8 bit value to an I/O port and save it to the S3 script
-
-  @param Port  IO Port
-  @param Data  Data in IO Port
-
-  @retval None.
-
-**/
-VOID
-ScriptWriteIo8 (
-  UINT16  Port,
-  UINT8   Data
-  )
-{
-  mCpuIo->Io.Write (
-               mCpuIo,
-               EfiCpuIoWidthUint8,
-               Port,
-               1,
-               &Data
-               );
-
-}
-
-/**
-
-  Read the refresh bit from the REFRESH_PORT
-
-  @param None.
-
-  @retval Refresh bit.
-
-**/
-UINT8
-ReadRefresh (
-  VOID
-  )
-{
-  UINT8 Data;
-
-  mCpuIo->Io.Read (
-               mCpuIo,
-               EfiCpuIoWidthUint8,
-               REFRESH_PORT,
-               1,
-               &Data
-               );
-  return (UINT8) (Data & REFRESH_ON);
-}
-
-/**
-
-  Waits for the TickNumber of ticks from a known platform time source.
-
-  @param This                Pointer to the protocol instance.
-  @param TickNumber          Tick Number to be waited
-
-
-  @retval EFI_SUCCESS         If number of ticks occurred.
-  @retval EFI_NOT_FOUND       Could not locate CPU IO protocol
-
-**/
-EFI_STATUS
-EFIAPI
-WaitForTick (
-  IN EFI_METRONOME_ARCH_PROTOCOL  *This,
-  IN UINT32                       TickNumber
-  )
-{
-  //
-  // Wait for TickNumber toggles of the Refresh bit
-  //
-  for (; TickNumber != 0x00; TickNumber--) {
-    while (ReadRefresh () == REFRESH_ON)
-      ;
-    while (ReadRefresh () == REFRESH_OFF)
-      ;
-  }
-
-  return EFI_SUCCESS;
-}
-
-//
-// Driver Entry Point
-//
-/**
-  Install the LegacyMetronome driver.  Loads a Metronome Arch Protocol based
-  on the Port 61 timer.
-
-  @param ImageHandle      Handle for the image of this driver
-  @param SystemTable      Pointer to the EFI System Table
-
-  @retval EFI_SUCCESS     Metronome Architectural Protocol Installed
-
-**/
-EFI_STATUS
-EFIAPI
-InstallLegacyMetronome (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-{
-  EFI_STATUS  Status;
-
-  //
-  // Make sure the Metronome Architectural Protocol is not already installed in the system
-  //
-  ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiMetronomeArchProtocolGuid);
-
-  //
-  // Get the CPU I/O Protocol that this driver requires
-  // If the CPU I/O Protocol is not found, then ASSERT because the dependency expression
-  // should guarantee that it is present in the handle database.
-  //
-  Status = gBS->LocateProtocol (
-                  &gEfiCpuIoProtocolGuid,
-                  NULL,
-                  (void **)&mCpuIo
-                  );
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // Program port 61 timer 1 as refresh timer. We could use ACPI timer in the
-  // future.
-  //
-  ScriptWriteIo8 (TIMER1_CONTROL_PORT, LOAD_COUNTER1_LSB);
-  ScriptWriteIo8 (TIMER1_COUNT_PORT, COUNTER1_COUNT);
-
-  //
-  // Install on a new handle
-  //
-  Status = gBS->InstallMultipleProtocolInterfaces (
-                  &mMetronomeHandle,
-                  &gEfiMetronomeArchProtocolGuid,
-                  &mMetronome,
-                  NULL
-                  );
-  ASSERT_EFI_ERROR (Status);
-
-  return Status;
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.h b/Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.h
deleted file mode 100644
index 9599eca702..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Metronome/LegacyMetronome.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*++
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-Module Name:
-
-  LegacyMetronome.h
-
-Abstract:
-
-  Driver implementing the EFI 2.0 metronome protocol using the legacy PORT 61
-  timer.
-
---*/
-
-#ifndef _LEGACY_METRONOME_H
-#define _LEGACY_METRONOME_H
-
-//
-// Statements that include other files
-//
-#include "Protocol/Metronome.h"
-#include "Protocol/CpuIo.h"
-#include "Library/DebugLib.h"
-#include "Library/UefiBootServicesTableLib.h"
-
-
-//
-// Private definitions
-//
-#define TICK_PERIOD         300
-#define REFRESH_PORT        0x61
-#define REFRESH_ON          0x10
-#define REFRESH_OFF         0x00
-#define TIMER1_CONTROL_PORT 0x43
-#define TIMER1_COUNT_PORT   0x41
-#define LOAD_COUNTER1_LSB   0x54
-#define COUNTER1_COUNT      0x12
-
-//
-// Function Prototypes
-//
-/**
-  Waits for the TickNumber of ticks from a known platform time source.
-
-  @param This                 Pointer to the protocol instance.
-  @param TickNumber           Tick Number to be waited
-
-  @retval EFI_SUCCESS         If number of ticks occurred.
-  @retval EFI_NOT_FOUND       Could not locate CPU IO protocol
-
-**/
-EFI_STATUS
-EFIAPI
-WaitForTick (
-  IN EFI_METRONOME_ARCH_PROTOCOL  *This,
-  IN UINT32                       TickNumber
-  );
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Metronome/Metronome.inf b/Platform/Intel/Vlv2TbltDevicePkg/Metronome/Metronome.inf
deleted file mode 100644
index 173370d652..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Metronome/Metronome.inf
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-#
-# Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-
-#  Module Name:
-#
-#    LegacyMetronome.inf
-#
-#  Abstract:
-#
-#    Component description file for LegacyMetronome module
-#
-#--*/
-[defines]
-  INF_VERSION	       = 0x00010005
-  BASE_NAME            = LegacyMetronome
-  FILE_GUID            = 07A9330A-F347-11d4-9A49-0090273FC14D
-  MODULE_TYPE          = DXE_DRIVER
-  VERSION_STRING       = 1.0
-  ENTRY_POINT	       = InstallLegacyMetronome
-
-[sources.common]
-  LegacyMetronome.c
-  LegacyMetronome.h
-
-[Packages]
-  MdePkg/MdePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-
-[LibraryClasses]
-  UefiDriverEntryPoint
-  UefiBootServicesTableLib
-  DevicePathLib
-  UefiLib
-
-[Protocols]
-
-gEfiMetronomeArchProtocolGuid
-gEfiCpuIoProtocolGuid
-
-[Depex]
-gEfiCpuIoProtocolGuid  AND  gEfiBootScriptSaveProtocolGuid
-
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.c
deleted file mode 100644
index 26599620ba..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/** @file
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-
-Module Name:
-
-
-    SmmScriptSave.c
-
-Abstract:
-
-    ScriptTableSave module at run time
-
---*/
-
-#include "SmmScriptSave.h"
-
-//
-// internal functions
-//
-
-EFI_STATUS
-BootScriptIoWrite  (
-  IN EFI_SMM_SCRIPT_TABLE     *ScriptTable,
-  IN VA_LIST                  Marker
-  );
-
-EFI_STATUS
-BootScriptPciCfgWrite  (
-  IN EFI_SMM_SCRIPT_TABLE     *ScriptTable,
-  IN VA_LIST                  Marker
-  );
-
-VOID
-SmmCopyMem (
-  IN  UINT8    *Destination,
-  IN  UINT8    *Source,
-  IN  UINTN    ByteCount
-  );
-
-//
-// Function implementations
-//
-EFI_STATUS
-SmmBootScriptWrite (
-  IN OUT EFI_SMM_SCRIPT_TABLE    *ScriptTable,
-  IN UINTN                       Type,
-  IN UINT16                      OpCode,
-  ...
-  )
-{
-  EFI_STATUS    Status;
-  VA_LIST       Marker;
-
-  if (ScriptTable == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // Build script according to opcode
-  //
-  switch ( OpCode ) {
-
-    case EFI_BOOT_SCRIPT_IO_WRITE_OPCODE:
-      VA_START(Marker, OpCode);
-      Status = BootScriptIoWrite (ScriptTable, Marker);
-      VA_END(Marker);
-      break;
-
-    case EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE:
-      VA_START(Marker, OpCode);
-      Status = BootScriptPciCfgWrite(ScriptTable, Marker);
-      VA_END(Marker);
-      break;
-
-    default:
-      Status = EFI_SUCCESS;
-      break;
-  }
-
-  return Status;
-}
-
-
-EFI_STATUS
-SmmBootScriptCreateTable (
-  IN OUT EFI_SMM_SCRIPT_TABLE    *ScriptTable,
-  IN UINTN                       Type
-  )
-{
-  BOOT_SCRIPT_POINTERS          Script;
-  UINT8                         *Buffer;
-
-  if (ScriptTable == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  Buffer = (UINT8*) ((UINTN)(*ScriptTable));
-
-  //
-  // Fill Table Header
-  //
-  Script.Raw = Buffer;
-  Script.TableInfo->OpCode      = EFI_BOOT_SCRIPT_TABLE_OPCODE;
-  Script.TableInfo->Length      = sizeof(EFI_BOOT_SCRIPT_TABLE_HEADER);
-  Script.TableInfo->TableLength = sizeof(EFI_BOOT_SCRIPT_TABLE_HEADER);
-
-  //
-  // Update current table pointer
-  //
-  *ScriptTable = *ScriptTable + sizeof(EFI_BOOT_SCRIPT_TABLE_HEADER);
-  return EFI_SUCCESS;
-}
-
-
-EFI_STATUS
-SmmBootScriptCloseTable (
-  IN EFI_SMM_SCRIPT_TABLE        ScriptTableBase,
-  IN EFI_SMM_SCRIPT_TABLE        ScriptTablePtr,
-  IN UINTN                       Type
-  )
-{
-  BOOT_SCRIPT_POINTERS    Script;
-
-  //
-  // Add final "termination" node to script table
-  //
-  Script.Raw               = (UINT8*) ((UINTN)ScriptTablePtr);
-  Script.Terminate->OpCode = EFI_BOOT_SCRIPT_TERMINATE_OPCODE;
-  Script.Terminate->Length = sizeof (EFI_BOOT_SCRIPT_TERMINATE);
-  ScriptTablePtr          += sizeof (EFI_BOOT_SCRIPT_TERMINATE);
-
-
-  //
-  // Update Table Header
-  //
-  Script.Raw                    = (UINT8*) ((UINTN)ScriptTableBase);
-  Script.TableInfo->OpCode      = EFI_BOOT_SCRIPT_TABLE_OPCODE;
-  Script.TableInfo->Length      = sizeof (EFI_BOOT_SCRIPT_TABLE_HEADER);
-  Script.TableInfo->TableLength = (UINT32)(ScriptTablePtr - ScriptTableBase);
-
-  return EFI_SUCCESS;
-}
-
-
-EFI_STATUS
-BootScriptIoWrite  (
-  IN EFI_SMM_SCRIPT_TABLE     *ScriptTable,
-  IN VA_LIST                  Marker
-  )
-{
-  BOOT_SCRIPT_POINTERS    Script;
-  EFI_BOOT_SCRIPT_WIDTH   Width;
-  UINTN                   Address;
-  UINTN                   Count;
-  UINT8                   *Buffer;
-  UINTN                   NodeLength;
-  UINT8                   WidthInByte;
-
-  Width     = VA_ARG(Marker, EFI_BOOT_SCRIPT_WIDTH);
-  Address   = VA_ARG(Marker, UINTN);
-  Count     = VA_ARG(Marker, UINTN);
-  Buffer    = VA_ARG(Marker, UINT8*);
-
-  WidthInByte = (UINT8)(0x01 << (Width & 0x03));
-  Script.Raw  = (UINT8*) ((UINTN)(*ScriptTable));
-  NodeLength  = sizeof (EFI_BOOT_SCRIPT_IO_WRITE) + (WidthInByte * Count);
-
-  //
-  // Build script data
-  //
-  Script.IoWrite->OpCode  = EFI_BOOT_SCRIPT_IO_WRITE_OPCODE;
-  Script.IoWrite->Length  = (UINT8)(NodeLength);
-  Script.IoWrite->Width   = Width;
-  Script.IoWrite->Address = Address;
-  Script.IoWrite->Count   = (UINT32)Count;
-  SmmCopyMem (
-    (UINT8*)(Script.Raw + sizeof (EFI_BOOT_SCRIPT_IO_WRITE)),
-    Buffer,
-    WidthInByte * Count
-    );
-
-  //
-  // Update Script table pointer
-  //
-  *ScriptTable = *ScriptTable + NodeLength;
-  return EFI_SUCCESS;
-}
-
-
-EFI_STATUS
-BootScriptPciCfgWrite  (
-  IN EFI_SMM_SCRIPT_TABLE        *ScriptTable,
-  IN VA_LIST                     Marker
-  )
-{
-  BOOT_SCRIPT_POINTERS    Script;
-  EFI_BOOT_SCRIPT_WIDTH   Width;
-  UINT64                  Address;
-  UINTN                   Count;
-  UINT8                   *Buffer;
-  UINTN                   NodeLength;
-  UINT8                   WidthInByte;
-
-  Width     = VA_ARG(Marker, EFI_BOOT_SCRIPT_WIDTH);
-  Address   = VA_ARG(Marker, UINT64);
-  Count     = VA_ARG(Marker, UINTN);
-  Buffer    = VA_ARG(Marker, UINT8*);
-
-  WidthInByte = (UINT8)(0x01 << (Width & 0x03));
-  Script.Raw  = (UINT8*) ((UINTN)(*ScriptTable));
-  NodeLength  = sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE) + (WidthInByte * Count);
-
-  //
-  // Build script data
-  //
-  Script.PciWrite->OpCode  = EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE;
-  Script.PciWrite->Length  = (UINT8)(NodeLength);
-  Script.PciWrite->Width   = Width;
-  Script.PciWrite->Address = Address;
-  Script.PciWrite->Count   = (UINT32)Count;
-  SmmCopyMem (
-    (UINT8*)(Script.Raw + sizeof (EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE)),
-    Buffer,
-    WidthInByte * Count
-    );
-
-  //
-  // Update Script table pointer
-  //
-  *ScriptTable = *ScriptTable + NodeLength;
-  return EFI_SUCCESS;
-}
-
-VOID
-SmmCopyMem (
-  IN  UINT8    *Destination,
-  IN  UINT8    *Source,
-  IN  UINTN    ByteCount
-  )
-{
-  UINTN   Index;
-
-  for (Index = 0; Index < ByteCount; Index++, Destination++, Source++) {
-    *Destination = *Source;
-  }
-}
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.h b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.h
deleted file mode 100644
index d3eca8cdc0..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmScriptSave.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*++
-
-  Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-
-Module Name:
-
-    SmmScriptSave.h
-
-Abstract:
-
-  This is an implementation of the BootScript at run time.
-
---*/
-
-#ifndef _RUNTIME_SCRIPT_SAVE_H
-#define _RUNTIME_SCRIPT_SAVE_H
-
-#include "Efi.h"
-#include "EfiBootScript.h"
-
-
-typedef EFI_PHYSICAL_ADDRESS     EFI_SMM_SCRIPT_TABLE;
-
-EFI_STATUS
-SmmBootScriptCreateTable (
-  IN OUT EFI_SMM_SCRIPT_TABLE    *ScriptTable,
-  IN UINTN                       Type
-  );
-
-EFI_STATUS
-SmmBootScriptWrite (
-  IN OUT EFI_SMM_SCRIPT_TABLE    *ScriptTable,
-  IN UINTN                       Type,
-  IN UINT16                      OpCode,
-  ...
-  );
-
-EFI_STATUS
-SmmBootScriptCloseTable (
-  IN EFI_SMM_SCRIPT_TABLE        ScriptTableBase,
-  IN EFI_SMM_SCRIPT_TABLE        ScriptTablePtr,
-  IN UINTN                       Type
-  );
-
-#endif
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.c b/Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.c
deleted file mode 100644
index 0dbd6f00e1..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.c
+++ /dev/null
@@ -1,459 +0,0 @@
-/** @file
-  SMM SwDispatch2 Protocol on SMM SwDispatch Protocol Thunk driver.
-
-  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-**/
-
-#include <PiDxe.h>
-#include <FrameworkSmm.h>
-
-#include <Protocol/SmmSwDispatch2.h>
-#include <Protocol/SmmSwDispatch.h>
-#include <Protocol/SmmControl.h>
-#include <Protocol/SmmCpu.h>
-
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiDriverEntryPoint.h>
-#include <Library/SmmServicesTableLib.h>
-#include <Library/BaseLib.h>
-#include <Library/IoLib.h>
-#include <Library/DebugLib.h>
-
-typedef struct {
-  LIST_ENTRY                     Link;
-  EFI_HANDLE                     DispatchHandle;
-  UINTN                          SwSmiInputValue;
-  UINTN                          DispatchFunction;
-} EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT;
-
-/**
-  Register a child SMI source dispatch function for the specified software SMI.
-
-  This service registers a function (DispatchFunction) which will be called when the software
-  SMI source specified by RegisterContext->SwSmiCpuIndex is detected. On return,
-  DispatchHandle contains a unique handle which may be used later to unregister the function
-  using UnRegister().
-
-  @param[in]  This                  Pointer to the EFI_SMM_SW_DISPATCH2_PROTOCOL instance.
-  @param[in]  DispatchFunction      Function to register for handler when the specified software
-                                    SMI is generated.
-  @param[in, out]  RegisterContext  Pointer to the dispatch function's context.
-                                    The caller fills this context in before calling
-                                    the register function to indicate to the register
-                                    function which Software SMI input value the
-                                    dispatch function should be invoked for.
-  @param[out] DispatchHandle        Handle generated by the dispatcher to track the
-                                    function instance.
-
-  @retval EFI_SUCCESS            The dispatch function has been successfully
-                                 registered and the SMI source has been enabled.
-  @retval EFI_DEVICE_ERROR       The SW driver was unable to enable the SMI source.
-  @retval EFI_INVALID_PARAMETER  RegisterContext is invalid. The SW SMI input value
-                                 is not within valid range.
-  @retval EFI_OUT_OF_RESOURCES   There is not enough memory (system or SMM) to manage this
-                                 child.
-  @retval EFI_OUT_OF_RESOURCES   A unique software SMI value could not be assigned
-                                 for this dispatch.
-**/
-EFI_STATUS
-EFIAPI
-SmmSwDispatch2Register (
-  IN  CONST EFI_SMM_SW_DISPATCH2_PROTOCOL  *This,
-  IN        EFI_SMM_HANDLER_ENTRY_POINT2   DispatchFunction,
-  IN  OUT   EFI_SMM_SW_REGISTER_CONTEXT    *RegisterContext,
-  OUT       EFI_HANDLE                     *DispatchHandle
-  );
-
-/**
-  Unregister a child SMI source dispatch function for the specified software SMI.
-
-  This service removes the handler associated with DispatchHandle so that it will no longer be
-  called in response to a software SMI.
-
-  @param[in] This                Pointer to the EFI_SMM_SW_DISPATCH2_PROTOCOL instance.
-  @param[in] DispatchHandle      Handle of dispatch function to deregister.
-
-  @retval EFI_SUCCESS            The dispatch function has been successfully unregistered.
-  @retval EFI_INVALID_PARAMETER  The DispatchHandle was not valid.
-**/
-EFI_STATUS
-EFIAPI
-SmmSwDispatch2UnRegister (
-  IN CONST EFI_SMM_SW_DISPATCH2_PROTOCOL  *This,
-  IN       EFI_HANDLE                     DispatchHandle
-  );
-
-EFI_SMM_SW_DISPATCH2_PROTOCOL gSmmSwDispatch2 = {
-  SmmSwDispatch2Register,
-  SmmSwDispatch2UnRegister,
-  0 // MaximumSwiValue
-};
-
-EFI_SMM_SW_DISPATCH_PROTOCOL  *mSmmSwDispatch;
-UINT8                         mSmiTriggerRegister;
-UINT8                         mSmiDataRegister;
-
-EFI_SMM_CPU_PROTOCOL          *mSmmCpuProtocol;
-LIST_ENTRY                    mSmmSwDispatch2ThunkQueue = INITIALIZE_LIST_HEAD_VARIABLE (mSmmSwDispatch2ThunkQueue);
-
-/**
-  This function find SmmSwDispatch2Context by SwSmiInputValue.
-
-  @param SwSmiInputValue The SwSmiInputValue to indentify the SmmSwDispatch2 context
-
-  @return SmmSwDispatch2 context
-**/
-EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT *
-FindSmmSwDispatch2ContextBySwSmiInputValue (
-  IN UINTN   SwSmiInputValue
-  )
-{
-  LIST_ENTRY                            *Link;
-  EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT    *ThunkContext;
-
-  for (Link = mSmmSwDispatch2ThunkQueue.ForwardLink;
-    Link != &mSmmSwDispatch2ThunkQueue;
-    Link = Link->ForwardLink) {
-    ThunkContext = BASE_CR (
-                     Link,
-                     EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT,
-                     Link
-                     );
-    if (ThunkContext->SwSmiInputValue == SwSmiInputValue) {
-      return ThunkContext;
-    }
-  }
-  return NULL;
-}
-
-/**
-  This function find SmmSwDispatch2Context by DispatchHandle.
-
-  @param DispatchHandle The DispatchHandle to indentify the SmmSwDispatch2Thunk context
-
-  @return SmmSwDispatch2Thunk context
-**/
-EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT *
-FindSmmSwDispatch2ContextByDispatchHandle (
-  IN EFI_HANDLE   DispatchHandle
-  )
-{
-  LIST_ENTRY                            *Link;
-  EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT    *ThunkContext;
-
-  for (Link = mSmmSwDispatch2ThunkQueue.ForwardLink;
-       Link != &mSmmSwDispatch2ThunkQueue;
-       Link = Link->ForwardLink) {
-    ThunkContext = BASE_CR (
-                     Link,
-                     EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT,
-                     Link
-                     );
-    if (ThunkContext->DispatchHandle == DispatchHandle) {
-      return ThunkContext;
-    }
-  }
-  return NULL;
-}
-
-/**
-  Framework dispatch function for a Software SMI handler.
-
-  @param  DispatchHandle        The handle of this dispatch function.
-  @param  DispatchContext       The pointer to the dispatch function's context.
-                                The SwSmiInputValue field is filled in
-                                by the software dispatch driver prior to
-                                invoking this dispatch function.
-                                The dispatch function will only be called
-                                for input values for which it is registered.
-
-  @return None
-
-**/
-VOID
-EFIAPI
-FrameworkDispatchFunction (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
-  )
-{
-  EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT    *ThunkContext;
-  EFI_SMM_HANDLER_ENTRY_POINT2          DispatchFunction;
-  EFI_SMM_SW_REGISTER_CONTEXT           RegisterContext;
-  EFI_SMM_SW_CONTEXT                    SwContext;
-  UINTN                                 Size;
-  UINTN                                 Index;
-  EFI_SMM_SAVE_STATE_IO_INFO            IoInfo;
-  EFI_STATUS                            Status;
-
-  //
-  // Search context
-  //
-  ThunkContext = FindSmmSwDispatch2ContextBySwSmiInputValue (DispatchContext->SwSmiInputValue);
-  ASSERT (ThunkContext != NULL);
-  if (ThunkContext == NULL) {
-    return ;
-  }
-
-  //
-  // Construct new context
-  //
-  RegisterContext.SwSmiInputValue = DispatchContext->SwSmiInputValue;
-  Size = sizeof(SwContext);
-  SwContext.CommandPort = IoRead8 (mSmiTriggerRegister);
-  SwContext.DataPort    = IoRead8 (mSmiDataRegister);
-
-  //
-  // Try to find which CPU trigger SWSMI
-  //
-  SwContext.SwSmiCpuIndex = 0;
-  for (Index = 0; Index < gSmst->NumberOfCpus; Index++) {
-    Status = mSmmCpuProtocol->ReadSaveState (
-                                mSmmCpuProtocol,
-                                sizeof(IoInfo),
-                                EFI_SMM_SAVE_STATE_REGISTER_IO,
-                                Index,
-                                &IoInfo
-                                );
-    if (EFI_ERROR (Status)) {
-      continue;
-    }
-    if (IoInfo.IoPort == mSmiTriggerRegister) {
-      //
-      // Great! Find it.
-      //
-      SwContext.SwSmiCpuIndex = Index;
-      break;
-    }
-  }
-
-  //
-  // Dispatch
-  //
-  DispatchFunction = (EFI_SMM_HANDLER_ENTRY_POINT2)ThunkContext->DispatchFunction;
-  DispatchFunction (
-    DispatchHandle,
-    &RegisterContext,
-    &SwContext,
-    &Size
-    );
-  return ;
-}
-
-/**
-  Register a child SMI source dispatch function for the specified software SMI.
-
-  This service registers a function (DispatchFunction) which will be called when the software
-  SMI source specified by RegisterContext->SwSmiCpuIndex is detected. On return,
-  DispatchHandle contains a unique handle which may be used later to unregister the function
-  using UnRegister().
-
-  @param[in]  This                  Pointer to the EFI_SMM_SW_DISPATCH2_PROTOCOL instance.
-  @param[in]  DispatchFunction      Function to register for handler when the specified software
-                                    SMI is generated.
-  @param[in, out]  RegisterContext  Pointer to the dispatch function's context.
-                                    The caller fills this context in before calling
-                                    the register function to indicate to the register
-                                    function which Software SMI input value the
-                                    dispatch function should be invoked for.
-  @param[out] DispatchHandle        Handle generated by the dispatcher to track the
-                                    function instance.
-
-  @retval EFI_SUCCESS            The dispatch function has been successfully
-                                 registered and the SMI source has been enabled.
-  @retval EFI_DEVICE_ERROR       The SW driver was unable to enable the SMI source.
-  @retval EFI_INVALID_PARAMETER  RegisterContext is invalid. The SW SMI input value
-                                 is not within valid range.
-  @retval EFI_OUT_OF_RESOURCES   There is not enough memory (system or SMM) to manage this
-                                 child.
-  @retval EFI_OUT_OF_RESOURCES   A unique software SMI value could not be assigned
-                                 for this dispatch.
-**/
-EFI_STATUS
-EFIAPI
-SmmSwDispatch2Register (
-  IN  CONST EFI_SMM_SW_DISPATCH2_PROTOCOL  *This,
-  IN        EFI_SMM_HANDLER_ENTRY_POINT2   DispatchFunction,
-  IN  OUT   EFI_SMM_SW_REGISTER_CONTEXT    *RegisterContext,
-  OUT       EFI_HANDLE                     *DispatchHandle
-  )
-{
-  EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT    *ThunkContext;
-  EFI_SMM_SW_DISPATCH_CONTEXT           DispatchContext;
-  EFI_STATUS                            Status;
-  UINTN                                 Index;
-
-  if (RegisterContext->SwSmiInputValue == (UINTN)-1) {
-    //
-    // If SwSmiInputValue is set to (UINTN) -1 then a unique value will be assigned and returned in the structure.
-    //
-    Status = EFI_NOT_FOUND;
-    for (Index = 1; Index < gSmmSwDispatch2.MaximumSwiValue; Index++) {
-      DispatchContext.SwSmiInputValue = Index;
-      Status = mSmmSwDispatch->Register (
-                                 mSmmSwDispatch,
-                                 FrameworkDispatchFunction,
-                                 &DispatchContext,
-                                 DispatchHandle
-                                 );
-      if (!EFI_ERROR (Status)) {
-        RegisterContext->SwSmiInputValue = Index;
-        break;
-      }
-    }
-    if (RegisterContext->SwSmiInputValue == (UINTN)-1) {
-      return EFI_OUT_OF_RESOURCES;
-    }
-  } else {
-    DispatchContext.SwSmiInputValue = RegisterContext->SwSmiInputValue;
-    Status = mSmmSwDispatch->Register (
-                               mSmmSwDispatch,
-                               FrameworkDispatchFunction,
-                               &DispatchContext,
-                               DispatchHandle
-                               );
-  }
-  if (!EFI_ERROR (Status)) {
-    //
-    // Register
-    //
-    Status = gSmst->SmmAllocatePool (
-                      EfiRuntimeServicesData,
-                      sizeof(*ThunkContext),
-                      (VOID **)&ThunkContext
-                      );
-    ASSERT_EFI_ERROR (Status);
-    if (EFI_ERROR (Status)) {
-      mSmmSwDispatch->UnRegister (mSmmSwDispatch, *DispatchHandle);
-      return EFI_OUT_OF_RESOURCES;
-    }
-
-    ThunkContext->SwSmiInputValue  = RegisterContext->SwSmiInputValue;
-    ThunkContext->DispatchFunction = (UINTN)DispatchFunction;
-    ThunkContext->DispatchHandle   = *DispatchHandle;
-    InsertTailList (&mSmmSwDispatch2ThunkQueue, &ThunkContext->Link);
-  }
-
-  return Status;
-}
-
-/**
-  Unregister a child SMI source dispatch function for the specified software SMI.
-
-  This service removes the handler associated with DispatchHandle so that it will no longer be
-  called in response to a software SMI.
-
-  @param[in] This                Pointer to the EFI_SMM_SW_DISPATCH2_PROTOCOL instance.
-  @param[in] DispatchHandle      Handle of dispatch function to deregister.
-
-  @retval EFI_SUCCESS            The dispatch function has been successfully unregistered.
-  @retval EFI_INVALID_PARAMETER  The DispatchHandle was not valid.
-**/
-EFI_STATUS
-EFIAPI
-SmmSwDispatch2UnRegister (
-  IN CONST EFI_SMM_SW_DISPATCH2_PROTOCOL  *This,
-  IN       EFI_HANDLE                     DispatchHandle
-  )
-{
-  EFI_SMM_SW_DISPATCH2_THUNK_CONTEXT    *ThunkContext;
-  EFI_STATUS                            Status;
-
-  Status = mSmmSwDispatch->UnRegister (mSmmSwDispatch, DispatchHandle);
-  if (!EFI_ERROR (Status)) {
-    //
-    // Unregister
-    //
-    ThunkContext = FindSmmSwDispatch2ContextByDispatchHandle (DispatchHandle);
-    ASSERT (ThunkContext != NULL);
-    if (ThunkContext != NULL) {
-      RemoveEntryList (&ThunkContext->Link);
-      gSmst->SmmFreePool (ThunkContext);
-    }
-  }
-
-  return Status;
-}
-
-/**
-  Entry Point for this thunk driver.
-
-  @param[in] ImageHandle  Image handle of this driver.
-  @param[in] SystemTable  A Pointer to the EFI System Table.
-
-  @retval EFI_SUCCESS  The entry point is executed successfully.
-  @retval other        Some error occurred when executing this entry point.
-**/
-EFI_STATUS
-EFIAPI
-SmmSwDispatch2ThunkMain (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-{
-  EFI_STATUS               Status;
-  EFI_SMM_CONTROL_PROTOCOL *SmmControl;
-  EFI_SMM_CONTROL_REGISTER RegisterInfo;
-
-  //
-  // Locate Framework SMM SwDispatch Protocol
-  //
-  Status = gBS->LocateProtocol (
-                  &gEfiSmmSwDispatchProtocolGuid,
-                  NULL,
-                  (VOID **)&mSmmSwDispatch
-                  );
-  ASSERT_EFI_ERROR (Status);
-  gSmmSwDispatch2.MaximumSwiValue = mSmmSwDispatch->MaximumSwiValue;
-  if (gSmmSwDispatch2.MaximumSwiValue == 0x0) {
-    DEBUG ((EFI_D_ERROR, "BUGBUG: MaximumSwiValue is 0, work-around to make it 0xFF\n"));
-    gSmmSwDispatch2.MaximumSwiValue = 0xFF;
-  }
-
-  //
-  // Locate Framework SMM Control Protocol
-  //
-  Status = gBS->LocateProtocol (
-                  &gEfiSmmControlProtocolGuid,
-                  NULL,
-                  (VOID **)&SmmControl
-                  );
-
-  ASSERT_EFI_ERROR (Status);
-  Status = SmmControl->GetRegisterInfo (
-                         SmmControl,
-                         &RegisterInfo
-                         );
-  ASSERT_EFI_ERROR (Status);
-  mSmiTriggerRegister = RegisterInfo.SmiTriggerRegister;
-  mSmiDataRegister    = RegisterInfo.SmiDataRegister;
-
-  //
-  // Locate PI SMM CPU protocol
-  //
-  Status = gSmst->SmmLocateProtocol (
-                    &gEfiSmmCpuProtocolGuid,
-                    NULL,
-                    (VOID **)&mSmmCpuProtocol
-                    );
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // Publish PI SMM SwDispatch2 Protocol
-  //
-  ImageHandle = NULL;
-  Status = gSmst->SmmInstallProtocolInterface (
-                    &ImageHandle,
-                    &gEfiSmmSwDispatch2ProtocolGuid,
-                    EFI_NATIVE_INTERFACE,
-                    &gSmmSwDispatch2
-                    );
-  ASSERT_EFI_ERROR (Status);
-  return Status;
-}
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.inf b/Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.inf
deleted file mode 100644
index 4f95fc281e..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmmSwDispatch2OnSmmSwDispatchThunk/SmmSwDispatch2OnSmmSwDispatchThunk.inf
+++ /dev/null
@@ -1,54 +0,0 @@
-## @file
-#  Component description file for SMM SwDispatch2 Protocol on SMM SwDispatch Protocol Thunk driver.
-#
-#  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = SmmSwDispatch2OnSmmSwDispatchThunk
-  FILE_GUID                      = 1410C6AC-9F4B-495b-9C23-8A5AEB0165E9
-  MODULE_TYPE                    = DXE_SMM_DRIVER
-  VERSION_STRING                 = 1.0
-  PI_SPECIFICATION_VERSION       = 0x0001000A
-  ENTRY_POINT                    = SmmSwDispatch2ThunkMain
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64
-#
-
-[Sources]
-  SmmSwDispatch2OnSmmSwDispatchThunk.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-
-[LibraryClasses]
-  UefiDriverEntryPoint
-  UefiBootServicesTableLib
-  SmmServicesTableLib
-  BaseLib
-  IoLib
-  DebugLib
-
-[Protocols]
-  gEfiSmmControlProtocolGuid               # PROTOCOL ALWAYS_CONSUMED
-  gEfiSmmSwDispatchProtocolGuid            # PROTOCOL ALWAYS_CONSUMED
-  gEfiSmmCpuProtocolGuid                   # PROTOCOL ALWAYS_CONSUMED
-  gEfiSmmSwDispatch2ProtocolGuid           # PROTOCOL ALWAYS_PRODUCED
-
-[Depex]
-  gEfiSmmSwDispatchProtocolGuid AND
-  gEfiSmmControlProtocolGuid AND
-  gEfiSmmCpuProtocolGuid
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.c b/Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.c
deleted file mode 100644
index de257b35b5..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.c
+++ /dev/null
@@ -1,164 +0,0 @@
-/** @file
-  A helper driver to save information to SMRAM after SMRR is enabled.
-
-  This driver is for ECP platforms.
-
-  Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
-                                                                                   

-  SPDX-License-Identifier: BSD-2-Clause-Patent
-
-                                                                                   

-
-**/
-
-#include <PiSmm.h>
-#include <Library/DebugLib.h>
-#include <Library/UefiDriverEntryPoint.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/SmmServicesTableLib.h>
-#include <Library/BaseLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/IoLib.h>
-#include <Protocol/SmmSwDispatch.h>
-#include <Protocol/SmmReadyToLock.h>
-#include <Protocol/SmmControl.h>
-#include <Guid/Vlv2DeviceRefCodePkgTokenSpace.h>
-
-#define SMM_FROM_SMBASE_DRIVER        0x55
-#define SMM_FROM_CPU_DRIVER_SAVE_INFO 0x81
-
-#define EFI_SMRAM_CPU_NVS_HEADER_GUID \
-  { \
-    0x429501d9, 0xe447, 0x40f4, 0x86, 0x7b, 0x75, 0xc9, 0x3a, 0x1d, 0xb5, 0x4e \
-  }
-
-UINT8    mSmiDataRegister;
-BOOLEAN  mLocked = FALSE;
-EFI_GUID mSmramCpuNvsHeaderGuid = EFI_SMRAM_CPU_NVS_HEADER_GUID;
-
-/**
-  Dispatch function for a Software SMI handler.
-
-  @param  DispatchHandle        The handle of this dispatch function.
-  @param  DispatchContext       The pointer to the dispatch function's context.
-                                The SwSmiInputValue field is filled in
-                                by the software dispatch driver prior to
-                                invoking this dispatch function.
-                                The dispatch function will only be called
-                                for input values for which it is registered.
-
-  @return None
-
-**/
-VOID
-EFIAPI
-SmramSaveInfoHandler (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
-  )
-{
-  ASSERT (DispatchContext != NULL);
-  ASSERT (DispatchContext->SwSmiInputValue == SMM_FROM_SMBASE_DRIVER);
-
-  if (!mLocked && IoRead8 (mSmiDataRegister) == SMM_FROM_CPU_DRIVER_SAVE_INFO) {
-      CopyMem (
-        (VOID *)(UINTN)(PcdGetEx64 (&gEfiVLVTokenSpaceGuid, PcdCpuLockBoxDataAddress)),
-        (VOID *)(UINTN)(PcdGetEx64 (&gEfiVLVTokenSpaceGuid, PcdCpuSmramCpuDataAddress)),
-        (UINTN)(PcdGetEx64 (&gEfiVLVTokenSpaceGuid, PcdCpuLockBoxSize))
-        );
-  }
-}
-
-/**
-  Smm Ready To Lock event notification handler.
-
-  It sets a flag indicating that SMRAM has been locked.
-
-  @param[in] Protocol   Points to the protocol's unique identifier.
-  @param[in] Interface  Points to the interface instance.
-  @param[in] Handle     The handle on which the interface was installed.
-
-  @retval EFI_SUCCESS   Notification handler runs successfully.
- **/
-EFI_STATUS
-EFIAPI
-SmmReadyToLockEventNotify (
-  IN CONST EFI_GUID  *Protocol,
-  IN VOID            *Interface,
-  IN EFI_HANDLE      Handle
-  )
-{
-  mLocked = TRUE;
-  return EFI_SUCCESS;
-}
-
-/**
-  Entry point function of this driver.
-
-  @param[in] ImageHandle  The firmware allocated handle for the EFI image.
-  @param[in] SystemTable  A pointer to the EFI System Table.
-
-  @retval EFI_SUCCESS     The entry point is executed successfully.
-  @retval other           Some error occurs when executing this entry point.
-**/
-EFI_STATUS
-EFIAPI
-SmramSaveInfoHandlerSmmMain (
-  IN EFI_HANDLE        ImageHandle,
-  IN EFI_SYSTEM_TABLE  *SystemTable
-  )
-{
-  EFI_STATUS                    Status;
-  EFI_SMM_SW_DISPATCH_PROTOCOL  *SmmSwDispatch;
-  EFI_SMM_SW_DISPATCH_CONTEXT   SmmSwDispatchContext;
-  EFI_HANDLE                    DispatchHandle;
-  EFI_SMM_CONTROL_PROTOCOL      *SmmControl;
-  EFI_SMM_CONTROL_REGISTER      SmmControlRegister;
-  VOID                          *Registration;
-
-  //
-  // Get SMI data register
-  //
-  Status = SystemTable->BootServices->LocateProtocol (
-                                        &gEfiSmmControlProtocolGuid,
-                                        NULL,
-                                        (VOID **)&SmmControl
-                                        );
-  ASSERT_EFI_ERROR (Status);
-  Status = SmmControl->GetRegisterInfo (SmmControl, &SmmControlRegister);
-  ASSERT_EFI_ERROR (Status);
-  mSmiDataRegister = SmmControlRegister.SmiDataRegister;
-
-  //
-  // Register software SMI handler
-  //
-
-  Status = SystemTable->BootServices->LocateProtocol (
-                                        &gEfiSmmSwDispatchProtocolGuid,
-                                        NULL,
-                                        (VOID **)&SmmSwDispatch
-                                        );
-  ASSERT_EFI_ERROR (Status);
-
-  SmmSwDispatchContext.SwSmiInputValue = SMM_FROM_SMBASE_DRIVER;
-  Status = SmmSwDispatch->Register (
-                            SmmSwDispatch,
-                            &SmramSaveInfoHandler,
-                            &SmmSwDispatchContext,
-                            &DispatchHandle
-                            );
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // Register SMM Ready To Lock Protocol notification
-  //
-  Status = gSmst->SmmRegisterProtocolNotify (
-                    &gEfiSmmReadyToLockProtocolGuid,
-                    SmmReadyToLockEventNotify,
-                    &Registration
-                    );
-  ASSERT_EFI_ERROR (Status);
-
-  return Status;
-}
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.inf b/Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.inf
deleted file mode 100644
index ec42c84472..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/SmramSaveInfoHandlerSmm/SmramSaveInfoHandlerSmm.inf
+++ /dev/null
@@ -1,60 +0,0 @@
-## @file
-#
-#  A helper driver to save information to SMRAM after SMRR is enabled.
-#
-#  Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>
-#                                                                                  

-# SPDX-License-Identifier: BSD-2-Clause-Patent
-
-#                                                                                  

-#
-#
-#
-##
-
-[Defines]
-  INF_VERSION                    = 0x00010005
-  BASE_NAME                      = SmramSaveInfoHandlerSmm
-  FILE_GUID                      = 63296C52-01CF-4eea-A47C-782A14DA6894
-  MODULE_TYPE                    = DXE_SMM_DRIVER
-  VERSION_STRING                 = 1.0
-  PI_SPECIFICATION_VERSION       = 0x0001000A
-
-  ENTRY_POINT                    = SmramSaveInfoHandlerSmmMain
-
-#
-# The following information is for reference only and not required by the build tools.
-#
-#  VALID_ARCHITECTURES           = IA32 X64
-#
-
-[Sources.common]
-  SmramSaveInfoHandlerSmm.c
-
-[Packages]
-  MdePkg/MdePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
-  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
-
-[LibraryClasses]
-  UefiDriverEntryPoint
-  UefiRuntimeServicesTableLib
-  SmmServicesTableLib
-  BaseLib
-  BaseMemoryLib
-  IoLib
-
-[Protocols]
-  gEfiSmmSwDispatchProtocolGuid      ## CONSUMED
-  gEfiSmmControlProtocolGuid         ## CONSUMED
-  gEfiSmmReadyToLockProtocolGuid     ## CONSUMED
-
-[Pcd.common]
-  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxDataAddress
-  gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress
-  gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize
-  
-[Depex]
-  gEfiSmmSwDispatchProtocolGuid AND
-  gEfiSmmControlProtocolGuid
-
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/IFWIHeader/Vacant.bin b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/IFWIHeader/Vacant.bin
deleted file mode 100644
index 12d359146014baad9277a951b237fd27e819db6e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3928064
zcmeIuF#!Mo0K%aDspo45h(KY$fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r
z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@
z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK
zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5
zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM
z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*
z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd
z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA
zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj
rFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFz^EdVf>G}

diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/IFWIStitch.bat b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/IFWIStitch.bat
deleted file mode 100644
index 200ca05a23..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/IFWIStitch.bat
+++ /dev/null
@@ -1,270 +0,0 @@
-@REM @file
-@REM   Windows batch file to build BIOS ROM
-@REM
-@REM Copyright (c) 2006   - 2019, Intel Corporation. All rights reserved.<BR>
-@REM 
-@REM   SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-SetLocal EnableDelayedExpansion EnableExtensions
-
-set PLATFORM_BIN_PACKAGE=%WORKSPACE%\Vlv2SocBinPkg
-if not exist %PLATFORM_BIN_PACKAGE% (
-  if defined PACKAGES_PATH (
-    for %%i IN (%PACKAGES_PATH%) DO (
-      if exist %%~fi\Vlv2SocBinPkg (
-        set PLATFORM_BIN_PACKAGE=%%~fi\Vlv2SocBinPkg
-        goto PlatformBinPackageFound
-      )
-    )
-  ) else (
-    echo.
-    echo !!! ERROR !!! Cannot find %PLATFORM_NAME% !!!
-    echo.
-    goto BldFail
-  )
-)
-:PlatformBinPackageFound
-
-
-:: Set script defaults
-set exitCode=0
-set BackupRom=1
-set UpdateVBios=1
-set SpiLock=0
-set Stitch_Config=Stitch_Config.txt
-copy /y nul Stitching.log >nul
-
-:: Set default Suffix as:  YYYY_MM_DD_HHMM
-set hour=%time: =0%
-reg copy "HKCU\Control Panel\International" "HKCU\Control Panel\International_Temp" /f >nul
-reg add "HKCU\Control Panel\International" /v sShortDate /d "yyyy_MM_dd" /f >nul
-for /f "tokens=1" %%i in ("%date%") do set today=%%i
-reg copy "HKCU\Control Panel\International_Temp" "HKCU\Control Panel\International" /f >nul
-reg delete "HKCU\Control Panel\International_Temp" /f >nul
-set IFWI_Suffix=%today%_%hour:~0,2%%time:~3,2%
-
-:: Process input arguments
-if "%~1"=="?"       goto Usage
-if "%~1"=="/?"      goto Usage
-if /i "%~1"=="Help" goto Usage
-
-:OptLoop
-if /i "%~1"=="/nV" (
-    set UpdateVBios=0
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/nB" (
-    set BackupRom=0
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/yL" (
-    set SpiLock=1
-    shift
-    goto OptLoop
-)
-
-if /i "%~1"=="/B" (
-    if "%~2"==""  goto Usage
-    if not exist %~2 echo BIOS not found. & goto Usage
-    set BIOS_Names=%~2
-    set BIOS_File_Name=%~n2
-    shift & shift
-    goto OptLoop
-)
-if /i "%~1"=="/C" (
-    if "%~2"==""  goto Usage
-    if not exist %~2 echo ConfigFile not found. & goto Usage
-    set Stitch_Config=%~2
-    shift & shift
-    goto OptLoop
-)
-if /i "%~1"=="/S" (
-    if "%~2"==""  goto Usage
-    set IFWI_Suffix=%~2
-    shift & shift
-    goto OptLoop
-)
-
-if "%BIOS_File_Name:~0,4%"=="MNW2" (
-   set Stitch_Config= MNW2_Stitch_Config.txt
-)
-if "%BIOS_File_Name:~3,4%"=="MNW2" (
-   set Stitch_Config= MNW2_Stitch_Config.txt
-)
-
-:: if no rom specified by user, search in ./ for ROM files
-if "%BIOS_Names%"=="" (
-    set "BIOS_Names= "
-    for /f "tokens=*" %%i in ('dir /b *.rom') do set BIOS_Names=!BIOS_Names! %%i
-    if "!BIOS_Names!"==" " (
-        echo NO .ROM files found !!!
-        goto Usage
-    )
-)
-
-:: Parse the Stitch_Config File
-if not exist %Stitch_Config% (
-    echo Stitch Configuration File %Stitch_Config% not found.
-    goto ScriptFail
-)
-for /f "delims== tokens=1,2" %%i in (%Stitch_Config%) do (
-    if /i "%%i"=="HEADER"      set IFWI_HEADER=%%j
-    if /i "%%i"=="SEC_VERSION" set SEC_VERSION=%%j
-    if /i "%%i"=="Source" (
-        if /i "%%j"=="ALPHA" set Source_Prefix=A_
-        if /i "%%j"=="BF" set Source_Prefix=BF_
-        if /i "%%j"=="BE" set Source_Prefix=BE_
-        if /i "%%j"=="PV" set Source_Prefix=PV_
-        if /i "%%j"=="PR1" set Source_Prefix=PR1_
-    )
-)
-
-if %SpiLock% EQU 1 (
-  set IFWI_HEADER_FILE=IFWIHeader\!IFWI_HEADER!_SPILOCK.bin
-) else (
-  set IFWI_HEADER_FILE=IFWIHeader\!IFWI_HEADER!.bin
-)
-
-:: **********************************************************************
-:: The Main Stitching Loop
-:: **********************************************************************
-echo %date%  %time% >>Stitching.log 2>&1
-echo %date%  %time%
-echo.
-for %%i in (%BIOS_Names%) do (
-
-    REM  ----- Do NOT use :: for comments Inside of code blocks() -------
-    set BIOS_Rom=%%i
-    set BIOS_Name=%%~ni
-    set BIOS_Version=!BIOS_Name:~-7,7!
-
-    REM extract PlatformType from BIOS filename
-    set Platform_Type=!BIOS_Name:~0,4!
-
-    REM Special treat for BayLake FFD8
-    set Temp_Name=!BIOS_Name:~0,7!
-
-
-    REM Capitalize and validate the Platform_Type
-    if /i "!Platform_Type!"=="MNW2" (
-        set Platform_Type=MNW2
-    ) else (
-        echo Error - Unsupported PlatformType: !Platform_Type!
-        goto Usage
-    )
-
-
-    REM search BIOS_Name for Arch substring:  either IA32 or X64
-    if not "!BIOS_Name!"=="!BIOS_Name:_IA32_=!" (
-        set Arch=IA32
-    ) else if not "!BIOS_Name!"=="!BIOS_Name:_X64_=!" (
-        set Arch=X64
-    ) else (
-        echo Error:  Could not determine Architecture for !BIOS_Rom!
-        goto Usage
-    )
-    set IFWI_Prefix=!Platform_Type!_IFWI_%Source_Prefix%!Arch!_!!BIOS_Version!
-
-    REM search BIOS_Name for Build_Target substring: either R or D
-    if not "!BIOS_Name!"=="!BIOS_Name:_R_=!" (
-        set Build_Target=Release
-        set IFWI_Prefix=!IFWI_Prefix!_R
-    ) else if not "!BIOS_Name!"=="!BIOS_Name:_D_=!" (
-        set Build_Target=Debug
-        set IFWI_Prefix=!IFWI_Prefix!_D
-    ) else (
-        echo Error:  Could not determine Build Target for !BIOS_Rom!
-        goto Usage
-    )
-
-    REM Create a BIOS backup before Stitching
-    if %BackupRom% EQU 1 (
-        echo Creating backup of original BIOS rom.
-        copy /y !BIOS_Rom! !BIOS_Rom!.orig >nul
-    )
-
-    echo.  >>Stitching.log
-    echo ********** Stitching !BIOS_Rom! **********  >>Stitching.log
-    echo.  >>Stitching.log
-    echo.
-    echo Stitching IFWI for !BIOS_Rom! ...
-    echo ---------------------------------------------------------------------------
-    echo IFWI  Header: !IFWI_HEADER_FILE!,   SEC version: !SEC_VERSION!,   
-    echo BIOS Version: !BIOS_Version!
-
-    echo Platform Type: !Platform_Type!,     IFWI Prefix: %BIOS_ID%
-    echo ---------------------------------------------------------------------------
-
-    echo -----------------------------
-    echo.
-    echo Generating IFWI... %BIOS_ID%.bin
-    echo.
-
-    copy /b/y !IFWI_HEADER_FILE! + %PLATFORM_BIN_PACKAGE%\SEC\!SEC_VERSION!\VLV_SEC_REGION.bin + %PLATFORM_BIN_PACKAGE%\SEC\!SEC_VERSION!\Vacant.bin + !BIOS_Rom! %BIOS_ID%.bin
-    echo.
-    echo ===========================================================================
-)
-@echo off
-
-::**********************************************************************
-:: end of main loop
-::**********************************************************************
-
-echo.
-echo  -- All specified ROM files Stitched. --
-echo.
-goto Exit
-
-:Usage
-echo.
-echo **************************************************************************************************
-echo This Script is used to Stitch together BIOS, GOP Driver, Microcode Patch and TXE FW
-echo into a single Integrated Firmware Image (IFWI).
-echo.
-echo Usage: IFWIStitch.bat [flags] [/B BIOS.ROM] [/C Stitch_Config] [/S IFWI_Suffix]
-echo.
-echo    This script has NO Required arguments, so that the user can just double click from the GUI.
-echo    However, this requires that the BIOS.ROM file name is formatted correctly.
-echo.
-echo    /nG             Do NOT update the GOP driver.  (applies to all ROM files for this run)
-echo    /nV             Do NOT update the VBIOS.       (applies to all ROM files for this run)
-echo    /nM             Do NOT update the Microcode.   (applies to all ROM files for this run)
-echo    /nB             Do NOT backup BIOS.ROMs. (Default will backup to BIOS.ROM.Orig)
-echo.
-echo    BIOS.ROM:       A single BIOS ROM file to use for stitching
-echo                    (DEFAULT: ALL .ROM files inside the current directory)
-echo    Stitch_Config:  Text file containing version info of each FW component
-echo                    (DEFAULT: Stitch_Config.txt)
-echo    IFWI_Suffix:    Suffix to append to the end of the IFWI filename
-echo                    (DEFAULT: YYYY_MM_DD_HHMM)
-echo.
-echo Examples:
-echo    IFIWStitch.bat                                      : Stitch all ROMs with defaults
-echo    IFIWStitch.bat /B C:/MyRoms/testBIOS.rom            : Stitch single ROM with defaults
-echo    IFIWStitch.bat /B ../testBIOS.rom /S test123        : Stitch single ROM and add custom suffix
-echo    IFIWStitch.bat /nM /nB /B testBIOS.rom /S test456   : Stitch single ROM, keep uCode from .rom,
-echo                                                          don't create backup, and add custom suffix.
-echo ****************************************************************************************************
-pause
-exit /b 1
-
-:ScriptFail
-set exitCode=1
-
-:Exit
-echo  -- See Stitching.log for more info. --
-echo.
-echo %date%  %time%
-echo.
-if "%Platform_Type%"=="MNW2" (
-  echo .
-) else (
-  echo only support MNW2 for this project!
-pause
-)
-exit /b %exitCode%
-EndLocal
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/MNW2_Stitch_Config.txt b/Platform/Intel/Vlv2TbltDevicePkg/Stitch/MNW2_Stitch_Config.txt
deleted file mode 100644
index 82abe6548f..0000000000
--- a/Platform/Intel/Vlv2TbltDevicePkg/Stitch/MNW2_Stitch_Config.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Copyright (c)  1999  - 2014, Intel Corporation. All rights reserved
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-
-HEADER=IFWI_HEADER
-SEC_VERSION=1.0.2.1060v5
-
-- 
2.21.0.windows.1


  reply	other threads:[~2019-07-01  4:07 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-01  2:55 [edk2-platforms Patch 00/14] Vlv2TbltDevicePkg: Remove Intel Framework dependencies Michael D Kinney
2019-07-01  2:55 ` [edk2-platforms Patch 01/14] Vlv2DeviceRefCodePkg: Add gEfiSmmIchnDispatchProtocolGuid Michael D Kinney
2019-07-01  4:06   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 02/14] Vlv2TbltDevicePkg: Reduce Intel Framework dependencies Michael D Kinney
2019-07-01  4:06   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 03/14] Vlv2TbltDevicePkg: Remove unused modules/libraries Michael D Kinney
2019-07-01  4:07   ` Sun, Zailiang [this message]
2019-07-01  2:55 ` [edk2-platforms Patch 04/14] Vlv2TbltDevicePkg: Switch from ISA to SIO modules Michael D Kinney
2019-07-01  4:07   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 05/14] Vlv2TbltDevicePkg: Switch to CPU I/O 2 Protocol Michael D Kinney
2019-07-01  4:07   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 06/14] Vlv2TbltDevicePkg: Remove use of PS/2 Policy Protocol Michael D Kinney
2019-07-01  4:07   ` [edk2-devel] " Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 07/14] Vlv2TbltDevicePkg: Remove use of BIOS ID tools Michael D Kinney
2019-07-01  4:07   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 08/14] Vlv2TbltDevicePkg: Remove use of Data Hub Protocol Michael D Kinney
2019-07-01  4:08   ` [edk2-devel] " Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 09/14] Vlv2TbltDevicePkg: Use PI Spec SMBUS2 PPI Michael D Kinney
2019-07-01  4:08   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 10/14] Vlv2TbltDevicePkg: Switch to MdeModulePkg BdsDxe Michael D Kinney
2019-07-01  4:08   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 11/14] Vlv2TbltDevicePkg: Update boot mode/state behaviors Michael D Kinney
2019-07-01  4:08   ` [edk2-devel] " Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 12/14] Vlv2TbltDevicePkg/PlatformSmm: Switch to PI SMM Protocols Michael D Kinney
2019-07-01  4:08   ` [edk2-devel] " Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 13/14] Vlv2TbltDevicePkg: Change to PI Spec ACPI Table Protocol Michael D Kinney
2019-07-01  4:08   ` Sun, Zailiang
2019-07-01  2:55 ` [edk2-platforms Patch 14/14] Vlv2TbltDevicePkg/PlatformInitPei: Update MemoryTypeInformation Michael D Kinney
2019-07-01  4:08   ` Sun, Zailiang
2019-07-01  4:04 ` [edk2-devel] [edk2-platforms Patch 00/14] Vlv2TbltDevicePkg: Remove Intel Framework dependencies Gary Lin
2019-07-01 23:07   ` Michael D Kinney
2019-07-02  9:48     ` Gary Lin
2019-07-02 16:49       ` Michael D Kinney
2019-07-02 21:11         ` Michael D Kinney
2019-07-03  3:57           ` Gary Lin
2019-07-09  3:52             ` Michael D Kinney
2019-07-09  6:04               ` Gary Lin
2019-07-10  3:38                 ` Michael D Kinney
2019-07-10  4:14                   ` Gary Lin
2019-07-10  5:01                     ` Michael D Kinney
2019-07-10  7:10                       ` Gary Lin
2019-07-10 19:27                         ` Michael D Kinney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7CB7EF03E15B5D48981329A508747A9850C904D9@SHSMSX104.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox