/** @file | |
STM service protocol definition | |
Copyright (c) 2015 - 2019, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef _SM_MONITOR_INIT_PROTOCOL_H_ | |
#define _SM_MONITOR_INIT_PROTOCOL_H_ | |
#include <PiSmm.h> | |
#include <Register/Intel/StmApi.h> | |
#define EFI_SM_MONITOR_INIT_PROTOCOL_GUID \ | |
{ 0x228f344d, 0xb3de, 0x43bb, 0xa4, 0xd7, 0xea, 0x20, 0xb, 0x1b, 0x14, 0x82} | |
// | |
// STM service | |
// | |
/** | |
Load STM image to MSEG. | |
@param StmImage STM image | |
@param StmImageSize STM image size | |
@retval EFI_SUCCESS Load STM to MSEG successfully | |
@retval EFI_ALREADY_STARTED STM image is already loaded to MSEG | |
@retval EFI_BUFFER_TOO_SMALL MSEG is smaller than minimal requirement of STM image | |
@retval EFI_UNSUPPORTED MSEG is not enabled | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_SM_MONITOR_LOAD_MONITOR)( | |
IN EFI_PHYSICAL_ADDRESS StmImage, | |
IN UINTN StmImageSize | |
); | |
/** | |
Add resources in list to database. | |
@param ResourceList A pointer to resource list to be added | |
@param NumEntries Optional number of entries. | |
If 0, list must be terminated by END_OF_RESOURCES. | |
@retval EFI_SUCCESS If resources are added | |
@retval EFI_INVALID_PARAMETER If nested procedure detected resource failer | |
@retval EFI_OUT_OF_RESOURCES If nested procedure returned it and we cannot allocate more areas. | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_SM_MONITOR_ADD_PI_RESOURCE)( | |
IN STM_RSC *ResourceList, | |
IN UINT32 NumEntries OPTIONAL | |
); | |
/** | |
Delete resources in list to database. | |
@param ResourceList A pointer to resource list to be deleted | |
NULL means delete all resources. | |
@param NumEntries Optional number of entries. | |
If 0, list must be terminated by END_OF_RESOURCES. | |
@retval EFI_SUCCESS If resources are deleted | |
@retval EFI_INVALID_PARAMETER If nested procedure detected resource failer | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_SM_MONITOR_DELETE_PI_RESOURCE)( | |
IN STM_RSC *ResourceList OPTIONAL, | |
IN UINT32 NumEntries OPTIONAL | |
); | |
/** | |
Get BIOS resources. | |
@param ResourceList A pointer to resource list to be filled | |
@param ResourceSize On input it means size of resource list input. | |
On output it means size of resource list filled, | |
or the size of resource list to be filled if size of too small. | |
@retval EFI_SUCCESS If resources are returned. | |
@retval EFI_BUFFER_TOO_SMALL If resource list buffer is too small to hold the whole resources. | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_SM_MONITOR_GET_PI_RESOURCE)( | |
OUT STM_RSC *ResourceList, | |
IN OUT UINT32 *ResourceSize | |
); | |
typedef UINT32 EFI_SM_MONITOR_STATE; | |
#define EFI_SM_MONITOR_STATE_ENABLED 0x1 | |
#define EFI_SM_MONITOR_STATE_ACTIVATED 0x2 | |
/** | |
Get STM state | |
@return STM state | |
**/ | |
typedef | |
EFI_SM_MONITOR_STATE | |
(EFIAPI *EFI_SM_MONITOR_GET_MONITOR_STATE)( | |
VOID | |
); | |
typedef struct _EFI_SM_MONITOR_INIT_PROTOCOL { | |
// | |
// Valid at boot-time only | |
// | |
EFI_SM_MONITOR_LOAD_MONITOR LoadMonitor; | |
EFI_SM_MONITOR_ADD_PI_RESOURCE AddPiResource; | |
EFI_SM_MONITOR_DELETE_PI_RESOURCE DeletePiResource; | |
EFI_SM_MONITOR_GET_PI_RESOURCE GetPiResource; | |
// | |
// Valid at runtime | |
// | |
EFI_SM_MONITOR_GET_MONITOR_STATE GetMonitorState; | |
} EFI_SM_MONITOR_INIT_PROTOCOL; | |
extern EFI_GUID gEfiSmMonitorInitProtocolGuid; | |
#endif |