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: Jiewen Yao <Jiewen.yao@intel.com>
		
			
				
	
	
		
			102 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Platform flash device access library NULL instance.
 | 
						|
 | 
						|
  Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#include <PiDxe.h>
 | 
						|
 | 
						|
#include <Library/BaseMemoryLib.h>
 | 
						|
#include <Library/PlatformFlashAccessLib.h>
 | 
						|
 | 
						|
UINT64 mInternalFdAddress;
 | 
						|
 | 
						|
/**
 | 
						|
  Perform flash write operation with progress indicator.  The start and end
 | 
						|
  completion percentage values are passed into this function.  If the requested
 | 
						|
  flash write operation is broken up, then completion percentage between the
 | 
						|
  start and end values may be passed to the provided Progress function.  The
 | 
						|
  caller of this function is required to call the Progress function for the
 | 
						|
  start and end completion percentage values.  This allows the Progress,
 | 
						|
  StartPercentage, and EndPercentage parameters to be ignored if the requested
 | 
						|
  flash write operation can not be broken up
 | 
						|
 | 
						|
  @param[in] FirmwareType      The type of firmware.
 | 
						|
  @param[in] FlashAddress      The address of flash device to be accessed.
 | 
						|
  @param[in] FlashAddressType  The type of flash device address.
 | 
						|
  @param[in] Buffer            The pointer to the data buffer.
 | 
						|
  @param[in] Length            The length of data buffer in bytes.
 | 
						|
  @param[in] Progress          A function used report the progress of the
 | 
						|
                               firmware update.  This is an optional parameter
 | 
						|
                               that may be NULL.
 | 
						|
  @param[in] StartPercentage   The start completion percentage value that may
 | 
						|
                               be used to report progress during the flash
 | 
						|
                               write operation.
 | 
						|
  @param[in] EndPercentage     The end completion percentage value that may
 | 
						|
                               be used to report progress during the flash
 | 
						|
                               write operation.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The operation returns successfully.
 | 
						|
  @retval EFI_WRITE_PROTECTED   The flash device is read only.
 | 
						|
  @retval EFI_UNSUPPORTED       The flash device access is unsupported.
 | 
						|
  @retval EFI_INVALID_PARAMETER The input parameter is not valid.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
PerformFlashWriteWithProgress (
 | 
						|
  IN PLATFORM_FIRMWARE_TYPE                         FirmwareType,
 | 
						|
  IN EFI_PHYSICAL_ADDRESS                           FlashAddress,
 | 
						|
  IN FLASH_ADDRESS_TYPE                             FlashAddressType,
 | 
						|
  IN VOID                                           *Buffer,
 | 
						|
  IN UINTN                                          Length,
 | 
						|
  IN EFI_FIRMWARE_MANAGEMENT_UPDATE_IMAGE_PROGRESS  Progress,        OPTIONAL
 | 
						|
  IN UINTN                                          StartPercentage,
 | 
						|
  IN UINTN                                          EndPercentage
 | 
						|
  )
 | 
						|
{
 | 
						|
  if (FlashAddressType == FlashAddressTypeRelativeAddress) {
 | 
						|
    FlashAddress = FlashAddress + mInternalFdAddress;
 | 
						|
  }
 | 
						|
  CopyMem((VOID *)(UINTN)(FlashAddress), Buffer, Length);
 | 
						|
  return EFI_SUCCESS;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
  Perform flash write operation.
 | 
						|
 | 
						|
  @param[in] FirmwareType      The type of firmware.
 | 
						|
  @param[in] FlashAddress      The address of flash device to be accessed.
 | 
						|
  @param[in] FlashAddressType  The type of flash device address.
 | 
						|
  @param[in] Buffer            The pointer to the data buffer.
 | 
						|
  @param[in] Length            The length of data buffer in bytes.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The operation returns successfully.
 | 
						|
  @retval EFI_WRITE_PROTECTED   The flash device is read only.
 | 
						|
  @retval EFI_UNSUPPORTED       The flash device access is unsupported.
 | 
						|
  @retval EFI_INVALID_PARAMETER The input parameter is not valid.
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
PerformFlashWrite (
 | 
						|
  IN PLATFORM_FIRMWARE_TYPE       FirmwareType,
 | 
						|
  IN EFI_PHYSICAL_ADDRESS         FlashAddress,
 | 
						|
  IN FLASH_ADDRESS_TYPE           FlashAddressType,
 | 
						|
  IN VOID                         *Buffer,
 | 
						|
  IN UINTN                        Length
 | 
						|
  )
 | 
						|
{
 | 
						|
  return PerformFlashWriteWithProgress (
 | 
						|
           FirmwareType,
 | 
						|
           FlashAddress,
 | 
						|
           FlashAddressType,
 | 
						|
           Buffer,
 | 
						|
           Length,
 | 
						|
           NULL,
 | 
						|
           0,
 | 
						|
           0
 | 
						|
           );
 | 
						|
}
 | 
						|
 |