summaryrefslogtreecommitdiff
path: root/ReferenceCode/ME/Ppi/AmtStatusCode
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/ME/Ppi/AmtStatusCode
downloadzprj-master.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'ReferenceCode/ME/Ppi/AmtStatusCode')
-rw-r--r--ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.c30
-rw-r--r--ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.h120
2 files changed, 150 insertions, 0 deletions
diff --git a/ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.c b/ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.c
new file mode 100644
index 0000000..c1f850e
--- /dev/null
+++ b/ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.c
@@ -0,0 +1,30 @@
+/** @file
+ AMT Status Code support at PEI phase
+
+@copyright
+ Copyright (c) 2010 - 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
+**/
+#include "Tiano.h"
+#include "Pei.h"
+
+#include EFI_PPI_DEFINITION (AmtStatusCode)
+
+EFI_GUID gPeiAmtStatusCodePpiGuid = PEI_AMT_STATUS_CODE_PPI_GUID;
+EFI_GUID gAmtPetQueueHobGuid = AMT_PET_QUEUE_HOB_GUID;
+EFI_GUID gAmtForcePushPetHobGuid = AMT_FORCE_PUSH_PET_HOB_GUID;
+
+EFI_GUID_STRING(&gPeiAmtStatusCodePpiGuid, "PEI AMT Status Code PPI", "PEI AMT Status Code PPI");
+EFI_GUID_STRING(&gAmtPetQueueHobGuid, "PEI AMT PET Queue Hob", "PEI AMT PET Queue Hob");
+EFI_GUID_STRING(&gAmtForcePushPetHobGuid, "PEI AMT Force Push PET Hob", "PEI AMT Force Push PET Hob");
diff --git a/ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.h b/ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.h
new file mode 100644
index 0000000..733a57f
--- /dev/null
+++ b/ReferenceCode/ME/Ppi/AmtStatusCode/AmtStatusCode.h
@@ -0,0 +1,120 @@
+/** @file
+ Header file for AMT Status Code support at PEI phase
+
+@copyright
+ Copyright (c) 2010 - 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 _PEI_AMT_STATUS_CODE_PPI_H_
+#define _PEI_AMT_STATUS_CODE_PPI_H_
+
+///
+/// Intel AMT PEI Status Code PPI GUID
+/// This driver produces interface to let PEI Status Code generic driver report status to
+/// Intel AMT, so that Intel AMT PET message can be sent out in PEI phase.
+///
+#define PEI_AMT_STATUS_CODE_PPI_GUID \
+ { \
+ 0x881807d2, 0x98d1, 0x4ec9, 0xaf, 0xa0, 0x77, 0x46, 0xc4, 0x2f, 0x24, 0x49 \
+ }
+
+extern EFI_GUID gPeiAmtStatusCodePpiGuid;
+
+EFI_FORWARD_DECLARATION (PEI_AMT_STATUS_CODE_PPI);
+
+/**
+ Provides an interface that a software module can call to report an ASF PEI status code.
+ The extension to report status code to Intel AMT, so that Intel AMT PET message will
+ be sent out in PEI.
+
+ @param[in] PeiServices General purpose services available to every PEIM.
+ @param[in] This This interface.
+ @param[in] Type Indicates the type of status code being reported.
+ @param[in] Value Describes the current status of a hardware or software entity.
+ This included information about the class and subclass that is
+ used to classify the entity as well as an operation.
+ @param[in] Instance The enumeration of a hardware or software entity within
+ the system. Valid instance numbers start with 1.
+ @param[in] CallerId This optional parameter may be used to identify the caller.
+ This parameter allows the status code driver to apply different
+ rules to different callers.
+ @param[in] Data This optional parameter may be used to pass additional data.
+
+ @retval EFI_SUCCESS The function completed successfully
+ @retval EFI_DEVICE_ERROR The function should not be completed due to a device error.
+**/
+typedef
+EFI_STATUS
+(EFIAPI *PEI_AMT_STATUS_CODE_PPI_REPORT_STATUS_CODE) (
+ IN EFI_PEI_SERVICES **PeiServices,
+ IN PEI_AMT_STATUS_CODE_PPI *This,
+ IN EFI_STATUS_CODE_TYPE Type,
+ IN EFI_STATUS_CODE_VALUE Value,
+ IN UINT32 Instance,
+ IN EFI_GUID *CallerId OPTIONAL,
+ IN EFI_STATUS_CODE_DATA *Data OPTIONAL
+ )
+;
+
+///
+/// Intel AMT PEI Status Code PPI
+/// The PEI platform status code driver should be responsible to use this interface to report
+/// status code to Intel AMT. For example, memory init, memory init done, chassis intrusion.
+/// So that Intel AMT driver will send corresponding PET message out.
+///
+struct _PEI_AMT_STATUS_CODE_PPI {
+ ///
+ /// The extension to report status code to Intel AMT, so that Intel AMT PET message will
+ /// be sent out in PEI.
+ ///
+ PEI_AMT_STATUS_CODE_PPI_REPORT_STATUS_CODE ReportStatusCode;
+};
+
+///
+/// Queue Hob.
+/// This hob is used by PEI Status Code generic driver before Intel AMT PEI status code driver
+/// starts.
+/// 1) If AMT driver is not ready yet, StatusCode driver can save information
+/// to QueueHob.
+/// 2) If after AMT driver start, but ME is not ready, the AMT
+/// driver can also save information to QueueHob.
+/// Later, when ME is ready, AMT driver will send all the
+/// message in the QueueHob.
+///
+typedef struct {
+ EFI_HOB_GUID_TYPE EfiHobGuidType; ///< The GUID type hob header
+ EFI_STATUS_CODE_VALUE Value; ///< Status code value
+ EFI_STATUS_CODE_TYPE Type; ///< Status code type
+} AMT_PET_QUEUE_HOB;
+
+#define AMT_PET_QUEUE_HOB_GUID \
+ { \
+ 0xca0801d3, 0xafb1, 0x4dec, 0x9b, 0x65, 0x93, 0x65, 0xec, 0xc7, 0x93, 0x6b \
+ }
+
+extern EFI_GUID gAmtPetQueueHobGuid;
+
+#define AMT_FORCE_PUSH_PET_HOB_GUID \
+ { \
+ 0x4efa0db6, 0x26dc, 0x4bb1, 0xa7, 0x6f, 0x14, 0xbc, 0x63, 0x0c, 0x7b, 0x3c \
+ }
+
+typedef struct {
+ EFI_HOB_GUID_TYPE EfiHobGuidType;
+ INT32 MessageType;
+} AMT_FORCE_PUSH_PET_HOB;
+
+extern EFI_GUID gAmtForcePushPetHobGuid;
+
+#endif