]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/QemuFlashFvbServicesRuntimeDxe/FwBlockService.h
OvmfPkg: QemuFlashFvbServicesRuntimeDxe: strip trailing whitespace
[mirror_edk2.git] / OvmfPkg / QemuFlashFvbServicesRuntimeDxe / FwBlockService.h
CommitLineData
a4ce9ffd
JJ
1/**@file\r
2\r
3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
141f0c64
LE
4This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
a4ce9ffd
JJ
11\r
12Module Name:\r
13\r
14 FwBlockService.h\r
141f0c64 15\r
a4ce9ffd
JJ
16Abstract:\r
17\r
18 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
19\r
20**/\r
21\r
22#ifndef _FW_BLOCK_SERVICE_H\r
23#define _FW_BLOCK_SERVICE_H\r
24\r
25//\r
26// BugBug: Add documentation here for data structure!!!!\r
27//\r
28#define FVB_PHYSICAL 0\r
29#define FVB_VIRTUAL 1\r
30\r
31typedef struct {\r
32 EFI_LOCK FvbDevLock;\r
33 UINTN FvBase[2];\r
34 UINTN NumOfBlocks;\r
35 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader;\r
36} EFI_FW_VOL_INSTANCE;\r
37\r
38typedef struct {\r
39 UINT32 NumFv;\r
40 EFI_FW_VOL_INSTANCE *FvInstance[2];\r
41 UINT8 *FvbScratchSpace[2];\r
42} ESAL_FWB_GLOBAL;\r
43\r
44//\r
45// Fvb Protocol instance data\r
46//\r
47#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
48#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)\r
49#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
50\r
51typedef struct {\r
52 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;\r
53 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
54} FV_PIWG_DEVICE_PATH;\r
55\r
56typedef struct {\r
57 MEMMAP_DEVICE_PATH MemMapDevPath;\r
58 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
59} FV_MEMMAP_DEVICE_PATH;\r
60\r
61typedef struct {\r
62 UINTN Signature;\r
63 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
64 UINTN Instance;\r
65 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
66} EFI_FW_VOL_BLOCK_DEVICE;\r
67\r
68EFI_STATUS\r
69GetFvbInfo (\r
70 IN UINT64 FvLength,\r
71 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
72 );\r
73\r
74EFI_STATUS\r
75FvbSetVolumeAttributes (\r
76 IN UINTN Instance,\r
77 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
78 IN ESAL_FWB_GLOBAL *Global,\r
79 IN BOOLEAN Virtual\r
80 );\r
81\r
82EFI_STATUS\r
83FvbGetVolumeAttributes (\r
84 IN UINTN Instance,\r
85 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
86 IN ESAL_FWB_GLOBAL *Global,\r
87 IN BOOLEAN Virtual\r
88 );\r
89\r
90EFI_STATUS\r
91FvbGetPhysicalAddress (\r
92 IN UINTN Instance,\r
93 OUT EFI_PHYSICAL_ADDRESS *Address,\r
94 IN ESAL_FWB_GLOBAL *Global,\r
95 IN BOOLEAN Virtual\r
96 );\r
97\r
98EFI_STATUS\r
99EFIAPI\r
100FvbInitialize (\r
101 IN EFI_HANDLE ImageHandle,\r
102 IN EFI_SYSTEM_TABLE *SystemTable\r
103 );\r
104\r
105\r
106VOID\r
107EFIAPI\r
108FvbClassAddressChangeEvent (\r
109 IN EFI_EVENT Event,\r
110 IN VOID *Context\r
111 );\r
112\r
113EFI_STATUS\r
114FvbGetLbaAddress (\r
115 IN UINTN Instance,\r
116 IN EFI_LBA Lba,\r
117 OUT UINTN *LbaAddress,\r
118 OUT UINTN *LbaLength,\r
119 OUT UINTN *NumOfBlocks,\r
120 IN ESAL_FWB_GLOBAL *Global,\r
121 IN BOOLEAN Virtual\r
122 );\r
123\r
124//\r
125// Protocol APIs\r
126//\r
127EFI_STATUS\r
128EFIAPI\r
129FvbProtocolGetAttributes (\r
130 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
131 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
132 );\r
133\r
134EFI_STATUS\r
135EFIAPI\r
136FvbProtocolSetAttributes (\r
137 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
138 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
139 );\r
140\r
141EFI_STATUS\r
142EFIAPI\r
143FvbProtocolGetPhysicalAddress (\r
144 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
145 OUT EFI_PHYSICAL_ADDRESS *Address\r
146 );\r
147\r
148EFI_STATUS\r
149EFIAPI\r
150FvbProtocolGetBlockSize (\r
151 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
152 IN CONST EFI_LBA Lba,\r
153 OUT UINTN *BlockSize,\r
154 OUT UINTN *NumOfBlocks\r
155 );\r
156\r
157EFI_STATUS\r
158EFIAPI\r
159FvbProtocolRead (\r
160 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
161 IN CONST EFI_LBA Lba,\r
162 IN CONST UINTN Offset,\r
163 IN OUT UINTN *NumBytes,\r
164 IN UINT8 *Buffer\r
165 );\r
166\r
167EFI_STATUS\r
168EFIAPI\r
169FvbProtocolWrite (\r
170 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
171 IN EFI_LBA Lba,\r
172 IN UINTN Offset,\r
173 IN OUT UINTN *NumBytes,\r
174 IN UINT8 *Buffer\r
175 );\r
176\r
177EFI_STATUS\r
178EFIAPI\r
179FvbProtocolEraseBlocks (\r
180 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
181 ...\r
182 );\r
183\r
184#endif\r