3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials are licensed and made available
6 under the terms and conditions of the BSD License which accompanies this
7 distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
19 Firmware volume block driver for Intel Firmware Hub (FWH) device
23 #ifndef _FW_BLOCK_SERVICE_H
24 #define _FW_BLOCK_SERVICE_H
27 // BugBug: Add documentation here for data structure!!!!
29 #define FVB_PHYSICAL 0
36 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader
;
37 } EFI_FW_VOL_INSTANCE
;
41 EFI_FW_VOL_INSTANCE
*FvInstance
[2];
42 UINT8
*FvbScratchSpace
[2];
46 // Fvb Protocol instance data
48 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
49 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
51 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
52 FvbExtension, FVB_DEVICE_SIGNATURE)
54 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
57 MEDIA_FW_VOL_DEVICE_PATH FvDevPath
;
58 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
59 } FV_PIWG_DEVICE_PATH
;
62 MEMMAP_DEVICE_PATH MemMapDevPath
;
63 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
64 } FV_MEMMAP_DEVICE_PATH
;
68 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
70 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
71 } EFI_FW_VOL_BLOCK_DEVICE
;
76 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
80 FvbSetVolumeAttributes (
82 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
83 IN ESAL_FWB_GLOBAL
*Global
,
88 FvbGetVolumeAttributes (
90 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
91 IN ESAL_FWB_GLOBAL
*Global
,
96 FvbGetPhysicalAddress (
98 OUT EFI_PHYSICAL_ADDRESS
*Address
,
99 IN ESAL_FWB_GLOBAL
*Global
,
106 IN EFI_HANDLE ImageHandle
,
107 IN EFI_SYSTEM_TABLE
*SystemTable
113 FvbClassAddressChangeEvent (
122 OUT UINTN
*LbaAddress
,
123 OUT UINTN
*LbaLength
,
124 OUT UINTN
*NumOfBlocks
,
125 IN ESAL_FWB_GLOBAL
*Global
,
134 FvbProtocolGetAttributes (
135 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
136 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
141 FvbProtocolSetAttributes (
142 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
143 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
148 FvbProtocolGetPhysicalAddress (
149 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
150 OUT EFI_PHYSICAL_ADDRESS
*Address
155 FvbProtocolGetBlockSize (
156 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
157 IN CONST EFI_LBA Lba
,
158 OUT UINTN
*BlockSize
,
159 OUT UINTN
*NumOfBlocks
165 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
166 IN CONST EFI_LBA Lba
,
167 IN CONST UINTN Offset
,
168 IN OUT UINTN
*NumBytes
,
175 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
178 IN OUT UINTN
*NumBytes
,
184 FvbProtocolEraseBlocks (
185 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,