]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Disk/CdExpressPei/PeiCdExpress.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdeModulePkg / Universal / Disk / CdExpressPei / PeiCdExpress.h
index 99edd3d5a2b24727d458b7fd46dac62bb6ebb539..e5b9c1eaa2d21b6707dab8d01ff348224ef15d54 100644 (file)
@@ -1,26 +1,19 @@
 /** @file\r
   Header file for CD recovery PEIM\r
 \r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2018, 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
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #ifndef _PEI_CD_EXPRESS_H_\r
 #define _PEI_CD_EXPRESS_H_\r
 \r
-\r
 #include <PiPei.h>\r
 \r
 #include <Ppi/BlockIo.h>\r
+#include <Ppi/BlockIo2.h>\r
 #include <Guid/RecoveryDevice.h>\r
 #include <Ppi/DeviceRecoveryModule.h>\r
 \r
@@ -32,57 +25,51 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/PeiServicesLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 \r
-\r
 #pragma pack(1)\r
 \r
-#define PEI_CD_EXPRESS_MAX_BLOCK_IO_PPI   8\r
-#define PEI_CD_EXPRESS_MAX_CAPSULE_NUMBER 16\r
+#define PEI_CD_EXPRESS_MAX_BLOCK_IO_PPI    8\r
+#define PEI_CD_EXPRESS_MAX_CAPSULE_NUMBER  16\r
 \r
-#define PEI_CD_BLOCK_SIZE                 0x800\r
-#define PEI_MEMMORY_PAGE_SIZE             0x1000\r
-\r
-//\r
-// Recovery file name (in root directory)\r
-//\r
-#define PEI_RECOVERY_FILE_NAME  "FVMAIN.FV"\r
+#define PEI_CD_BLOCK_SIZE      0x800\r
+#define PEI_MEMMORY_PAGE_SIZE  0x1000\r
 \r
 //\r
 // Following are defined according to ISO-9660 specification\r
 //\r
-#define PEI_CD_STANDARD_ID                      "CD001"\r
-#define PEI_CD_EXPRESS_STANDARD_ID_SIZE         5\r
+#define PEI_CD_STANDARD_ID               "CD001"\r
+#define PEI_CD_EXPRESS_STANDARD_ID_SIZE  5\r
 \r
-#define PEI_CD_EXPRESS_VOLUME_TYPE_OFFSET       0\r
-#define PEI_CD_EXPRESS_STANDARD_ID_OFFSET       1\r
-#define PEI_CD_EXPRESS_VOLUME_SPACE_OFFSET      80\r
-#define PEI_CD_EXPRESS_ROOT_DIR_RECORD_OFFSET   156\r
+#define PEI_CD_EXPRESS_VOLUME_TYPE_OFFSET      0\r
+#define PEI_CD_EXPRESS_STANDARD_ID_OFFSET      1\r
+#define PEI_CD_EXPRESS_VOLUME_SPACE_OFFSET     80\r
+#define PEI_CD_EXPRESS_ROOT_DIR_RECORD_OFFSET  156\r
 \r
-#define PEI_CD_EXPRESS_VOLUME_TYPE_PRIMARY      1\r
-#define PEI_CD_EXPRESS_VOLUME_TYPE_TERMINATOR   255\r
+#define PEI_CD_EXPRESS_VOLUME_TYPE_PRIMARY     1\r
+#define PEI_CD_EXPRESS_VOLUME_TYPE_TERMINATOR  255\r
 \r
 #define PEI_CD_EXPRESS_DIR_FILE_REC_FLAG_ISDIR  0x02\r
 \r
 typedef struct {\r
-  UINTN                           CapsuleStartLBA;\r
-  UINTN                           CapsuleSize;\r
-  UINTN                           IndexBlock;\r
-  EFI_PEI_RECOVERY_BLOCK_IO_PPI   *BlockIo;\r
+  UINTN                             CapsuleStartLBA;\r
+  UINTN                             CapsuleSize;\r
+  UINTN                             CapsuleBlockAlignedSize;\r
+  UINTN                             IndexBlock;\r
+  EFI_PEI_RECOVERY_BLOCK_IO_PPI     *BlockIo;\r
+  EFI_PEI_RECOVERY_BLOCK_IO2_PPI    *BlockIo2;\r
 } PEI_CD_EXPRESS_CAPSULE_DATA;\r
 \r
-#define PEI_CD_EXPRESS_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('p', 'c', 'd', 'e')\r
+#define PEI_CD_EXPRESS_PRIVATE_DATA_SIGNATURE  SIGNATURE_32 ('p', 'c', 'd', 'e')\r
 \r
 typedef struct {\r
-\r
   UINTN                                 Signature;\r
-  EFI_PEI_SERVICES                      **PeiServices;\r
   EFI_PEI_DEVICE_RECOVERY_MODULE_PPI    DeviceRecoveryPpi;\r
   EFI_PEI_PPI_DESCRIPTOR                PpiDescriptor;\r
   EFI_PEI_NOTIFY_DESCRIPTOR             NotifyDescriptor;\r
+  EFI_PEI_NOTIFY_DESCRIPTOR             NotifyDescriptor2;\r
 \r
   UINT8                                 *BlockBuffer;\r
   UINTN                                 CapsuleCount;\r
   PEI_CD_EXPRESS_CAPSULE_DATA           CapsuleData[PEI_CD_EXPRESS_MAX_CAPSULE_NUMBER];\r
-\r
 } PEI_CD_EXPRESS_PRIVATE_DATA;\r
 \r
 #define PEI_CD_EXPRESS_PRIVATE_DATA_FROM_THIS(a) \\r
@@ -93,22 +80,22 @@ typedef struct {
       )\r
 \r
 typedef struct {\r
-  UINT8   Length;\r
-  UINT8   ExtendedAttributeRecordLength;\r
-  UINT32  LocationOfExtent[2];\r
-  UINT32  DataLength[2];\r
-  UINT8   DateTime[7];\r
-  UINT8   Flag;\r
-  UINT8   FileUnitSize;\r
-  UINT8   InterleaveGapSize;\r
-  UINT32  VolumeSequenceNumber;\r
-  UINT8   FileIDLength;\r
-  UINT8   FileID[1];\r
+  UINT8     Length;\r
+  UINT8     ExtendedAttributeRecordLength;\r
+  UINT32    LocationOfExtent[2];\r
+  UINT32    DataLength[2];\r
+  UINT8     DateTime[7];\r
+  UINT8     Flag;\r
+  UINT8     FileUnitSize;\r
+  UINT8     InterleaveGapSize;\r
+  UINT32    VolumeSequenceNumber;\r
+  UINT8     FileIDLength;\r
+  UINT8     FileID[1];\r
 } PEI_CD_EXPRESS_DIR_FILE_RECORD;\r
 \r
 /**\r
-  BlockIo installation notification function. \r
-  \r
+  BlockIo installation notification function.\r
+\r
   This function finds out all the current Block IO PPIs in the system and add them\r
   into private data.\r
 \r
@@ -131,31 +118,33 @@ BlockIoNotifyEntry (
   Finds out all the current Block IO PPIs in the system and add them into private data.\r
 \r
   @param PrivateData                    The private data structure that contains recovery module information.\r
+  @param BlockIo2                       Boolean to show whether using BlockIo2 or BlockIo.\r
 \r
   @retval EFI_SUCCESS                   The blocks and volumes are updated successfully.\r
 \r
 **/\r
 EFI_STATUS\r
 UpdateBlocksAndVolumes (\r
-  IN OUT PEI_CD_EXPRESS_PRIVATE_DATA     *PrivateData\r
+  IN OUT PEI_CD_EXPRESS_PRIVATE_DATA  *PrivateData,\r
+  IN     BOOLEAN                      BlockIo2\r
   );\r
 \r
 /**\r
   Returns the number of DXE capsules residing on the device.\r
 \r
   This function searches for DXE capsules from the associated device and returns\r
-  the number and maximum size in bytes of the capsules discovered. Entry 1 is \r
-  assumed to be the highest load priority and entry N is assumed to be the lowest \r
+  the number and maximum size in bytes of the capsules discovered. Entry 1 is\r
+  assumed to be the highest load priority and entry N is assumed to be the lowest\r
   priority.\r
 \r
-  @param[in]  PeiServices              General-purpose services that are available \r
+  @param[in]  PeiServices              General-purpose services that are available\r
                                        to every PEIM\r
   @param[in]  This                     Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI\r
                                        instance.\r
-  @param[out] NumberRecoveryCapsules   Pointer to a caller-allocated UINTN. On \r
-                                       output, *NumberRecoveryCapsules contains \r
-                                       the number of recovery capsule images \r
-                                       available for retrieval from this PEIM \r
+  @param[out] NumberRecoveryCapsules   Pointer to a caller-allocated UINTN. On\r
+                                       output, *NumberRecoveryCapsules contains\r
+                                       the number of recovery capsule images\r
+                                       available for retrieval from this PEIM\r
                                        instance.\r
 \r
   @retval EFI_SUCCESS        One or more capsules were discovered.\r
@@ -166,9 +155,9 @@ UpdateBlocksAndVolumes (
 EFI_STATUS\r
 EFIAPI\r
 GetNumberRecoveryCapsules (\r
-  IN EFI_PEI_SERVICES                               **PeiServices,\r
-  IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI             *This,\r
-  OUT UINTN                                         *NumberRecoveryCapsules\r
+  IN EFI_PEI_SERVICES                    **PeiServices,\r
+  IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI  *This,\r
+  OUT UINTN                              *NumberRecoveryCapsules\r
   );\r
 \r
 /**\r
@@ -177,18 +166,18 @@ GetNumberRecoveryCapsules (
   This function gets the size and type of the capsule specified by CapsuleInstance.\r
 \r
   @param[in]  PeiServices       General-purpose services that are available to every PEIM\r
-  @param[in]  This              Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI \r
+  @param[in]  This              Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI\r
                                 instance.\r
-  @param[in]  CapsuleInstance   Specifies for which capsule instance to retrieve \r
-                                the information.  This parameter must be between \r
-                                one and the value returned by GetNumberRecoveryCapsules() \r
+  @param[in]  CapsuleInstance   Specifies for which capsule instance to retrieve\r
+                                the information.  This parameter must be between\r
+                                one and the value returned by GetNumberRecoveryCapsules()\r
                                 in NumberRecoveryCapsules.\r
-  @param[out] Size              A pointer to a caller-allocated UINTN in which \r
-                                the size of the requested recovery module is \r
+  @param[out] Size              A pointer to a caller-allocated UINTN in which\r
+                                the size of the requested recovery module is\r
                                 returned.\r
-  @param[out] CapsuleType       A pointer to a caller-allocated EFI_GUID in which \r
-                                the type of the requested recovery capsule is \r
-                                returned.  The semantic meaning of the value \r
+  @param[out] CapsuleType       A pointer to a caller-allocated EFI_GUID in which\r
+                                the type of the requested recovery capsule is\r
+                                returned.  The semantic meaning of the value\r
                                 returned is defined by the implementation.\r
 \r
   @retval EFI_SUCCESS        One or more capsules were discovered.\r
@@ -199,11 +188,11 @@ GetNumberRecoveryCapsules (
 EFI_STATUS\r
 EFIAPI\r
 GetRecoveryCapsuleInfo (\r
-  IN  EFI_PEI_SERVICES                              **PeiServices,\r
-  IN  EFI_PEI_DEVICE_RECOVERY_MODULE_PPI            *This,\r
-  IN  UINTN                                         CapsuleInstance,\r
-  OUT UINTN                                         *Size,\r
-  OUT EFI_GUID                                      *CapsuleType\r
+  IN  EFI_PEI_SERVICES                    **PeiServices,\r
+  IN  EFI_PEI_DEVICE_RECOVERY_MODULE_PPI  *This,\r
+  IN  UINTN                               CapsuleInstance,\r
+  OUT UINTN                               *Size,\r
+  OUT EFI_GUID                            *CapsuleType\r
   );\r
 \r
 /**\r
@@ -212,12 +201,12 @@ GetRecoveryCapsuleInfo (
   This function, by whatever mechanism, retrieves a DXE capsule from some device\r
   and loads it into memory. Note that the published interface is device neutral.\r
 \r
-  @param[in]     PeiServices       General-purpose services that are available \r
+  @param[in]     PeiServices       General-purpose services that are available\r
                                    to every PEIM\r
   @param[in]     This              Indicates the EFI_PEI_DEVICE_RECOVERY_MODULE_PPI\r
                                    instance.\r
   @param[in]     CapsuleInstance   Specifies which capsule instance to retrieve.\r
-  @param[out]    Buffer            Specifies a caller-allocated buffer in which \r
+  @param[out]    Buffer            Specifies a caller-allocated buffer in which\r
                                    the requested recovery capsule will be returned.\r
 \r
   @retval EFI_SUCCESS        The capsule was loaded correctly.\r
@@ -228,10 +217,10 @@ GetRecoveryCapsuleInfo (
 EFI_STATUS\r
 EFIAPI\r
 LoadRecoveryCapsule (\r
-  IN EFI_PEI_SERVICES                             **PeiServices,\r
-  IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI           *This,\r
-  IN UINTN                                        CapsuleInstance,\r
-  OUT VOID                                        *Buffer\r
+  IN EFI_PEI_SERVICES                    **PeiServices,\r
+  IN EFI_PEI_DEVICE_RECOVERY_MODULE_PPI  *This,\r
+  IN UINTN                               CapsuleInstance,\r
+  OUT VOID                               *Buffer\r
   );\r
 \r
 /**\r
@@ -246,7 +235,7 @@ LoadRecoveryCapsule (
 EFI_STATUS\r
 EFIAPI\r
 FindRecoveryCapsules (\r
-  IN OUT PEI_CD_EXPRESS_PRIVATE_DATA            *PrivateData\r
+  IN OUT PEI_CD_EXPRESS_PRIVATE_DATA  *PrivateData\r
   );\r
 \r
 /**\r
@@ -254,24 +243,25 @@ FindRecoveryCapsules (
 \r
   @param PrivateData                    The private data structure that contains recovery module information.\r
   @param BlockIoPpi                     The Block IO PPI used to access the volume.\r
+  @param BlockIo2Ppi                    The Block IO 2 PPI used to access the volume.\r
   @param IndexBlockDevice               The index of current block device.\r
   @param Lba                            The starting logic block address to retrieve capsule.\r
 \r
   @retval EFI_SUCCESS                   The recovery capsule is successfully found in the volume.\r
   @retval EFI_NOT_FOUND                 The recovery capsule is not found in the volume.\r
-  @retval Others                        \r
+  @retval Others\r
 \r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
 RetrieveCapsuleFileFromRoot (\r
-  IN OUT PEI_CD_EXPRESS_PRIVATE_DATA        *PrivateData,\r
-  IN EFI_PEI_RECOVERY_BLOCK_IO_PPI          *BlockIoPpi,\r
-  IN UINTN                                  IndexBlockDevice,\r
-  IN UINT32                                 Lba\r
+  IN OUT PEI_CD_EXPRESS_PRIVATE_DATA  *PrivateData,\r
+  IN EFI_PEI_RECOVERY_BLOCK_IO_PPI    *BlockIoPpi,\r
+  IN EFI_PEI_RECOVERY_BLOCK_IO2_PPI   *BlockIo2Ppi,\r
+  IN UINTN                            IndexBlockDevice,\r
+  IN UINT32                           Lba\r
   );\r
 \r
-\r
 /**\r
   This function compares two ASCII strings in case sensitive/insensitive way.\r
 \r
@@ -286,10 +276,10 @@ RetrieveCapsuleFileFromRoot (
 **/\r
 BOOLEAN\r
 StringCmp (\r
-  IN UINT8      *Source1,\r
-  IN UINT8      *Source2,\r
-  IN UINTN      Size,\r
-  IN BOOLEAN    CaseSensitive\r
+  IN UINT8    *Source1,\r
+  IN UINT8    *Source2,\r
+  IN UINTN    Size,\r
+  IN BOOLEAN  CaseSensitive\r
   );\r
 \r
 #pragma pack()\r