mirror of https://github.com/acidanthera/audk.git
Clean Nt32 FVB driver doesn't produce the undefined FVB extension protocol.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7632 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
0e4cb657f6
commit
efd542830f
|
@ -28,7 +28,6 @@ Revision History
|
|||
// The protocols, PPI and GUID defintions for this module
|
||||
//
|
||||
#include <Guid/EventGroup.h>
|
||||
#include <Protocol/FvbExtension.h>
|
||||
#include <Protocol/FirmwareVolumeBlock.h>
|
||||
#include <Guid/AlternateFvBlock.h>
|
||||
#include <Protocol/DevicePath.h>
|
||||
|
@ -88,9 +87,6 @@ EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = {
|
|||
FvbProtocolWrite,
|
||||
FvbProtocolEraseBlocks,
|
||||
NULL
|
||||
},
|
||||
{
|
||||
FvbExtendProtocolEraseCustomBlockRange
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -608,113 +604,6 @@ Returns:
|
|||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
FvbEraseCustomBlockRange (
|
||||
IN UINTN Instance,
|
||||
IN EFI_LBA StartLba,
|
||||
IN UINTN OffsetStartLba,
|
||||
IN EFI_LBA LastLba,
|
||||
IN UINTN OffsetLastLba,
|
||||
IN ESAL_FWB_GLOBAL *Global,
|
||||
IN BOOLEAN Virtual
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Erases and initializes a specified range of a firmware volume
|
||||
|
||||
Arguments:
|
||||
Instance - The FV instance to be erased
|
||||
StartLba - The starting logical block index to be erased
|
||||
OffsetStartLba - Offset into the starting block at which to
|
||||
begin erasing
|
||||
LastLba - The last logical block index to be erased
|
||||
OffsetStartLba - Offset into the last block at which to end erasing
|
||||
Global - Pointer to ESAL_FWB_GLOBAL that contains all
|
||||
instance data
|
||||
Virtual - Whether CPU is in virtual or physical mode
|
||||
|
||||
Returns:
|
||||
EFI_SUCCESS - The firmware volume was erased successfully
|
||||
EFI_ACCESS_DENIED - The firmware volume is in the WriteDisabled state
|
||||
EFI_DEVICE_ERROR - The block device is not functioning correctly and
|
||||
could not be written. Firmware device may have been
|
||||
partially erased
|
||||
EFI_INVALID_PARAMETER - Instance not found
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_LBA Index;
|
||||
UINTN LbaSize;
|
||||
UINTN ScratchLbaSizeData;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// First LBA
|
||||
//
|
||||
Status = FvbGetLbaAddress (Instance, StartLba, NULL, &LbaSize, NULL, Global, Virtual);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// Use the scratch space as the intermediate buffer to transfer data
|
||||
// Back up the first LBA in scratch space.
|
||||
//
|
||||
FvbReadBlock (Instance, StartLba, 0, &LbaSize, Global->FvbScratchSpace[Virtual], Global, Virtual);
|
||||
|
||||
//
|
||||
// erase now
|
||||
//
|
||||
FvbEraseBlock (Instance, StartLba, Global, Virtual);
|
||||
ScratchLbaSizeData = OffsetStartLba;
|
||||
|
||||
//
|
||||
// write the data back to the first block
|
||||
//
|
||||
if (ScratchLbaSizeData > 0) {
|
||||
Status = FvbWriteBlock (Instance, StartLba, 0, &ScratchLbaSizeData, Global->FvbScratchSpace[Virtual], Global, Virtual);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Middle LBAs
|
||||
//
|
||||
if (LastLba > (StartLba + 1)) {
|
||||
for (Index = (StartLba + 1); Index <= (LastLba - 1); Index++) {
|
||||
FvbEraseBlock (Instance, Index, Global, Virtual);
|
||||
}
|
||||
}
|
||||
//
|
||||
// Last LBAs, the same as first LBAs
|
||||
//
|
||||
if (LastLba > StartLba) {
|
||||
Status = FvbGetLbaAddress (Instance, LastLba, NULL, &LbaSize, NULL, Global, Virtual);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
FvbReadBlock (Instance, LastLba, 0, &LbaSize, Global->FvbScratchSpace[Virtual], Global, Virtual);
|
||||
FvbEraseBlock (Instance, LastLba, Global, Virtual);
|
||||
}
|
||||
|
||||
ScratchLbaSizeData = LbaSize - (OffsetLastLba + 1);
|
||||
|
||||
if (ScratchLbaSizeData > 0) {
|
||||
Status = FvbWriteBlock (
|
||||
Instance,
|
||||
LastLba,
|
||||
(OffsetLastLba + 1),
|
||||
&ScratchLbaSizeData,
|
||||
Global->FvbScratchSpace[Virtual] + OffsetLastLba + 1,
|
||||
Global,
|
||||
Virtual
|
||||
);
|
||||
}
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
FvbSetVolumeAttributes (
|
||||
IN UINTN Instance,
|
||||
|
@ -1173,54 +1062,6 @@ Returns:
|
|||
|
||||
return FvbReadBlock (FvbDevice->Instance, Lba, Offset, NumBytes, Buffer, mFvbModuleGlobal, EfiGoneVirtual ());
|
||||
}
|
||||
//
|
||||
// FVB Extension Protocols
|
||||
//
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbExtendProtocolEraseCustomBlockRange (
|
||||
IN EFI_FVB_EXTENSION_PROTOCOL *This,
|
||||
IN EFI_LBA StartLba,
|
||||
IN UINTN OffsetStartLba,
|
||||
IN EFI_LBA LastLba,
|
||||
IN UINTN OffsetLastLba
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Erases and initializes a specified range of a firmware volume
|
||||
|
||||
Arguments:
|
||||
This - Calling context
|
||||
StartLba - The starting logical block index to be erased
|
||||
OffsetStartLba - Offset into the starting block at which to
|
||||
begin erasing
|
||||
LastLba - The last logical block index to be erased
|
||||
OffsetStartLba - Offset into the last block at which to end erasing
|
||||
|
||||
Returns:
|
||||
EFI_SUCCESS - The firmware volume was erased successfully
|
||||
EFI_ACCESS_DENIED - The firmware volume is in the WriteDisabled state
|
||||
EFI_DEVICE_ERROR - The block device is not functioning correctly and
|
||||
could not be written. Firmware device may have been
|
||||
partially erased
|
||||
|
||||
--*/
|
||||
{
|
||||
EFI_FW_VOL_BLOCK_DEVICE *FvbDevice;
|
||||
|
||||
FvbDevice = FVB_EXTEND_DEVICE_FROM_THIS (This);
|
||||
|
||||
return FvbEraseCustomBlockRange (
|
||||
FvbDevice->Instance,
|
||||
StartLba,
|
||||
OffsetStartLba,
|
||||
LastLba,
|
||||
OffsetLastLba,
|
||||
mFvbModuleGlobal,
|
||||
EfiGoneVirtual ()
|
||||
);
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
ValidateFvHeader (
|
||||
|
@ -1510,13 +1351,9 @@ Returns:
|
|||
//
|
||||
ASSERT (FALSE);
|
||||
}
|
||||
//
|
||||
// Install FVB Extension Protocol on the same handle
|
||||
//
|
||||
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&FwbHandle,
|
||||
&gEfiFvbExtensionProtocolGuid,
|
||||
&FvbDevice->FvbExtension,
|
||||
&gEfiAlternateFvBlockGuid,
|
||||
NULL,
|
||||
NULL
|
||||
|
@ -1533,13 +1370,5 @@ Returns:
|
|||
FvHob.Raw = GET_NEXT_HOB (FvHob);
|
||||
}
|
||||
|
||||
//
|
||||
// Allocate for scratch space, an intermediate buffer for FVB extention
|
||||
//
|
||||
mFvbModuleGlobal->FvbScratchSpace[FVB_PHYSICAL] = AllocateRuntimePool (MaxLbaSize);
|
||||
ASSERT (mFvbModuleGlobal->FvbScratchSpace[FVB_PHYSICAL] != NULL);
|
||||
|
||||
mFvbModuleGlobal->FvbScratchSpace[FVB_VIRTUAL] = mFvbModuleGlobal->FvbScratchSpace[FVB_PHYSICAL];
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ Abstract:
|
|||
#include <Guid/EventGroup.h>
|
||||
#include <Guid/FirmwareFileSystem2.h>
|
||||
#include <Guid/SystemNvDataGuid.h>
|
||||
#include <Protocol/FvbExtension.h>
|
||||
#include <Protocol/FirmwareVolumeBlock.h>
|
||||
#include <Guid/AlternateFvBlock.h>
|
||||
#include <Protocol/DevicePath.h>
|
||||
|
|
|
@ -63,7 +63,6 @@
|
|||
gEfiAlternateFvBlockGuid # ALWAYS_CONSUME
|
||||
|
||||
[Protocols]
|
||||
gEfiFvbExtensionProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||
gEfiFirmwareVolumeBlockProtocolGuid # PROTOCOL ALWAYS_PRODUCED
|
||||
gEfiDevicePathProtocolGuid # PROTOCOL SOMETIMES_PRODUCED
|
||||
|
||||
|
@ -85,4 +84,5 @@
|
|||
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
|
||||
|
||||
[depex]
|
||||
TRUE
|
||||
TRUE
|
||||
|
|
@ -58,7 +58,6 @@ typedef struct {
|
|||
FV_DEVICE_PATH DevicePath;
|
||||
UINTN Instance;
|
||||
EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL FwVolBlockInstance;
|
||||
EFI_FVB_EXTENSION_PROTOCOL FvbExtension;
|
||||
} EFI_FW_VOL_BLOCK_DEVICE;
|
||||
|
||||
EFI_STATUS
|
||||
|
@ -207,14 +206,4 @@ FvbProtocolEraseBlocks (
|
|||
...
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
FvbExtendProtocolEraseCustomBlockRange (
|
||||
IN EFI_FVB_EXTENSION_PROTOCOL *This,
|
||||
IN EFI_LBA StartLba,
|
||||
IN UINTN OffsetStartLba,
|
||||
IN EFI_LBA LastLba,
|
||||
IN UINTN OffsetLastLba
|
||||
);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue