]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Library/CapsuleLib.h
MdeModulePkg: Add Capsule On Disk APIs into CapsuleLib.
[mirror_edk2.git] / MdeModulePkg / Include / Library / CapsuleLib.h
index 1fc2fba3a2db3ee6019a6c1b30af0378426416cc..7a5414c80f19dbdd354e3a43f0ef3bf683ff7a82 100644 (file)
@@ -2,7 +2,7 @@
 \r
   This library class defines a set of interfaces for how to process capsule image updates.\r
 \r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>\r
 SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
@@ -10,6 +10,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #ifndef __CAPSULE_LIB_H__\r
 #define __CAPSULE_LIB_H__\r
 \r
+//\r
+// BOOLEAN Variable to indicate whether system is in the capsule on disk state.\r
+//\r
+#define COD_RELOCATION_INFO_VAR_NAME   L"CodRelocationInfo"\r
+\r
 /**\r
   The firmware checks whether the capsule image is supported\r
   by the CapsuleGuid in CapsuleHeader or if there is other specific information in\r
@@ -81,4 +86,75 @@ ProcessCapsules (
   VOID\r
   );\r
 \r
+/**\r
+  This routine is called to check if CapsuleOnDisk flag in OsIndications Variable\r
+  is enabled.\r
+\r
+  @retval TRUE     Flag is enabled\r
+  @retval FALSE    Flag is not enabled\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+CoDCheckCapsuleOnDiskFlag(\r
+  VOID\r
+  );\r
+\r
+/**\r
+  This routine is called to clear CapsuleOnDisk flags including OsIndications and BootNext variable\r
+\r
+  @retval EFI_SUCCESS   All Capsule On Disk flags are cleared\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoDClearCapsuleOnDiskFlag(\r
+  VOID\r
+  );\r
+\r
+/**\r
+  Relocate Capsule on Disk from EFI system partition.\r
+\r
+  Two solution to deliver Capsule On Disk:\r
+  Solution A: If PcdCapsuleInRamSupport is enabled, relocate Capsule On Disk to memory and call UpdateCapsule().\r
+  Solution B: If PcdCapsuleInRamSupport is disabled, relocate Capsule On Disk to a platform-specific NV storage\r
+  device with BlockIo protocol.\r
+\r
+  Device enumeration like USB costs time, user can input MaxRetry to tell function to retry.\r
+  Function will stall 100ms between each retry.\r
+\r
+  Side Effects:\r
+    Capsule Delivery Supported Flag in OsIndication variable and BootNext variable will be cleared.\r
+    Solution B: Content corruption. Block IO write directly touches low level write. Orignal partitions, file\r
+  systems of the relocation device will be corrupted.\r
+\r
+  @param[in]    MaxRetry             Max Connection Retry. Stall 100ms between each connection try to ensure\r
+                                     devices like USB can get enumerated. Input 0 means no retry.\r
+\r
+  @retval EFI_SUCCESS   Capsule on Disk images are successfully relocated.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoDRelocateCapsule(\r
+  UINTN     MaxRetry\r
+  );\r
+\r
+/**\r
+  Remove the temp file from the root of EFI System Partition.\r
+  Device enumeration like USB costs time, user can input MaxRetry to tell function to retry.\r
+  Function will stall 100ms between each retry.\r
+\r
+  @param[in]    MaxRetry             Max Connection Retry. Stall 100ms between each connection try to ensure\r
+                                     devices like USB can get enumerated. Input 0 means no retry.\r
+\r
+  @retval EFI_SUCCESS   Remove the temp file successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoDRemoveTempFile (\r
+  UINTN    MaxRetry\r
+  );\r
+\r
 #endif\r