]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/FvbServicesRuntimeDxe/FwBlockService.h
BaseTools/BinToPcd: Fix Python 2.7.x compatibility issue
[mirror_edk2.git] / Nt32Pkg / FvbServicesRuntimeDxe / FwBlockService.h
CommitLineData
6ae81428 1/**@file\r
55e6660f 2\r
8f2a5f80
HT
3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4This program and the accompanying materials \r
55e6660f 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
eb920364 52 MEDIA_FW_VOL_DEVICE_PATH FvDevPath;\r
55e6660f 53 EFI_DEVICE_PATH_PROTOCOL EndDevPath;\r
eb920364 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
55e6660f 60\r
61typedef struct {\r
62 UINTN Signature;\r
eb920364 63 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
55e6660f 64 UINTN Instance;\r
65 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;\r
55e6660f 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
ed66e1bc 72 );\r
55e6660f 73\r
74EFI_STATUS\r
75FvbReadBlock (\r
76 IN UINTN Instance,\r
77 IN EFI_LBA Lba,\r
78 IN UINTN BlockOffset,\r
79 IN OUT UINTN *NumBytes,\r
80 IN UINT8 *Buffer,\r
81 IN ESAL_FWB_GLOBAL *Global,\r
82 IN BOOLEAN Virtual\r
ed66e1bc 83 );\r
55e6660f 84\r
85EFI_STATUS\r
86FvbWriteBlock (\r
87 IN UINTN Instance,\r
88 IN CONST EFI_LBA Lba,\r
89 IN CONST UINTN BlockOffset,\r
90 IN OUT UINTN *NumBytes,\r
91 IN CONST UINT8 *Buffer,\r
92 IN ESAL_FWB_GLOBAL *Global,\r
93 IN BOOLEAN Virtual\r
ed66e1bc 94 );\r
55e6660f 95\r
96EFI_STATUS\r
97FvbEraseBlock (\r
98 IN UINTN Instance,\r
99 IN EFI_LBA Lba,\r
100 IN ESAL_FWB_GLOBAL *Global,\r
101 IN BOOLEAN Virtual\r
ed66e1bc 102 );\r
55e6660f 103\r
104EFI_STATUS\r
105FvbSetVolumeAttributes (\r
106 IN UINTN Instance,\r
8ee3a199 107 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
55e6660f 108 IN ESAL_FWB_GLOBAL *Global,\r
109 IN BOOLEAN Virtual\r
ed66e1bc 110 );\r
55e6660f 111\r
112EFI_STATUS\r
113FvbGetVolumeAttributes (\r
114 IN UINTN Instance,\r
8ee3a199 115 OUT EFI_FVB_ATTRIBUTES_2 *Attributes,\r
55e6660f 116 IN ESAL_FWB_GLOBAL *Global,\r
117 IN BOOLEAN Virtual\r
ed66e1bc 118 );\r
55e6660f 119\r
120EFI_STATUS\r
121FvbGetPhysicalAddress (\r
122 IN UINTN Instance,\r
123 OUT EFI_PHYSICAL_ADDRESS *Address,\r
124 IN ESAL_FWB_GLOBAL *Global,\r
125 IN BOOLEAN Virtual\r
ed66e1bc 126 );\r
55e6660f 127\r
128EFI_STATUS\r
129EFIAPI\r
130FvbInitialize (\r
131 IN EFI_HANDLE ImageHandle,\r
132 IN EFI_SYSTEM_TABLE *SystemTable\r
ed66e1bc 133 );\r
55e6660f 134\r
135\r
136VOID\r
137EFIAPI\r
138FvbClassAddressChangeEvent (\r
139 IN EFI_EVENT Event,\r
140 IN VOID *Context\r
ed66e1bc 141 );\r
55e6660f 142\r
143EFI_STATUS\r
144FvbGetLbaAddress (\r
145 IN UINTN Instance,\r
146 IN EFI_LBA Lba,\r
147 OUT UINTN *LbaAddress,\r
148 OUT UINTN *LbaLength,\r
149 OUT UINTN *NumOfBlocks,\r
150 IN ESAL_FWB_GLOBAL *Global,\r
151 IN BOOLEAN Virtual\r
ed66e1bc 152 );\r
55e6660f 153\r
154//\r
155// Protocol APIs\r
156//\r
157EFI_STATUS\r
158EFIAPI\r
159FvbProtocolGetAttributes (\r
160 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
8ee3a199 161 OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
ed66e1bc 162 );\r
55e6660f 163\r
164EFI_STATUS\r
165EFIAPI\r
166FvbProtocolSetAttributes (\r
167 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
8ee3a199 168 IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes\r
ed66e1bc 169 );\r
55e6660f 170\r
171EFI_STATUS\r
172EFIAPI\r
173FvbProtocolGetPhysicalAddress (\r
174 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
175 OUT EFI_PHYSICAL_ADDRESS *Address\r
ed66e1bc 176 );\r
55e6660f 177\r
178EFI_STATUS\r
179EFIAPI\r
180FvbProtocolGetBlockSize (\r
181 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
182 IN CONST EFI_LBA Lba,\r
183 OUT UINTN *BlockSize,\r
184 OUT UINTN *NumOfBlocks\r
ed66e1bc 185 );\r
55e6660f 186\r
187EFI_STATUS\r
188EFIAPI\r
189FvbProtocolRead (\r
190 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
191 IN CONST EFI_LBA Lba,\r
192 IN CONST UINTN Offset,\r
193 IN OUT UINTN *NumBytes,\r
194 IN UINT8 *Buffer\r
ed66e1bc 195 );\r
55e6660f 196\r
197EFI_STATUS\r
198EFIAPI\r
199FvbProtocolWrite (\r
200 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
0b94e319 201 IN EFI_LBA Lba,\r
202 IN UINTN Offset,\r
203 IN OUT UINTN *NumBytes,\r
204 IN UINT8 *Buffer\r
ed66e1bc 205 );\r
55e6660f 206\r
207EFI_STATUS\r
208EFIAPI\r
209FvbProtocolEraseBlocks (\r
210 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,\r
211 ...\r
ed66e1bc 212 );\r
55e6660f 213\r
55e6660f 214#endif\r