/** @file The common header file for SMM FVB module. Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef SMM_FVB_COMMON_H_ #define SMM_FVB_COMMON_H_ #include #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