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