Skip to content

Commit

Permalink
Hisilicon/D0x: Unify FlashFvbDxe driver
Browse files Browse the repository at this point in the history
Add PcdSFCMEM0BaseAddress and switch three 32-bit macro
PcdFlashNvStorage of D05/D03 to 64-bit for unifying FlashFvbDxe
driver.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ming Huang <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>
  • Loading branch information
Ming Huang authored and Leif Lindholm committed Aug 21, 2018
1 parent 15fe242 commit 4236582
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 20 deletions.
6 changes: 3 additions & 3 deletions Platform/Hisilicon/D03/D03.fdf
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ FILE = Platform/Hisilicon/D03/bl1.bin
FILE = Platform/Hisilicon/D03/fip.bin

0x002D0000|0x0000E000
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
DATA = {
## This is the EFI_FIRMWARE_VOLUME_HEADER
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Expand Down Expand Up @@ -97,7 +97,7 @@ DATA = {
}

0x002DE000|0x00002000
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
#NV_FTW_WORKING
DATA = {
# EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid =
Expand All @@ -110,7 +110,7 @@ DATA = {
}

0x002E0000|0x00010000
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize

0x002F0000|0x00010000
FILE = Platform/Hisilicon/D0x-CustomData.Fv
Expand Down
6 changes: 3 additions & 3 deletions Platform/Hisilicon/D05/D05.fdf
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ FILE = Platform/Hisilicon/D05/bl1.bin
FILE = Platform/Hisilicon/D05/fip.bin

0x002D0000|0x0000E000
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
DATA = {
## This is the EFI_FIRMWARE_VOLUME_HEADER
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
Expand Down Expand Up @@ -97,7 +97,7 @@ DATA = {
}

0x002DE000|0x00002000
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
#NV_FTW_WORKING
DATA = {
# EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER->Signature = gEdkiiWorkingBlockSignatureGuid =
Expand All @@ -110,7 +110,7 @@ DATA = {
}

0x002E0000|0x00010000
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64|gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize

0x002F0000|0x00010000
FILE = Platform/Hisilicon/D0x-CustomData.Fv
Expand Down
22 changes: 11 additions & 11 deletions Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ FLASH_DESCRIPTION mFlashDevices[FLASH_DEVICE_COUNT] =
{
{
// UEFI Variable Services non-volatile storage
0xa4000000,
FixedPcdGet32(PcdFlashNvStorageVariableBase),
FixedPcdGet64 (PcdSFCMEM0BaseAddress),
FixedPcdGet64 (PcdFlashNvStorageVariableBase64),
0x20000,
SIZE_64KB,
{0xCC2CBF29, 0x1498, 0x4CDD, {0x81, 0x71, 0xF8, 0xB6, 0xB4, 0x1D, 0x09, 0x09}}
Expand Down Expand Up @@ -145,18 +145,18 @@ InitializeFvAndVariableStoreHeaders (
Headers = AllocateZeroPool(HeadersLength);

// FirmwareVolumeHeader->FvLength is declared to have the Variable area AND the FTW working area AND the FTW Spare contiguous.
ASSERT(PcdGet32(PcdFlashNvStorageVariableBase) + PcdGet32(PcdFlashNvStorageVariableSize) == PcdGet32(PcdFlashNvStorageFtwWorkingBase));
ASSERT(PcdGet32(PcdFlashNvStorageFtwWorkingBase) + PcdGet32(PcdFlashNvStorageFtwWorkingSize) == PcdGet32(PcdFlashNvStorageFtwSpareBase));
ASSERT(PcdGet64(PcdFlashNvStorageVariableBase64) + PcdGet32(PcdFlashNvStorageVariableSize) == PcdGet64(PcdFlashNvStorageFtwWorkingBase64));
ASSERT(PcdGet64(PcdFlashNvStorageFtwWorkingBase64) + PcdGet32(PcdFlashNvStorageFtwWorkingSize) == PcdGet64(PcdFlashNvStorageFtwSpareBase64));

// Check if the size of the area is at least one block size
ASSERT((PcdGet32(PcdFlashNvStorageVariableSize) > 0) && ((UINT32)PcdGet32(PcdFlashNvStorageVariableSize) / Instance->Media.BlockSize > 0));
ASSERT((PcdGet32(PcdFlashNvStorageFtwWorkingSize) > 0) && ((UINT32)PcdGet32(PcdFlashNvStorageFtwWorkingSize) / Instance->Media.BlockSize > 0));
ASSERT((PcdGet32(PcdFlashNvStorageFtwSpareSize) > 0) && ((UINT32)PcdGet32(PcdFlashNvStorageFtwSpareSize) / Instance->Media.BlockSize > 0));

// Ensure the Variable area Base Addresses are aligned on a block size boundaries
ASSERT((UINT32)PcdGet32(PcdFlashNvStorageVariableBase) % Instance->Media.BlockSize == 0);
ASSERT((UINT32)PcdGet32(PcdFlashNvStorageFtwWorkingBase) % Instance->Media.BlockSize == 0);
ASSERT((UINT32)PcdGet32(PcdFlashNvStorageFtwSpareBase) % Instance->Media.BlockSize == 0);
ASSERT((UINT32)PcdGet64(PcdFlashNvStorageVariableBase64) % Instance->Media.BlockSize == 0);
ASSERT((UINT32)PcdGet64(PcdFlashNvStorageFtwWorkingBase64) % Instance->Media.BlockSize == 0);
ASSERT((UINT32)PcdGet64(PcdFlashNvStorageFtwSpareBase64) % Instance->Media.BlockSize == 0);

//
// EFI_FIRMWARE_VOLUME_HEADER
Expand Down Expand Up @@ -855,10 +855,10 @@ FvbInitialize (
UINT32 FvbNumLba;

Instance->Initialized = TRUE;
mFlashNvStorageVariableBase = FixedPcdGet32 (PcdFlashNvStorageVariableBase);
mFlashNvStorageVariableBase = FixedPcdGet64 (PcdFlashNvStorageVariableBase64);

// Set the index of the first LBA for the FVB
Instance->StartLba = (PcdGet32 (PcdFlashNvStorageVariableBase) - Instance->RegionBaseAddress) / Instance->Media.BlockSize;
Instance->StartLba = (PcdGet64 (PcdFlashNvStorageVariableBase64) - Instance->RegionBaseAddress) / Instance->Media.BlockSize;

// Determine if there is a valid header at the beginning of the Flash
Status = ValidateFvHeader (Instance);
Expand Down Expand Up @@ -1208,8 +1208,8 @@ FlashFvbInitialize (
{
// Check if this Flash device contain the variable storage region
ContainVariableStorage =
(FlashDevices[Index].RegionBaseAddress <= (UINT32)PcdGet32 (PcdFlashNvStorageVariableBase)) &&
((UINT32)(PcdGet32 (PcdFlashNvStorageVariableBase) + PcdGet32 (PcdFlashNvStorageVariableSize)) <= FlashDevices[Index].RegionBaseAddress + FlashDevices[Index].Size);
(FlashDevices[Index].RegionBaseAddress <= PcdGet64 (PcdFlashNvStorageVariableBase64)) &&
((PcdGet64 (PcdFlashNvStorageVariableBase64) + PcdGet32 (PcdFlashNvStorageVariableSize)) <= FlashDevices[Index].RegionBaseAddress + FlashDevices[Index].Size);

Status = FlashCreateInstance (
FlashDevices[Index].DeviceBaseAddress,
Expand Down
7 changes: 4 additions & 3 deletions Silicon/Hisilicon/Drivers/FlashFvbDxe/FlashFvbDxe.inf
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,15 @@
gHisiSpiFlashProtocolGuid

[Pcd.common]
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingBase64
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareBase64
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize

gArmPlatformTokenSpaceGuid.PcdNorFlashCheckBlockLocked
gHisiTokenSpaceGuid.PcdSFCMEM0BaseAddress

[Depex]
gHisiSpiFlashProtocolGuid
Expand Down

0 comments on commit 4236582

Please sign in to comment.