| /** @file | |
| The common header file for SMM FVB module. | |
| Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef SMM_FVB_COMMON_H_ | |
| #define SMM_FVB_COMMON_H_ | |
| #include <Protocol/SmmFirmwareVolumeBlock.h> | |
| #define EFI_FUNCTION_GET_ATTRIBUTES 1 | |
| #define EFI_FUNCTION_SET_ATTRIBUTES 2 | |
| #define EFI_FUNCTION_GET_PHYSICAL_ADDRESS 3 | |
| #define EFI_FUNCTION_GET_BLOCK_SIZE 4 | |
| #define EFI_FUNCTION_READ 5 | |
| #define EFI_FUNCTION_WRITE 6 | |
| #define EFI_FUNCTION_ERASE_BLOCKS 7 | |
| typedef struct { | |
| UINTN Function; | |
| EFI_STATUS ReturnStatus; | |
| UINT8 Data[1]; | |
| } SMM_FVB_COMMUNICATE_FUNCTION_HEADER; | |
| /// | |
| /// Size of SMM communicate header, without including the payload. | |
| /// | |
| #define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)) | |
| /// | |
| /// Size of SMM FVB communicate function header, without including the payload. | |
| /// | |
| #define SMM_FVB_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_FVB_COMMUNICATE_FUNCTION_HEADER, Data)) | |
| typedef struct { | |
| EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; | |
| EFI_FVB_ATTRIBUTES_2 Attributes; | |
| } SMM_FVB_ATTRIBUTES_HEADER; | |
| typedef struct { | |
| EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; | |
| EFI_PHYSICAL_ADDRESS Address; | |
| } SMM_FVB_PHYSICAL_ADDRESS_HEADER; | |
| typedef struct { | |
| EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; | |
| EFI_LBA Lba; | |
| UINTN BlockSize; | |
| UINTN NumOfBlocks; | |
| } SMM_FVB_BLOCK_SIZE_HEADER; | |
| typedef struct { | |
| EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; | |
| EFI_LBA Lba; | |
| UINTN Offset; | |
| UINTN NumBytes; | |
| } SMM_FVB_READ_WRITE_HEADER; | |
| typedef struct { | |
| EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; | |
| EFI_LBA StartLba; | |
| UINTN NumOfLba; | |
| } SMM_FVB_BLOCKS_HEADER; | |
| #endif |