summaryrefslogtreecommitdiff
path: root/ReferenceCode/ME/Library/PttHeci/Dxe
diff options
context:
space:
mode:
Diffstat (limited to 'ReferenceCode/ME/Library/PttHeci/Dxe')
-rw-r--r--ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.c145
-rw-r--r--ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.cif12
-rw-r--r--ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.h37
-rw-r--r--ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.inf68
-rw-r--r--ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.mak40
-rw-r--r--ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.sdl36
6 files changed, 338 insertions, 0 deletions
diff --git a/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.c b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.c
new file mode 100644
index 0000000..2e87dd6
--- /dev/null
+++ b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.c
@@ -0,0 +1,145 @@
+/** @file
+ Implements Platform Trust Technology (FTPM) HECI SkuMgr Interface Library.
+
+@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 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
+
+**/
+
+#if !defined(EDK_RELEASE_VERSION) || (EDK_RELEASE_VERSION < 0x00020000)
+#include "EdkIIGlueBase.h"
+#endif
+
+#ifdef PTT_FLAG
+#include "PttHeciLib.h"
+#include "HeciMsgLib.h"
+
+#define PTT_BITMASK 0x20000000 //BIT29
+
+#define CLEAR_PTT_BIT 0x00000000
+
+/**
+ Checks whether ME FW has the Platform Trust Technology capability.
+
+ @param[out] PttCapability TRUE if PTT is supported, FALSE othewrwise.
+
+ @retval EFI_SUCCESS Command succeeded
+ @retval EFI_DEVICE_ERROR HECI Device error, command aborts abnormally
+**/
+EFI_STATUS
+EFIAPI
+PttHeciGetCapability(
+ OUT BOOLEAN *PttCapability
+ )
+{
+ EFI_STATUS Status;
+ GEN_GET_FW_CAPSKU MsgGenGetFwCapsSku;
+ GEN_GET_FW_CAPS_SKU_ACK MsgGenGetFwCapsSkuAck;
+
+ *PttCapability = FALSE;
+
+ Status = HeciGetFwCapsSkuMsg (&MsgGenGetFwCapsSku, &MsgGenGetFwCapsSkuAck);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ if (((MsgGenGetFwCapsSkuAck.MKHIHeader.Fields.Command) == FWCAPS_GET_RULE_CMD) &&
+ ((MsgGenGetFwCapsSkuAck.MKHIHeader.Fields.IsResponse) == 1) &&
+ (MsgGenGetFwCapsSkuAck.MKHIHeader.Fields.Result == 0)
+ ) {
+
+ if (MsgGenGetFwCapsSkuAck.Data.FWCapSku.Fields.PTT) {
+ *PttCapability = TRUE;
+ }
+ }
+ DEBUG ((EFI_D_INFO, "PTT SkuMgr: PttCapability = %d\n", *PttCapability));
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Checks Platform Trust Technology enablement state.
+
+ @param[out] IsPttEnabledState TRUE if PTT is enabled, FALSE othewrwise.
+
+ @retval EFI_SUCCESS Command succeeded
+ @retval EFI_DEVICE_ERROR HECI Device error, command aborts abnormally
+**/
+EFI_STATUS
+EFIAPI
+PttHeciGetState(
+ OUT BOOLEAN *IsPttEnabledState
+ )
+{
+ EFI_STATUS Status;
+ MEFWCAPS_SKU CurrentFeatures;
+
+ *IsPttEnabledState = FALSE;
+
+ Status = HeciGetFwFeatureStateMsg (&CurrentFeatures);
+ if (EFI_ERROR (Status)) {
+ return Status;
+ }
+
+ if (CurrentFeatures.Fields.PTT) {
+ *IsPttEnabledState = TRUE;
+ }
+
+ DEBUG ((EFI_D_INFO, "PTT SkuMgr: PttState = %d\n", *IsPttEnabledState));
+
+ return EFI_SUCCESS;
+}
+
+/**
+ Changes current Platform Trust Technology state.
+
+ @param[in] PttEnabledState TRUE to enable, FALSE to disable.
+
+ @retval EFI_SUCCESS Command succeeded
+ @retval EFI_DEVICE_ERROR HECI Device error, command aborts abnormally
+**/
+EFI_STATUS
+EFIAPI
+PttHeciSetState(
+ IN BOOLEAN PttEnabledState
+ )
+{
+ EFI_STATUS Status;
+ UINT32 EnableBitmap;
+ UINT32 DisableBitmap;
+
+ if (PttEnabledState) {
+ //
+ // Enable PTT
+ //
+ DEBUG ((EFI_D_INFO, "PTT SkuMgr: Enable PTT\n"));
+ EnableBitmap = PTT_BITMASK;
+ DisableBitmap = CLEAR_PTT_BIT;
+ } else {
+ //
+ // Disable PTT
+ //
+ DEBUG ((EFI_D_INFO, "PTT SkuMgr: Disable PTT\n"));
+ EnableBitmap = CLEAR_PTT_BIT;
+ DisableBitmap = PTT_BITMASK;
+ }
+ Status = HeciFwFeatureStateOverride (EnableBitmap, DisableBitmap);
+
+ return Status;
+}
+
+#endif // PTT_FLAG
diff --git a/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.cif b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.cif
new file mode 100644
index 0000000..60dd251
--- /dev/null
+++ b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.cif
@@ -0,0 +1,12 @@
+<component>
+ name = "PttHeciDxeLib"
+ category = ModulePart
+ LocalRoot = "ReferenceCode\Me\Library\PttHeci\Dxe\"
+ RefName = "PttHeciDxeLib"
+[files]
+"PttHeciDxeLib.sdl"
+"PttHeciDxeLib.mak"
+"PttHeciDxeLib.c"
+"PttHeciDxeLib.h"
+"PttHeciDxeLib.inf"
+<endComponent>
diff --git a/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.h b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.h
new file mode 100644
index 0000000..6b370f4
--- /dev/null
+++ b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.h
@@ -0,0 +1,37 @@
+/** @file
+ Platform Trust Technology (FTPM) HECI SkuMgr Dxe Library
+
+@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 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 _PTT_HECI_DXE_LIB_H_
+#define _PTT_HECI_DXE_LIB_H_
+
+#ifdef PTT_FLAG
+///
+/// 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"
+#endif
+///
+/// Common header for HECI Library
+///
+#include "PttHeciLib.h"
+#endif // PTT_FLAG
+#endif
diff --git a/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.inf b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.inf
new file mode 100644
index 0000000..da2f485
--- /dev/null
+++ b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.inf
@@ -0,0 +1,68 @@
+## @file
+# Component description file for PTT Heci DXE Library.
+#
+#@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
+#
+
+[defines]
+BASE_NAME = PttHeciDxeLib
+COMPONENT_TYPE = LIBRARY
+
+[sources.common]
+ PttHeciDxeLib.h
+ PttHeciDxeLib.c
+ ../Include/PttHeciLib.h
+
+[includes.common]
+ $(EFI_SOURCE)/$(PROJECT_ME_ROOT)
+ $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/PttHeci/Include
+ $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/MeKernel
+ $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/MeKernel/include
+ $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/Library/MeKernel/Dxe
+
+#
+# EDK II Glue Library utilizes some standard headers from EDK
+#
+ $(EDK_SOURCE)/Foundation
+ $(EDK_SOURCE)/Foundation/Core/Dxe
+ $(EDK_SOURCE)/Foundation/Efi
+ $(EDK_SOURCE)/Foundation/Efi/Include
+ $(EDK_SOURCE)/Foundation/Framework
+ $(EDK_SOURCE)/Foundation/Framework/Include
+ $(EDK_SOURCE)/Foundation/Include
+ $(EDK_SOURCE)/Foundation/Include/IndustryStandard
+ $(EDK_SOURCE)/Foundation/Library/Dxe/Include
+ $(EDK_SOURCE)/Foundation/Library/EdkIIGlueLib/Include
+
+#
+# Typically the sample code referenced will be available in the code base already
+# So keep this include at the end to defer to the source base definition
+# and only use the sample code definition if source base does not include these files.
+#
+ $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/SampleCode
+ $(EFI_SOURCE)/$(PROJECT_ME_ROOT)/SampleCode/Include
+
+[libraries.common]
+ EdkIIGlueBaseLib
+ EdkIIGlueUefiLib
+ EdkIIGlueDxeDebugLibReportStatusCode
+ MeLib
+
+[nmake.common]
+ C_FLAGS = $(C_FLAGS) -D __EDKII_GLUE_BASE_LIB__ \
+ -D __EDKII_GLUE_UEFI_LIB__ \
+ -D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \
+ -D PTT_FLAG \ No newline at end of file
diff --git a/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.mak b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.mak
new file mode 100644
index 0000000..ed8afdd
--- /dev/null
+++ b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.mak
@@ -0,0 +1,40 @@
+all : PttHeciDxeLib
+
+$(BUILD_DIR)\PttHeciDxeLib.lib : PttHeciDxeLib
+
+PttHeciDxeLib : $(BUILD_DIR)\PttHeciDxeLib.mak PttHeciDxeLibBin
+
+$(BUILD_DIR)\PttHeciDxeLib.mak : $(PttHeciDxeLib_DIR)\$(@B).cif $(PttHeciDxeLib_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(PttHeciDxeLib_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+PttHeciDxeLib_INCLUDES=\
+ $(EDK_INCLUDES) \
+ $(EdkIIGlueLib_INCLUDES) \
+ $(ME_INCLUDES) \
+ -I$(INTEL_COUGAR_POINT_DIR)\
+ $(INTEL_PCH_INCLUDES)
+
+PttHeciDxeLib_DEFINES=$(MY_DEFINES)\
+ /D __EDKII_GLUE_BASE_LIB__ \
+ /D __EDKII_GLUE_UEFI_LIB__ \
+ /D __EDKII_GLUE_DXE_DEBUG_LIB_REPORT_STATUS_CODE__ \
+ /D PTT_FLAG
+
+PttHeciDxeLib_LIBS=\
+ $(EdkIIGlueBaseLib_LIB)\
+!IF "$(x64_BUILD)"=="1"
+ $(EdkIIGlueBaseLibX64_LIB)\
+!ELSE
+ $(EdkIIGlueBaseLibIA32_LIB)\
+!ENDIF
+ $(EdkIIGlueUefiLib_LIB)\
+ $(EdkIIGlueDxeDebugLibReportStatusCode_LIB)\
+ $(MeProtocolLib_LIB)\
+
+
+PttHeciDxeLibBin : $(PttHeciDxeLib_LIBS)
+ $(MAKE) /$(MAKEFLAGS) $(EDKIIGLUE_DEFAULTS) \
+ /f $(BUILD_DIR)\PttHeciDxeLib.mak all \
+ "MY_INCLUDES=$(PttHeciDxeLib_INCLUDES)" \
+ "MY_DEFINES=$(PttHeciDxeLib_DEFINES)"\
+ TYPE=LIBRARY \
diff --git a/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.sdl b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.sdl
new file mode 100644
index 0000000..8d6ba28
--- /dev/null
+++ b/ReferenceCode/ME/Library/PttHeci/Dxe/PttHeciDxeLib.sdl
@@ -0,0 +1,36 @@
+TOKEN
+ Name = "PttHeciDxeLib_SUPPORT"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+ Help = "Main switch to enable PttHeciDxeLib support in Project"
+End
+
+MODULE
+ Help = "Includes PttHeciDxeLib.mak to Project"
+ File = "PttHeciDxeLib.mak"
+End
+
+PATH
+ Name = "PttHeciDxeLib_DIR"
+ Help = "Me Library file source directory"
+End
+
+ELINK
+ Name = "PttHeciDxeLib_LIB"
+ InvokeOrder = ReplaceParent
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\PttHeciDxeLib.lib"
+ Parent = "PttHeciDxeLib_LIB"
+ InvokeOrder = AfterParent
+End
+
+ELINK
+ Name = "/I$(PttHeciDxeLib_DIR)"
+ Parent = "ME_INCLUDES"
+ InvokeOrder = AfterParent
+End