X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FInclude%2FProtocol%2FFirmwareVolumeBlock.h;h=7fbe3c81e109f280ef31bb90477d8d0ba4754abd;hp=d25a2a0fa0fabdc743a6a2614dc86993e2e57f29;hb=9df063a06aef048c042498e2f542fb693e93493a;hpb=630b41877e9a1afe59d4f8a1c22bc691fe933ff8 diff --git a/MdePkg/Include/Protocol/FirmwareVolumeBlock.h b/MdePkg/Include/Protocol/FirmwareVolumeBlock.h index d25a2a0fa0..7fbe3c81e1 100644 --- a/MdePkg/Include/Protocol/FirmwareVolumeBlock.h +++ b/MdePkg/Include/Protocol/FirmwareVolumeBlock.h @@ -1,35 +1,43 @@ /** @file This file provides control over block-oriented firmware devices. - Copyright (c) 2006 - 2008, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+This program and the accompanying materials are licensed and made available under +the terms and conditions of the BSD License that accompanies this distribution. +The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php. + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. @par Revision Reference: PI - Version 1.00. + Version 1.0 and 1.2. **/ #ifndef __FIRMWARE_VOLUME_BLOCK_H__ #define __FIRMWARE_VOLUME_BLOCK_H__ - +// +// EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL is defined in PI 1.0 spec and its GUID value +// is later updated to be the same as that of EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL +// defined in PI 1.2 spec. +// #define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \ - { 0xDE28BC59, 0x6228, 0x41BD, {0xBD, 0xF6, 0xA3, 0xB9, 0xAD,0xB5, 0x8D, 0xA1 } } + { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } } +#define EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL_GUID \ + { 0x8f644fa9, 0xe850, 0x4db1, {0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 } } typedef struct _EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL; +typedef EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL; + /** The GetAttributes() function retrieves the attributes and - current settings of the block. Status Codes Returned + current settings of the block. - @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. + @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance. @param Attributes Pointer to EFI_FVB_ATTRIBUTES_2 in which the attributes and current settings are @@ -43,7 +51,7 @@ typedef struct _EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL EFI_FIRMWARE_VOLUME_BLOCK_PRO typedef EFI_STATUS (EFIAPI * EFI_FVB_GET_ATTRIBUTES)( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This, OUT EFI_FVB_ATTRIBUTES_2 *Attributes ); @@ -52,7 +60,7 @@ EFI_STATUS The SetAttributes() function sets configurable firmware volume attributes and returns the new settings of the firmware volume. - @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. + @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance. @param Attributes On input, Attributes is a pointer to EFI_FVB_ATTRIBUTES_2 that contains the @@ -73,7 +81,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI * EFI_FVB_SET_ATTRIBUTES)( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This, IN OUT EFI_FVB_ATTRIBUTES_2 *Attributes ); @@ -83,14 +91,14 @@ EFI_STATUS a memory-mapped firmware volume. This function should be called only for memory-mapped firmware volumes. - @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. + @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance. @param Address Pointer to a caller-allocated EFI_PHYSICAL_ADDRESS that, on successful return from GetPhysicalAddress(), contains the base address of the firmware volume. - @retval EFI_SUCCESS The firmware volume base address is returned. + @retval EFI_SUCCESS The firmware volume base address was returned. @retval EFI_NOT_SUPPORTED The firmware volume is not memory mapped. @@ -98,7 +106,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI * EFI_FVB_GET_PHYSICAL_ADDRESS)( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This, OUT EFI_PHYSICAL_ADDRESS *Address ); @@ -109,7 +117,7 @@ EFI_STATUS retrieve the block map (see EFI_FIRMWARE_VOLUME_HEADER). - @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. + @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance. @param Lba Indicates the block for which to return the size. @@ -123,7 +131,7 @@ EFI_STATUS BlockSize. - @retval EFI_SUCCESS The firmware volume base address is returned. + @retval EFI_SUCCESS The firmware volume base address was returned. @retval EFI_INVALID_PARAMETER The requested LBA is out of range. @@ -131,7 +139,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI * EFI_FVB_GET_BLOCK_SIZE)( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This, IN EFI_LBA Lba, OUT UINTN *BlockSize, OUT UINTN *NumberOfBlocks @@ -154,7 +162,7 @@ EFI_STATUS indicate the number of bytes actually read. The caller must be aware that a read may be partially completed. - @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. + @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance. @param Lba The starting logical block index from which to read. @@ -169,7 +177,7 @@ EFI_STATUS @param Buffer Pointer to a caller-allocated buffer that will be used to hold the data that is read. - @retval EFI_SUCCESS The firmware volume was read successfully + @retval EFI_SUCCESS The firmware volume was read successfully, and contents are in Buffer. @retval EFI_BAD_BUFFER_SIZE Read attempted across an LBA @@ -188,7 +196,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI *EFI_FVB_READ)( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This, IN EFI_LBA Lba, IN UINTN Offset, IN OUT UINTN *NumBytes, @@ -206,9 +214,9 @@ EFI_STATUS function, or else the result will be unpredictable. This unpredictability arises because, for a sticky-write firmware volume, a write may negate a bit in the EFI_FVB_ERASE_POLARITY - state but cannot flip it back again. In general, before - calling the Write() function, the caller should call the - EraseBlocks() function first to erase the block it intends to + state but cannot flip it back again. Before calling the + Write() function, it is recommended for the caller to first call + the EraseBlocks() function to erase the specified block to write. A block erase cycle will transition bits from the (NOT)EFI_FVB_ERASE_POLARITY state back to the EFI_FVB_ERASE_POLARITY state. Implementations should be @@ -225,18 +233,18 @@ EFI_STATUS fully flushed to the hardware before the Write() service returns. - @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL instance. + @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance. @param Lba The starting logical block index to write to. @param Offset Offset into the block at which to begin writing. - @param NumBytes Pointer to a UINTN. At entry, *NumBytes + @param NumBytes The pointer to a UINTN. At entry, *NumBytes contains the total size of the buffer. At exit, *NumBytes contains the total number of bytes actually written. - @param Buffer Pointer to a caller-allocated buffer that + @param Buffer The pointer to a caller-allocated buffer that contains the source for the write. @retval EFI_SUCCESS The firmware volume was written successfully. @@ -257,7 +265,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI * EFI_FVB_WRITE)( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This, IN EFI_LBA Lba, IN UINTN Offset, IN OUT UINTN *NumBytes, @@ -276,7 +284,7 @@ EFI_STATUS /** Erases and initializes a firmware volume block. - The EraseBlocks() function erases one or more blocks, as denoted + The EraseBlocks() function erases one or more blocks as denoted by the variable argument list. The entire parameter list of blocks must be verified before erasing any blocks. If a block is requested that does not exist within the associated firmware @@ -291,7 +299,7 @@ EFI_STATUS flushed to the hardware before the EraseBlocks() service returns. - @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL + @param This Indicates the EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL instance. @param ... The variable argument list is a list of tuples. @@ -299,7 +307,7 @@ EFI_STATUS and consists of the following: - An EFI_LBA that indicates the starting LBA - A UINTN that indicates the number of blocks to - erase + erase. The list is terminated with an EFI_LBA_LIST_TERMINATOR. For example, the @@ -307,7 +315,7 @@ EFI_STATUS (5-7 and 10-11) are to be erased: EraseBlocks (This, 5, 3, 10, 2, EFI_LBA_LIST_TERMINATOR); - @retval EFI_SUCCESS The erase request was successfully + @retval EFI_SUCCESS The erase request successfully completed. @retval EFI_ACCESS_DENIED The firmware volume is in the @@ -324,7 +332,7 @@ EFI_STATUS typedef EFI_STATUS (EFIAPI * EFI_FVB_ERASE_BLOCKS)( - IN CONST EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *This, + IN CONST EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL *This, ... ); @@ -337,7 +345,7 @@ EFI_STATUS /// produces the Firmware Volume Protocol will bind to the /// Firmware Volume Block Protocol. /// -struct _EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL { +struct _EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL{ EFI_FVB_GET_ATTRIBUTES GetAttributes; EFI_FVB_SET_ATTRIBUTES SetAttributes; EFI_FVB_GET_PHYSICAL_ADDRESS GetPhysicalAddress; @@ -346,13 +354,13 @@ struct _EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL { EFI_FVB_WRITE Write; EFI_FVB_ERASE_BLOCKS EraseBlocks; /// - /// Handle of the parent firmware volume. + /// The handle of the parent firmware volume. /// EFI_HANDLE ParentHandle; }; extern EFI_GUID gEfiFirmwareVolumeBlockProtocolGuid; - +extern EFI_GUID gEfiFirmwareVolumeBlock2ProtocolGuid; #endif