3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4 SPDX-License-Identifier: BSD-2-Clause-Patent
12 Firmware volume block driver for Intel Firmware Hub (FWH) device
16 #ifndef _FW_BLOCK_SERVICE_H
17 #define _FW_BLOCK_SERVICE_H
20 // Fvb Protocol instance data
22 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
23 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
29 EFI_FIRMWARE_VOLUME_HEADER FvHdr
;
30 EFI_FV_BLOCK_MAP_ENTRY EndBlockMap
;
31 VARIABLE_STORE_HEADER VarHdr
;
33 } FVB_FV_HDR_AND_VARS_TEMPLATE
;
36 MEMMAP_DEVICE_PATH MemMapDevPath
;
37 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
44 FV_DEVICE_PATH DevicePath
;
48 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
49 } EFI_FW_VOL_BLOCK_DEVICE
;
55 #define EMU_FVB_BLOCK_SIZE \
57 #define EMU_FVB_NUM_SPARE_BLOCKS \
58 EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))
59 #define EMU_FVB_NUM_TOTAL_BLOCKS \
60 (2 * EMU_FVB_NUM_SPARE_BLOCKS)
61 #define EMU_FVB_SIZE \
62 (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE)
63 #define FTW_WRITE_QUEUE_SIZE \
64 (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \
65 sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))
66 #define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
68 #define NOT_ERASED_BIT 0
70 #define ERASED_UINT8 0xff
71 #define ERASED_UINT32 0xffffffff
78 FvbProtocolGetAttributes (
79 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
80 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
86 FvbProtocolSetAttributes (
87 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
88 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
94 FvbProtocolGetPhysicalAddress (
95 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
96 OUT EFI_PHYSICAL_ADDRESS
*Address
102 FvbProtocolGetBlockSize (
103 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
105 OUT UINTN
*BlockSize
,
106 OUT UINTN
*NumberOfBlocks
113 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
116 IN OUT UINTN
*NumBytes
,
124 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
127 IN OUT UINTN
*NumBytes
,
134 FvbProtocolEraseBlocks (
135 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,