3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
13 Firmware volume block driver for Intel Firmware Hub (FWH) device
17 #ifndef _FW_BLOCK_SERVICE_H
18 #define _FW_BLOCK_SERVICE_H
23 EFI_FIRMWARE_VOLUME_HEADER VolumeHeader
;
24 } EFI_FW_VOL_INSTANCE
;
28 EFI_FW_VOL_INSTANCE
*FvInstance
;
31 extern ESAL_FWB_GLOBAL
*mFvbModuleGlobal
;
34 // Fvb Protocol instance data
36 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
37 FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
39 #define FVB_EXTEND_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, \
40 FvbExtension, FVB_DEVICE_SIGNATURE)
42 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
45 MEDIA_FW_VOL_DEVICE_PATH FvDevPath
;
46 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
47 } FV_PIWG_DEVICE_PATH
;
50 MEMMAP_DEVICE_PATH MemMapDevPath
;
51 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
52 } FV_MEMMAP_DEVICE_PATH
;
56 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
58 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
59 } EFI_FW_VOL_BLOCK_DEVICE
;
64 OUT EFI_FIRMWARE_VOLUME_HEADER
**FvbInfo
68 FvbSetVolumeAttributes (
70 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
71 IN ESAL_FWB_GLOBAL
*Global
75 FvbGetVolumeAttributes (
77 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
,
78 IN ESAL_FWB_GLOBAL
*Global
82 FvbGetPhysicalAddress (
84 OUT EFI_PHYSICAL_ADDRESS
*Address
,
85 IN ESAL_FWB_GLOBAL
*Global
91 IN EFI_HANDLE ImageHandle
,
92 IN EFI_SYSTEM_TABLE
*SystemTable
98 FvbClassAddressChangeEvent (
107 OUT UINTN
*LbaAddress
,
108 OUT UINTN
*LbaLength
,
109 OUT UINTN
*NumOfBlocks
,
110 IN ESAL_FWB_GLOBAL
*Global
118 FvbProtocolGetAttributes (
119 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
120 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
125 FvbProtocolSetAttributes (
126 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
127 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
132 FvbProtocolGetPhysicalAddress (
133 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
134 OUT EFI_PHYSICAL_ADDRESS
*Address
139 FvbProtocolGetBlockSize (
140 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
141 IN CONST EFI_LBA Lba
,
142 OUT UINTN
*BlockSize
,
143 OUT UINTN
*NumOfBlocks
149 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
150 IN CONST EFI_LBA Lba
,
151 IN CONST UINTN Offset
,
152 IN OUT UINTN
*NumBytes
,
159 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
162 IN OUT UINTN
*NumBytes
,
168 FvbProtocolEraseBlocks (
169 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
174 // The following functions have different implementations dependent on the
175 // module type chosen for building this driver.
178 InstallProtocolInterfaces (
179 IN EFI_FW_VOL_BLOCK_DEVICE
*FvbDevice
183 InstallVirtualAddressChangeHandler (
188 MarkIoMemoryRangeForRuntimeAccess (
189 IN EFI_PHYSICAL_ADDRESS BaseAddress
,
194 SetPcdFlashNvStorageBaseAddresses (