2 Firmware volume block driver for Intel Firmware Hub (FWH) device
4 Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
5 Portions copyright (c) 2011, Apple Inc. All rights reserved.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
10 #ifndef _FW_BLOCK_SERVICE_H
11 #define _FW_BLOCK_SERVICE_H
14 // BugBug: Add documentation here for data structure!!!!
16 #define FVB_PHYSICAL 0
23 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader
;
24 } EFI_FW_VOL_INSTANCE
;
28 EFI_FW_VOL_INSTANCE
*FvInstance
[2];
32 // Fvb Protocol instance data
34 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
35 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)
36 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
39 MEMMAP_DEVICE_PATH MemMapDevPath
;
40 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
45 FV_DEVICE_PATH DevicePath
;
47 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
48 } EFI_FW_VOL_BLOCK_DEVICE
;
53 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
62 IN OUT UINTN
*NumBytes
,
64 IN ESAL_FWB_GLOBAL
*Global
,
74 IN OUT UINTN
*NumBytes
,
76 IN ESAL_FWB_GLOBAL
*Global
,
85 IN ESAL_FWB_GLOBAL
*Global
,
91 FvbSetVolumeAttributes (
93 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
94 IN ESAL_FWB_GLOBAL
*Global
,
100 FvbGetVolumeAttributes (
102 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
103 IN ESAL_FWB_GLOBAL
*Global
,
109 FvbGetPhysicalAddress (
111 OUT EFI_PHYSICAL_ADDRESS
*Address
,
112 IN ESAL_FWB_GLOBAL
*Global
,
120 IN EFI_HANDLE ImageHandle
,
121 IN EFI_SYSTEM_TABLE
*SystemTable
128 FvbClassAddressChangeEvent (
138 OUT UINTN
*LbaAddress
,
139 OUT UINTN
*LbaLength
,
140 OUT UINTN
*NumOfBlocks
,
141 IN ESAL_FWB_GLOBAL
*Global
,
151 FvbProtocolGetAttributes (
152 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
153 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
159 FvbProtocolSetAttributes (
160 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
161 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
167 FvbProtocolGetPhysicalAddress (
168 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
169 OUT EFI_PHYSICAL_ADDRESS
*Address
175 FvbProtocolGetBlockSize (
176 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
178 OUT UINTN
*BlockSize
,
179 OUT UINTN
*NumOfBlocks
186 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
189 IN OUT UINTN
*NumBytes
,
197 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
200 IN OUT UINTN
*NumBytes
,
207 FvbProtocolEraseBlocks (
208 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,