VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/OvmfPkg/EmuVariableFvbRuntimeDxe/Fvb.h@ 77729

Last change on this file since 77729 was 77662, checked in by vboxsync, 6 years ago

EFI: First step in UDK2018 merge. Does not build yet.

  • Property svn:eol-style set to native
File size: 3.7 KB
Line 
1/*++
2
3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4This program and the accompanying materials
5are licensed and made available under the terms and conditions of the BSD License
6which accompanies this distribution. The full text of the license may be found at
7http://opensource.org/licenses/bsd-license.php
8
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12Module Name:
13
14 FwBlockService.h
15
16Abstract:
17
18 Firmware volume block driver for Intel Firmware Hub (FWH) device
19
20--*/
21
22#ifndef _FW_BLOCK_SERVICE_H
23#define _FW_BLOCK_SERVICE_H
24
25//
26// Fvb Protocol instance data
27//
28#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
29#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
30
31#pragma pack (1)
32
33typedef struct {
34
35 EFI_FIRMWARE_VOLUME_HEADER FvHdr;
36 EFI_FV_BLOCK_MAP_ENTRY EndBlockMap;
37 VARIABLE_STORE_HEADER VarHdr;
38
39} FVB_FV_HDR_AND_VARS_TEMPLATE;
40
41typedef struct {
42 MEMMAP_DEVICE_PATH MemMapDevPath;
43 EFI_DEVICE_PATH_PROTOCOL EndDevPath;
44} FV_DEVICE_PATH;
45
46#pragma pack ()
47
48typedef struct {
49 UINTN Signature;
50 FV_DEVICE_PATH DevicePath;
51 VOID *BufferPtr;
52 UINTN BlockSize;
53 UINTN Size;
54 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
55} EFI_FW_VOL_BLOCK_DEVICE;
56
57
58//
59// Constants
60//
61#define EMU_FVB_BLOCK_SIZE \
62 EFI_PAGE_SIZE
63#define EMU_FVB_NUM_SPARE_BLOCKS \
64 EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))
65#define EMU_FVB_NUM_TOTAL_BLOCKS \
66 (2 * EMU_FVB_NUM_SPARE_BLOCKS)
67#define EMU_FVB_SIZE \
68 (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE)
69#define FTW_WRITE_QUEUE_SIZE \
70 (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \
71 sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))
72#define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
73
74#define NOT_ERASED_BIT 0
75#define ERASED_BIT 1
76#define ERASED_UINT8 0xff
77#define ERASED_UINT32 0xffffffff
78
79//
80// Protocol APIs
81//
82EFI_STATUS
83EFIAPI
84FvbProtocolGetAttributes (
85 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
86 OUT EFI_FVB_ATTRIBUTES_2 *Attributes
87 )
88;
89
90EFI_STATUS
91EFIAPI
92FvbProtocolSetAttributes (
93 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
94 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
95 )
96;
97
98EFI_STATUS
99EFIAPI
100FvbProtocolGetPhysicalAddress (
101 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
102 OUT EFI_PHYSICAL_ADDRESS *Address
103 )
104;
105
106EFI_STATUS
107EFIAPI
108FvbProtocolGetBlockSize (
109 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
110 IN EFI_LBA Lba,
111 OUT UINTN *BlockSize,
112 OUT UINTN *NumberOfBlocks
113 )
114;
115
116EFI_STATUS
117EFIAPI
118FvbProtocolRead (
119 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
120 IN EFI_LBA Lba,
121 IN UINTN Offset,
122 IN OUT UINTN *NumBytes,
123 IN OUT UINT8 *Buffer
124 )
125;
126
127EFI_STATUS
128EFIAPI
129FvbProtocolWrite (
130 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
131 IN EFI_LBA Lba,
132 IN UINTN Offset,
133 IN OUT UINTN *NumBytes,
134 IN UINT8 *Buffer
135 )
136;
137
138EFI_STATUS
139EFIAPI
140FvbProtocolEraseBlocks (
141 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
142 ...
143 )
144;
145
146#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette