| /** @file | |
| Include the required header files for Capsule Runtime Service drivers. | |
| Copyright (c) 2006 - 2008, Intel Corporation. <BR> | |
| All rights reserved. This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef _CAPSULE_RUNTIME_H_ | |
| #define _CAPSULE_RUNTIME_H_ | |
| #include <Uefi.h> | |
| #include <Protocol/Capsule.h> | |
| #include <Guid/CapsuleVendor.h> | |
| #include <Library/UefiDriverEntryPoint.h> | |
| #include <Library/UefiRuntimeLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/PcdLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| #include <Library/CapsuleLib.h> | |
| /** | |
| Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended | |
| consumption, the firmware may process the capsule immediately. If the payload should persist | |
| across a system reset, the reset value returned from EFI_QueryCapsuleCapabilities must | |
| be passed into ResetSystem() and will cause the capsule to be processed by the firmware as | |
| part of the reset process. | |
| @param CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules | |
| being passed into update capsule. | |
| @param CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in | |
| CaspuleHeaderArray. | |
| @param ScatterGatherList Physical pointer to a set of | |
| EFI_CAPSULE_BLOCK_DESCRIPTOR that describes the | |
| location in physical memory of a set of capsules. | |
| @retval EFI_SUCCESS Valid capsule was passed. If | |
| CAPSULE_FLAGS_PERSIT_ACROSS_RESET is not set, the | |
| capsule has been successfully processed by the firmware. | |
| @retval EFI_DEVICE_ERROR The capsule update was started, but failed due to a device error. | |
| @retval EFI_INVALID_PARAMETER CapsuleCount is Zero, or CapsuleImage is not valid. | |
| For across reset capsule image, ScatterGatherList is NULL. | |
| @retval EFI_UNSUPPORTED CapsuleImage is not recognized by the firmware. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| UpdateCapsule( | |
| IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, | |
| IN UINTN CapsuleCount, | |
| IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL | |
| ); | |
| /** | |
| Returns if the capsule can be supported via UpdateCapsule(). | |
| @param CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules | |
| being passed into update capsule. | |
| @param CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in | |
| CaspuleHeaderArray. | |
| @param MaxiumCapsuleSize On output the maximum size that UpdateCapsule() can | |
| support as an argument to UpdateCapsule() via | |
| CapsuleHeaderArray and ScatterGatherList. | |
| @param ResetType Returns the type of reset required for the capsule update. | |
| @retval EFI_SUCCESS Valid answer returned. | |
| @retval EFI_UNSUPPORTED The capsule image is not supported on this platform, and | |
| MaximumCapsuleSize and ResetType are undefined. | |
| @retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL, or ResetTyep is NULL, | |
| Or CapsuleCount is Zero, or CapsuleImage is not valid. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| QueryCapsuleCapabilities( | |
| IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, | |
| IN UINTN CapsuleCount, | |
| OUT UINT64 *MaxiumCapsuleSize, | |
| OUT EFI_RESET_TYPE *ResetType | |
| ); | |
| #endif | |