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')
28 EFI_FIRMWARE_VOLUME_HEADER FvHdr
;
29 EFI_FV_BLOCK_MAP_ENTRY EndBlockMap
;
30 VARIABLE_STORE_HEADER VarHdr
;
31 } FVB_FV_HDR_AND_VARS_TEMPLATE
;
34 MEMMAP_DEVICE_PATH MemMapDevPath
;
35 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
42 FV_DEVICE_PATH DevicePath
;
46 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
47 } EFI_FW_VOL_BLOCK_DEVICE
;
52 #define EMU_FVB_BLOCK_SIZE \
54 #define EMU_FVB_NUM_SPARE_BLOCKS \
55 EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))
56 #define EMU_FVB_NUM_TOTAL_BLOCKS \
57 (2 * EMU_FVB_NUM_SPARE_BLOCKS)
58 #define EMU_FVB_SIZE \
59 (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE)
60 #define FTW_WRITE_QUEUE_SIZE \
61 (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \
62 sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))
63 #define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
65 #define NOT_ERASED_BIT 0
67 #define ERASED_UINT8 0xff
68 #define ERASED_UINT32 0xffffffff
75 FvbProtocolGetAttributes (
76 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
77 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
83 FvbProtocolSetAttributes (
84 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
85 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
91 FvbProtocolGetPhysicalAddress (
92 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
93 OUT EFI_PHYSICAL_ADDRESS
*Address
99 FvbProtocolGetBlockSize (
100 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
102 OUT UINTN
*BlockSize
,
103 OUT UINTN
*NumberOfBlocks
110 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
113 IN OUT UINTN
*NumBytes
,
121 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
124 IN OUT UINTN
*NumBytes
,
131 FvbProtocolEraseBlocks (
132 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,