]> git.proxmox.com Git - mirror_edk2.git/blame - UefiPayloadPkg/FvbRuntimeDxe/FvbSmmCommon.h
UefiPayloadPkg: Add a common FVB SMM module
[mirror_edk2.git] / UefiPayloadPkg / FvbRuntimeDxe / FvbSmmCommon.h
CommitLineData
ae8acce8
GD
1/** @file\r
2 The common header file for SMM FVB module.\r
3\r
4Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR>\r
5SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
7**/\r
8\r
9#ifndef SMM_FVB_COMMON_H_\r
10#define SMM_FVB_COMMON_H_\r
11\r
12#include <Protocol/SmmFirmwareVolumeBlock.h>\r
13\r
14#define EFI_FUNCTION_GET_ATTRIBUTES 1\r
15#define EFI_FUNCTION_SET_ATTRIBUTES 2\r
16#define EFI_FUNCTION_GET_PHYSICAL_ADDRESS 3\r
17#define EFI_FUNCTION_GET_BLOCK_SIZE 4\r
18#define EFI_FUNCTION_READ 5\r
19#define EFI_FUNCTION_WRITE 6\r
20#define EFI_FUNCTION_ERASE_BLOCKS 7\r
21\r
22typedef struct {\r
23 UINTN Function;\r
24 EFI_STATUS ReturnStatus;\r
25 UINT8 Data[1];\r
26} SMM_FVB_COMMUNICATE_FUNCTION_HEADER;\r
27\r
28\r
29///\r
30/// Size of SMM communicate header, without including the payload.\r
31///\r
32#define SMM_COMMUNICATE_HEADER_SIZE (OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data))\r
33\r
34///\r
35/// Size of SMM FVB communicate function header, without including the payload.\r
36///\r
37#define SMM_FVB_COMMUNICATE_HEADER_SIZE (OFFSET_OF (SMM_FVB_COMMUNICATE_FUNCTION_HEADER, Data))\r
38\r
39typedef struct {\r
40 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;\r
41 EFI_FVB_ATTRIBUTES_2 Attributes;\r
42} SMM_FVB_ATTRIBUTES_HEADER;\r
43\r
44typedef struct {\r
45 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;\r
46 EFI_PHYSICAL_ADDRESS Address;\r
47} SMM_FVB_PHYSICAL_ADDRESS_HEADER;\r
48\r
49typedef struct {\r
50 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;\r
51 EFI_LBA Lba;\r
52 UINTN BlockSize;\r
53 UINTN NumOfBlocks;\r
54} SMM_FVB_BLOCK_SIZE_HEADER;\r
55\r
56typedef struct {\r
57 EFI_SMM_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;\r
58 EFI_LBA Lba;\r
59 UINTN Offset;\r
60 UINTN NumBytes;\r
61} SMM_FVB_READ_WRITE_HEADER;\r
62\r
63typedef struct {\r
64 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *SmmFvb;\r
65 EFI_LBA StartLba;\r
66 UINTN NumOfLba;\r
67} SMM_FVB_BLOCKS_HEADER;\r
68\r
69#endif\r