123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /*++
- Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- Module Name:
- FwBlockService.h
- Abstract:
- Firmware volume block driver for Intel Firmware Hub (FWH) device
- --*/
- #ifndef _FW_BLOCK_SERVICE_H
- #define _FW_BLOCK_SERVICE_H
- //
- // Fvb Protocol instance data
- //
- #define FVB_DEVICE_FROM_THIS(a) CR (a, EFI_FW_VOL_BLOCK_DEVICE, FwVolBlockInstance, FVB_DEVICE_SIGNATURE)
- #define FVB_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'V', 'B', 'N')
- #pragma pack (1)
- typedef struct {
- EFI_FIRMWARE_VOLUME_HEADER FvHdr;
- EFI_FV_BLOCK_MAP_ENTRY EndBlockMap;
- VARIABLE_STORE_HEADER VarHdr;
- } FVB_FV_HDR_AND_VARS_TEMPLATE;
- typedef struct {
- MEMMAP_DEVICE_PATH MemMapDevPath;
- EFI_DEVICE_PATH_PROTOCOL EndDevPath;
- } FV_DEVICE_PATH;
- #pragma pack ()
- typedef struct {
- UINTN Signature;
- FV_DEVICE_PATH DevicePath;
- VOID *BufferPtr;
- UINTN BlockSize;
- UINTN Size;
- EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
- } EFI_FW_VOL_BLOCK_DEVICE;
- //
- // Constants
- //
- #define EMU_FVB_BLOCK_SIZE \
- EFI_PAGE_SIZE
- #define EMU_FVB_NUM_SPARE_BLOCKS \
- EFI_SIZE_TO_PAGES ((UINTN)FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize))
- #define EMU_FVB_NUM_TOTAL_BLOCKS \
- (2 * EMU_FVB_NUM_SPARE_BLOCKS)
- #define EMU_FVB_SIZE \
- (EMU_FVB_NUM_TOTAL_BLOCKS * EMU_FVB_BLOCK_SIZE)
- #define FTW_WRITE_QUEUE_SIZE \
- (FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) - \
- sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))
- #define EMU_FV_HEADER_LENGTH OFFSET_OF (FVB_FV_HDR_AND_VARS_TEMPLATE, VarHdr)
- #define NOT_ERASED_BIT 0
- #define ERASED_BIT 1
- #define ERASED_UINT8 0xff
- #define ERASED_UINT32 0xffffffff
- //
- // Protocol APIs
- //
- EFI_STATUS
- EFIAPI
- FvbProtocolGetAttributes (
- IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
- OUT EFI_FVB_ATTRIBUTES_2 *Attributes
- )
- ;
- EFI_STATUS
- EFIAPI
- FvbProtocolSetAttributes (
- IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
- IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes
- )
- ;
- EFI_STATUS
- EFIAPI
- FvbProtocolGetPhysicalAddress (
- IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
- OUT EFI_PHYSICAL_ADDRESS *Address
- )
- ;
- EFI_STATUS
- EFIAPI
- FvbProtocolGetBlockSize (
- IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
- IN EFI_LBA Lba,
- OUT UINTN *BlockSize,
- OUT UINTN *NumberOfBlocks
- )
- ;
- EFI_STATUS
- EFIAPI
- FvbProtocolRead (
- IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
- IN EFI_LBA Lba,
- IN UINTN Offset,
- IN OUT UINTN *NumBytes,
- IN OUT UINT8 *Buffer
- )
- ;
- EFI_STATUS
- EFIAPI
- FvbProtocolWrite (
- IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
- IN EFI_LBA Lba,
- IN UINTN Offset,
- IN OUT UINTN *NumBytes,
- IN UINT8 *Buffer
- )
- ;
- EFI_STATUS
- EFIAPI
- FvbProtocolEraseBlocks (
- IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This,
- ...
- )
- ;
- #endif
|