/** @file\r
\r
- Internal generic functions to support fault tolerant write.\r
+ Internal generic functions to operate flash block.\r
\r
Copyright (c) 2006 - 2008, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
\r
**/\r
\r
-#include <FtwLite.h>\r
+#include "FtwLite.h"\r
\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
//\r
Ptr = Buffer;\r
for (Index = 0; Index < FtwLiteDevice->NumberOfSpareBlock; Index += 1) {\r
- Count = FtwLiteDevice->SizeOfSpareBlock;\r
+ Count = FtwLiteDevice->BlockSize;\r
Status = FtwLiteDevice->FtwBackupFvb->Read (\r
FtwLiteDevice->FtwBackupFvb,\r
FtwLiteDevice->FtwSpareLba + Index,\r
//\r
Ptr = Buffer;\r
for (Index = 0; Index < FtwLiteDevice->NumberOfSpareBlock; Index += 1) {\r
- Count = FtwLiteDevice->SizeOfSpareBlock;\r
+ Count = FtwLiteDevice->BlockSize;\r
Status = FvBlock->Write (FvBlock, Lba + Index, 0, &Count, Ptr);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_FTW_LITE, "FtwLite: FVB Write block - %r\n", Status));\r
+ DEBUG ((EFI_D_ERROR, "FtwLite: FVB Write block - %r\n", Status));\r
FreePool (Buffer);\r
return Status;\r
}\r
return EFI_OUT_OF_RESOURCES;\r
}\r
//\r
- // To guarantee that the WorkingBlockValid is set on spare block\r
+ // To guarantee that the WorkingBlockValid is set on spare block\r
+ //\r
+ // Offset = OFFSET_OF(EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER,\r
+ // WorkingBlockValid);\r
+ // To skip Signature and Crc: sizeof(EFI_GUID)+sizeof(UINT32).\r
//\r
WorkSpaceLbaOffset = FtwLiteDevice->FtwWorkSpaceLba - FtwLiteDevice->FtwWorkBlockLba;\r
FtwUpdateFvState (\r
//\r
Ptr = Buffer;\r
for (Index = 0; Index < FtwLiteDevice->NumberOfSpareBlock; Index += 1) {\r
- Count = FtwLiteDevice->SizeOfSpareBlock;\r
+ Count = FtwLiteDevice->BlockSize;\r
Status = FtwLiteDevice->FtwBackupFvb->Read (\r
FtwLiteDevice->FtwBackupFvb,\r
FtwLiteDevice->FtwSpareLba + Index,\r
//\r
// Clear the CRC and STATE, copy data from spare to working block.\r
//\r
- WorkingBlockHeader = (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *) (Buffer + (UINTN) WorkSpaceLbaOffset * FtwLiteDevice->SizeOfSpareBlock + FtwLiteDevice->FtwWorkSpaceBase);\r
+ WorkingBlockHeader = (EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER *) (Buffer + (UINTN) WorkSpaceLbaOffset * FtwLiteDevice->BlockSize + FtwLiteDevice->FtwWorkSpaceBase);\r
InitWorkSpaceHeader (WorkingBlockHeader);\r
WorkingBlockHeader->WorkingBlockValid = FTW_ERASE_POLARITY;\r
WorkingBlockHeader->WorkingBlockInvalid = FTW_ERASE_POLARITY;\r
// Set WorkingBlockInvalid in EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER\r
// before erase the working block.\r
//\r
- // Offset = EFI_FIELD_OFFSET(EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER,\r
+ // Offset = OFFSET_OF(EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER,\r
// WorkingBlockInvalid);\r
// To skip Signature and Crc: sizeof(EFI_GUID)+sizeof(UINT32).\r
//\r
//\r
Ptr = Buffer;\r
for (Index = 0; Index < FtwLiteDevice->NumberOfSpareBlock; Index += 1) {\r
- Count = FtwLiteDevice->SizeOfSpareBlock;\r
+ Count = FtwLiteDevice->BlockSize;\r
Status = FtwLiteDevice->FtwFvBlock->Write (\r
FtwLiteDevice->FtwFvBlock,\r
FtwLiteDevice->FtwWorkBlockLba + Index,\r
Ptr\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_FTW_LITE, "FtwLite: FVB Write block - %r\n", Status));\r
+ DEBUG ((EFI_D_ERROR, "FtwLite: FVB Write block - %r\n", Status));\r
FreePool (Buffer);\r
return Status;\r
}\r
//\r
// Update the VALID of the working block\r
//\r
- // Offset = EFI_FIELD_OFFSET(EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER,\r
+ // Offset = OFFSET_OF(EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER,\r
// WorkingBlockValid);\r
// Hardcode offset sizeof(EFI_GUID)+sizeof(UINT32), to skip Signature and Crc\r
//\r