summaryrefslogtreecommitdiff
path: root/ReferenceCode/RapidStart/Protocol
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 /ReferenceCode/RapidStart/Protocol
downloadzprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'ReferenceCode/RapidStart/Protocol')
-rw-r--r--ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.c30
-rw-r--r--ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.h63
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.c31
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.h100
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.c40
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.h93
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.c46
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.h162
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.cif18
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.inf61
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.mak58
-rw-r--r--ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.sdl71
12 files changed, 773 insertions, 0 deletions
diff --git a/ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.c b/ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.c
new file mode 100644
index 0000000..326da6b
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.c
@@ -0,0 +1,30 @@
+/** @file
+
+@copyright
+ Copyright (c) 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 an 'Intel Peripheral Driver' and uniquely
+ identified as "Intel Mobile Silicon Support Module" and is
+ licensed for Intel Mobile CPUs and chipsets under the terms of your
+ license agreement with Intel or your vendor. This file may
+ be modified by the user, subject to additional terms of the
+ license agreement
+**/
+#include "EdkIIGlueDxe.h"
+
+#include "DxeGfxProtocol.h"
+
+EFI_GUID gDxeGfxProtocolGuid = DXE_GFX_PROTOCOL_GUID;
+
+EFI_GUID_STRING
+ (
+ &gDxeGfxProtocolGuid, "RST Gfx Protocol",
+ "Protocol describing RST Gfx Protocol."
+ );
diff --git a/ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.h b/ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.h
new file mode 100644
index 0000000..70e1c1d
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/DxeGfxProtocol/DxeGfxProtocol.h
@@ -0,0 +1,63 @@
+/** @file
+
+@copyright
+ Copyright (c) 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
+**/
+#ifndef DXE_GFX_PROTOCOL_H_
+#define DXE_GFX_PROTOCOL_H_
+
+#define DXE_GFX_PROTOCOL_GUID \
+ { \
+ 0xc4d6994a, 0xaa3d, 0x47c0, 0xae, 0xa, 0xb0, 0xbf, 0xad, 0xba, 0xa6, 0x13 \
+ }
+
+//
+// Extern the GUID for protocol users.
+//
+extern EFI_GUID gDxeGfxProtocolGuid;
+
+#define BIOS_RESTORE 0 // 12 Mbytes space
+#define DESKTOP_RESTORE 1 // 512 Kb Space
+
+typedef
+EFI_STATUS
+(EFIAPI * GFX_ALLOCATE_DSS_BUFFER) (
+ IN UINT8 DisplayType
+);
+
+typedef
+EFI_STATUS
+(EFIAPI * GFX_GET_DSS_ADDRESS) (
+ OUT UINT64 **DssAddress,
+ OUT UINT64 *SizeOfDss
+);
+
+typedef
+EFI_STATUS
+(EFIAPI * GFX_SAVE_DISPLAY) (
+ IN UINT8 *RestoreImage
+);
+
+#pragma pack(1)
+
+typedef struct _DXE_GFX_PROTOCOL {
+ GFX_ALLOCATE_DSS_BUFFER AllocateDssBuffer;
+ GFX_GET_DSS_ADDRESS GetDssAddress;
+ GFX_SAVE_DISPLAY SaveDisplay;
+} DXE_GFX_PROTOCOL;
+
+#pragma pack()
+
+#endif
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.c b/ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.c
new file mode 100644
index 0000000..b0230a2
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.c
@@ -0,0 +1,31 @@
+/** @file
+ RapidStart Global NVS Area description protocol implementation.
+
+@copyright
+ Copyright (c) 2011 - 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 an 'Intel Peripheral Driver' and uniquely
+ identified as "Intel Mobile Silicon Support Module" and is
+ licensed for Intel Mobile CPUs and chipsets under the terms of your
+ license agreement with Intel or your vendor. This file may
+ be modified by the user, subject to additional terms of the
+ license agreement
+**/
+#include "EdkIIGlueDxe.h"
+
+#include "RapidStartGlobalNvsArea.h"
+
+EFI_GUID gRapidStartGlobalNvsAreaProtocolGuid = RAPID_START_GLOBAL_NVS_AREA_PROTOCOL_GUID;
+
+EFI_GUID_STRING
+ (
+ &gRapidStartGlobalNvsAreaProtocolGuid, "RapidStart Global NVS Area Protocol",
+ "Protocol describing RapidStart ACPI NVS memory region used by ACPI subsystem."
+ );
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.h b/ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.h
new file mode 100644
index 0000000..25fa453
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.h
@@ -0,0 +1,100 @@
+/** @file
+ Definition of the RapidStart global NVS area protocol. This protocol
+ publishes the address and format of a global ACPI NVS buffer used as a communications
+ buffer between SMM/DXE/PEI code and ASL code.
+ @todo The format is derived from the ACPI reference code, version 0.95.
+
+ Note: Data structures defined in this protocol are not naturally aligned.
+
+@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
+**/
+#ifndef _RAPID_START_GLOBAL_NVS_AREA_H_
+#define _RAPID_START_GLOBAL_NVS_AREA_H_
+
+//
+// Includes
+//
+//
+// Forward reference for pure ANSI compatability
+//
+EFI_FORWARD_DECLARATION (RAPID_START_GLOBAL_NVS_AREA_PROTOCOL);
+
+///
+/// RapidStart Global NVS Area Protocol GUID
+///
+#define RAPID_START_GLOBAL_NVS_AREA_PROTOCOL_GUID \
+ { \
+ 0xa5559f06, 0x6415, 0x4759, 0x88, 0x69, 0xde, 0x15, 0xf9, 0xcd, 0x9c, 0x9b \
+ }
+
+///
+/// Extern the GUID for protocol users.
+///
+extern EFI_GUID gRapidStartGlobalNvsAreaProtocolGuid;
+
+/**
+ Global NVS Area definition
+
+ To provide OS base utility controlling capability, these ACPI Global NVS fields
+ provides the interface for OS base utility to control Rapid Start behavior and
+ Rapid Start reference code will work accordingly.
+**/
+#pragma pack(1)
+typedef struct {
+ ///
+ /// It shows what wake up event sources available for Rapid Start Entry.
+ ///
+ /// Used by RapidStart.asl as "RSTA"
+ ///
+ UINT8 EventsAvailable;
+ ///
+ /// This controls which wake up source can be used to trigger Rapid Start Entry tasks.
+ ///
+ /// Used by RapidStart.asl as "RSTS"
+ ///
+ UINT8 EventsEnabled;
+ ///
+ /// This defines how many minutes the wake up event will happen for performing Rapid
+ /// Start Entry transition. Available options are "Immediately" (wake system up
+ /// once system entering S3 mode), 1 Min, 2 Min, 5 Min and 10 Min etc. Default
+ /// Platform Policy will set this to 10 minutes.
+ ///
+ /// Used by RapidStart.asl as "RSTT"
+ ///
+ UINT16 WakeTimerMin;
+ ///
+ /// This is the pointer for performance data structure.
+ ///
+ /// Used by RapidStart.asl as "RSTP"
+ ///
+ UINT32 PerfDataPtr;
+} RAPID_START_GLOBAL_NVS_AREA;
+#pragma pack()
+
+/**
+ RapidStart Global NVS Area Protocol
+
+ To provide OS base utility controlling mechanism there are some items
+ created in Rapid Start private ACPI Global NVS area. Note: This will be
+ published by reference code as one SSDT table so no Platform code change
+ required.
+**/
+struct _RAPID_START_GLOBAL_NVS_AREA_PROTOCOL {
+ RAPID_START_GLOBAL_NVS_AREA *Area;
+ VOID *RapidStartData;
+};
+
+#endif
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.c b/ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.c
new file mode 100644
index 0000000..7269ff9
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.c
@@ -0,0 +1,40 @@
+/** @file
+ This file defines the RapidStart Info Protocol.
+
+@copyright
+ Copyright (c) 2011 - 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
+**/
+
+//
+// Statements that include other files
+//
+//
+// 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 "RapidStartInfo.h"
+#endif
+
+///
+/// Protocol GUID definition
+///
+EFI_GUID gRapidStartInfoProtocolGuid = RAPID_START_INFO_PROTOCOL_GUID;
+
+///
+/// Protocol description
+///
+EFI_GUID_STRING(&gRapidStartInfoProtocolGuid, "RapidStart Info Protocol", "RapidStart Information Protocol");
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.h b/ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.h
new file mode 100644
index 0000000..3997eda
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartInfo/RapidStartInfo.h
@@ -0,0 +1,93 @@
+/** @file
+ This file defines the RapidStart Info Protocol.
+
+@copyright
+ Copyright (c) 2011 - 2014 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
+**/
+#ifndef _RAPID_START_INFO_H_
+#define _RAPID_START_INFO_H_
+
+///
+/// GUID to locate Rapid Start Info Protocol
+///
+/// EDK and EDKII have different GUID formats
+///
+/// @see _RAPID_START_INFO_PROTOCOL
+///
+#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000)
+#define RAPID_START_INFO_PROTOCOL_GUID \
+ { \
+ 0xd231db5b, 0x4a9c, 0x4092, 0xa8, 0xc5, 0x9c, 0xa0, 0xbc, 0x7d, 0x6a, 0xa6 \
+ }
+
+#else
+#define RAPID_START_INFO_PROTOCOL_GUID \
+ { \
+ 0xd231db5b, 0x4a9c, 0x4092, \
+ { \
+ 0xa8, 0xc5, 0x9c, 0xa0, 0xbc, 0x7d, 0x6a, 0xa6 \
+ } \
+ }
+#endif
+
+///
+/// Extern the GUID for protocol users.
+///
+/// @see _RAPID_START_INFO_PROTOCOL
+///
+extern EFI_GUID gRapidStartInfoProtocolGuid;
+
+//
+// Forward reference for ANSI C compatibility
+//
+EFI_FORWARD_DECLARATION (RAPID_START_INFO_PROTOCOL);
+
+///
+/// Protocol revision number
+/// Any backwards compatible changes to this protocol will result in an update in the revision number
+/// Major changes will require publication of a new protocol
+///
+/// Revision 1: Original version
+///
+#define RAPID_START_INFO_PROTOCOL_REVISION_1 1
+
+///
+/// RapidStart Reference Code formats 0xAABBCCDD
+/// DD - Build Number
+/// CC - Reference Code Revision
+/// BB - Reference Code Minor Version
+/// AA - Reference Code Major Version
+/// Example: RapidStart Reference Code 0.7.1 should be 00 07 01 00 (0x00070100)
+///
+#define RAPID_START_RC_VERSION 0x01090000
+#define RAPID_START_FVI_STRING "Reference Code - Intel Rapid Start"
+#define RAPID_START_FVI_SMBIOS_TYPE 0xDD
+#define RAPID_START_FVI_SMBIOS_INSTANCE 0x05
+/**
+ A protocol to indicate Rapid Start reference code revision.
+
+ This protocol will be initialized by Rapid Start reference code to indicate the reference code revision.
+ It will be installed by reference code even Rapid Start is disabled.
+
+ @see RAPID_START_INFO_PROTOCOL_GUID
+ @see gRapidStartInfoProtocolGuid
+ @see RapidStartInstallInfoProtocol()
+**/
+struct _RAPID_START_INFO_PROTOCOL {
+ UINT8 Revision; ///< Revision of this protocol
+ UINT32 RCVersion; ///< Rapid Start reference code revision
+};
+
+#endif
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.c b/ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.c
new file mode 100644
index 0000000..eb7d873
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.c
@@ -0,0 +1,46 @@
+/** @file
+ This file defines the RapidStart Policy Protocol.
+
+@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 an 'Intel Peripheral Driver' and uniquely
+ identified as "Intel Reference Module" and is
+ licensed for Intel CPUs and chipsets under the terms of your
+ license agreement with Intel or your vendor. This file may
+ be modified by the user, subject to additional terms of the
+ license agreement
+**/
+
+//
+// Statements that include other files
+//
+//
+// 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 "RapidStartPlatformPolicy.h"
+#endif
+
+///
+/// Protocol GUID definition
+///
+EFI_GUID gRapidStartPlatformPolicyProtocolGuid = RAPID_START_PLATFORM_POLICY_PROTOCOL_GUID;
+
+///
+/// Protocol description
+///
+EFI_GUID_STRING
+ (
+ &gRapidStartPlatformPolicyProtocolGuid, "RapidStartPlatformPolicy Protocol",
+ "Intel(R) DXE Phase RapidStart Platform Policy Protocol"
+ );
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.h b/ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.h
new file mode 100644
index 0000000..32bc704
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartPlatformPolicy/RapidStartPlatformPolicy.h
@@ -0,0 +1,162 @@
+/** @file
+ This file defines the RapidStart Policy Protocol.
+
+@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 an 'Intel Peripheral Driver' and uniquely
+ identified as "Intel Reference Module" and is
+ licensed for Intel CPUs and chipsets under the terms of your
+ license agreement with Intel or your vendor. This file may
+ be modified by the user, subject to additional terms of the
+ license agreement
+**/
+#ifndef _RAPID_START_PLATFORM_POLICY_H_
+#define _RAPID_START_PLATFORM_POLICY_H_
+
+///
+/// GUID to locate Rapid Start Platform Policy Protocol
+///
+/// @see _RAPID_START_PLATFORM_POLICY_PROTOCOL
+///
+#define RAPID_START_PLATFORM_POLICY_PROTOCOL_GUID \
+ { \
+ 0x42bbaca3, 0x7161, 0x4891, 0xac, 0x10, 0xc7, 0x5e, 0x2e, 0x4d, 0xf6, 0x14 \
+ }
+
+#define RAPID_START_WAKE_TIMER_MAX (24 * 60)
+#define RAPID_START_WAKE_TIMER_DEFAULT 10
+
+///
+/// Extern the GUID for protocol users.
+///
+/// @see _RAPID_START_PLATFORM_POLICY_PROTOCOL
+///
+extern EFI_GUID gRapidStartPlatformPolicyProtocolGuid;
+
+//
+// Forward reference for ANSI C compatibility
+//
+EFI_FORWARD_DECLARATION (RAPID_START_PLATFORM_POLICY_PROTOCOL);
+
+///
+/// Revision 1: Original version
+///
+///
+/// Revision 2: Added DisplaySaveRestore
+/// Added DisplayType
+#define DXE_RAPID_START_PLATFORM_POLICY_PROTOCOL_REVISION 1
+#define DXE_RAPID_START_PLATFORM_POLICY_PROTOCOL_REVISION_2 2
+
+/**
+ RapidStart DXE Platform Platform Policy Protocol
+
+ This protocol provides an interface for platform code to configure Rapid Start
+ behavior and usable resource without modifying reference code.
+
+ This protocol provides interface to configure Rapid Start policy. Platform code
+ should initialize this protocol before RapidStartDxe driver executing basing on
+ the platform implementation. RapidStartDxePolicyInit sample code provided to
+ initialize default settings which has been validated by CRB BIOS. Platform code
+ can include this sample code with some porting to make it setup menu
+ controllable.
+
+ @see RAPID_START_PLATFORM_POLICY_PROTOCOL_GUID
+ @see gRapidStartPlatformPolicyProtocolGuid
+ @see RapidStartDxePolicyInitEntryPoint()
+**/
+struct _RAPID_START_PLATFORM_POLICY_PROTOCOL {
+ ///
+ /// Revision for the protocol structure
+ ///
+ UINT8 Revision;
+ ///
+ /// Enable or disable Rapid Start function. 0=Disable (Default) and 1=Enable
+ ///
+ UINT16 EnableRapidStart : 1;
+ ///
+ /// Enable reference code to do Rapid Start Entry flow when system waking up from S3
+ /// state by RTC timer event. 0=Disable, 1=Enable (Default)
+ ///
+ /// @see S3WakeTimerMin
+ ///
+ UINT16 EntryOnS3RtcWake : 1;
+ ///
+ /// Enable reference code to perform Rapid Start Entry flow when system waking up
+ /// from Critical low battery event (from S3 state). 0=Disable, 1=Enable (Default)
+ ///
+ UINT16 EntryOnS3CritBattWake : 1;
+ ///
+ /// Enable Active Page Threshold support in Rapid Start reference code. Once enabled
+ /// with proper ActivePageThresholdSize value, Rapid Start functions are able to
+ /// work on systems with Rapid Start partition size smaller than the amount of the
+ /// whole system memory.
+ ///
+ /// @see ActivePageThresholdSize
+ ///
+ UINT16 ActivePageThresholdSupport : 1;
+ ///
+ /// Enable Hybrid Hard Disk support in Rapid Start reference code.
+ ///
+ /// @see AhciHybridHardDiskSupport
+ ///
+
+ UINT16 HybridHardDisk : 1;
+ UINT16 DisplaySaveRestore : 1;
+ UINT16 DisplayType : 1;
+ ///
+ /// These bits are reserved for future use
+ ///
+ UINT16 Reserved : 9; ///< Reserved
+ ///
+ /// Specific the minutes used for RTC timeout wakeup event. This setting only works
+ /// when EntryOnS3RtcWake = 1. Default is 10 minutes which will set 10 minutes RTC
+ /// Alarm to wake system up after system entering S3 state. Available settings:
+ /// "Immediately=0min", 1min, 2mins, 5mins, 10mins, 15mins, 30mins, 60mins and
+ /// 120mins etc.
+ ///
+ /// @see EntryOnS3RtcWake
+ /// @see RAPID_START_WAKE_TIMER_MAX
+ /// @see RAPID_START_WAKE_TIMER_DEFAULT
+ ///
+ UINT16 S3WakeTimerMin;
+ ///
+ /// This is reserved and not used by FRC. It may be used by sample code for RST
+ /// Caching mode support.
+ ///
+ UINT8 RaidModeSataPortNumber;
+ ///
+ /// When ActivePageThresholdSupport is enabled, ActivePageThresholdSize will be
+ /// adopted as the criteria for the Rapid Start partition size. For example, on a
+ /// system with 2GB system memory and 1GB Rapid Start partition, when
+ /// ActivePageThresholdSupport is disabled, partition provisioning will fail because
+ /// system memory size is greater than Rapid Start partition size. When
+ /// ActivePageThresholdSupport is enabled and ActivePageThresholdSize set to 1G or
+ /// smaller, it passes the provisioning. When ActivePageThresholdSize is set to
+ /// zero, size checking will be skipped. Any size of partition reserved for Rapid
+ /// Start will pass the provisioning. If Rapid Start functions are still enabled
+ /// during S3 entry, Rapid Start reference code calculates the size of Active Memory
+ /// Pages, which is the amount of memory that is to be transferred to the Rapid
+ /// Start partition after the Zero page filtering. If it is smaller than or equal to
+ /// the provisioned Rapid Start partition size, then Rapid Start transitions will be
+ /// activated normally after system entering S3. Otherwise, system will remain in S3
+ /// state.
+ ///
+ /// @see ActivePageThresholdSupport
+ ///
+ UINT32 ActivePageThresholdSize;
+ ///
+ /// Specifies the type value of the Firmware Version Info(FVI) Structure used to report
+ /// version information about Rapid Start through the FVI Interface.
+ ///
+ UINT8 FviSmbiosType;
+};
+
+#endif
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.cif b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.cif
new file mode 100644
index 0000000..81b954a
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.cif
@@ -0,0 +1,18 @@
+<component>
+ name = "RapidStartProtocolLib"
+ category = ModulePart
+ LocalRoot = "ReferenceCode\RapidStart\Protocol\"
+ RefName = "RapidStartProtocolLib"
+[files]
+"RapidStartProtocolLib.inf"
+"RapidStartProtocolLib.mak"
+"RapidStartProtocolLib.sdl"
+"DxeGfxProtocol\DxeGfxProtocol.c"
+"DxeGfxProtocol\DxeGfxProtocol.h"
+"RapidStartPlatformPolicy\RapidStartPlatformPolicy.c"
+"RapidStartPlatformPolicy\RapidStartPlatformPolicy.h"
+"RapidStartInfo\RapidStartInfo.c"
+"RapidStartInfo\RapidStartInfo.h"
+"RapidStartGlobalNvsArea\RapidStartGlobalNvsArea.c"
+"RapidStartGlobalNvsArea\RapidStartGlobalNvsArea.h"
+<endComponent>
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.inf b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.inf
new file mode 100644
index 0000000..3bfb5da
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.inf
@@ -0,0 +1,61 @@
+## @file
+# Component description file for RapidStart module
+#
+#@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 an 'Intel Peripheral Driver' and uniquely
+# identified as "Intel Reference Module" and is
+# licensed for Intel CPUs and chipsets under the terms of your
+# license agreement with Intel or your vendor. This file may
+# be modified by the user, subject to additional terms of the
+# license agreement
+#
+
+[defines]
+BASE_NAME = RapidStartProtocolLib
+COMPONENT_TYPE = LIBRARY
+
+[sources.common]
+ RapidStartPlatformPolicy/RapidStartPlatformPolicy.h
+ RapidStartPlatformPolicy/RapidStartPlatformPolicy.c
+ RapidStartInfo/RapidStartInfo.h
+ RapidStartInfo/RapidStartInfo.c
+ RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.c
+ RapidStartGlobalNvsArea/RapidStartGlobalNvsArea.h
+ DxeGfxProtocol/DxeGfxProtocol.c
+ DxeGfxProtocol/DxeGfxProtocol.h
+
+[includes.common]
+ $(EFI_SOURCE)
+ $(EDK_SOURCE)/Foundation/Efi
+ $(EDK_SOURCE)/Foundation/Include
+ $(EDK_SOURCE)/Foundation/Efi/Include
+ $(EDK_SOURCE)/Foundation/Framework/Include
+ $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+ $(EFI_SOURCE)/Include
+ $(EFI_SOURCE)/Platform/$(PROJECT_FAMILY)/Common
+ $(EFI_SOURCE)/Platform/$(PROJECT_FAMILY)/Common/Include
+#
+# Edk II Glue Library, some hearder are included by R9 header so have to include
+#
+
+ $(EFI_SOURCE)
+ $(EFI_SOURCE)/Framework
+ $(EDK_SOURCE)/Foundation
+ $(EDK_SOURCE)/Foundation/Framework
+ $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+ $(EDK_SOURCE)/Foundation/Core/Dxe
+ $(EDK_SOURCE)/Foundation/Include/Pei
+ $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+ $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include
+
+[nmake.common]
+C_STD_INCLUDE=
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.mak b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.mak
new file mode 100644
index 0000000..4672d99
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.mak
@@ -0,0 +1,58 @@
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2011, 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/RapidStartProtocolLib/RapidStartProtocolLib.mak 1 4/19/12 8:12a Yurenlai $
+#
+# $Revision: 1 $
+#
+# $Date: 4/19/12 8:12a $
+#*************************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartProtocolLib/RapidStartProtocolLib.mak $
+#
+# 1 4/19/12 8:12a Yurenlai
+# Initial check in.
+#
+#*************************************************************************
+
+all : RapidStartProtocolLib
+
+$(BUILD_DIR)\RapidStartProtocolLib.lib : RapidStartProtocolLib
+
+RapidStartProtocolLib : $(BUILD_DIR)\RapidStartProtocolLib.mak RapidStartProtocolLibBin
+
+$(BUILD_DIR)\RapidStartProtocolLib.mak : $(RapidStartProtocolLib_DIR)\$(@B).cif $(RapidStartProtocolLib_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(RapidStartProtocolLib_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+RapidStartProtocolLibBin :
+ $(MAKE) /$(MAKEFLAGS) $(EDK_DEFAULTS)\
+ /f $(BUILD_DIR)\RapidStartProtocolLib.mak all\
+ "MY_INCLUDES=$(EDK_INCLUDES) $(MISCFRAMEWORK_INCLUDES) $(EdkIIGlueLib_INCLUDES)" \
+ TYPE=LIBRARY
+
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2011, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#*************************************************************************
+#*************************************************************************
diff --git a/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.sdl b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.sdl
new file mode 100644
index 0000000..75cd95a
--- /dev/null
+++ b/ReferenceCode/RapidStart/Protocol/RapidStartProtocolLib.sdl
@@ -0,0 +1,71 @@
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2011, 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/RapidStartProtocolLib/RapidStartProtocolLib.sdl 1 4/19/12 8:12a Yurenlai $
+#
+# $Revision: 1 $
+#
+# $Date: 4/19/12 8:12a $
+#*************************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/Intel Fast Flash Standby/iRST_SharkBay/RapidStartProtocolLib/RapidStartProtocolLib.sdl $
+#
+# 1 4/19/12 8:12a Yurenlai
+# Initial check in.
+#
+#*************************************************************************
+TOKEN
+ Name = RapidStartProtocolLib_SUPPORT
+ Value = 1
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+ Help = "Main switch to enable RapidStartProtocolLib support in Project"
+End
+
+MODULE
+ Help = "Includes RapidStartProtocolLib.mak to Project"
+ File = "RapidStartProtocolLib.mak"
+End
+
+PATH
+ Name = "RapidStartProtocolLib_DIR"
+End
+
+ELINK
+ Name = "RapidStartProtocolLib_LIB"
+ InvokeOrder = ReplaceParent
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\RapidStartProtocolLib.lib"
+ Parent = "RapidStartProtocolLib_LIB"
+ InvokeOrder = AfterParent
+End
+#*************************************************************************
+#*************************************************************************
+#** **
+#** (C)Copyright 1985-2011, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#*************************************************************************
+#*************************************************************************