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
97 FvbClassAddressChangeEvent (
106 OUT UINTN
*LbaAddress
,
107 OUT UINTN
*LbaLength
,
108 OUT UINTN
*NumOfBlocks
,
109 IN ESAL_FWB_GLOBAL
*Global
117 FvbProtocolGetAttributes (
118 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
119 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
124 FvbProtocolSetAttributes (
125 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
126 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
131 FvbProtocolGetPhysicalAddress (
132 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
133 OUT EFI_PHYSICAL_ADDRESS
*Address
138 FvbProtocolGetBlockSize (
139 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
140 IN CONST EFI_LBA Lba
,
141 OUT UINTN
*BlockSize
,
142 OUT UINTN
*NumOfBlocks
148 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
149 IN CONST EFI_LBA Lba
,
150 IN CONST UINTN Offset
,
151 IN OUT UINTN
*NumBytes
,
158 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
161 IN OUT UINTN
*NumBytes
,
167 FvbProtocolEraseBlocks (
168 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
173 // The following functions have different implementations dependent on the
174 // module type chosen for building this driver.
177 InstallProtocolInterfaces (
178 IN EFI_FW_VOL_BLOCK_DEVICE
*FvbDevice
182 InstallVirtualAddressChangeHandler (
187 MarkIoMemoryRangeForRuntimeAccess (
188 IN EFI_PHYSICAL_ADDRESS BaseAddress
,
193 SetPcdFlashNvStorageBaseAddresses (