VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h@ 99396

最後變更 在這個檔案從99396是 85718,由 vboxsync 提交於 5 年 前

Devices/EFI: Merge edk-stable202005 and make it build, bugref:4643

  • 屬性 svn:eol-style 設為 native
檔案大小: 4.8 KB
 
1/**@file
2
3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 Module Name:
8
9 FwBlockService.h
10
11 Abstract:
12
13 Firmware volume block driver for Intel Firmware Hub (FWH) device
14
15**/
16
17#ifndef _FW_BLOCK_SERVICE_H
18#define _FW_BLOCK_SERVICE_H
19
20typedef struct {
21 UINTN FvBase;
22 UINTN NumOfBlocks;
23 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;
24} EFI_FW_VOL_INSTANCE;
25
26typedef struct {
27 UINT32 NumFv;
28 EFI_FW_VOL_INSTANCE *FvInstance;
29} ESAL_FWB_GLOBAL;
30
31extern ESAL_FWB_GLOBAL *mFvbModuleGlobal;
32
33//
34// Fvb Protocol instance data
35//
36#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
37 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
38
39#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
40 FvbExtension, FVB_DEVICE_SIGNATURE)
41
42#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
43
44typedef struct {
45 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;
46 EFI_DEVICE_PATH_PROTOCOL EndDevPath;
47} FV_PIWG_DEVICE_PATH;
48
49typedef struct {
50 MEMMAP_DEVICE_PATH MemMapDevPath;
51 EFI_DEVICE_PATH_PROTOCOL EndDevPath;
52} FV_MEMMAP_DEVICE_PATH;
53
54typedef struct {
55 UINTN Signature;
56 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
57 UINTN Instance;
58 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
59} EFI_FW_VOL_BLOCK_DEVICE;
60
61EFI_STATUS
62GetFvbInfo (
63 IN UINT64 FvLength,
64 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo
65 );
66
67EFI_STATUS
68FvbSetVolumeAttributes (
69 IN UINTN Instance,
70 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
71 IN ESAL_FWB_GLOBAL *Global
72 );
73
74EFI_STATUS
75FvbGetVolumeAttributes (
76 IN UINTN Instance,
77 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,
78 IN ESAL_FWB_GLOBAL *Global
79 );
80
81EFI_STATUS
82FvbGetPhysicalAddress (
83 IN UINTN Instance,
84 OUT EFI_PHYSICAL_ADDRESS *Address,
85 IN ESAL_FWB_GLOBAL *Global
86 );
87
88EFI_STATUS
89EFIAPI
90FvbInitialize (
91 IN EFI_HANDLE ImageHandle,
92 IN EFI_SYSTEM_TABLE *SystemTable
93 );
94
95
96VOID
97EFIAPI
98FvbClassAddressChangeEvent (
99 IN EFI_EVENT Event,
100 IN VOID *Context
101 );
102
103EFI_STATUS
104FvbGetLbaAddress (
105 IN UINTN Instance,
106 IN EFI_LBA Lba,
107 OUT UINTN *LbaAddress,
108 OUT UINTN *LbaLength,
109 OUT UINTN *NumOfBlocks,
110 IN ESAL_FWB_GLOBAL *Global
111 );
112
113//
114// Protocol APIs
115//
116EFI_STATUS
117EFIAPI
118FvbProtocolGetAttributes (
119 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
120 OUT EFI_FVB_ATTRIBUTES_2 *Attributes
121 );
122
123EFI_STATUS
124EFIAPI
125FvbProtocolSetAttributes (
126 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
127 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
128 );
129
130EFI_STATUS
131EFIAPI
132FvbProtocolGetPhysicalAddress (
133 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
134 OUT EFI_PHYSICAL_ADDRESS *Address
135 );
136
137EFI_STATUS
138EFIAPI
139FvbProtocolGetBlockSize (
140 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
141 IN CONST EFI_LBA Lba,
142 OUT UINTN *BlockSize,
143 OUT UINTN *NumOfBlocks
144 );
145
146EFI_STATUS
147EFIAPI
148FvbProtocolRead (
149 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
150 IN CONST EFI_LBA Lba,
151 IN CONST UINTN Offset,
152 IN OUT UINTN *NumBytes,
153 IN UINT8 *Buffer
154 );
155
156EFI_STATUS
157EFIAPI
158FvbProtocolWrite (
159 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
160 IN EFI_LBA Lba,
161 IN UINTN Offset,
162 IN OUT UINTN *NumBytes,
163 IN UINT8 *Buffer
164 );
165
166EFI_STATUS
167EFIAPI
168FvbProtocolEraseBlocks (
169 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
170 ...
171 );
172
173//
174// The following functions have different implementations dependent on the
175// module type chosen for building this driver.
176//
177VOID
178InstallProtocolInterfaces (
179 IN EFI_FW_VOL_BLOCK_DEVICE *FvbDevice
180 );
181
182VOID
183InstallVirtualAddressChangeHandler (
184 VOID
185 );
186
187EFI_STATUS
188MarkIoMemoryRangeForRuntimeAccess (
189 IN EFI_PHYSICAL_ADDRESS BaseAddress,
190 IN UINTN Length
191 );
192
193VOID
194SetPcdFlashNvStorageBaseAddresses (
195 VOID
196 );
197
198#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

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