]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/WinNtFlashMapPei/FlashMap.c
Nt32Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Nt32Pkg / WinNtFlashMapPei / FlashMap.c
CommitLineData
6ae81428 1/**@file\r
56a71b55 2\r
8f2a5f80 3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
4e502412 4(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
9d2eedba 5SPDX-License-Identifier: BSD-2-Clause-Patent\r
56a71b55 6\r
7Module Name:\r
8\r
9 FlashMap.c\r
10 \r
11Abstract:\r
12\r
13 PEIM to build GUIDed HOBs for platform specific flash map\r
14\r
6ae81428 15**/\r
56a71b55 16\r
56a71b55 17//\r
18// The package level header files this module uses\r
19//\r
20#include <PiPei.h>\r
6d3aa33e 21\r
56a71b55 22#include <WinNtPeim.h>\r
23//\r
24// The protocols, PPI and GUID defintions for this module\r
25//\r
26#include <Ppi/NtFwh.h>\r
6d3aa33e 27\r
56a71b55 28#include <Library/DebugLib.h>\r
56a71b55 29#include <Library/PcdLib.h>\r
6d3aa33e 30#include <Library/PeiServicesLib.h>\r
56a71b55 31\r
32EFI_STATUS\r
33EFIAPI\r
34PeimInitializeFlashMap (\r
35 IN EFI_FFS_FILE_HEADER *FfsHeader,\r
36 IN EFI_PEI_SERVICES **PeiServices\r
37 )\r
38/*++\r
39\r
40Routine Description:\r
41 Build GUIDed HOBs for platform specific flash map\r
42 \r
43Arguments:\r
44 FfsHeader - A pointer to the EFI_FFS_FILE_HEADER structure.\r
45 PeiServices - General purpose services available to every PEIM.\r
46 \r
47Returns:\r
48 EFI_STATUS\r
49\r
50--*/\r
51// TODO: EFI_SUCCESS - add return value to function comment\r
52{\r
53 EFI_STATUS Status;\r
54 NT_FWH_PPI *NtFwhPpi;\r
56a71b55 55 EFI_PHYSICAL_ADDRESS FdBase;\r
56 UINT64 FdSize;\r
6d3aa33e 57 EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor;\r
56a71b55 58\r
59 DEBUG ((EFI_D_ERROR, "NT 32 Flash Map PEIM Loaded\n"));\r
60\r
56a71b55 61 //\r
62 // Get the Fwh Information PPI\r
63 //\r
64 Status = PeiServicesLocatePpi (\r
65 &gNtFwhPpiGuid, // GUID\r
66 0, // INSTANCE\r
67 &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR\r
0b94e319 68 (VOID**)&NtFwhPpi // PPI\r
56a71b55 69 );\r
70 ASSERT_EFI_ERROR (Status);\r
71\r
72 //\r
73 // Assume that FD0 contains the Flash map.\r
74 //\r
75 Status = NtFwhPpi->NtFwh (0, &FdBase, &FdSize);\r
76 if (EFI_ERROR (Status)) {\r
77 return Status;\r
78 }\r
79\r
80 //\r
6d3aa33e 81 // Relocate the base of FV region \r
82 // \r
4e502412
CS
83 if (FdBase >= BASE_4GB) {\r
84 PcdSet64 (PcdFlashNvStorageVariableBase64, PcdGet32 (PcdWinNtFlashNvStorageVariableBase) + (UINT64) FdBase);\r
85 PcdSet64 (PcdFlashNvStorageFtwWorkingBase64, PcdGet32 (PcdWinNtFlashNvStorageFtwWorkingBase) + (UINT64) FdBase);\r
86 PcdSet64 (PcdFlashNvStorageFtwSpareBase64, PcdGet32 (PcdWinNtFlashNvStorageFtwSpareBase) + (UINT64) FdBase);\r
87 } else {\r
88 PcdSet32 (PcdFlashNvStorageVariableBase, PcdGet32 (PcdWinNtFlashNvStorageVariableBase) + (UINT32) FdBase);\r
89 PcdSet32 (PcdFlashNvStorageFtwWorkingBase, PcdGet32 (PcdWinNtFlashNvStorageFtwWorkingBase) + (UINT32) FdBase);\r
90 PcdSet32 (PcdFlashNvStorageFtwSpareBase, PcdGet32 (PcdWinNtFlashNvStorageFtwSpareBase) + (UINT32) FdBase);\r
91 }\r
56a71b55 92\r
93 return EFI_SUCCESS;\r
94}\r
95\r