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