From 202c5d55e5a5a1f065038cda8316ad36293aa6bb Mon Sep 17 00:00:00 2001 From: xgu3 Date: Thu, 10 Aug 2006 12:28:02 +0000 Subject: Modify FtwLite and Variable DXE driver to use PCD instead of FlashMap HOB git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1236 6f19259b-4bc3-4df7-8a09-765794883524 --- EdkNt32Pkg/Include/FlashLayout.h | 4 +- EdkNt32Pkg/Nt32.fpd | 153 ++++++++++++++++++++++++++++++++++- EdkNt32Pkg/Pei/FlashMap/FlashMap.c | 25 ++++-- EdkNt32Pkg/Pei/FlashMap/FlashMap.msa | 22 ++++- 4 files changed, 192 insertions(+), 12 deletions(-) (limited to 'EdkNt32Pkg') diff --git a/EdkNt32Pkg/Include/FlashLayout.h b/EdkNt32Pkg/Include/FlashLayout.h index 5a95961709..1a13f16c50 100644 --- a/EdkNt32Pkg/Include/FlashLayout.h +++ b/EdkNt32Pkg/Include/FlashLayout.h @@ -48,9 +48,9 @@ Abstract: #define EFI_WINNT_RUNTIME_UPDATABLE_FV_HEADER_LENGTH 0x48 -#define EFI_VARIABLE_STORE_OFFSET (EFI_WINNT_RUNTIME_UPDATABLE_OFFSET + EFI_WINNT_RUNTIME_UPDATABLE_FV_HEADER_LENGTH) +#define EFI_VARIABLE_STORE_OFFSET EFI_WINNT_RUNTIME_UPDATABLE_OFFSET -#define EFI_VARIABLE_STORE_LENGTH (0x00C000 - EFI_WINNT_RUNTIME_UPDATABLE_FV_HEADER_LENGTH) +#define EFI_VARIABLE_STORE_LENGTH 0x00C000 #define EFI_EVENT_LOG_OFFSET (EFI_VARIABLE_STORE_OFFSET + EFI_VARIABLE_STORE_LENGTH) diff --git a/EdkNt32Pkg/Nt32.fpd b/EdkNt32Pkg/Nt32.fpd index 64ed3aaa80..4e9ceb19a1 100644 --- a/EdkNt32Pkg/Nt32.fpd +++ b/EdkNt32Pkg/Nt32.fpd @@ -714,13 +714,53 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + PcdFlashNvStorageFtwSpareBase + 0x30000013 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + + + PcdFlashNvStorageFtwSpareSize + 0x30000014 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + + + PcdFlashNvStorageFtwWorkingBase + 0x30000010 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + + + PcdFlashNvStorageFtwWorkingSize + 0x30000011 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + PcdFlashNvStorageVariableBase 0x30000001 gEfiGenericPlatformTokenSpaceGuid UINT32 4 - 0 + 0x0 + + + PcdFlashNvStorageVariableSize + 0x30000002 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 PcdMaximumUnicodeStringLength @@ -892,7 +932,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. gEfiGenericPlatformTokenSpaceGuid UINT32 4 - 0 + 0x0 PcdMaximumUnicodeStringLength @@ -2672,6 +2712,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + @@ -2738,6 +2780,38 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 1 0xAF + + PcdFlashNvStorageFtwSpareBase + 0x30000013 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + + + PcdFlashNvStorageFtwSpareSize + 0x30000014 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + + + PcdFlashNvStorageFtwWorkingBase + 0x30000010 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + + + PcdFlashNvStorageFtwWorkingSize + 0x30000011 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + FV_RECOVERY @@ -2758,6 +2832,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + + @@ -2824,6 +2900,22 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 1 0xAF + + PcdFlashNvStorageVariableBase + 0x30000001 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + + + PcdFlashNvStorageVariableSize + 0x30000002 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + 0x0 + FV_RECOVERY @@ -6826,7 +6918,62 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 4 0 - 0 + 0x0 + + + + PcdFlashNvStorageVariableSize + 0x30000002 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + + 0 + 0x0 + + + + PcdFlashNvStorageFtwWorkingBase + 0x30000010 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + + 0 + 0x0 + + + + PcdFlashNvStorageFtwWorkingSize + 0x30000011 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + + 0 + 0x0 + + + + PcdFlashNvStorageFtwSpareBase + 0x30000013 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + + 0 + 0x0 + + + + PcdFlashNvStorageFtwSpareSize + 0x30000014 + gEfiGenericPlatformTokenSpaceGuid + UINT32 + 4 + + 0 + 0x0 diff --git a/EdkNt32Pkg/Pei/FlashMap/FlashMap.c b/EdkNt32Pkg/Pei/FlashMap/FlashMap.c index 54dc137a76..af8e13c9ff 100644 --- a/EdkNt32Pkg/Pei/FlashMap/FlashMap.c +++ b/EdkNt32Pkg/Pei/FlashMap/FlashMap.c @@ -176,6 +176,25 @@ Returns: FlashHobData.SubAreaData.Base = FdBase + (EFI_PHYSICAL_ADDRESS) (UINTN) mFlashAreaData[Index].Base; FlashHobData.SubAreaData.Length = (EFI_PHYSICAL_ADDRESS) (UINTN) mFlashAreaData[Index].Length; + // + // We also update a PCD entry so that any driver that depend on + // PCD entry will get the information. + // + if (FlashHobData.AreaType == EFI_FLASH_AREA_EFI_VARIABLES) { + PcdSet32 (PcdFlashNvStorageVariableBase, (UINT32) FlashHobData.SubAreaData.Base); + PcdSet32 (PcdFlashNvStorageVariableSize, (UINT32) FlashHobData.SubAreaData.Length); + } + + if (FlashHobData.AreaType == EFI_FLASH_AREA_FTW_STATE) { + PcdSet32 (PcdFlashNvStorageFtwWorkingBase, (UINT32) FlashHobData.SubAreaData.Base); + PcdSet32 (PcdFlashNvStorageFtwWorkingSize, (UINT32) FlashHobData.SubAreaData.Length); + } + + if (FlashHobData.AreaType == EFI_FLASH_AREA_FTW_BACKUP) { + PcdSet32 (PcdFlashNvStorageFtwSpareBase, (UINT32) FlashHobData.SubAreaData.Base); + PcdSet32 (PcdFlashNvStorageFtwSpareSize, (UINT32) FlashHobData.SubAreaData.Length); + } + switch (FlashHobData.AreaType) { case EFI_FLASH_AREA_RECOVERY_BIOS: case EFI_FLASH_AREA_MAIN_BIOS: @@ -202,12 +221,6 @@ Returns: &gEfiFirmwareVolumeBlockProtocolGuid, sizeof (EFI_GUID) ); - - // - // We also update a PCD entry so that any driver that depend on - // PCD entry PcdFlashNvStorageVariableBase will get the information. - // - PcdSet32 (PcdFlashNvStorageVariableBase, (UINT32) FlashHobData.SubAreaData.Base); break; default: diff --git a/EdkNt32Pkg/Pei/FlashMap/FlashMap.msa b/EdkNt32Pkg/Pei/FlashMap/FlashMap.msa index 2dba783f02..1a098cf057 100644 --- a/EdkNt32Pkg/Pei/FlashMap/FlashMap.msa +++ b/EdkNt32Pkg/Pei/FlashMap/FlashMap.msa @@ -1,4 +1,4 @@ - + normally a FIXED_AT_BUILD type as system memory map is fixed to BIOS. + + PcdFlashNvStorageFtwSpareBase + gEfiGenericPlatformTokenSpaceGuid + To get base address of the FTW spare block section in NV firmware volume. + + + PcdFlashNvStorageFtwSpareSize + gEfiGenericPlatformTokenSpaceGuid + To get size of the FTW spare block section in NV firmware volume. + + + PcdFlashNvStorageFtwWorkingBase + gEfiGenericPlatformTokenSpaceGuid + To get base address of the FTW working block section in NV firmware volume. + + + PcdFlashNvStorageFtwWorkingSize + gEfiGenericPlatformTokenSpaceGuid + To get size of the FTW working block section in NV firmware volume. + -- cgit v1.2.3