+++ /dev/null
-/** @file\r
- Defines the APIs that enable PEI services to work with \r
- the underlying capsule capabilities of the platform.\r
-\r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
-\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions\r
-of the BSD License which accompanies this distribution. The\r
-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
-\r
-**/\r
-\r
-#ifndef _PEI_CAPSULE_PPI_H_\r
-#define _PEI_CAPSULE_PPI_H_\r
-\r
-///\r
-/// Global ID for the PEI_CAPSULE_PPI.\r
-///\r
-#define PEI_CAPSULE_PPI_GUID \\r
- { \\r
- 0x3acf33ee, 0xd892, 0x40f4, {0xa2, 0xfc, 0x38, 0x54, 0xd2, 0xe1, 0x32, 0x3d } \\r
- }\r
-\r
-///\r
-/// Forward declaration for the PEI_CAPSULE_PPI.\r
-///\r
-typedef struct _PEI_CAPSULE_PPI PEI_CAPSULE_PPI;\r
-\r
-/**\r
- Upon determining that there is a capsule to operate on, this service \r
- will use a series of EFI_CAPSULE_BLOCK_DESCRIPTOR entries to determine \r
- the current location of the various capsule fragments and coalesce them \r
- into a contiguous region of system memory. \r
-\r
- @param[in] PeiServices Pointer to the PEI Services Table.\r
- @param[out] MemoryBase Pointer to the base of a block of memory into which the buffers will be coalesced.\r
- On output, this variable will hold the base address \r
- of a coalesced capsule.\r
- @param[out] MemorySize Size of the memory region pointed to by MemoryBase.\r
- On output, this variable will contain the size of the\r
- coalesced capsule.\r
-\r
- @retval EFI_NOT_FOUND If: boot modecould not be determined, or the \r
- boot mode is not flash-update, or the capsule descriptors were not found. \r
- @retval EFI_BUFFER_TOO_SMALL The capsule could not be coalesced in the provided memory region. \r
- @retval EFI_SUCCESS There was no capsule, or the capsule was processed successfully. \r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *PEI_CAPSULE_COALESCE)(\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN OUT VOID **MemoryBase,\r
- IN OUT UINTN *MemSize\r
- );\r
-\r
-/**\r
- Determine if a capsule needs to be processed. \r
- The means by which the presence of a capsule is determined is platform\r
- specific. For example, an implementation could be driven by the presence \r
- of a Capsule EFI Variable containing a list of EFI_CAPSULE_BLOCK_DESCRIPTOR \r
- entries. If present, return EFI_SUCCESS, otherwise return EFI_NOT_FOUND.\r
- \r
- @param[in] PeiServices Pointer to the PEI Services Table.\r
-\r
- @retval EFI_SUCCESS If a capsule is available.\r
- @retval EFI_NOT_FOUND No capsule detected.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *PEI_CAPSULE_CHECK_CAPSULE_UPDATE)(\r
- IN EFI_PEI_SERVICES **PeiServices\r
- );\r
-\r
-/**\r
- The Capsule PPI service that gets called after memory is available. The\r
- capsule coalesce function, which must be called first, returns a base\r
- address and size. Once the memory init PEIM has discovered memory, \r
- it should call this function and pass in the base address and size \r
- returned by the Coalesce() function. Then this function can create a \r
- capsule HOB and return.\r
-\r
- @par Notes:\r
- This function assumes it will not be called until the\r
- actual capsule update.\r
-\r
- @param[in] PeiServices Pointer to the PEI Services Table.\r
- @param[in] CapsuleBase Address returned by the capsule coalesce function. \r
- @param[in] CapsuleSize Value returned by the capsule coalesce function.\r
-\r
- @retval EFI_VOLUME_CORRUPTED CapsuleBase does not appear to point to a\r
- coalesced capsule.\r
- @retval EFI_SUCCESS Capsule HOB was created successfully.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *PEI_CAPSULE_CREATE_STATE)(\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN VOID *CapsuleBase,\r
- IN UINTN CapsuleSize \r
- );\r
-\r
-///\r
-/// This PPI provides several services in PEI to work with the underlying\r
-/// capsule capabilities of the platform. These services include the ability \r
-/// for PEI to coalesce a capsule from a scattered set of memory locations \r
-/// into a contiguous space in memory, detect if a capsule is present for\r
-/// processing, and once memory is available, create a HOB for the capsule.\r
-///\r
-struct _PEI_CAPSULE_PPI {\r
- PEI_CAPSULE_COALESCE Coalesce;\r
- PEI_CAPSULE_CHECK_CAPSULE_UPDATE CheckCapsuleUpdate;\r
- PEI_CAPSULE_CREATE_STATE CreateState;\r
-};\r
-\r
-extern EFI_GUID gPeiCapsulePpiGuid;\r
-\r
-#endif // #ifndef _PEI_CAPSULE_PPI_H_\r