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