2 PEIM to build GUIDed HOBs for platform specific flash map
4 Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
5 Portions copyright (c) 2011, Apple Inc. All rights reserved.
6 SPDX-License-Identifier: BSD-2-Clause-Patent
13 #include <Guid/SystemNvDataGuid.h>
14 #include <Ppi/EmuThunk.h>
16 #include <Library/DebugLib.h>
17 #include <Library/PeimEntryPoint.h>
18 #include <Library/HobLib.h>
19 #include <Library/PeiServicesLib.h>
20 #include <Library/PeiServicesTablePointerLib.h>
21 #include <Library/BaseMemoryLib.h>
22 #include <Library/PcdLib.h>
26 PeimInitializeFlashMap (
27 IN EFI_PEI_FILE_HANDLE FileHandle
,
28 IN CONST EFI_PEI_SERVICES
**PeiServices
33 Build GUIDed HOBs for platform specific flash map
36 FfsHeader - A pointer to the EFI_FFS_FILE_HEADER structure.
37 PeiServices - General purpose services available to every PEIM.
46 EFI_PEI_PPI_DESCRIPTOR
*PpiDescriptor
;
47 EFI_PHYSICAL_ADDRESS FdBase
;
48 EFI_PHYSICAL_ADDRESS FdFixUp
;
51 DEBUG ((DEBUG_ERROR
, "EmulatorPkg Flash Map PEIM Loaded\n"));
54 // Get the Fwh Information PPI
56 Status
= PeiServicesLocatePpi (
57 &gEmuThunkPpiGuid
, // GUID
59 &PpiDescriptor
, // EFI_PEI_PPI_DESCRIPTOR
60 (VOID
**)&Thunk
// PPI
62 ASSERT_EFI_ERROR (Status
);
65 // Assume that FD0 contains the Flash map.
67 Status
= Thunk
->FirmwareDevices (0, &FdBase
, &FdSize
, &FdFixUp
);
68 if (EFI_ERROR (Status
)) {
72 PcdSet64S (PcdFlashNvStorageVariableBase64
, PcdGet64 (PcdEmuFlashNvStorageVariableBase
) + FdFixUp
);
73 PcdSet64S (PcdFlashNvStorageFtwWorkingBase64
, PcdGet64 (PcdEmuFlashNvStorageFtwWorkingBase
) + FdFixUp
);
74 PcdSet64S (PcdFlashNvStorageFtwSpareBase64
, PcdGet64 (PcdEmuFlashNvStorageFtwSpareBase
) + FdFixUp
);