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
35 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader
;
36 } EFI_FW_VOL_INSTANCE
;
40 EFI_FW_VOL_INSTANCE
*FvInstance
[2];
44 // Fvb Protocol instance data
46 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
47 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
49 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
50 FvbExtension, FVB_DEVICE_SIGNATURE)
52 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
55 MEDIA_FW_VOL_DEVICE_PATH FvDevPath
;
56 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
57 } FV_PIWG_DEVICE_PATH
;
60 MEMMAP_DEVICE_PATH MemMapDevPath
;
61 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
62 } FV_MEMMAP_DEVICE_PATH
;
66 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
68 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
69 } EFI_FW_VOL_BLOCK_DEVICE
;
74 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
78 FvbSetVolumeAttributes (
80 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
81 IN ESAL_FWB_GLOBAL
*Global
,
86 FvbGetVolumeAttributes (
88 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
89 IN ESAL_FWB_GLOBAL
*Global
,
94 FvbGetPhysicalAddress (
96 OUT EFI_PHYSICAL_ADDRESS
*Address
,
97 IN ESAL_FWB_GLOBAL
*Global
,
104 IN EFI_HANDLE ImageHandle
,
105 IN EFI_SYSTEM_TABLE
*SystemTable
111 FvbClassAddressChangeEvent (
120 OUT UINTN
*LbaAddress
,
121 OUT UINTN
*LbaLength
,
122 OUT UINTN
*NumOfBlocks
,
123 IN ESAL_FWB_GLOBAL
*Global
,
132 FvbProtocolGetAttributes (
133 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
134 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
139 FvbProtocolSetAttributes (
140 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
141 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
146 FvbProtocolGetPhysicalAddress (
147 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
148 OUT EFI_PHYSICAL_ADDRESS
*Address
153 FvbProtocolGetBlockSize (
154 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
155 IN CONST EFI_LBA Lba
,
156 OUT UINTN
*BlockSize
,
157 OUT UINTN
*NumOfBlocks
163 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
164 IN CONST EFI_LBA Lba
,
165 IN CONST UINTN Offset
,
166 IN OUT UINTN
*NumBytes
,
173 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
176 IN OUT UINTN
*NumBytes
,
182 FvbProtocolEraseBlocks (
183 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,