949f388f |
1 | /*++ @file\r |
2 | PEIM to build GUIDed HOBs for platform specific flash map\r |
3 | \r |
4 | Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r |
5 | Portions copyright (c) 2011, Apple Inc. All rights reserved.\r |
e3ba31da |
6 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
949f388f |
7 | \r |
8 | **/\r |
9 | \r |
10 | \r |
11 | #include "PiPei.h"\r |
12 | \r |
13 | #include <Guid/SystemNvDataGuid.h>\r |
14 | #include <Ppi/EmuThunk.h>\r |
15 | \r |
16 | #include <Library/DebugLib.h>\r |
17 | #include <Library/PeimEntryPoint.h>\r |
18 | #include <Library/HobLib.h>\r |
19 | #include <Library/PeiServicesLib.h>\r |
20 | #include <Library/PeiServicesTablePointerLib.h>\r |
21 | #include <Library/BaseMemoryLib.h>\r |
22 | #include <Library/PcdLib.h>\r |
23 | \r |
24 | EFI_STATUS\r |
25 | EFIAPI\r |
26 | PeimInitializeFlashMap (\r |
27 | IN EFI_PEI_FILE_HANDLE FileHandle,\r |
28 | IN CONST EFI_PEI_SERVICES **PeiServices\r |
29 | )\r |
30 | /*++\r |
31 | \r |
32 | Routine Description:\r |
33 | Build GUIDed HOBs for platform specific flash map\r |
d18d8a1d |
34 | \r |
949f388f |
35 | Arguments:\r |
36 | FfsHeader - A pointer to the EFI_FFS_FILE_HEADER structure.\r |
37 | PeiServices - General purpose services available to every PEIM.\r |
d18d8a1d |
38 | \r |
949f388f |
39 | Returns:\r |
40 | EFI_STATUS\r |
41 | \r |
42 | **/\r |
43 | {\r |
44 | EFI_STATUS Status;\r |
45 | EMU_THUNK_PPI *Thunk;\r |
46 | EFI_PEI_PPI_DESCRIPTOR *PpiDescriptor;\r |
47 | EFI_PHYSICAL_ADDRESS FdBase;\r |
48 | EFI_PHYSICAL_ADDRESS FdFixUp;\r |
49 | UINT64 FdSize;\r |
50 | \r |
bb89ec1a |
51 | DEBUG ((EFI_D_ERROR, "EmulatorPkg Flash Map PEIM Loaded\n"));\r |
949f388f |
52 | \r |
53 | //\r |
54 | // Get the Fwh Information PPI\r |
55 | //\r |
56 | Status = PeiServicesLocatePpi (\r |
57 | &gEmuThunkPpiGuid, // GUID\r |
58 | 0, // INSTANCE\r |
59 | &PpiDescriptor, // EFI_PEI_PPI_DESCRIPTOR\r |
60 | (VOID **)&Thunk // PPI\r |
61 | );\r |
62 | ASSERT_EFI_ERROR (Status);\r |
63 | \r |
64 | //\r |
65 | // Assume that FD0 contains the Flash map.\r |
66 | //\r |
67 | Status = Thunk->FirmwareDevices (0, &FdBase, &FdSize, &FdFixUp);\r |
68 | if (EFI_ERROR (Status)) {\r |
69 | return Status;\r |
70 | }\r |
d18d8a1d |
71 | \r |
949f388f |
72 | PcdSet64 (PcdFlashNvStorageVariableBase64, PcdGet64 (PcdEmuFlashNvStorageVariableBase) + FdFixUp);\r |
73 | PcdSet64 (PcdFlashNvStorageFtwWorkingBase64, PcdGet64 (PcdEmuFlashNvStorageFtwWorkingBase) + FdFixUp);\r |
74 | PcdSet64 (PcdFlashNvStorageFtwSpareBase64, PcdGet64 (PcdEmuFlashNvStorageFtwSpareBase) + FdFixUp);\r |
75 | \r |
76 | return EFI_SUCCESS;\r |
77 | }\r |