summaryrefslogtreecommitdiff
path: root/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit
diff options
context:
space:
mode:
authorraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
committerraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
commitb7c51c9cf4864df6aabb99a1ae843becd577237c (patch)
treeeebe9b0d0ca03062955223097e57da84dd618b9a /Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit
downloadzprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit')
-rw-r--r--Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.c626
-rw-r--r--Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.cif13
-rw-r--r--Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.dxs76
-rw-r--r--Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.h187
-rw-r--r--Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.inf74
-rw-r--r--Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.mak165
-rw-r--r--Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.sdl94
7 files changed, 1235 insertions, 0 deletions
diff --git a/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.c b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.c
new file mode 100644
index 0000000..87b9146
--- /dev/null
+++ b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.c
@@ -0,0 +1,626 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.c 9 5/13/14 4:55a Joshchou $
+//
+// $Revision: 9 $
+//
+// $Date: 5/13/14 4:55a $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.c $
+//
+// 9 5/13/14 4:55a Joshchou
+// [TAG] EIP167032
+// [Category] Improvement
+// [Description] Review the variable's attribute, we shouldn't use
+// runtime attribute with setup variable.
+// [Files] RapidStartDxePolicyInit.h
+// RapidStartDxePolicyInit.c
+// RapidStartDxePolicyInit.cif
+//
+// 8 6/21/13 5:59a Joshchou
+// [TAG] EIP126792
+// [Category] Bug Fix
+// [Severity] Minor
+// [Symptom] Can't do AMI capsule when Intel Rapid Start eanble
+// [RootCause] CMOS RapidStartFlag does not clear.
+// [Solution] Clear RapidStartFlag when cold boot.
+//
+// 7 1/15/13 4:44a Bensonlai
+// [TAG] EIP112263
+// [Category] Bug Fix
+// [Severity] Normal
+// [Symptom] [RapidStart] Instant-on can't work
+// [RootCause] Intel reference code can't work on AMI base.
+// [Solution] Modified the PeiGfxDriver.dxs and RapidStartDxe.dxs for
+// AMI code
+// [Files] RapidStartDxePolicyInit.c, RapidStartSetup.uni,
+// RapidStartSetup.sdl, RapidStartSetup.sd, PeiGfxDriver.dxs,
+// RapidStartDxe.dxs
+//
+// 6 1/13/13 7:46a Bensonlai
+// [TAG] EIPNone
+// [Category] Improvement
+// [Description] Disabling the RapidStart while STAT mode in the IDE
+// mode
+// [Files] RapidStartDxePolicyInit.c, RapidStartDxePolicyInit.h,
+// RapidStartDxePolicyInit.mak, RapidStartSetup.c, RapidStartSetup.mak,
+// RapidStartSetup.sd, RapidStartSetup.sdl
+//
+// 5 12/11/12 10:59p Bensonlai
+// [TAG] None
+// [Category] Improvement
+// [Description] Removed unused code
+// [Files] RapidStartDxePolicyInit.c
+//
+// 4 12/07/12 1:15a Bensonlai
+// [TAG] None
+// [Category] Bug Fix
+// [Severity] Normal
+// [Symptom] When installed memory size less than HDD partition size of
+// teh RapidStart, it still can work.
+// [RootCause] The RAPID_START_PERSISTENT_DATA wasn't updated in the
+// BdsAllDriversConnectedCallback().
+// [Solution] Get the real total size of memory directly.
+// [Files] RapidStartDxePolicyInit.c, RapidStartDxePolicyInit.h,
+// RapidStartDxePolicyInit.mak
+//
+// 3 12/03/12 2:12a Bensonlai
+// [TAG] EIP107865
+// [Category] Bug Fix
+// [Severity] Normal
+// [Symptom] While system has no disk drives, we still free the null
+// pointer IdentifyDriveInfo/HandleBuffer and that will cause an assert
+// error with DEBUG_MODE=1.
+// [Solution] Improved the function of SsdDetection.
+//
+// 2 11/15/12 12:24a Bensonlai
+// [TAG] None
+// [Category] Improvement
+// [Description] Move the RAPID_START_PARTITION_DETECT_BEFORE_SETUP to
+// RapidStartDxePolicyInit.c
+//
+// 1 10/15/12 4:40a Bensonlai
+// [TAG] None
+// [Category] Improvement
+// [Description] [Category] Improvement
+// [Severity] Important
+// [Description] Rename all IFFS sting to Rapid Start.
+// [Files] Board\EM\RapidStartWrapper\*.*, ReferenceCode\RapidStart\*.*
+//
+// [Category] Improvement
+// [Severity] Important
+// [Description] Implementation of the LOCK_DISABLE_RAPID_START_IF_NO_SSD
+// using EDKII.
+// [Files] Board\EM\RapidStartWrapper\Dxe\RapidStartDxePolicyInit\*.*
+// [Files] RapidStartDxePolicyInit.cif
+// RapidStartDxePolicyInit.sdl
+// RapidStartDxePolicyInit.mak
+// RapidStartDxePolicyInit.h
+// RapidStartDxePolicyInit.c
+// RapidStartDxePolicyInit.dxs
+// RapidStartDxePolicyInit.inf
+//
+//**********************************************************************
+//<AMI_FHDR_START>
+//
+// Name: RapidStartDxePolicyInit.c
+//
+// Description: This file is a wrapper for Intel RapidStart Platform Policy driver.
+// Get Setup Value to initilize Intel DXE Platform Policy.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+
+#include "RapidStartDxePolicyInit.h"
+
+RAPID_START_PLATFORM_POLICY_PROTOCOL mDxePlatformRapidStartPolicy;
+EFI_GUID gRapidStartPlatformPolicyProtocolGuid = RAPID_START_PLATFORM_POLICY_PROTOCOL_GUID;
+
+//
+// Function implementations
+//
+#if LOCK_DISABLE_RAPID_START_IF_NO_SSD
+BOOLEAN SsdDetection (
+ VOID
+)
+{
+ EFI_STATUS Status;
+ UINTN HandleCount;
+ EFI_HANDLE *HandleBuffer;
+ UINT8 Index;
+ PCI_DEVICE_PATH *PciDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;
+ EFI_DISK_INFO_PROTOCOL *DiskInfo;
+ EFI_IDENTIFY_DATA *IdentifyDriveInfo;
+ UINT32 BufferSize = 0;
+
+ Status = gBS->LocateHandleBuffer ( ByProtocol, \
+ &gEfiDiskInfoProtocolGuid, \
+ NULL, \
+ &HandleCount, \
+ &HandleBuffer \
+ );
+
+ if ( EFI_ERROR(Status) ) return FALSE;
+
+ for (Index = 0; Index < HandleCount; Index++) {
+ Status = gBS->HandleProtocol ( HandleBuffer[Index], \
+ &gEfiDevicePathProtocolGuid, \
+ (VOID *) &DevicePath \
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ continue;
+ }
+
+ DevicePathNode = DevicePath;
+ while (!IsDevicePathEnd (DevicePathNode)) {
+ if ((DevicePathType (DevicePathNode) == HARDWARE_DEVICE_PATH) &&
+ (DevicePathSubType (DevicePathNode) == HW_PCI_DP)
+ ) {
+ PciDevicePath = (PCI_DEVICE_PATH *) DevicePathNode;
+ break;
+ }
+
+ DevicePathNode = NextDevicePathNode (DevicePathNode);
+ }
+
+
+ if (PciDevicePath == NULL) continue;
+
+ if ( ((PciDevicePath->Device == PCI_DEVICE_NUMBER_PCH_SATA) && (PciDevicePath->Function == PCI_FUNCTION_NUMBER_PCH_SATA)) ||
+ ((PciDevicePath->Device == PCI_DEVICE_NUMBER_PCH_SATA) && (PciDevicePath->Function == PCI_FUNCTION_NUMBER_PCH_SATA2)) ) {
+
+ Status = gBS->HandleProtocol ( HandleBuffer[Index], \
+ &gEfiDiskInfoProtocolGuid, \
+ &DiskInfo \
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ continue;
+ }
+
+ BufferSize = sizeof (EFI_IDENTIFY_DATA);
+ IdentifyDriveInfo = AllocatePool (BufferSize);
+ if (IdentifyDriveInfo == NULL) {
+ FreePool (HandleBuffer);
+ return FALSE;
+ }
+
+ Status = DiskInfo->Identify (
+ DiskInfo,
+ IdentifyDriveInfo,
+ &BufferSize
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ FreePool (IdentifyDriveInfo);
+ continue;
+ }
+
+ if (IdentifyDriveInfo->AtaData.reserved_160_255[57] == 0x0001) {
+ FreePool (IdentifyDriveInfo);
+ FreePool (HandleBuffer);
+ return TRUE;
+ }
+
+ FreePool (IdentifyDriveInfo);
+ }
+ }
+
+ if (HandleCount > 0) {
+ FreePool (HandleBuffer);
+ }
+ return FALSE;
+}
+
+VOID
+SsdDetectionCallback (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+)
+{
+
+ EFI_STATUS Status;
+ UINTN VariableSize;
+ SETUP_DATA SetupData;
+ UINT32 Attributes = 0;
+
+ VariableSize = sizeof( SETUP_DATA );
+ Status = gRT->GetVariable( L"Setup", \
+ &SetupGuid, \
+ &Attributes, \
+ &VariableSize, \
+ &SetupData );
+
+ if ( EFI_ERROR(Status) ) {
+ gBS->CloseEvent (Event);
+ ASSERT_EFI_ERROR (Status);
+ return;
+ }
+
+ if (!SsdDetection()) {
+ SetupData.RapidStartLock = 1;
+ SetupData.RapidStartEnabled = 0;
+ } else {
+ SetupData.RapidStartLock = 0;
+ }
+
+ Status = gRT->SetVariable( L"Setup", \
+ &SetupGuid, \
+ Attributes, \
+ sizeof (SETUP_DATA), \
+ &SetupData
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ gBS->CloseEvent (Event);
+ ASSERT_EFI_ERROR (Status);
+ return;
+ }
+
+ gBS->CloseEvent (Event);
+}
+
+VOID
+SsdDetectionRegisterCallBack (
+ VOID
+)
+{
+ EFI_EVENT Event;
+ VOID *NotifyReg;
+ EFI_STATUS Status;
+
+ Status = gBS->CreateEvent (
+ EFI_EVENT_NOTIFY_SIGNAL,
+ EFI_TPL_CALLBACK,
+ SsdDetectionCallback,
+ NULL,
+ &Event
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ ASSERT_EFI_ERROR (Status);
+ return;
+ }
+
+ Status = gBS->RegisterProtocolNotify (
+ &gNotifyProtocolGuid ,
+ Event,
+ &NotifyReg
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ ASSERT_EFI_ERROR (Status);
+ return;
+ }
+
+ return;
+}
+#endif
+
+#ifdef RAPID_START_PARTITION_DETECT_BEFORE_SETUP
+VOID
+BdsAllDriversConnectedCallback (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+)
+{
+ EFI_STATUS Status;
+ EFI_GUID RapidStartPartitionProtocolGuid = RAPID_START_PARTITION_STATUS_PROTOCOL_GUID;
+ RAPID_START_PERSISTENT_DATA *mRapidStartData;
+ UINTN MchBase;
+
+ mRapidStartData = AllocateZeroPool (sizeof(RAPID_START_PERSISTENT_DATA));
+ if (mRapidStartData == NULL) {
+ return;
+ }
+
+ MchBase = MmPciAddress (0, SA_MC_BUS, SA_MC_DEV, SA_MC_FUN, 0);
+ mRapidStartData->Tolm = MmioRead32 (MchBase + R_SA_BDSM) & B_SA_BDSM_BDSM_MASK;
+ mRapidStartData->Tohm = MmioRead64 (MchBase + R_SA_TOUUD) & B_SA_TOUUD_TOUUD_MASK;
+ ///
+ /// Calculate total size of memory to be stored
+ ///
+ mRapidStartData->TotalMem = mRapidStartData->Tolm;
+ if (mRapidStartData->Tohm > MEM_EQU_4GB) {
+ mRapidStartData->TotalMem += mRapidStartData->Tohm - MEM_EQU_4GB;
+ }
+
+ //
+ // Rapid Start has been enabled, check if Rapid Start store valid.
+ //
+ Status = SearchRapidStartStore (
+ &mDxePlatformRapidStartPolicy,
+ &(mRapidStartData->StoreSectors),
+ &(mRapidStartData->StoreLbaAddr),
+ &(mRapidStartData->StoreSataPort)
+ );
+ if ( (EFI_ERROR (Status)) ||
+ (MEM_TO_SECT (mRapidStartData->TotalMem) > mRapidStartData->StoreSectors) &&
+ (mDxePlatformRapidStartPolicy.ActivePageThresholdSupport == 0) ) {
+ //
+ } else {
+ Status = gBS->InstallProtocolInterface (
+ &gImageHandle,
+ &RapidStartPartitionProtocolGuid,
+ EFI_NATIVE_INTERFACE,
+ NULL );
+ ASSERT_EFI_ERROR (Status);
+ }
+
+ gBS->CloseEvent (Event);
+}
+
+VOID
+RegisterForBdsAllDriversConnected (
+ IN EFI_HANDLE ImageHandle
+)
+{
+ EFI_EVENT Event;
+ VOID *NotifyReg;
+ EFI_STATUS Status;
+
+ gImageHandle = ImageHandle;
+
+ Status = gBS->CreateEvent (
+ EFI_EVENT_NOTIFY_SIGNAL,
+ EFI_TPL_CALLBACK,
+ BdsAllDriversConnectedCallback,
+ NULL,
+ &Event
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ ASSERT_EFI_ERROR (Status);
+ return;
+ }
+
+ Status = gBS->RegisterProtocolNotify (
+ &gBdsAllDriversConnectedProtocolGuid,
+ Event,
+ &NotifyReg
+ );
+
+ if ( EFI_ERROR(Status) ) {
+ ASSERT_EFI_ERROR (Status);
+ return;
+ }
+
+ return;
+}
+#endif
+
+#if SYNC_UP_DRIVER_AND_BIOS_VARIABLE
+VOID
+SyncUpDriverAndBiosVariable (
+ VOID
+)
+{
+ EFI_STATUS Status;
+ UINTN VariableSize;
+ RAPID_START_WRAPPER_SMM_DATA RapidStartWrapperSmmData;
+ UINT32 Attributes = 0;
+ SETUP_DATA SetupData;
+
+ VariableSize = sizeof( RAPID_START_WRAPPER_SMM_DATA );
+ Status = gRT->GetVariable( L"RstWrapVar",
+ &RapidStartWrapperSmmDataGuid,
+ &Attributes,
+ &VariableSize,
+ &RapidStartWrapperSmmData );
+
+ //TRACE((-1,"SYNC_UP_DRIVER_AND_BIOS_VARIABLE Get Setup Variable RstWrapVar Attributes = %x.\n",Attributes));
+
+ if ( EFI_ERROR (Status) ) {
+ //TRACE((-1,"SYNC_UP_DRIVER_AND_BIOS_VARIABLE Get Variable Failed!\n"));
+ return;
+ }
+ else{
+// TRACE((-1,"SYNC_UP_DRIVER_AND_BIOS_VARIABLE S3WakeTimerMin = %d\n",RapidStartWrapperSmmData.S3WakeTimerMin));
+// TRACE((-1,"SYNC_UP_DRIVER_AND_BIOS_VARIABLE EntryOnS3RtcWake = %x\n",RapidStartWrapperSmmData.EntryOnS3RtcWake));
+// TRACE((-1,"SYNC_UP_DRIVER_AND_BIOS_VARIABLE EntryOnS3CritBattWake = %x\n",RapidStartWrapperSmmData.EntryOnS3CritBattWake));
+
+ VariableSize = sizeof( SETUP_DATA );
+ Status = gRT->GetVariable( L"Setup",
+ &SetupGuid,
+ &Attributes,
+ &VariableSize,
+ &SetupData );
+
+// TRACE((-1,"SYNC_UP_DRIVER_AND_BIOS_VARIABLE Get Setup Variable Attributes = %x.\n",Attributes));
+ SetupData.S3WakeTimerMin = RapidStartWrapperSmmData.S3WakeTimerMin;
+ SetupData.EntryOnS3RtcWake = RapidStartWrapperSmmData.EntryOnS3RtcWake;
+ SetupData.EntryOnS3CritBattWake = RapidStartWrapperSmmData.EntryOnS3CritBattWake;
+
+ Status = gRT->SetVariable( L"Setup", \
+ &SetupGuid, \
+ Attributes, \
+ sizeof (SETUP_DATA), \
+ &SetupData );
+
+ return;
+ }
+
+
+}
+#endif
+
+VOID
+SetCriticalBatteryThreshole (
+ IN UINT8 Value
+)
+{
+ UINT8 RtcIndexPort;
+ UINT8 RtcDataPort;
+
+ //
+ // CMOS access registers (using alternative access not to handle NMI bit)
+ //
+ if (FFS_CBTH_DATA_REG < 0x80) {
+ //
+ // First bank
+ //
+ RtcIndexPort = 0x74;
+ RtcDataPort = 0x75;
+ } else {
+ //
+ // Second bank
+ //
+ RtcIndexPort = 0x76;
+ RtcDataPort = 0x77;
+ }
+
+ IoWrite8 (RtcIndexPort, FFS_CBTH_DATA_REG & 0x7F);
+ IoWrite8 (RtcDataPort, Value);
+}
+
+/**
+ Initilize Intel RapidStart DXE Platform Policy
+
+ @param[in] ImageHandle Image handle of this driver.
+ @param[in] SystemTable Global system service table.
+
+ @retval EFI_SUCCESS Initialization complete.
+ @exception EFI_UNSUPPORTED The chipset is unsupported by this driver.
+ @retval EFI_OUT_OF_RESOURCES Do not have enough resources to initialize the driver.
+ @retval EFI_DEVICE_ERROR Device error, driver exits abnormally.
+**/
+EFI_STATUS
+EFIAPI
+RapidStartDxePolicyInitEntryPoint (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+)
+{
+ EFI_STATUS Status;
+ UINTN VariableSize;
+ SETUP_DATA SetupData;
+ PCH_SERIES PchSeries = GetPchSeries();
+ ///
+ /// Initialize the EFI Driver Library
+ ///
+ ZeroMem (&mDxePlatformRapidStartPolicy, sizeof (RAPID_START_PLATFORM_POLICY_PROTOCOL));
+
+ VariableSize = sizeof( SETUP_DATA );
+ Status = gRT->GetVariable( L"Setup",
+ &SetupGuid,
+ NULL,
+ &VariableSize,
+ &SetupData );
+
+ if ( EFI_ERROR(Status) ) {
+ mDxePlatformRapidStartPolicy.EnableRapidStart = 0;
+ mDxePlatformRapidStartPolicy.EntryOnS3RtcWake = 0;
+ mDxePlatformRapidStartPolicy.S3WakeTimerMin = 0;
+ mDxePlatformRapidStartPolicy.EntryOnS3CritBattWake = 0;
+ mDxePlatformRapidStartPolicy.ActivePageThresholdSupport = 0;
+ mDxePlatformRapidStartPolicy.ActivePageThresholdSize = 0;
+ mDxePlatformRapidStartPolicy.HybridHardDisk = 0;
+ mDxePlatformRapidStartPolicy.DisplaySaveRestore = 0;
+ mDxePlatformRapidStartPolicy.DisplayType = 0;
+ mDxePlatformRapidStartPolicy.RaidModeSataPortNumber = 255;
+ } else {
+ if (PchSeries == PchLp) {
+ if ( SetupData.ULTSataInterfaceMode == 0 ) { //IDE mode
+ mDxePlatformRapidStartPolicy.EnableRapidStart = 0;
+ } else {
+ mDxePlatformRapidStartPolicy.EnableRapidStart = SetupData.RapidStartEnabled;
+ }
+ } else {
+ if ( SetupData.SataInterfaceMode == 0 ) { //IDE mode
+ mDxePlatformRapidStartPolicy.EnableRapidStart = 0;
+ } else {
+ mDxePlatformRapidStartPolicy.EnableRapidStart = SetupData.RapidStartEnabled;
+ }
+ }
+ mDxePlatformRapidStartPolicy.EntryOnS3RtcWake = SetupData.EntryOnS3RtcWake;
+ mDxePlatformRapidStartPolicy.S3WakeTimerMin = SetupData.S3WakeTimerMin;
+ mDxePlatformRapidStartPolicy.EntryOnS3CritBattWake = SetupData.EntryOnS3CritBattWake;
+ mDxePlatformRapidStartPolicy.ActivePageThresholdSupport = SetupData.ActivePageThresholdSupport;
+ mDxePlatformRapidStartPolicy.ActivePageThresholdSize = SetupData.ActivePageThresholdSize;
+ mDxePlatformRapidStartPolicy.HybridHardDisk = SetupData.RapidStartHybridHardDisk;
+ mDxePlatformRapidStartPolicy.DisplaySaveRestore = SetupData.RapidStartDisplaySaveRestore;
+ mDxePlatformRapidStartPolicy.DisplayType = SetupData.RapidStartDisplayType;
+ SetCriticalBatteryThreshole(SetupData.CritBattWakeThreshold);
+
+ ///
+ /// By default set to 255 as not used
+ ///
+ mDxePlatformRapidStartPolicy.RaidModeSataPortNumber = 255;
+ }
+ //AMI_OVERRIDE_FOR_RAPID_START
+ //Clear CMOS RapidStartFlag in DXE
+ RapidStartSetConfig(0);
+ //AMI_OVERRIDE_FOR_RAPID_START
+#if LOCK_DISABLE_RAPID_START_IF_NO_SSD
+ SsdDetectionRegisterCallBack();
+#endif
+
+#ifdef RAPID_START_PARTITION_DETECT_BEFORE_SETUP
+ RegisterForBdsAllDriversConnected(ImageHandle);
+#endif
+
+#if SYNC_UP_DRIVER_AND_BIOS_VARIABLE
+ SyncUpDriverAndBiosVariable();
+#endif
+
+ ///
+ /// Protocol revision number
+ ///
+ mDxePlatformRapidStartPolicy.Revision = DXE_RAPID_START_PLATFORM_POLICY_PROTOCOL_REVISION;
+
+ ///
+ /// FviSmbiosType is the SMBIOS OEM type (0x80 to 0xFF) defined in SMBIOS Type 14 - Group
+ /// Associations structure - item type. FVI structure uses it as SMBIOS OEM type to provide
+ /// version information. The default value is type 221.
+ ///
+ mDxePlatformRapidStartPolicy.FviSmbiosType = 0xDD;
+
+
+ ///
+ /// Install protocol to to allow access to this Policy.
+ ///
+ Status = gBS->InstallMultipleProtocolInterfaces (
+ &ImageHandle,
+ &gRapidStartPlatformPolicyProtocolGuid,
+ &mDxePlatformRapidStartPolicy,
+ NULL
+ );
+ if ( EFI_ERROR(Status) ) {
+ ASSERT_EFI_ERROR (Status);
+ return Status;
+ }
+
+ return Status;
+}
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
diff --git a/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.cif b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.cif
new file mode 100644
index 0000000..2edcee5
--- /dev/null
+++ b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.cif
@@ -0,0 +1,13 @@
+<component>
+ name = "RapidStartDxePolicyInit"
+ category = ModulePart
+ LocalRoot = "Board\EM\RapidStartWrapper\Dxe\RapidStartDxePolicyInit"
+ RefName = "RapidStartDxePolicyInit"
+[files]
+"RapidStartDxePolicyInit.sdl"
+"RapidStartDxePolicyInit.mak"
+"RapidStartDxePolicyInit.h"
+"RapidStartDxePolicyInit.c"
+"RapidStartDxePolicyInit.dxs"
+"RapidStartDxePolicyInit.inf"
+<endComponent>
diff --git a/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.dxs b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.dxs
new file mode 100644
index 0000000..a785e6d
--- /dev/null
+++ b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.dxs
@@ -0,0 +1,76 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.dxs 1 10/15/12 4:40a Bensonlai $
+//
+// $Revision: 1 $
+//
+// $Date: 10/15/12 4:40a $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.dxs $
+//
+// 1 10/15/12 4:40a Bensonlai
+// [TAG] None
+// [Category] Improvement
+// [Description] [Category] Improvement
+// [Severity] Important
+// [Description] Rename all IFFS sting to Rapid Start.
+// [Files] Board\EM\RapidStartWrapper\*.*, ReferenceCode\RapidStart\*.*
+//
+// [Category] Improvement
+// [Severity] Important
+// [Description] Implementation of the LOCK_DISABLE_RAPID_START_IF_NO_SSD
+// using EDKII.
+// [Files] Board\EM\RapidStartWrapper\Dxe\RapidStartDxePolicyInit\*.*
+// [Files] RapidStartDxePolicyInit.cif
+// RapidStartDxePolicyInit.sdl
+// RapidStartDxePolicyInit.mak
+// RapidStartDxePolicyInit.h
+// RapidStartDxePolicyInit.c
+// RapidStartDxePolicyInit.dxs
+// RapidStartDxePolicyInit.inf
+//
+//**********************************************************************
+//<AMI_FHDR_START>
+//
+// Name: RapidStartDxePolicyInit.dxs
+//
+// Description: Dependency expression source file.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+
+#include "EfiDepex.h"
+#include EFI_ARCH_PROTOCOL_DEFINITION (Variable)
+
+DEPENDENCY_START
+ EFI_VARIABLE_ARCH_PROTOCOL_GUID
+DEPENDENCY_END
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
diff --git a/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.h b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.h
new file mode 100644
index 0000000..13a5bd0
--- /dev/null
+++ b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.h
@@ -0,0 +1,187 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.h 6 5/13/14 4:55a Joshchou $
+//
+// $Revision: 6 $
+//
+// $Date: 5/13/14 4:55a $
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.h $
+//
+// 6 5/13/14 4:55a Joshchou
+// [TAG] EIP167032
+// [Category] Improvement
+// [Description] Review the variable's attribute, we shouldn't use
+// runtime attribute with setup variable.
+// [Files] RapidStartDxePolicyInit.h
+// RapidStartDxePolicyInit.c
+// RapidStartDxePolicyInit.cif
+//
+// 5 6/21/13 6:00a Joshchou
+// [TAG] EIP126792
+// [Category] Bug Fix
+// [Severity] Minor
+// [Symptom] Can't do AMI capsule when Intel Rapid Start eanble
+// [RootCause] CMOS RapidStartFlag does not clear.
+// [Solution] Clear RapidStartFlag when cold boot.
+//
+// 4 1/13/13 7:47a Bensonlai
+// [TAG] EIPNone
+// [Category] Improvement
+// [Description] Disabling the RapidStart while STAT mode in the IDE
+// mode
+// [Files] RapidStartDxePolicyInit.c, RapidStartDxePolicyInit.h,
+// RapidStartDxePolicyInit.mak, RapidStartSetup.c, RapidStartSetup.mak,
+// RapidStartSetup.sd, RapidStartSetup.sdl
+//
+// 3 12/07/12 1:16a Bensonlai
+// [TAG] None
+// [Category] Bug Fix
+// [Severity] Normal
+// [Symptom] When installed memory size less than HDD partition size of
+// teh RapidStart, it still can work.
+// [RootCause] The RAPID_START_PERSISTENT_DATA wasn't updated in the
+// BdsAllDriversConnectedCallback().
+// [Solution] Get the real total size of memory directly.
+// [Files] RapidStartDxePolicyInit.c, RapidStartDxePolicyInit.h,
+// RapidStartDxePolicyInit.mak
+//
+// 2 11/15/12 1:03a Bensonlai
+// [TAG] None
+// [Category] Improvement
+// [Description] Move the RAPID_START_PARTITION_DETECT_BEFORE_SETUP to
+// RapidStartDxePolicyInit.c.
+//
+// 1 10/15/12 4:40a Bensonlai
+// [TAG] None
+// [Category] Improvement
+// [Description] [Category] Improvement
+// [Severity] Important
+// [Description] Rename all IFFS sting to Rapid Start.
+// [Files] Board\EM\RapidStartWrapper\*.*, ReferenceCode\RapidStart\*.*
+//
+// [Category] Improvement
+// [Severity] Important
+// [Description] Implementation of the LOCK_DISABLE_RAPID_START_IF_NO_SSD
+// using EDKII.
+// [Files] Board\EM\RapidStartWrapper\Dxe\RapidStartDxePolicyInit\*.*
+// [Files] RapidStartDxePolicyInit.cif
+// RapidStartDxePolicyInit.sdl
+// RapidStartDxePolicyInit.mak
+// RapidStartDxePolicyInit.h
+// RapidStartDxePolicyInit.c
+// RapidStartDxePolicyInit.dxs
+// RapidStartDxePolicyInit.inf
+//
+//**********************************************************************
+//<AMI_FHDR_START>
+//
+// Name: RapidStartDxePolicyInit.h
+//
+// Description: Header file for the RapidStartDxePolicyInit Driver.
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+
+#ifndef _RAPID_START_DXE_PLATFORM_POLICY_H_
+#define _RAPID_START_DXE_PLATFORM_POLICY_H_
+//
+// External include files do NOT need to be explicitly specified in real EDKII
+// environment
+//
+#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000)
+#include "EdkIIGlueDxe.h"
+#include EFI_PROTOCOL_PRODUCER (RapidStartPlatformPolicy)
+#include EFI_PROTOCOL_CONSUMER (DiskInfo)
+#include <token.h>
+#include "PchRegs.h"
+#include "SaAccess.h"
+#include "PchPlatformLib.h"
+#include <SetupDataDefinition.h>
+#define SYSTEM_CONFIGURATION_GUID { 0xEC87D643, 0xEBA4, 0x4BB5, 0xA1, 0xE5, 0x3F, 0x3E, 0x36, 0xB2, 0x0D, 0xA9 }
+EFI_GUID SetupGuid = SYSTEM_CONFIGURATION_GUID;
+
+#if LOCK_DISABLE_RAPID_START_IF_NO_SSD
+#define BDS_ALL_DRIVERS_CONNECTED_PROTOCOL_GUID \
+ { 0xdbc9fd21, 0xfad8, 0x45b0, 0x9e, 0x78, 0x27, 0x15, 0x88, 0x67, 0xcc, 0x93 }
+
+EFI_GUID gNotifyProtocolGuid = BDS_ALL_DRIVERS_CONNECTED_PROTOCOL_GUID;
+#endif
+
+#ifdef RAPID_START_PARTITION_DETECT_BEFORE_SETUP
+#define BDS_ALL_DRIVERS_CONNECTED_PROTOCOL_GUID \
+ { 0xdbc9fd21, 0xfad8, 0x45b0, 0x9e, 0x78, 0x27, 0x15, 0x88, 0x67, 0xcc, 0x93 }
+
+#define RAPID_START_PARTITION_STATUS_PROTOCOL_GUID \
+ { 0x65639144, 0xd492, 0x4328, 0xa4, 0x98, 0xf4, 0xb5, 0x54, 0x5e, 0x4a, 0x30 }
+
+EFI_GUID gBdsAllDriversConnectedProtocolGuid = \
+ BDS_ALL_DRIVERS_CONNECTED_PROTOCOL_GUID;
+EFI_HANDLE gImageHandle;
+#if SYNC_UP_DRIVER_AND_BIOS_VARIABLE
+#define RAPID_START_WRAPPER_SMM_DATA_GUID { 0xc840359f, 0x1c11, 0x4d41, 0x92, 0x4c, 0x89, 0x70, 0x52, 0x22, 0x6a, 0xd4 }
+EFI_GUID RapidStartWrapperSmmDataGuid = RAPID_START_WRAPPER_SMM_DATA_GUID;
+
+typedef struct _RAPID_START_WRAPPER_SMM_DATA {
+ UINT16 S3WakeTimerMin;
+ UINT8 EntryOnS3RtcWake;
+ UINT8 EntryOnS3CritBattWake;
+} RAPID_START_WRAPPER_SMM_DATA;
+#endif
+#include <RapidStartData.h>
+#include <RapidStartDxeLib.h>
+#include <RapidStartAhciReg.h>
+//AMI_OVERRIDE_FOR_RAPID_START
+#include <RapidStartCommonLib.h>
+//AMI_OVERRIDE_FOR_RAPID_START
+#endif
+//#include "RapidStartPlatformPolicyUpdateDxeLib.h"
+#endif
+
+/**
+ Initilize Intel RapidStart DXE Platform Policy
+
+ @param[in] ImageHandle - Image handle of this driver.
+ @param[in] SystemTable - Global system service table.
+
+ @retval EFI_SUCCESS Initialization complete.
+ @exception EFI_UNSUPPORTED The chipset is unsupported by this driver.
+ @retval EFI_OUT_OF_RESOURCES Do not have enough resources to initialize the driver.
+ @retval EFI_DEVICE_ERROR Device error, driver exits abnormally.
+**/
+EFI_STATUS
+RapidStartDxePolicyInitEntryPoint (
+ IN EFI_HANDLE ImageHandle,
+ IN OUT EFI_SYSTEM_TABLE *SystemTable
+ );
+
+#endif
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2012, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
diff --git a/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.inf b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.inf
new file mode 100644
index 0000000..97d8602
--- /dev/null
+++ b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.inf
@@ -0,0 +1,74 @@
+## @file
+# Component description file for the RapidStartDxePolicyInit DXE driver.
+#
+#@copyright
+# Copyright (c) 1999 - 2012 Intel Corporation. All rights reserved
+# This software and associated documentation (if any) is furnished
+# under a license and may only be used or copied in accordance
+# with the terms of the license. Except as permitted by such
+# license, no part of this software or documentation may be
+# reproduced, stored in a retrieval system, or transmitted in any
+# form or by any means without the express written consent of
+# Intel Corporation.
+#
+# This file contains a 'Sample Driver' and is licensed as such
+# under the terms of your license agreement with Intel or your
+# vendor. This file may be modified by the user, subject to
+# the additional terms of the license agreement
+#
+
+[defines]
+BASE_NAME = RapidStartDxePolicyInit
+FILE_GUID = DDB412A6-E3F3-4e9e-90A3-2A991270219C
+COMPONENT_TYPE = BS_DRIVER
+
+[sources.common]
+ RapidStartDxePolicyInit.c
+ RapidStartDxePolicyInit.h
+#
+# Edk II Glue Driver Entry Point
+#
+ EdkIIGlueDxeDriverEntryPoint.c
+
+[includes.common]
+ .
+ $(EDK_SOURCE)/Foundation
+ $(EDK_SOURCE)/Foundation/Include
+ $(EDK_SOURCE)/Foundation/Efi
+ $(EDK_SOURCE)/Foundation/Efi/Include
+ $(EDK_SOURCE)/Foundation/Framework
+ $(EDK_SOURCE)/Foundation/Framework/Include
+ $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include
+ $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include/Pcd
+ $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+ $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+ $(EDK_SOURCE)/Foundation/Core/Dxe
+ $(EDK_SOURCE)/Foundation/Cpu/Pentium/Include
+ $(EFI_SOURCE)/$(PROJECT_RAPID_START_ROOT)
+ $(EFI_SOURCE)/$(PROJECT_RAPID_START_ROOT)/Include
+ $(EFI_SOURCE)
+ $(PLATFORM_ECP_PACKAGE)/Include
+
+[libraries.common]
+ EdkIIGlueDxeReportStatusCodeLib
+ EdkIIGlueDxeDebugLibReportStatusCode
+ EdkFrameworkProtocolLib
+ EdkProtocolLib
+ RapidStartProtocolLib
+ EdkIIGlueUefiBootServicesTableLib
+ EdkIIGlueUefiRuntimeServicesTableLib
+ PlatformPolicyUpdateDxeLib
+
+[nmake.common]
+ IMAGE_ENTRY_POINT = _ModuleEntryPoint
+ DPX_SOURCE = RapidStartDxePolicyInit.dxs
+
+#
+# Module Entry Point
+#
+ C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_MODULE_ENTRY_POINT__=RapidStartDxePolicyInitEntryPoint
+ C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__ \
+ -D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \
+ -D __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__ \
+ -D __EDKII_GLUE_UEFI_RUNTIME_SERVICES_TABLE_LIB__
+
diff --git a/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.mak b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.mak
new file mode 100644
index 0000000..484a1eb
--- /dev/null
+++ b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.mak
@@ -0,0 +1,165 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
+
+#**********************************************************************
+# $Header: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.mak 5 6/21/13 6:01a Joshchou $
+#
+# $Revision: 5 $
+#
+# $Date: 6/21/13 6:01a $
+#**********************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.mak $
+#
+# 5 6/21/13 6:01a Joshchou
+# [TAG] EIP126792
+# [Category] Bug Fix
+# [Severity] Minor
+# [Symptom] Can't do AMI capsule when Intel Rapid Start eanble
+# [RootCause] CMOS RapidStartFlag does not clear.
+# [Solution] Clear RapidStartFlag when cold boot.
+#
+# 4 1/13/13 7:47a Bensonlai
+# [TAG] EIPNone
+# [Category] Improvement
+# [Description] Disabling the RapidStart while STAT mode in the IDE
+# mode
+# [Files] RapidStartDxePolicyInit.c, RapidStartDxePolicyInit.h,
+# RapidStartDxePolicyInit.mak, RapidStartSetup.c, RapidStartSetup.mak,
+# RapidStartSetup.sd, RapidStartSetup.sdl
+#
+# 3 12/07/12 1:17a Bensonlai
+# [TAG] None
+# [Category] Bug Fix
+# [Severity] Normal
+# [Symptom] When installed memory size less than HDD partition size of
+# teh RapidStart, it still can work.
+# [RootCause] The RAPID_START_PERSISTENT_DATA wasn't updated in the
+# BdsAllDriversConnectedCallback().
+# [Solution] Get the real total size of memory directly.
+# [Files] RapidStartDxePolicyInit.c, RapidStartDxePolicyInit.h,
+# RapidStartDxePolicyInit.mak
+#
+# 2 11/15/12 12:38a Bensonlai
+# [TAG] None
+# [Category] Improvement
+# [Description] Move the RAPID_START_PARTITION_DETECT_BEFORE_SETUP to
+# RapidStartDxePolicyInit.c.
+#
+# 1 10/15/12 4:40a Bensonlai
+# [TAG] None
+# [Category] Improvement
+# [Description] [Category] Improvement
+# [Severity] Important
+# [Description] Rename all IFFS sting to Rapid Start.
+# [Files] Board\EM\RapidStartWrapper\*.*, ReferenceCode\RapidStart\*.*
+#
+# [Category] Improvement
+# [Severity] Important
+# [Description] Implementation of the LOCK_DISABLE_RAPID_START_IF_NO_SSD
+# using EDKII.
+# [Files] Board\EM\RapidStartWrapper\Dxe\RapidStartDxePolicyInit\*.*
+# [Files] RapidStartDxePolicyInit.cif
+# RapidStartDxePolicyInit.sdl
+# RapidStartDxePolicyInit.mak
+# RapidStartDxePolicyInit.h
+# RapidStartDxePolicyInit.c
+# RapidStartDxePolicyInit.dxs
+# RapidStartDxePolicyInit.inf
+#
+#**********************************************************************
+#<AMI_FHDR_START>
+#
+# Name: RapidStartDxePolicyInit.mak
+#
+# Description: Component description file for the RapidStartDxePolicyInit DXE driver.
+#
+#<AMI_FHDR_END>
+#**********************************************************************
+
+All : RapidStartDxePolicyInit
+
+RapidStartDxePolicyInit : $(BUILD_DIR)\RapidStartDxePolicyInit.mak RapidStartDxePolicyInitBin
+
+$(BUILD_DIR)\RapidStartDxePolicyInit.mak : $(RapidStartDxePolicyInit_DIR)\$(@B).cif $(RapidStartDxePolicyInit_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(RapidStartDxePolicyInit_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+RapidStartDxePolicyInit_INCLUDES=\
+ $(EdkIIGlueLib_INCLUDES)\
+ $(EDK_INCLUDES)\
+ $(RAPIDSTART_INCLUDES)\
+ $(INTEL_PCH_INCLUDES)\
+ $(INTEL_MCH_INCLUDES)\
+
+RapidStartDxePolicyInit_LIBS=\
+ $(EDKPROTOCOLLIB)\
+ $(EFIGUIDLIB)\
+ $(EdkIIGlueBaseLib_LIB)\
+!IF "$(x64_BUILD)"=="1"
+ $(EdkIIGlueBaseLibX64_LIB)\
+!ELSE
+ $(EdkIIGlueBaseLibIA32_LIB)\
+!ENDIF
+ $(EDKFRAMEWORKGUIDLIB)\
+ $(EDKFRAMEWORKPROTOCOLLIB)\
+ $(EdkIIGlueBaseIoLibIntrinsic_LIB)\
+ $(EdkIIGlueBaseMemoryLib_LIB)\
+ $(EdkIIGlueDxeReportStatusCodeLib_LIB)\
+ $(EdkIIGlueDxeServicesTableLib_LIB)\
+ $(EdkIIGlueDxeDebugLibReportStatusCode_LIB)\
+ $(EdkIIGlueUefiBootServicesTableLib_LIB)\
+ $(EdkIIGlueBasePciLibPciExpress_LIB)\
+ $(EdkIIGlueEdkDxeRuntimeDriverLib_LIB)\
+ $(RapidStartProtocolLib_LIB)\
+ $(RapidStartDxeLib_LIB)\
+ $(PchPlatformDxeLib_LIB)\
+ $(RapidStartCommonDxeLib_LIB)\
+
+RapidStartDxePolicyInit_DEFINES=\
+ $(MY_DEFINES)\
+ /D"__EDKII_GLUE_MODULE_ENTRY_POINT__=RapidStartDxePolicyInitEntryPoint"\
+ /D __EDKII_GLUE_BASE_MEMORY_LIB__ \
+ /D __EDKII_GLUE_DXE_REPORT_STATUS_CODE_LIB__ \
+ /D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \
+ /D __EDKII_GLUE_UEFI_BOOT_SERVICES_TABLE_LIB__\
+ /D __EDKII_GLUE_BASE_IO_LIB_INTRINSIC__ \
+ /D __EDKII_GLUE_DXE_SERVICES_TABLE_LIB__ \
+
+RapidStartDxePolicyInitBin : $(RapidStartDxePolicyInit_LIBS)
+ $(MAKE) /$(MAKEFLAGS) $(EDKIIGLUE_DEFAULTS)\
+ /f $(BUILD_DIR)\RapidStartDxePolicyInit.mak all\
+ "MY_INCLUDES=$(RapidStartDxePolicyInit_INCLUDES)"\
+ "MY_DEFINES=$(RapidStartDxePolicyInit_DEFINES)"\
+ GUID=DDB412A6-E3F3-4e9e-90A3-2A991270219C\
+ ENTRY_POINT=_ModuleEntryPoint \
+ EDKIIModule=DXEDRIVER\
+ TYPE=BS_DRIVER \
+ DEPEX1=$(RapidStartDxePolicyInit_DIR)\RapidStartDxePolicyInit.dxs \
+ DEPEX1_TYPE=EFI_SECTION_DXE_DEPEX \
+ COMPRESS=1\
+
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
diff --git a/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.sdl b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.sdl
new file mode 100644
index 0000000..c895fdc
--- /dev/null
+++ b/Board/EM/RapidStartWrapper/Dxe/RapidStartDxePolicyInit/RapidStartDxePolicyInit.sdl
@@ -0,0 +1,94 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
+
+#**********************************************************************
+# $Header: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.sdl 1 10/15/12 4:40a Bensonlai $
+#
+# $Revision: 1 $
+#
+# $Date: 10/15/12 4:40a $
+#**********************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartWrapper/RapidStartDxePolicyInit/RapidStartDxePolicyInit.sdl $
+#
+# 1 10/15/12 4:40a Bensonlai
+# [TAG] None
+# [Category] Improvement
+# [Description] [Category] Improvement
+# [Severity] Important
+# [Description] Rename all IFFS sting to Rapid Start.
+# [Files] Board\EM\RapidStartWrapper\*.*, ReferenceCode\RapidStart\*.*
+#
+# [Category] Improvement
+# [Severity] Important
+# [Description] Implementation of the LOCK_DISABLE_RAPID_START_IF_NO_SSD
+# using EDKII.
+# [Files] Board\EM\RapidStartWrapper\Dxe\RapidStartDxePolicyInit\*.*
+# [Files] RapidStartDxePolicyInit.cif
+# RapidStartDxePolicyInit.sdl
+# RapidStartDxePolicyInit.mak
+# RapidStartDxePolicyInit.h
+# RapidStartDxePolicyInit.c
+# RapidStartDxePolicyInit.dxs
+# RapidStartDxePolicyInit.inf
+#
+#**********************************************************************
+#<AMI_FHDR_START>
+#
+# Name: RapidStartDxePolicyInit.sdl
+#
+# Description: SDL file for the RapidStartDxePolicyInit.
+#
+#<AMI_FHDR_END>
+#**********************************************************************
+
+TOKEN
+ Name = "RapidStartDxePolicyInit_SUPPORT"
+ Value = "1"
+ Help = "Main switch to enable RapidStartDxePolicyInit support in Project"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+End
+
+PATH
+ Name = "RapidStartDxePolicyInit_DIR"
+End
+
+MODULE
+ File = "RapidStartDxePolicyInit.mak"
+ Help = "Includes RapidStartDxePolicyInit.mak to Project"
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\RapidStartDxePolicyInit.ffs"
+ Parent = "FV_MAIN"
+ InvokeOrder = AfterParent
+End
+
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2012, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************