1 /** @file 2 3 The common header file for SMM FVB module and SMM FVB runtime Module. 4 5 Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved. <BR> 6 7 This program and the accompanying materials are licensed and made available under 9 the terms and conditions of the BSD License that accompanies this distribution. 11 The full text of the license may be found at 13 http://opensource.org/licenses/bsd-license.php. 15 17 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 19 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 21 23 25 **/ 26 27 #ifndef _SMM_FVB_COMMON_H_ 28 #define _SMM_FVB_COMMON_H_ 29 30 #include <Protocol/SmmFirmwareVolumeBlock.h> 31 32 #define EFI_FUNCTION_GET_ATTRIBUTES 1 33 #define EFI_FUNCTION_SET_ATTRIBUTES 2 34 #define EFI_FUNCTION_GET_PHYSICAL_ADDRESS 3 35 #define EFI_FUNCTION_GET_BLOCK_SIZE 4 36 #define EFI_FUNCTION_READ 5 37 #define EFI_FUNCTION_WRITE 6 38 #define EFI_FUNCTION_ERASE_BLOCKS 7 39 40 typedef struct { 41 UINTN Function; 42 EFI_STATUS ReturnStatus; 43 UINT8 Data[1]; 44 } SMM_FVB_COMMUNICATE_FUNCTION_HEADER; 45 46 47 /// 48 /// Size of SMM communicate header, without including the payload. 49 /// 50 #define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)) 51 52 /// 53 /// Size of SMM FVB communicate function header, without including the payload. 54 /// 55 #define SMM_FVB_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_FVB_COMMUNICATE_FUNCTION_HEADER, Data)) 56 57 typedef struct { 58 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; 59 EFI_FVB_ATTRIBUTES_2 Attributes; 60 } SMM_FVB_ATTRIBUTES_HEADER; 61 62 typedef struct { 63 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; 64 EFI_PHYSICAL_ADDRESS Address; 65 } SMM_FVB_PHYSICAL_ADDRESS_HEADER; 66 67 typedef struct { 68 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; 69 EFI_LBA Lba; 70 UINTN BlockSize; 71 UINTN NumOfBlocks; 72 } SMM_FVB_BLOCK_SIZE_HEADER; 73 74 typedef struct { 75 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; 76 EFI_LBA Lba; 77 UINTN Offset; 78 UINTN NumBytes; 79 } SMM_FVB_READ_WRITE_HEADER; 80 81 typedef struct { 82 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb; 83 EFI_LBA StartLba; 84 UINTN NumOfLba; 85 } SMM_FVB_BLOCKS_HEADER; 86 87 #endif 88