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:
		| @@ -28,7 +28,6 @@ Revision History | |||||||
| // The protocols, PPI and GUID defintions for this module | // The protocols, PPI and GUID defintions for this module | ||||||
| // | // | ||||||
| #include <Guid/EventGroup.h> | #include <Guid/EventGroup.h> | ||||||
| #include <Protocol/FvbExtension.h> |  | ||||||
| #include <Protocol/FirmwareVolumeBlock.h> | #include <Protocol/FirmwareVolumeBlock.h> | ||||||
| #include <Guid/AlternateFvBlock.h> | #include <Guid/AlternateFvBlock.h> | ||||||
| #include <Protocol/DevicePath.h> | #include <Protocol/DevicePath.h> | ||||||
| @@ -88,9 +87,6 @@ EFI_FW_VOL_BLOCK_DEVICE mFvbDeviceTemplate = { | |||||||
|     FvbProtocolWrite, |     FvbProtocolWrite, | ||||||
|     FvbProtocolEraseBlocks, |     FvbProtocolEraseBlocks, | ||||||
|     NULL |     NULL | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|     FvbExtendProtocolEraseCustomBlockRange |  | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
|  |  | ||||||
| @@ -608,113 +604,6 @@ Returns: | |||||||
|   return EFI_SUCCESS; |   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 | EFI_STATUS | ||||||
| FvbSetVolumeAttributes ( | FvbSetVolumeAttributes ( | ||||||
|   IN UINTN                                  Instance, |   IN UINTN                                  Instance, | ||||||
| @@ -1173,54 +1062,6 @@ Returns: | |||||||
|  |  | ||||||
|   return FvbReadBlock (FvbDevice->Instance, Lba, Offset, NumBytes, Buffer, mFvbModuleGlobal, EfiGoneVirtual ()); |   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 | EFI_STATUS | ||||||
| ValidateFvHeader ( | ValidateFvHeader ( | ||||||
| @@ -1510,13 +1351,9 @@ Returns: | |||||||
|       // |       // | ||||||
|       ASSERT (FALSE); |       ASSERT (FALSE); | ||||||
|     } |     } | ||||||
|     // |  | ||||||
|     // Install FVB Extension Protocol on the same handle |  | ||||||
|     // |  | ||||||
|     Status = gBS->InstallMultipleProtocolInterfaces ( |     Status = gBS->InstallMultipleProtocolInterfaces ( | ||||||
|                     &FwbHandle, |                     &FwbHandle, | ||||||
|                     &gEfiFvbExtensionProtocolGuid, |  | ||||||
|                     &FvbDevice->FvbExtension, |  | ||||||
|                     &gEfiAlternateFvBlockGuid, |                     &gEfiAlternateFvBlockGuid, | ||||||
|                     NULL, |                     NULL, | ||||||
|                     NULL |                     NULL | ||||||
| @@ -1533,13 +1370,5 @@ Returns: | |||||||
|     FvHob.Raw = GET_NEXT_HOB (FvHob); |     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; |   return EFI_SUCCESS; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -31,7 +31,6 @@ Abstract: | |||||||
| #include <Guid/EventGroup.h> | #include <Guid/EventGroup.h> | ||||||
| #include <Guid/FirmwareFileSystem2.h> | #include <Guid/FirmwareFileSystem2.h> | ||||||
| #include <Guid/SystemNvDataGuid.h> | #include <Guid/SystemNvDataGuid.h> | ||||||
| #include <Protocol/FvbExtension.h> |  | ||||||
| #include <Protocol/FirmwareVolumeBlock.h> | #include <Protocol/FirmwareVolumeBlock.h> | ||||||
| #include <Guid/AlternateFvBlock.h> | #include <Guid/AlternateFvBlock.h> | ||||||
| #include <Protocol/DevicePath.h> | #include <Protocol/DevicePath.h> | ||||||
|   | |||||||
| @@ -63,7 +63,6 @@ | |||||||
|   gEfiAlternateFvBlockGuid                      # ALWAYS_CONSUME |   gEfiAlternateFvBlockGuid                      # ALWAYS_CONSUME | ||||||
|  |  | ||||||
| [Protocols] | [Protocols] | ||||||
|   gEfiFvbExtensionProtocolGuid                  # PROTOCOL ALWAYS_PRODUCED |  | ||||||
|   gEfiFirmwareVolumeBlockProtocolGuid           # PROTOCOL ALWAYS_PRODUCED |   gEfiFirmwareVolumeBlockProtocolGuid           # PROTOCOL ALWAYS_PRODUCED | ||||||
|   gEfiDevicePathProtocolGuid                    # PROTOCOL SOMETIMES_PRODUCED |   gEfiDevicePathProtocolGuid                    # PROTOCOL SOMETIMES_PRODUCED | ||||||
|  |  | ||||||
| @@ -85,4 +84,5 @@ | |||||||
|   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase |   gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase | ||||||
|  |  | ||||||
| [depex] | [depex] | ||||||
|   TRUE |   TRUE | ||||||
|  |    | ||||||
| @@ -58,7 +58,6 @@ typedef struct { | |||||||
|   FV_DEVICE_PATH                      DevicePath; |   FV_DEVICE_PATH                      DevicePath; | ||||||
|   UINTN                               Instance; |   UINTN                               Instance; | ||||||
|   EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  FwVolBlockInstance; |   EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL  FwVolBlockInstance; | ||||||
|   EFI_FVB_EXTENSION_PROTOCOL          FvbExtension; |  | ||||||
| } EFI_FW_VOL_BLOCK_DEVICE; | } EFI_FW_VOL_BLOCK_DEVICE; | ||||||
|  |  | ||||||
| EFI_STATUS | 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 | #endif | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user