https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			100 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  This file defines the EFI Erase Block Protocol.
 | 
						|
 | 
						|
  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
  @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
 |