]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/FvbServicesRuntimeDxe/FwBlockService.h
Nt32Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Nt32Pkg / FvbServicesRuntimeDxe / FwBlockService.h
CommitLineData
6ae81428 1/**@file\r
55e6660f 2\r
8f2a5f80 3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
9d2eedba 4SPDX-License-Identifier: BSD-2-Clause-Patent\r
55e6660f 5\r
6Module Name:\r
7\r
8 FwBlockService.h\r
9 \r
10Abstract:\r
11\r
12 Firmware volume block driver for Intel Firmware Hub (FWH) device\r
13\r
6ae81428 14**/\r
55e6660f 15\r
16#ifndef _FW_BLOCK_SERVICE_H\r
17#define _FW_BLOCK_SERVICE_H\r
18\r
19//\r
20// BugBug: Add documentation here for data structure!!!!\r
21//\r
22#define FVB_PHYSICAL 0\r
23#define FVB_VIRTUAL 1\r
24\r
25typedef struct {\r
26 EFI_LOCK FvbDevLock;\r
27 UINTN FvBase[2];\r
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
34 EFI_FW_VOL_INSTANCE *FvInstance[2];\r
35 UINT8 *FvbScratchSpace[2];\r
36} ESAL_FWB_GLOBAL;\r
37\r
38//\r
39// Fvb Protocol instance data\r
40//\r
41#define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)\r
42#define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)\r
99e1dd89 43#define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')\r
55e6660f 44\r
45typedef struct {\r
eb920364 46 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;\r
55e6660f 47 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
eb920364 48} FV_PIWG_DEVICE_PATH;\r
49\r
50typedef struct {\r
51 MEMMAP_DEVICE_PATH MemMapDevPath;\r
52 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
53} FV_MEMMAP_DEVICE_PATH;\r
55e6660f 54\r
55typedef struct {\r
56 UINTN Signature;\r
eb920364 57 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
55e6660f 58 UINTN Instance;\r
59 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
55e6660f 60} EFI_FW_VOL_BLOCK_DEVICE;\r
61\r
62EFI_STATUS\r
63GetFvbInfo (\r
64 IN UINT64 FvLength,\r
65 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
ed66e1bc 66 );\r
55e6660f 67\r
68EFI_STATUS\r
69FvbReadBlock (\r
70 IN UINTN Instance,\r
71 IN EFI_LBA Lba,\r
72 IN UINTN BlockOffset,\r
73 IN OUT UINTN *NumBytes,\r
74 IN UINT8 *Buffer,\r
75 IN ESAL_FWB_GLOBAL *Global,\r
76 IN BOOLEAN Virtual\r
ed66e1bc 77 );\r
55e6660f 78\r
79EFI_STATUS\r
80FvbWriteBlock (\r
81 IN UINTN Instance,\r
82 IN CONST EFI_LBA Lba,\r
83 IN CONST UINTN BlockOffset,\r
84 IN OUT UINTN *NumBytes,\r
85 IN CONST UINT8 *Buffer,\r
86 IN ESAL_FWB_GLOBAL *Global,\r
87 IN BOOLEAN Virtual\r
ed66e1bc 88 );\r
55e6660f 89\r
90EFI_STATUS\r
91FvbEraseBlock (\r
92 IN UINTN Instance,\r
93 IN EFI_LBA Lba,\r
94 IN ESAL_FWB_GLOBAL *Global,\r
95 IN BOOLEAN Virtual\r
ed66e1bc 96 );\r
55e6660f 97\r
98EFI_STATUS\r
99FvbSetVolumeAttributes (\r
100 IN UINTN Instance,\r
8ee3a199 101 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
55e6660f 102 IN ESAL_FWB_GLOBAL *Global,\r
103 IN BOOLEAN Virtual\r
ed66e1bc 104 );\r
55e6660f 105\r
106EFI_STATUS\r
107FvbGetVolumeAttributes (\r
108 IN UINTN Instance,\r
8ee3a199 109 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
55e6660f 110 IN ESAL_FWB_GLOBAL *Global,\r
111 IN BOOLEAN Virtual\r
ed66e1bc 112 );\r
55e6660f 113\r
114EFI_STATUS\r
115FvbGetPhysicalAddress (\r
116 IN UINTN Instance,\r
117 OUT EFI_PHYSICAL_ADDRESS *Address,\r
118 IN ESAL_FWB_GLOBAL *Global,\r
119 IN BOOLEAN Virtual\r
ed66e1bc 120 );\r
55e6660f 121\r
122EFI_STATUS\r
123EFIAPI\r
124FvbInitialize (\r
125 IN EFI_HANDLE ImageHandle,\r
126 IN EFI_SYSTEM_TABLE *SystemTable\r
ed66e1bc 127 );\r
55e6660f 128\r
129\r
130VOID\r
131EFIAPI\r
132FvbClassAddressChangeEvent (\r
133 IN EFI_EVENT Event,\r
134 IN VOID *Context\r
ed66e1bc 135 );\r
55e6660f 136\r
137EFI_STATUS\r
138FvbGetLbaAddress (\r
139 IN UINTN Instance,\r
140 IN EFI_LBA Lba,\r
141 OUT UINTN *LbaAddress,\r
142 OUT UINTN *LbaLength,\r
143 OUT UINTN *NumOfBlocks,\r
144 IN ESAL_FWB_GLOBAL *Global,\r
145 IN BOOLEAN Virtual\r
ed66e1bc 146 );\r
55e6660f 147\r
148//\r
149// Protocol APIs\r
150//\r
151EFI_STATUS\r
152EFIAPI\r
153FvbProtocolGetAttributes (\r
154 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
8ee3a199 155 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
ed66e1bc 156 );\r
55e6660f 157\r
158EFI_STATUS\r
159EFIAPI\r
160FvbProtocolSetAttributes (\r
161 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
8ee3a199 162 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
ed66e1bc 163 );\r
55e6660f 164\r
165EFI_STATUS\r
166EFIAPI\r
167FvbProtocolGetPhysicalAddress (\r
168 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
169 OUT EFI_PHYSICAL_ADDRESS *Address\r
ed66e1bc 170 );\r
55e6660f 171\r
172EFI_STATUS\r
173EFIAPI\r
174FvbProtocolGetBlockSize (\r
175 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
176 IN CONST EFI_LBA Lba,\r
177 OUT UINTN *BlockSize,\r
178 OUT UINTN *NumOfBlocks\r
ed66e1bc 179 );\r
55e6660f 180\r
181EFI_STATUS\r
182EFIAPI\r
183FvbProtocolRead (\r
184 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
185 IN CONST EFI_LBA Lba,\r
186 IN CONST UINTN Offset,\r
187 IN OUT UINTN *NumBytes,\r
188 IN UINT8 *Buffer\r
ed66e1bc 189 );\r
55e6660f 190\r
191EFI_STATUS\r
192EFIAPI\r
193FvbProtocolWrite (\r
194 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
0b94e319 195 IN EFI_LBA Lba,\r
196 IN UINTN Offset,\r
197 IN OUT UINTN *NumBytes,\r
198 IN UINT8 *Buffer\r
ed66e1bc 199 );\r
55e6660f 200\r
201EFI_STATUS\r
202EFIAPI\r
203FvbProtocolEraseBlocks (\r
204 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
205 ...\r
ed66e1bc 206 );\r
55e6660f 207\r
55e6660f 208#endif\r