]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/FirmwareVolume/FaultTolerantWriteDxe/FtwLite.h
Move MdeModuleHii.h into Include\Guid directory
[mirror_edk2.git] / MdeModulePkg / Universal / FirmwareVolume / FaultTolerantWriteDxe / FtwLite.h
index 6199952e94d8ec331aa4330a1875bb4d875386f7..c33e1798b2b7da51a609ccf95b5ee0fd5294f0a0 100644 (file)
@@ -20,7 +20,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include <PiDxe.h>\r
 \r
-#include <Protocol/PciRootBridgeIo.h>\r
 #include <Guid/SystemNvDataGuid.h>\r
 #include <Protocol/FaultTolerantWriteLite.h>\r
 #include <Protocol/FirmwareVolumeBlock.h>\r
@@ -31,11 +30,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
-\r
-#include <WorkingBlockHeader.h>\r
-\r
-#define EFI_D_FTW_LITE  EFI_D_ERROR\r
-#define EFI_D_FTW_INFO  EFI_D_INFO\r
+#include <Library/DevicePathLib.h>\r
 \r
 //\r
 // Flash erase polarity is 1\r
@@ -66,38 +61,12 @@ typedef struct {
   //\r
 } EFI_FTW_LITE_RECORD;\r
 \r
-#define FTW_LITE_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('F', 'T', 'W', 'L')\r
-\r
-//\r
-// MACRO for Block size.\r
-// Flash Erasing will do in block granularity.\r
-//\r
-#ifdef FV_BLOCK_SIZE\r
-#define FTW_BLOCK_SIZE  FV_BLOCK_SIZE\r
-#else\r
-#define FV_BLOCK_SIZE   0x10000\r
-#define FTW_BLOCK_SIZE  FV_BLOCK_SIZE\r
-#endif\r
-//\r
-// MACRO for FTW WORK SPACE Base & Size\r
-//\r
-#ifdef EFI_FTW_WORKING_OFFSET\r
-#define FTW_WORK_SPACE_BASE EFI_FTW_WORKING_OFFSET\r
-#else\r
-#define FTW_WORK_SPACE_BASE 0x00E000\r
-#endif\r
+#define FTW_LITE_DEVICE_SIGNATURE SIGNATURE_32 ('F', 'T', 'W', 'L')\r
 \r
-#ifdef EFI_FTW_WORKING_LENGTH\r
-#define FTW_WORK_SPACE_SIZE EFI_FTW_WORKING_LENGTH\r
-#else\r
-#define FTW_WORK_SPACE_SIZE 0x002000\r
-#endif\r
 //\r
 // MACRO for FTW header and record\r
 //\r
-#define FTW_WORKING_QUEUE_SIZE  (FTW_WORK_SPACE_SIZE - sizeof (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER))\r
 #define FTW_LITE_RECORD_SIZE    (sizeof (EFI_FTW_LITE_RECORD))\r
-#define WRITE_TOTAL_SIZE        FTW_LITE_RECORD_SIZE\r
 \r
 //\r
 // EFI Fault tolerant protocol private data structure\r
@@ -106,22 +75,22 @@ typedef struct {
   UINTN                                   Signature;\r
   EFI_HANDLE                              Handle;\r
   EFI_FTW_LITE_PROTOCOL                   FtwLiteInstance;\r
-  EFI_PHYSICAL_ADDRESS                    WorkSpaceAddress;\r
-  UINTN                                   WorkSpaceLength;\r
-  EFI_PHYSICAL_ADDRESS                    SpareAreaAddress;\r
-  UINTN                                   SpareAreaLength;\r
-  UINTN                                   NumberOfSpareBlock; // Number of the blocks in spare block\r
-  UINTN                                   SizeOfSpareBlock;   // Block size in bytes of the blocks in spare block\r
-  EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *FtwWorkSpaceHeader;\r
-  EFI_FTW_LITE_RECORD                     *FtwLastRecord;\r
+  EFI_PHYSICAL_ADDRESS                    WorkSpaceAddress;   // Base address of working space range in flash.\r
+  UINTN                                   WorkSpaceLength;    // Size of working space range in flash.\r
+  EFI_PHYSICAL_ADDRESS                    SpareAreaAddress;   // Base address of spare range in flash.\r
+  UINTN                                   SpareAreaLength;    // Size of spare range in flash.\r
+  UINTN                                   NumberOfSpareBlock; // Number of the blocks in spare block.\r
+  UINTN                                   BlockSize;          // Block size in bytes of the blocks in flash\r
+  EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *FtwWorkSpaceHeader;// Pointer to Working Space Header in memory buffer\r
+  EFI_FTW_LITE_RECORD                     *FtwLastRecord;     // Pointer to last record in memory buffer\r
   EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL      *FtwFvBlock;        // FVB of working block\r
   EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL      *FtwBackupFvb;      // FVB of spare block\r
-  EFI_LBA                                 FtwSpareLba;\r
-  EFI_LBA                                 FtwWorkBlockLba;    // Start LBA of working block\r
+  EFI_LBA                                 FtwSpareLba;        // Start LBA of spare block\r
+  EFI_LBA                                 FtwWorkBlockLba;    // Start LBA of working block that contains working space in its last block.\r
   EFI_LBA                                 FtwWorkSpaceLba;    // Start LBA of working space\r
-  UINTN                                   FtwWorkSpaceBase;   // Offset from LBA start addr\r
-  UINTN                                   FtwWorkSpaceSize;\r
-  UINT8                                   *FtwWorkSpace;\r
+  UINTN                                   FtwWorkSpaceBase;   // Offset into the FtwWorkSpaceLba block.\r
+  UINTN                                   FtwWorkSpaceSize;   // Size of working space range that stores write record.\r
+  UINT8                                   *FtwWorkSpace;      // Point to Work Space in memory buffer \r
   //\r
   // Following a buffer of FtwWorkSpace[FTW_WORK_SPACE_SIZE],\r
   // Allocated with EFI_FTW_LITE_DEVICE.\r
@@ -137,9 +106,9 @@ typedef struct {
   This function is the entry point of the Fault Tolerant Write driver.\r
 \r
 \r
-  @param ImageHandle     EFI_HANDLE: A handle for the image that is initializing\r
+  @param ImageHandle     A handle for the image that is initializing\r
                          this driver\r
-  @param SystemTable     EFI_SYSTEM_TABLE: A pointer to the EFI system table\r
+  @param SystemTable     A pointer to the EFI system table\r
 \r
   @retval  EFI_SUCCESS            FTW has finished the initialization\r
   @retval  EFI_ABORTED            FTW initialization error\r
@@ -150,8 +119,7 @@ EFIAPI
 InitializeFtwLite (\r
   IN EFI_HANDLE                 ImageHandle,\r
   IN EFI_SYSTEM_TABLE           *SystemTable\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // Fault Tolerant Write Protocol API\r
@@ -189,8 +157,7 @@ FtwLiteWrite (
   IN UINTN                                      Offset,\r
   IN OUT UINTN                                 *NumBytes,\r
   IN VOID                                       *Buffer\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // Internal functions\r
@@ -213,8 +180,7 @@ FtwLiteWrite (
 EFI_STATUS\r
 FtwRestart (\r
   IN EFI_FTW_LITE_DEVICE    *FtwLiteDevice\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Aborts all previous allocated writes.\r
@@ -230,8 +196,7 @@ FtwRestart (
 EFI_STATUS\r
 FtwAbort (\r
   IN EFI_FTW_LITE_DEVICE    *FtwLiteDevice\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -252,11 +217,10 @@ EFI_STATUS
 FtwWriteRecord (\r
   IN EFI_FTW_LITE_DEVICE                   *FtwLiteDevice,\r
   IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL    *Fvb\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  To Erase one block. The size is FTW_BLOCK_SIZE\r
+  To erase the block with the spare block size.\r
 \r
 \r
   @param FtwLiteDevice   Calling context\r
@@ -272,8 +236,7 @@ FtwEraseBlock (
   IN EFI_FTW_LITE_DEVICE              *FtwLiteDevice,\r
   EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *FvBlock,\r
   EFI_LBA                             Lba\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
 \r
@@ -299,8 +262,7 @@ FtwEraseBlock (
 EFI_STATUS\r
 FtwEraseSpareBlock (\r
   IN EFI_FTW_LITE_DEVICE   *FtwLiteDevice\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Retrive the proper FVB protocol interface by HANDLE.\r
@@ -318,8 +280,7 @@ EFI_STATUS
 FtwGetFvbByHandle (\r
   IN EFI_HANDLE                           FvBlockHandle,\r
   OUT EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  **FvBlock\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
 \r
@@ -337,8 +298,7 @@ EFI_STATUS
 GetFvbByAddress (\r
   IN  EFI_PHYSICAL_ADDRESS               Address,\r
   OUT EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL **FvBlock\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
 \r
@@ -357,29 +317,7 @@ IsInWorkingBlock (
   EFI_FTW_LITE_DEVICE                 *FtwLiteDevice,\r
   EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *FvBlock,\r
   EFI_LBA                             Lba\r
-  )\r
-;\r
-\r
-/**\r
-\r
-  Check whether the block is a boot block.\r
-\r
-\r
-  @param FtwLiteDevice   Calling context\r
-  @param FvBlock         Fvb protocol instance\r
-  @param Lba             Lba value\r
-\r
-  @retval FALSE           This is a boot block.\r
-  @retval TRUE            This is not a boot block.\r
-\r
-**/\r
-BOOLEAN\r
-IsBootBlock (\r
-  EFI_FTW_LITE_DEVICE                 *FtwLiteDevice,\r
-  EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *FvBlock,\r
-  EFI_LBA                             Lba\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Copy the content of spare block to a target block. Size is FTW_BLOCK_SIZE.\r
@@ -403,8 +341,7 @@ FlushSpareBlockToTargetBlock (
   EFI_FTW_LITE_DEVICE                 *FtwLiteDevice,\r
   EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  *FvBlock,\r
   EFI_LBA                             Lba\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Copy the content of spare block to working block. Size is FTW_BLOCK_SIZE.\r
@@ -428,30 +365,7 @@ FlushSpareBlockToTargetBlock (
 EFI_STATUS\r
 FlushSpareBlockToWorkingBlock (\r
   EFI_FTW_LITE_DEVICE                 *FtwLiteDevice\r
-  )\r
-;\r
-\r
-/**\r
-  Copy the content of spare block to a boot block. Size is FTW_BLOCK_SIZE.\r
-  Spare block is accessed by FTW backup FVB protocol interface. LBA is\r
-  FtwLiteDevice->FtwSpareLba.\r
-  Boot block is accessed by BootFvb protocol interface. LBA is 0.\r
-\r
-\r
-  @param FtwLiteDevice   The private data of FTW_LITE driver\r
-\r
-  @retval  EFI_SUCCESS               Spare block content is copied to boot block\r
-  @retval  EFI_INVALID_PARAMETER     Input parameter error\r
-  @retval  EFI_OUT_OF_RESOURCES      Allocate memory error\r
-  @retval  EFI_ABORTED               The function could not complete successfully\r
-                                     Notes:\r
-\r
-**/\r
-EFI_STATUS\r
-FlushSpareBlockToBootBlock (\r
-  EFI_FTW_LITE_DEVICE                 *FtwLiteDevice\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Update a bit of state on a block device. The location of the bit is\r
@@ -477,8 +391,7 @@ FtwUpdateFvState (
   IN EFI_LBA                             Lba,\r
   IN UINTN                               Offset,\r
   IN UINT8                               NewBit\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Get the last Write record pointer.\r
@@ -497,8 +410,7 @@ EFI_STATUS
 FtwGetLastRecord (\r
   IN  EFI_FTW_LITE_DEVICE  *FtwLiteDevice,\r
   OUT EFI_FTW_LITE_RECORD  **FtwLastRecord\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
 \r
@@ -517,8 +429,7 @@ IsErasedFlashBuffer (
   IN BOOLEAN         Polarity,\r
   IN UINT8           *Buffer,\r
   IN UINTN           BufferSize\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Initialize a work space when there is no work space.\r
@@ -533,8 +444,7 @@ IsErasedFlashBuffer (
 EFI_STATUS\r
 InitWorkSpaceHeader (\r
   IN EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *WorkingHeader\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Read from working block to refresh the work space in memory.\r
@@ -549,8 +459,7 @@ InitWorkSpaceHeader (
 EFI_STATUS\r
 WorkSpaceRefresh (\r
   IN EFI_FTW_LITE_DEVICE  *FtwLiteDevice\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Check to see if it is a valid work space.\r
@@ -565,37 +474,14 @@ WorkSpaceRefresh (
 BOOLEAN\r
 IsValidWorkSpace (\r
   IN EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *WorkingHeader\r
-  )\r
-;\r
-\r
-/**\r
-  Reclaim the work space. Get rid of all the completed write records\r
-  and write records in the Fault Tolerant work space.\r
-\r
-\r
-  @param FtwLiteDevice   Point to private data of FTW driver\r
-                         FtwSpaceBuffer  - Buffer to contain the reclaimed clean data\r
-  @param BlockBuffer     The data buffer for the block.\r
-  @param BufferSize      Size of the FtwSpaceBuffer\r
-\r
-  @retval  EFI_SUCCESS            The function completed successfully\r
-  @retval  EFI_BUFFER_TOO_SMALL   The FtwSpaceBuffer is too small\r
-  @retval  EFI_ABORTED            The function could not complete successfully.\r
-\r
-**/\r
-EFI_STATUS\r
-CleanupWorkSpace (\r
-  IN EFI_FTW_LITE_DEVICE  *FtwLiteDevice,\r
-  IN OUT UINT8            *BlockBuffer,\r
-  IN UINTN                BufferSize\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
   Reclaim the work space on the working block.\r
 \r
 \r
   @param FtwLiteDevice   Point to private data of FTW driver\r
+  @param PreserveRecord  Whether to preserve the working record is needed\r
 \r
   @retval  EFI_SUCCESS            The function completed successfully\r
   @retval  EFI_OUT_OF_RESOURCES   Allocate memory error\r
@@ -604,8 +490,8 @@ CleanupWorkSpace (
 **/\r
 EFI_STATUS\r
 FtwReclaimWorkSpace (\r
-  IN EFI_FTW_LITE_DEVICE  *FtwLiteDevice\r
-  )\r
-;\r
+  IN EFI_FTW_LITE_DEVICE  *FtwLiteDevice,\r
+  IN BOOLEAN              PreserveRecord\r
+  );\r
 \r
 #endif\r