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];
41 UINT8
*FvbScratchSpace
[2];
45 // Fvb Protocol instance data
47 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
48 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
50 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
51 FvbExtension, FVB_DEVICE_SIGNATURE)
53 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
56 MEDIA_FW_VOL_DEVICE_PATH FvDevPath
;
57 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
58 } FV_PIWG_DEVICE_PATH
;
61 MEMMAP_DEVICE_PATH MemMapDevPath
;
62 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
63 } FV_MEMMAP_DEVICE_PATH
;
67 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
69 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
70 } EFI_FW_VOL_BLOCK_DEVICE
;
75 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
79 FvbSetVolumeAttributes (
81 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
82 IN ESAL_FWB_GLOBAL
*Global
,
87 FvbGetVolumeAttributes (
89 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
90 IN ESAL_FWB_GLOBAL
*Global
,
95 FvbGetPhysicalAddress (
97 OUT EFI_PHYSICAL_ADDRESS
*Address
,
98 IN ESAL_FWB_GLOBAL
*Global
,
105 IN EFI_HANDLE ImageHandle
,
106 IN EFI_SYSTEM_TABLE
*SystemTable
112 FvbClassAddressChangeEvent (
121 OUT UINTN
*LbaAddress
,
122 OUT UINTN
*LbaLength
,
123 OUT UINTN
*NumOfBlocks
,
124 IN ESAL_FWB_GLOBAL
*Global
,
133 FvbProtocolGetAttributes (
134 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
135 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
140 FvbProtocolSetAttributes (
141 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
142 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
147 FvbProtocolGetPhysicalAddress (
148 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
149 OUT EFI_PHYSICAL_ADDRESS
*Address
154 FvbProtocolGetBlockSize (
155 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
156 IN CONST EFI_LBA Lba
,
157 OUT UINTN
*BlockSize
,
158 OUT UINTN
*NumOfBlocks
164 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
165 IN CONST EFI_LBA Lba
,
166 IN CONST UINTN Offset
,
167 IN OUT UINTN
*NumBytes
,
174 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
177 IN OUT UINTN
*NumBytes
,
183 FvbProtocolEraseBlocks (
184 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,