summaryrefslogtreecommitdiff
path: root/Vlv2TbltDevicePkg/FvbRuntimeDxe/FvbSmmCommon.h
blob: 236e487111e46d01c5d3f5a94ef0a16cdbe27c06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/** @file

  The common header file for SMM FVB module and SMM FVB runtime Module.

Copyright (c) 2010 - 2014, 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