summaryrefslogtreecommitdiff
path: root/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h
diff options
context:
space:
mode:
Diffstat (limited to 'ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h')
-rw-r--r--ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h340
1 files changed, 340 insertions, 0 deletions
diff --git a/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h
new file mode 100644
index 0000000..0e6b947
--- /dev/null
+++ b/ReferenceCode/ME/ActiveManagement/AlertStandardFormat/Heci/Dxe/AlertStandardFormatDxe.h
@@ -0,0 +1,340 @@
+/** @file
+ Include file for ASF Driver
+
+@copyright
+ Copyright (c) 2005 - 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 _ALERT_STANDARD_FORMAT_H
+#define _ALERT_STANDARD_FORMAT_H
+
+#include "AslUpdateLib.h"
+#include "AlertStandardFormatTable.h"
+#include "AmtLib.h"
+#include "AlertStandardFormatCommon.h"
+
+//
+// Driver Consumed Protocol Prototypes
+//
+#include EFI_PROTOCOL_CONSUMER (DataHub)
+#include EFI_PROTOCOL_CONSUMER (AlertStandardFormat)
+#include EFI_PROTOCOL_CONSUMER (HECI)
+#include EFI_PROTOCOL_CONSUMER (ConsoleControl)
+#include EFI_GUID_DEFINITION (ConsoleLock)
+#include EFI_GUID_DEFINITION (AmtForcePushPetPolicy)
+
+///
+/// ASF Over HECI
+///
+typedef struct _HECI_ASF_PUSH_PROGRESS_CODE {
+ UINT8 Command;
+ UINT8 ByteCount;
+ EFI_ASF_MESSAGE AsfMessage;
+ UINT8 EventData[3];
+ UINT8 Reserved[2];
+} HECI_ASF_PUSH_PROGRESS_CODE;
+
+#define HECI_ASF_PUSH_PROGRESS_CODE_LENGTH 0x12
+
+typedef struct _HECI_ASF_GET_BOOT_OPTIONS {
+ UINT8 Command;
+ UINT8 ByteCount;
+ UINT8 SubCommand;
+ UINT8 VersionNumber;
+} HECI_ASF_GET_BOOT_OPTIONS;
+
+#define HECI_ASF_GET_BOOT_OPTIONS_LENGTH 0x04
+
+typedef struct _HECI_ASF_GET_BOOT_OPTIONS_RESPONSE {
+ UINT8 Command;
+ UINT8 ByteCount;
+ EFI_ASF_BOOT_OPTIONS AsfBootOptions;
+ UINT8 Reserved;
+} HECI_ASF_GET_BOOT_OPTIONS_RESPONSE;
+
+#define HECI_ASF_GET_BOOT_OPTIONS_RESPONSE_LENGTH 0x0F
+
+typedef struct _HECI_ASF_CLEAR_BOOT_OPTION {
+ UINT8 Command;
+ UINT8 ByteCount;
+ EFI_ASF_CLEAR_BOOT_OPTIONS AsfClearBootOptions;
+} HECI_ASF_CLEAR_BOOT_OPTION;
+
+#define HECI_ASF_CLEAR_BOOT_OPTION_LENGTH 0x04
+
+typedef enum _HASFM_COMMAND_CODE
+{
+ ASF_MESSAGING_CMD = 0x04,
+ ASF_PUSH_PROGESS_CODE_SUBCMD = 0x12,
+ ASF_MENAGEMENT_CONTROL = 0x02,
+ ASF_WDT_START_SUBCMD = 0x13,
+ ASF_WDT_STOP_SUBCMD = 0x14,
+ ASF_CONFIGURATION_CMD = 0x03,
+ ASF_CLEAR_BOOT_OPTION_SUBCMD = 0x15,
+ ASF_RETURN_BOOT_OPTION_SUBCMD = 0x16,
+ ASF_NO_BOOT_OPTION_SUBCMD = 0x17
+} HASFM_COMMAND_CODE;
+
+typedef struct {
+ EFI_FRAMEWORK_MESSAGE_TYPE MessageType;
+ EFI_ASF_MESSAGE Message;
+} EFI_ASF_FRAMEWORK_MESSAGE;
+
+typedef struct {
+ EFI_FRAMEWORK_MESSAGE_TYPE MessageType;
+ EFI_STATUS_CODE_VALUE StatusCodeValue;
+} EFI_ASF_DATA_HUB_MAP;
+
+#define ALERT_STANDARD_FORMAT_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('a', 's', 'f', 'd')
+
+///
+/// Declare a local instance structure for this driver
+///
+typedef struct _ALERT_STANDARD_FORMAT_INSTANCE {
+ UINTN Signature;
+ EFI_HANDLE Handle;
+
+ ///
+ /// Published interface
+ ///
+ EFI_ALERT_STANDARD_FORMAT_PROTOCOL AlertStandardFormat;
+
+} ALERT_STANDARD_FORMAT_INSTANCE;
+
+#include "Pei.h"
+#include EFI_PPI_DEFINITION (AmtStatusCode)
+
+#define EFI_CONSOLE_OUT_DEVICE_GUID \
+ { \
+ 0xd3b36f2c, 0xd551, 0x11d4, \
+ { \
+ 0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d \
+ } \
+ }
+
+#define AMT_FORCE_PUSH_PET_VARIABLE_GUID \
+ { \
+ 0xd7ac94af, 0xa498, 0x45ec, 0xbf, 0xa2, 0xa5, 0x6e, 0x95, 0x34, 0x61, 0x8b \
+ }
+
+#define AMT_FORCE_PUSH_PET_VARIABLE_NAME L"AmtForcePushErrorPET"
+
+#define AMT_PET_QUEUE_NODE_SIGNATURE EFI_SIGNATURE_32 ('A', 'M', 'T', 'Q')
+
+typedef struct _AMT_PET_QUEUE_NODE {
+ UINT32 Signature;
+ EFI_LIST_ENTRY Link;
+ EFI_STATUS_CODE_VALUE Value;
+ EFI_STATUS_CODE_TYPE Type;
+} AMT_PET_QUEUE_NODE;
+
+#define AMT_PET_QUEUE_NODE_FROM_LINK(_node) CR (_node, AMT_PET_QUEUE_NODE, Link, AMT_PET_QUEUE_NODE_SIGNATURE)
+
+typedef struct {
+ EFI_LIST_ENTRY MessageList;
+} AMT_PET_QUEUE_PROTOCOL;
+
+//
+// Prototypes
+//
+
+/**
+ The driver entry point - detect ASF support or not, if support, will install relative protocol.
+
+ @param[in] ImageHandle Handle for this drivers loaded image protocol.
+ @param[in] SystemTable EFI system table.
+
+ @retval EFI_SUCCESS The driver installed without error.
+ @exception EFI_UNSUPPORTED The chipset is unsupported by this driver.
+ @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures.
+**/
+EFI_STATUS
+EFIAPI
+AlertStandardFormatDriverEntryPoint (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+;
+
+/**
+ Return the SMBus address used by the ASF driver.
+ Not applicable in Intel ME/HECI system, need to return EFI_UNSUPPORTED.
+
+ @param[in] This The address of protocol
+ @param[in] SmbusDeviceAddress Out put the Smbus Address
+
+ @exception EFI_UNSUPPORTED The function is unsupported by this driver
+**/
+EFI_STATUS
+EFIAPI
+GetSmbusAddr (
+ IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This,
+ OUT UINTN *SmbusDeviceAddress
+ )
+;
+
+/**
+ Set the SMBus address used by the ASF driver. 0 is an invalid address.
+ Not applicable in Intel ME/HECI system, need to return EFI_UNSUPPORTED.
+
+ @param[in] This The address of protocol
+ @param[in] SmbusDeviceAddress SMBus address of the device
+
+ @exception EFI_UNSUPPORTED The function is unsupported by this driver
+**/
+EFI_STATUS
+EFIAPI
+SetSmbusAddr (
+ IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This,
+ IN UINTN SmbusDeviceAddress
+ )
+;
+
+/**
+ Return the ASF Boot Options obtained from the controller. If the
+ Boot Options parameter is NULL and no boot options have been retrieved,
+ Query the ASF controller for its boot options.
+ Get ASF Boot Options through HECI.
+
+ @param[in] This The address of protocol
+ @param[in] AsfBootOptions Pointer to ASF boot options to copy current ASF Boot options
+
+ @retval EFI_SUCCESS Boot options copied
+ @retval EFI_NOT_READY No boot options
+**/
+EFI_STATUS
+EFIAPI
+GetBootOptions (
+ IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This,
+ IN OUT EFI_ASF_BOOT_OPTIONS **AsfBootOptions
+ )
+;
+
+/**
+ Send ASF Message through HECI.
+
+ @param[in] This The address of protocol
+ @param[in] AsfMessage Pointer to ASF message
+
+ @retval EFI_SUCCESS Boot options copied
+ @retval EFI_INVALID_PARAMETER Invalid pointer
+ @retval EFI_NOT_READY No controller
+**/
+EFI_STATUS
+EFIAPI
+SendAsfMessage (
+ IN EFI_ALERT_STANDARD_FORMAT_PROTOCOL *This,
+ IN EFI_ASF_MESSAGE *AsfMessage
+ )
+;
+
+/**
+ This routine returns ForcePushPetPolicy information.
+
+ @param[in] None
+
+ @retval AMT_FORCE_PUSH_PET_POLICY_HOB ForcePushPetPolicy information.
+**/
+AMT_FORCE_PUSH_PET_POLICY_HOB *
+GetForcePushPetPolicy (
+ VOID
+ )
+;
+
+/**
+ Filters all the progress and error codes for Asf.
+
+ @param[in] Event The event registered.
+ @param[in] Context Event context. Not used in this event handler.
+**/
+VOID
+EFIAPI
+DataHubEventCallback (
+ IN EFI_EVENT Event,
+ IN VOID *Context
+ )
+;
+
+/**
+ Sends a POST packet across ASF
+
+ @param[in] MessageType POST Status Code
+
+ @retval EFI_DEVICE_ERROR No message found
+ @retval EFI_SUCCESS Boot options copied
+ @retval EFI_INVALID_PARAMETER Invalid pointer
+ @retval EFI_NOT_READY No controller
+**/
+EFI_STATUS
+SendPostPacket (
+ IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType
+ )
+;
+
+/**
+ This routine sends PET message in MessageQueue.
+
+ @param[in] PeiServices PeiServices pointer.
+
+ @retval EFI_SUCCESS The function completed successfully
+ @retval EFI_NOT_READY No controller
+**/
+EFI_STATUS
+SendPETMessageInQueue (
+ VOID
+ )
+;
+
+/**
+ This routine creats PET MessageQueue.
+
+ @param[in] None
+
+ @retval EFI_SUCCESS The function completed successfully
+**/
+EFI_STATUS
+AmtCreateMessageQueue (
+ VOID
+ )
+;
+
+/**
+ This routine saves current ForcePush ErrorEvent to Variable, which will be sent again.
+
+ @param[in] MessageType ASF PET message type.
+
+ @retval EFI_SUCCESS The function completed successfully
+ @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures
+**/
+EFI_STATUS
+SaveForcePushErrorEvent (
+ IN EFI_FRAMEWORK_MESSAGE_TYPE MessageType
+ )
+;
+
+/**
+ This routine converts Hob ForcePush ErrorEvent to Variable, which will be sent again.
+
+ @param[in] None
+
+ @retval EFI_SUCCESS The function completed successfully
+**/
+EFI_STATUS
+SaveForcePushErrorEventFromPeiToDxe (
+ VOID
+ )
+;
+#endif