mirror of https://github.com/acidanthera/audk.git
MdePkg: Add EFI Erase Block Protocol definitions
This protocol is newly introduced in UEFI 2.6 spec. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
parent
d7138804ee
commit
88bae0c53c
|
@ -0,0 +1,105 @@
|
|||
/** @file
|
||||
This file defines the EFI Erase Block Protocol.
|
||||
|
||||
Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
|
||||
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.
|
||||
|
||||
@par Revision Reference:
|
||||
This Protocol is introduced in UEFI Specification 2.6
|
||||
|
||||
**/
|
||||
|
||||
#ifndef __EFI_ERASE_BLOCK_PROTOCOL_H__
|
||||
#define __EFI_ERASE_BLOCK_PROTOCOL_H__
|
||||
|
||||
#define EFI_ERASE_BLOCK_PROTOCOL_GUID \
|
||||
{ \
|
||||
0x95a9a93e, 0xa86e, 0x4926, { 0xaa, 0xef, 0x99, 0x18, 0xe7, 0x72, 0xd9, 0x87 } \
|
||||
}
|
||||
|
||||
typedef struct _EFI_ERASE_BLOCK_PROTOCOL EFI_ERASE_BLOCK_PROTOCOL;
|
||||
|
||||
#define EFI_ERASE_BLOCK_PROTOCOL_REVISION ((2<<16) | (60))
|
||||
|
||||
///
|
||||
/// EFI_ERASE_BLOCK_TOKEN
|
||||
///
|
||||
typedef struct {
|
||||
//
|
||||
// If Event is NULL, then blocking I/O is performed. If Event is not NULL and
|
||||
// non-blocking I/O is supported, then non-blocking I/O is performed, and
|
||||
// Event will be signaled when the erase request is completed.
|
||||
//
|
||||
EFI_EVENT Event;
|
||||
//
|
||||
// Defines whether the signaled event encountered an error.
|
||||
//
|
||||
EFI_STATUS TransactionStatus;
|
||||
} EFI_ERASE_BLOCK_TOKEN;
|
||||
|
||||
/**
|
||||
Erase a specified number of device blocks.
|
||||
|
||||
@param[in] This Indicates a pointer to the calling context.
|
||||
@param[in] MediaId The media ID that the erase request is for.
|
||||
@param[in] LBA The starting logical block address to be
|
||||
erased. The caller is responsible for erasing
|
||||
only legitimate locations.
|
||||
@param[in, out] Token A pointer to the token associated with the
|
||||
transaction.
|
||||
@param[in] Size The size in bytes to be erased. This must be
|
||||
a multiple of the physical block size of the
|
||||
device.
|
||||
|
||||
@retval EFI_SUCCESS The erase request was queued if Event is not
|
||||
NULL. The data was erased correctly to the
|
||||
device if the Event is NULL.to the device.
|
||||
@retval EFI_WRITE_PROTECTED The device cannot be erased due to write
|
||||
protection.
|
||||
@retval EFI_DEVICE_ERROR The device reported an error while attempting
|
||||
to perform the erase operation.
|
||||
@retval EFI_INVALID_PARAMETER The erase request contains LBAs that are not
|
||||
valid.
|
||||
@retval EFI_NO_MEDIA There is no media in the device.
|
||||
@retval EFI_MEDIA_CHANGED The MediaId is not for the current media.
|
||||
|
||||
**/
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *EFI_BLOCK_ERASE) (
|
||||
IN EFI_ERASE_BLOCK_PROTOCOL *This,
|
||||
IN UINT32 MediaId,
|
||||
IN EFI_LBA LBA,
|
||||
IN OUT EFI_ERASE_BLOCK_TOKEN *Token,
|
||||
IN UINTN Size
|
||||
);
|
||||
|
||||
///
|
||||
/// The EFI Erase Block Protocol provides the ability for a device to expose
|
||||
/// erase functionality. This optional protocol is installed on the same handle
|
||||
/// as the EFI_BLOCK_IO_PROTOCOL or EFI_BLOCK_IO2_PROTOCOL.
|
||||
///
|
||||
struct _EFI_ERASE_BLOCK_PROTOCOL {
|
||||
//
|
||||
// The revision to which the EFI_ERASE_BLOCK_PROTOCOL adheres. All future
|
||||
// revisions must be backwards compatible. If a future version is not
|
||||
// backwards compatible, it is not the same GUID.
|
||||
//
|
||||
UINT64 Revision;
|
||||
//
|
||||
// Returns the erase length granularity as a number of logical blocks. A
|
||||
// value of 1 means the erase granularity is one logical block.
|
||||
//
|
||||
UINT32 EraseLengthGranularity;
|
||||
EFI_BLOCK_ERASE EraseBlocks;
|
||||
};
|
||||
|
||||
extern EFI_GUID gEfiEraseBlockProtocolGuid;
|
||||
|
||||
#endif
|
|
@ -1628,6 +1628,9 @@
|
|||
## Include/Protocol/SdMmcPassThru.h
|
||||
gEfiSdMmcPassThruProtocolGuid = { 0x716ef0d9, 0xff83, 0x4f69, {0x81, 0xe9, 0x51, 0x8b, 0xd3, 0x9a, 0x8e, 0x70 }}
|
||||
|
||||
## Include/Protocol/EraseBlock.h
|
||||
gEfiEraseBlockProtocolGuid = { 0x95a9a93e, 0xa86e, 0x4926, {0xaa, 0xef, 0x99, 0x18, 0xe7, 0x72, 0xd9, 0x87 }}
|
||||
|
||||
#
|
||||
# [Error.gEfiMdePkgTokenSpaceGuid]
|
||||
# 0x80000001 | Invalid value provided.
|
||||
|
|
Loading…
Reference in New Issue