mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-12-27 16:58:09 +01:00
136 lines
3.6 KiB
C
136 lines
3.6 KiB
C
|
/** @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
|