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 EFI_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_FVB_EXTENSION_PROTOCOL FvbExtension
;
62 } EFI_FW_VOL_BLOCK_DEVICE
;
67 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
75 IN OUT UINTN
*NumBytes
,
77 IN ESAL_FWB_GLOBAL
*Global
,
85 IN CONST UINTN BlockOffset
,
86 IN OUT UINTN
*NumBytes
,
87 IN CONST UINT8
*Buffer
,
88 IN ESAL_FWB_GLOBAL
*Global
,
96 IN ESAL_FWB_GLOBAL
*Global
,
101 FvbSetVolumeAttributes (
103 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
104 IN ESAL_FWB_GLOBAL
*Global
,
109 FvbGetVolumeAttributes (
111 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
112 IN ESAL_FWB_GLOBAL
*Global
,
117 FvbGetPhysicalAddress (
119 OUT EFI_PHYSICAL_ADDRESS
*Address
,
120 IN ESAL_FWB_GLOBAL
*Global
,
127 IN EFI_HANDLE ImageHandle
,
128 IN EFI_SYSTEM_TABLE
*SystemTable
134 FvbClassAddressChangeEvent (
143 OUT UINTN
*LbaAddress
,
144 OUT UINTN
*LbaLength
,
145 OUT UINTN
*NumOfBlocks
,
146 IN ESAL_FWB_GLOBAL
*Global
,
155 FvbProtocolGetAttributes (
156 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
157 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
162 FvbProtocolSetAttributes (
163 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
164 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
169 FvbProtocolGetPhysicalAddress (
170 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
171 OUT EFI_PHYSICAL_ADDRESS
*Address
176 FvbProtocolGetBlockSize (
177 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
178 IN CONST EFI_LBA Lba
,
179 OUT UINTN
*BlockSize
,
180 OUT UINTN
*NumOfBlocks
186 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
187 IN CONST EFI_LBA Lba
,
188 IN CONST UINTN Offset
,
189 IN OUT UINTN
*NumBytes
,
196 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
199 IN OUT UINTN
*NumBytes
,
205 FvbProtocolEraseBlocks (
206 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
212 FvbExtendProtocolEraseCustomBlockRange (
213 IN EFI_FVB_EXTENSION_PROTOCOL
*This
,
215 IN UINTN OffsetStartLba
,
217 IN UINTN OffsetLastLba