3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 Firmware volume block driver for Intel Firmware Hub (FWH) device
22 #ifndef _FW_BLOCK_SERVICE_H
23 #define _FW_BLOCK_SERVICE_H
26 // Fvb Protocol instance data
28 #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
29 #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
35 EFI_FIRMWARE_VOLUME_HEADER FvHdr
;
36 EFI_FV_BLOCK_MAP_ENTRY EndBlockMap
;
37 VARIABLE_STORE_HEADER VarHdr
;
39 } FVB_FV_HDR_AND_VARS_TEMPLATE
;
42 MEMMAP_DEVICE_PATH MemMapDevPath
;
43 EFI_DEVICE_PATH_PROTOCOL EndDevPath
;
50 FV_DEVICE_PATH DevicePath
;
54 EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance
;
55 } EFI_FW_VOL_BLOCK_DEVICE
;
61 #define EMU_FVB_BLOCK_SIZE \
63 #define EMU_FVB_NUM_SPARE_BLOCKS \
64 EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))
65 #define EMU_FVB_NUM_TOTAL_BLOCKS \
66 (2 * EMU_FVB_NUM_SPARE_BLOCKS)
67 #define EMU_FVB_SIZE \
68 (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE)
69 #define FTW_WRITE_QUEUE_SIZE \
70 (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \
71 sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))
72 #define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
74 #define NOT_ERASED_BIT 0
76 #define ERASED_UINT8 0xff
77 #define ERASED_UINT32 0xffffffff
84 FvbProtocolGetAttributes (
85 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
86 OUT EFI_FVB_ATTRIBUTES_2
*Attributes
92 FvbProtocolSetAttributes (
93 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
94 IN OUT EFI_FVB_ATTRIBUTES_2
*Attributes
100 FvbProtocolGetPhysicalAddress (
101 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
102 OUT EFI_PHYSICAL_ADDRESS
*Address
108 FvbProtocolGetBlockSize (
109 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
111 OUT UINTN
*BlockSize
,
112 OUT UINTN
*NumberOfBlocks
119 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
122 IN OUT UINTN
*NumBytes
,
130 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,
133 IN OUT UINTN
*NumBytes
,
140 FvbProtocolEraseBlocks (
141 IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL
*This
,