3 Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
4 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
13 PEIM to build GUIDed HOBs for platform specific flash map
18 // The package level header files this module uses
22 #include <WinNtPeim.h>
24 // The protocols, PPI and GUID defintions for this module
26 #include <Ppi/NtFwh.h>
28 #include <Library/DebugLib.h>
29 #include <Library/PcdLib.h>
30 #include <Library/PeiServicesLib.h>
34 PeimInitializeFlashMap (
35 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
36 IN EFI_PEI_SERVICES
**PeiServices
41 Build GUIDed HOBs for platform specific flash map
44 FfsHeader - A pointer to the EFI_FFS_FILE_HEADER structure.
45 PeiServices - General purpose services available to every PEIM.
51 // TODO: EFI_SUCCESS - add return value to function comment
55 EFI_PHYSICAL_ADDRESS FdBase
;
57 EFI_PEI_PPI_DESCRIPTOR
*PpiDescriptor
;
59 DEBUG ((EFI_D_ERROR
, "NT 32 Flash Map PEIM Loaded\n"));
62 // Get the Fwh Information PPI
64 Status
= PeiServicesLocatePpi (
65 &gNtFwhPpiGuid
, // GUID
67 &PpiDescriptor
, // EFI_PEI_PPI_DESCRIPTOR
68 (VOID
**)&NtFwhPpi
// PPI
70 ASSERT_EFI_ERROR (Status
);
73 // Assume that FD0 contains the Flash map.
75 Status
= NtFwhPpi
->NtFwh (0, &FdBase
, &FdSize
);
76 if (EFI_ERROR (Status
)) {
81 // Relocate the base of FV region
83 if (FdBase
>= BASE_4GB
) {
84 PcdSet64 (PcdFlashNvStorageVariableBase64
, PcdGet32 (PcdWinNtFlashNvStorageVariableBase
) + (UINT64
) FdBase
);
85 PcdSet64 (PcdFlashNvStorageFtwWorkingBase64
, PcdGet32 (PcdWinNtFlashNvStorageFtwWorkingBase
) + (UINT64
) FdBase
);
86 PcdSet64 (PcdFlashNvStorageFtwSpareBase64
, PcdGet32 (PcdWinNtFlashNvStorageFtwSpareBase
) + (UINT64
) FdBase
);
88 PcdSet32 (PcdFlashNvStorageVariableBase
, PcdGet32 (PcdWinNtFlashNvStorageVariableBase
) + (UINT32
) FdBase
);
89 PcdSet32 (PcdFlashNvStorageFtwWorkingBase
, PcdGet32 (PcdWinNtFlashNvStorageFtwWorkingBase
) + (UINT32
) FdBase
);
90 PcdSet32 (PcdFlashNvStorageFtwSpareBase
, PcdGet32 (PcdWinNtFlashNvStorageFtwSpareBase
) + (UINT32
) FdBase
);