123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /** @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
- );
- }
|