mirror of https://github.com/acidanthera/audk.git
93 lines
3.9 KiB
C
93 lines
3.9 KiB
C
/** @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 <PiDxe.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
|
|
|