3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
17 Build GUIDed HOBs for platform specific flash map.
25 #include "EfiFlashMap.h"
26 #include EFI_PROTOCOL_CONSUMER (FirmwareVolumeBlock)
27 #include EFI_GUID_DEFINITION (FlashMapHob)
28 #include EFI_GUID_DEFINITION (SystemNvDataGuid)
29 #include EFI_GUID_DEFINITION (FirmwareFileSystem)
31 EFI_GUID mFvBlockGuid
= EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID
;
32 EFI_GUID mFfsGuid
= EFI_FIRMWARE_FILE_SYSTEM_GUID
;
33 EFI_GUID mSystemDataGuid
= EFI_SYSTEM_NV_DATA_HOB_GUID
;
35 static EFI_FLASH_AREA_DATA mFlashAreaData
[] = {
39 { FixedPcdGet32 (PcdFlashNvStorageVariableBase
),
40 FixedPcdGet32 (PcdFlashNvStorageVariableSize
),
41 EFI_FLASH_AREA_SUBFV
| EFI_FLASH_AREA_MEMMAPPED_FV
,
42 EFI_FLASH_AREA_EFI_VARIABLES
},
45 // Boot block 2nd part
47 { FixedPcdGet32 (PcdFlashFvRecovery2Base
),
48 FixedPcdGet32 (PcdFlashFvRecovery2Size
),
49 EFI_FLASH_AREA_SUBFV
| EFI_FLASH_AREA_MEMMAPPED_FV
,
50 EFI_FLASH_AREA_FTW_BACKUP
},
55 { FixedPcdGet32 (PcdFlashFvRecoveryBase
),
56 FixedPcdGet32 (PcdFlashFvRecoverySize
),
57 EFI_FLASH_AREA_FV
| EFI_FLASH_AREA_MEMMAPPED_FV
,
58 EFI_FLASH_AREA_RECOVERY_BIOS
},
63 { FixedPcdGet32 (PcdFlashFvMainBase
),
64 FixedPcdGet32 (PcdFlashFvMainSize
),
65 EFI_FLASH_AREA_FV
| EFI_FLASH_AREA_MEMMAPPED_FV
,
66 EFI_FLASH_AREA_MAIN_BIOS
}
70 #define NUM_FLASH_AREA_DATA (ARRAY_SIZE (mFlashAreaData))
73 Build GUID HOBs for platform specific flash map.
75 @param FfsHeader Pointer this FFS file header.
76 @param PeiServices General purpose services available to every PEIM.
78 @retval EFI_SUCCESS Guid HOBs for platform flash map is built.
79 @retval Otherwise Failed to build the Guid HOB data.
83 PeimInitializeFlashMap (
84 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
85 IN EFI_PEI_SERVICES
**PeiServices
89 EFI_FLASH_AREA_HOB_DATA FlashHobData
;
92 // Build flash area entries as GUIDed HOBs.
94 for (Index
= 0; Index
< NUM_FLASH_AREA_DATA
; Index
++) {
95 ZeroMem(&FlashHobData
, sizeof (EFI_FLASH_AREA_HOB_DATA
));
97 FlashHobData
.AreaType
= mFlashAreaData
[Index
].AreaType
;
98 FlashHobData
.NumberOfEntries
= 1;
99 FlashHobData
.SubAreaData
.Attributes
= mFlashAreaData
[Index
].Attributes
;
100 FlashHobData
.SubAreaData
.Base
= (EFI_PHYSICAL_ADDRESS
) (UINTN
) mFlashAreaData
[Index
].Base
;
101 FlashHobData
.SubAreaData
.Length
= (EFI_PHYSICAL_ADDRESS
) (UINTN
) mFlashAreaData
[Index
].Length
;
103 switch (FlashHobData
.AreaType
) {
104 case EFI_FLASH_AREA_RECOVERY_BIOS
:
105 case EFI_FLASH_AREA_MAIN_BIOS
:
107 &FlashHobData
.AreaTypeGuid
,
112 &FlashHobData
.SubAreaData
.FileSystem
,
118 case EFI_FLASH_AREA_GUID_DEFINED
:
120 &FlashHobData
.AreaTypeGuid
,
125 &FlashHobData
.SubAreaData
.FileSystem
,
135 PeiBuildHobGuidData(PeiServices
,
136 &gEfiFlashMapHobGuid
,
138 sizeof (EFI_FLASH_AREA_HOB_DATA
)