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