/** @file\r
Platform flash device access library.\r
\r
- Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ Copyright (c) 2016 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#ifndef __PLATFORM_FLASH_ACCESS_LIB_H__\r
#define __PLATFORM_FLASH_ACCESS_LIB_H__\r
\r
+#include <Protocol/FirmwareManagement.h>\r
+\r
typedef enum {\r
FlashAddressTypeRelativeAddress,\r
FlashAddressTypeAbsoluteAddress,\r
} PLATFORM_FIRMWARE_TYPE;\r
\r
/**\r
- Perform flash write opreation.\r
+ Perform flash write operation.\r
\r
@param[in] FirmwareType The type of firmware.\r
@param[in] FlashAddress The address of flash device to be accessed.\r
IN UINTN Length\r
);\r
\r
+/**\r
+ Perform flash write operation with progress indicator. The start and end\r
+ completion percentage values are passed into this function. If the requested\r
+ flash write operation is broken up, then completion percentage between the\r
+ start and end values may be passed to the provided Progress function. The\r
+ caller of this function is required to call the Progress function for the\r
+ start and end completion percentage values. This allows the Progress,\r
+ StartPercentage, and EndPercentage parameters to be ignored if the requested\r
+ flash write operation can not be broken up\r
+\r
+ @param[in] FirmwareType The type of firmware.\r
+ @param[in] FlashAddress The address of flash device to be accessed.\r
+ @param[in] FlashAddressType The type of flash device address.\r
+ @param[in] Buffer The pointer to the data buffer.\r
+ @param[in] Length The length of data buffer in bytes.\r
+ @param[in] Progress A function used report the progress of the\r
+ firmware update. This is an optional parameter\r
+ that may be NULL.\r
+ @param[in] StartPercentage The start completion percentage value that may\r
+ be used to report progress during the flash\r
+ write operation.\r
+ @param[in] EndPercentage The end completion percentage value that may\r
+ be used to report progress during the flash\r
+ write operation.\r
+\r
+ @retval EFI_SUCCESS The operation returns successfully.\r
+ @retval EFI_WRITE_PROTECTED The flash device is read only.\r
+ @retval EFI_UNSUPPORTED The flash device access is unsupported.\r
+ @retval EFI_INVALID_PARAMETER The input parameter is not valid.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PerformFlashWriteWithProgress (\r
+ IN PLATFORM_FIRMWARE_TYPE FirmwareType,\r
+ IN EFI_PHYSICAL_ADDRESS FlashAddress,\r
+ IN FLASH_ADDRESS_TYPE FlashAddressType,\r
+ IN VOID *Buffer,\r
+ IN UINTN Length,\r
+ IN EFI_FIRMWARE_MANAGEMENT_UPDATE_IMAGE_PROGRESS Progress, OPTIONAL\r
+ IN UINTN StartPercentage,\r
+ IN UINTN EndPercentage\r
+ );\r
+\r
#endif\r