]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Pei/FwVol/FwVol.h
Add fixing for supporting third-party FV in unknown format.
[mirror_edk2.git] / MdeModulePkg / Core / Pei / FwVol / FwVol.h
index 65c17e3d091880cadfc9752ea6cee23362749629..940991012c6b9af9a06dd323fc29d016554ac719 100644 (file)
@@ -235,4 +235,72 @@ FindFileEx (
   IN OUT    EFI_PEI_FV_HANDLE        *AprioriFile  OPTIONAL\r
   );\r
 \r
+/**\r
+  Report the information for a new discoveried FV in unknown format.\r
+  \r
+  If the EFI_PEI_FIRMWARE_VOLUME_PPI has not been install for specifical FV format, but\r
+  the FV in this FV format has been discoveried, then the information of this FV\r
+  will be cached into PEI_CORE_INSTANCE's UnknownFvInfo array.\r
+  Also a notification would be installed for unknown FV format guid, if EFI_PEI_FIRMWARE_VOLUME_PPI\r
+  is installed later by platform's PEIM, the original unknown FV will be processed by\r
+  using new installed EFI_PEI_FIRMWARE_VOLUME_PPI.\r
+  \r
+  @param PrivateData  Point to instance of PEI_CORE_INSTANCE\r
+  @param Format       Point to the unknown FV format guid.\r
+  @param FvInfo       Point to FvInfo buffer.\r
+  @param FvInfoSize   The size of FvInfo buffer.\r
+  \r
+  @retval EFI_OUT_OF_RESOURCES  The FV info array in PEI_CORE_INSTANCE has no more spaces.\r
+  @retval EFI_SUCCESS           Success to add the information for unknown FV.\r
+**/\r
+EFI_STATUS\r
+AddUnknownFormatFvInfo (\r
+  IN PEI_CORE_INSTANCE *PrivateData,\r
+  IN EFI_GUID          *Format,\r
+  IN VOID              *FvInfo,\r
+  IN UINT32            FvInfoSize\r
+  );\r
+  \r
+/**\r
+  Find the FV information according to FV format guid.\r
+  \r
+  This routine also will remove the FV information found by given FV format guid from\r
+  PrivateData->UnknownFvInfo[].\r
+  \r
+  @param PrivateData      Point to instance of PEI_CORE_INSTANCE\r
+  @param Format           Point to given FV format guid\r
+  @param FvInfo           On return, the pointer of FV information buffer in given FV format guid\r
+  @param FvInfoSize       On return, the size of FV information buffer.\r
+  \r
+  @retval EFI_NOT_FOUND  The FV is not found for new installed EFI_PEI_FIRMWARE_VOLUME_PPI\r
+  @retval EFI_SUCCESS    Success to find a FV which could be processed by new installed EFI_PEI_FIRMWARE_VOLUME_PPI.\r
+**/\r
+EFI_STATUS\r
+FindUnknownFormatFvInfo (\r
+  IN  PEI_CORE_INSTANCE *PrivateData,\r
+  IN  EFI_GUID          *Format,\r
+  OUT VOID              **FvInfo,\r
+  OUT UINT32            *FvInfoSize\r
+  );\r
+  \r
+/**\r
+  Notification callback function for EFI_PEI_FIRMWARE_VOLUME_PPI.\r
+  \r
+  When a EFI_PEI_FIRMWARE_VOLUME_PPI is installed to support new FV format, this \r
+  routine is called to process all discoveried FVs in this format.\r
+  \r
+  @param PeiServices       An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation\r
+  @param NotifyDescriptor  Address of the notification descriptor data structure.\r
+  @param Ppi               Address of the PPI that was installed.\r
+  \r
+  @retval EFI_SUCCESS  The notification callback is processed correctly.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ThirdPartyFvPpiNotifyCallback (\r
+  IN EFI_PEI_SERVICES              **PeiServices,\r
+  IN EFI_PEI_NOTIFY_DESCRIPTOR     *NotifyDescriptor,\r
+  IN VOID                          *Ppi\r
+  );  \r
+  \r
 #endif \r