3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4 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 MEDIA_FW_VOL_DEVICE_PATH FvDevPath
;
53 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
54 } FV_PIWG_DEVICE_PATH
;
57 MEMMAP_DEVICE_PATH MemMapDevPath
;
58 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
59 } FV_MEMMAP_DEVICE_PATH
;
63 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
65 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
66 } EFI_FW_VOL_BLOCK_DEVICE
;
71 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
79 IN OUT UINTN
*NumBytes
,
81 IN ESAL_FWB_GLOBAL
*Global
,
89 IN CONST UINTN BlockOffset
,
90 IN OUT UINTN
*NumBytes
,
91 IN CONST UINT8
*Buffer
,
92 IN ESAL_FWB_GLOBAL
*Global
,
100 IN ESAL_FWB_GLOBAL
*Global
,
105 FvbSetVolumeAttributes (
107 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
108 IN ESAL_FWB_GLOBAL
*Global
,
113 FvbGetVolumeAttributes (
115 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
116 IN ESAL_FWB_GLOBAL
*Global
,
121 FvbGetPhysicalAddress (
123 OUT EFI_PHYSICAL_ADDRESS
*Address
,
124 IN ESAL_FWB_GLOBAL
*Global
,
131 IN EFI_HANDLE ImageHandle
,
132 IN EFI_SYSTEM_TABLE
*SystemTable
138 FvbClassAddressChangeEvent (
147 OUT UINTN
*LbaAddress
,
148 OUT UINTN
*LbaLength
,
149 OUT UINTN
*NumOfBlocks
,
150 IN ESAL_FWB_GLOBAL
*Global
,
159 FvbProtocolGetAttributes (
160 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
161 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
166 FvbProtocolSetAttributes (
167 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
168 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
173 FvbProtocolGetPhysicalAddress (
174 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
175 OUT EFI_PHYSICAL_ADDRESS
*Address
180 FvbProtocolGetBlockSize (
181 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
182 IN CONST EFI_LBA Lba
,
183 OUT UINTN
*BlockSize
,
184 OUT UINTN
*NumOfBlocks
190 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
191 IN CONST EFI_LBA Lba
,
192 IN CONST UINTN Offset
,
193 IN OUT UINTN
*NumBytes
,
200 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
203 IN OUT UINTN
*NumBytes
,
209 FvbProtocolEraseBlocks (
210 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,