ArmPkg: only attempt buildin MmCommunicationDxe for AArch64
[mirror_edk2.git] / SignedCapsulePkg / Include / Library / PlatformFlashAccessLib.h
index 0a8858e4c495e9c435ccc03466ae17aba86389a9..2eca4da78d5de2ec3b80287d606f5e04a9344271 100644 (file)
@@ -1,14 +1,8 @@
 /** @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
@@ -16,6 +10,8 @@
 #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
@@ -31,7 +27,7 @@ typedef enum {
 } 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
@@ -54,4 +50,47 @@ PerformFlashWrite (
   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