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