3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Firmware volume block driver for Intel Firmware Hub (FWH) device
22 #ifndef _FW_BLOCK_SERVICE_H
23 #define _FW_BLOCK_SERVICE_H
26 // BugBug: Add documentation here for data structure!!!!
28 #define FVB_PHYSICAL 0
35 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader
;
36 } EFI_FW_VOL_INSTANCE
;
40 EFI_FW_VOL_INSTANCE
*FvInstance
[2];
41 UINT8
*FvbScratchSpace
[2];
45 // Fvb Protocol instance data
47 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
48 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FvbExtension, FVB_DEVICE_SIGNATURE)
49 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
52 MEMMAP_DEVICE_PATH MemMapDevPath
;
53 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
58 FV_DEVICE_PATH DevicePath
;
60 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
61 } EFI_FW_VOL_BLOCK_DEVICE
;
66 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
74 IN OUT UINTN
*NumBytes
,
76 IN ESAL_FWB_GLOBAL
*Global
,
84 IN CONST UINTN BlockOffset
,
85 IN OUT UINTN
*NumBytes
,
86 IN CONST UINT8
*Buffer
,
87 IN ESAL_FWB_GLOBAL
*Global
,
95 IN ESAL_FWB_GLOBAL
*Global
,
100 FvbSetVolumeAttributes (
102 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
103 IN ESAL_FWB_GLOBAL
*Global
,
108 FvbGetVolumeAttributes (
110 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
111 IN ESAL_FWB_GLOBAL
*Global
,
116 FvbGetPhysicalAddress (
118 OUT EFI_PHYSICAL_ADDRESS
*Address
,
119 IN ESAL_FWB_GLOBAL
*Global
,
126 IN EFI_HANDLE ImageHandle
,
127 IN EFI_SYSTEM_TABLE
*SystemTable
133 FvbClassAddressChangeEvent (
142 OUT UINTN
*LbaAddress
,
143 OUT UINTN
*LbaLength
,
144 OUT UINTN
*NumOfBlocks
,
145 IN ESAL_FWB_GLOBAL
*Global
,
154 FvbProtocolGetAttributes (
155 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
156 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
161 FvbProtocolSetAttributes (
162 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
163 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
168 FvbProtocolGetPhysicalAddress (
169 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
170 OUT EFI_PHYSICAL_ADDRESS
*Address
175 FvbProtocolGetBlockSize (
176 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
177 IN CONST EFI_LBA Lba
,
178 OUT UINTN
*BlockSize
,
179 OUT UINTN
*NumOfBlocks
185 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
186 IN CONST EFI_LBA Lba
,
187 IN CONST UINTN Offset
,
188 IN OUT UINTN
*NumBytes
,
195 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
198 IN OUT UINTN
*NumBytes
,
204 FvbProtocolEraseBlocks (
205 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,