4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This file declares the Device Recovery Module PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The interface of this PPI does the following:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Reports the number of recovery DXE capsules that exist on the associated device(s)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Finds the requested firmware binary capsule
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync - Loads that capsule into memory
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync A device can be either a group of devices, such as a block device, or an individual device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The module determines the internal search order, with capsule number 1 as the highest load
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync priority and number N as the lowest priority.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @par Revision Reference:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This PPI is defined in UEFI Platform Initialization Specification 1.2 Volume 1:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Pre-EFI Initalization Core Interface
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _PEI_DEVICE_RECOVERY_MODULE_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _PEI_DEVICE_RECOVERY_MODULE_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_PEI_DEVICE_RECOVERY_MODULE_PPI_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x0DE2CE25, 0x446A, 0x45a7, {0xBF, 0xC9, 0x37, 0xDA, 0x26, 0x34, 0x4B, 0x37 } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_PEI_DEVICE_RECOVERY_MODULE_PPI EFI_PEI_DEVICE_RECOVERY_MODULE_PPI;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Returns the number of DXE capsules residing on the device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function searches for DXE capsules from the associated device and returns
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the number and maximum size in bytes of the capsules discovered. Entry 1 is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync assumed to be the highest load priority and entry N is assumed to be the lowest
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync priority.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices General-purpose services that are available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to every PEIM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] NumberRecoveryCapsules Pointer to a caller-allocated UINTN. On
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync output, *NumberRecoveryCapsules contains
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the number of recovery capsule images
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync available for retrieval from this PEIM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS One or more capsules were discovered.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A device error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINTN *NumberRecoveryCapsules
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Returns the size and type of the requested recovery capsule.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function gets the size and type of the capsule specified by CapsuleInstance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices General-purpose services that are available to every PEIM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] CapsuleInstance Specifies for which capsule instance to retrieve
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the information. This parameter must be between
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync one and the value returned by GetNumberRecoveryCapsules()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in NumberRecoveryCapsules.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Size A pointer to a caller-allocated UINTN in which
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the size of the requested recovery module is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] CapsuleType A pointer to a caller-allocated EFI_GUID in which
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the type of the requested recovery capsule is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned. The semantic meaning of the value
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned is defined by the implementation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS One or more capsules were discovered.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A device error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND A recovery DXE capsule cannot be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN CapsuleInstance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINTN *Size,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_GUID *CapsuleType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Loads a DXE capsule from some media into memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function, by whatever mechanism, retrieves a DXE capsule from some device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and loads it into memory. Note that the published interface is device neutral.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices General-purpose services that are available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to every PEIM
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] CapsuleInstance Specifies which capsule instance to retrieve.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] Buffer Specifies a caller-allocated buffer in which
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the requested recovery capsule will be returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The capsule was loaded correctly.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR A device error occurred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND A requested recovery DXE capsule cannot be found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN CapsuleInstance,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT VOID *Buffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Presents a standard interface to EFI_PEI_DEVICE_RECOVERY_MODULE_PPI,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// regardless of the underlying device(s).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_PEI_DEVICE_RECOVERY_MODULE_PPI {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE GetNumberRecoveryCapsules; ///< Returns the number of DXE capsules residing on the device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO GetRecoveryCapsuleInfo; ///< Returns the size and type of the requested recovery capsule.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_PEI_DEVICE_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule; ///< Loads a DXE capsule from some media into memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiPeiDeviceRecoveryModulePpiGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif /* _PEI_DEVICE_RECOVERY_MODULE_PPI_H_ */