]> git.proxmox.com Git - mirror_edk2.git/blame - Nt32Pkg/FvbServicesRuntimeDxe/FvbInfo.c
Nt32Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Nt32Pkg / FvbServicesRuntimeDxe / FvbInfo.c
CommitLineData
6ae81428 1/**@file\r
55e6660f 2\r
8f2a5f80 3Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
9d2eedba 4SPDX-License-Identifier: BSD-2-Clause-Patent\r
55e6660f 5\r
6Module Name:\r
7\r
8 FvbInfo.c\r
9\r
10Abstract:\r
11\r
12 Defines data structure that is the volume header found.These data is intent\r
13 to decouple FVB driver with FV header.\r
14\r
6ae81428 15**/\r
55e6660f 16\r
17//\r
18// The package level header files this module uses\r
19//\r
20#include <PiDxe.h>\r
21#include <WinNtDxe.h>\r
22//\r
23// The protocols, PPI and GUID defintions for this module\r
24//\r
25#include <Guid/EventGroup.h>\r
26#include <Guid/FirmwareFileSystem2.h>\r
27#include <Guid/SystemNvDataGuid.h>\r
55e6660f 28#include <Protocol/FirmwareVolumeBlock.h>\r
55e6660f 29#include <Protocol/DevicePath.h>\r
30//\r
31// The Library classes this module consumes\r
32//\r
33#include <Library/UefiLib.h>\r
34#include <Library/UefiDriverEntryPoint.h>\r
35#include <Library/BaseLib.h>\r
36#include <Library/DxeServicesTableLib.h>\r
37#include <Library/UefiRuntimeLib.h>\r
38#include <Library/DebugLib.h>\r
39#include <Library/HobLib.h>\r
40#include <Library/BaseMemoryLib.h>\r
41#include <Library/MemoryAllocationLib.h>\r
42#include <Library/UefiBootServicesTableLib.h>\r
6d3aa33e 43#include <Library/PcdLib.h>\r
55e6660f 44\r
45typedef struct {\r
46 UINT64 FvLength;\r
47 EFI_FIRMWARE_VOLUME_HEADER FvbInfo;\r
48 //\r
49 // EFI_FV_BLOCK_MAP_ENTRY ExtraBlockMap[n];//n=0\r
50 //\r
51 EFI_FV_BLOCK_MAP_ENTRY End[1];\r
52} EFI_FVB_MEDIA_INFO;\r
53\r
55e6660f 54EFI_FVB_MEDIA_INFO mPlatformFvbMediaInfo[] = {\r
55 //\r
56 // Recovery BOIS FVB\r
57 //\r
58 {\r
6d3aa33e 59 FixedPcdGet32 (PcdWinNtFlashFvRecoverySize),\r
55e6660f 60 {\r
61 {\r
62 0,\r
63 }, // ZeroVector[16]\r
64 EFI_FIRMWARE_FILE_SYSTEM2_GUID,\r
6d3aa33e 65 FixedPcdGet32 (PcdWinNtFlashFvRecoverySize),\r
55e6660f 66 EFI_FVH_SIGNATURE,\r
121ac757
LG
67 EFI_FVB2_MEMORY_MAPPED | \r
68 EFI_FVB2_READ_ENABLED_CAP |\r
55e6660f 69 EFI_FVB2_READ_STATUS |\r
70 EFI_FVB2_WRITE_ENABLED_CAP |\r
71 EFI_FVB2_WRITE_STATUS |\r
121ac757
LG
72 EFI_FVB2_ERASE_POLARITY |\r
73 EFI_FVB2_ALIGNMENT_16,\r
55e6660f 74 sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),\r
121ac757
LG
75 0xE947, // CheckSum\r
76 0, // ExtHeaderOffset\r
55e6660f 77 {\r
78 0,\r
79 }, // Reserved[1]\r
fc5f0e3f 80 2, // Revision\r
55e6660f 81 {\r
6d3aa33e 82 FixedPcdGet32 (PcdWinNtFlashFvRecoverySize)/FixedPcdGet32 (PcdWinNtFirmwareBlockSize),\r
83 FixedPcdGet32 (PcdWinNtFirmwareBlockSize),\r
55e6660f 84 }\r
85 },\r
86 {\r
87 0,\r
88 0\r
89 }\r
90 },\r
91 //\r
92 // Systen NvStorage FVB\r
93 //\r
94 {\r
6d3aa33e 95 FixedPcdGet32 (PcdFlashNvStorageVariableSize) +\r
96 FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) +\r
97 FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) +\r
98 FixedPcdGet32 (PcdWinNtFlashNvStorageEventLogSize),\r
55e6660f 99 {\r
100 {\r
101 0,\r
102 }, // ZeroVector[16]\r
627abd57 103 EFI_SYSTEM_NV_DATA_FV_GUID,\r
6d3aa33e 104 FixedPcdGet32 (PcdFlashNvStorageVariableSize) +\r
105 FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) +\r
106 FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) +\r
107 FixedPcdGet32 (PcdWinNtFlashNvStorageEventLogSize),\r
55e6660f 108 EFI_FVH_SIGNATURE,\r
121ac757
LG
109 EFI_FVB2_MEMORY_MAPPED | \r
110 EFI_FVB2_READ_ENABLED_CAP |\r
55e6660f 111 EFI_FVB2_READ_STATUS |\r
112 EFI_FVB2_WRITE_ENABLED_CAP |\r
113 EFI_FVB2_WRITE_STATUS |\r
121ac757
LG
114 EFI_FVB2_ERASE_POLARITY |\r
115 EFI_FVB2_ALIGNMENT_16,\r
55e6660f 116 sizeof (EFI_FIRMWARE_VOLUME_HEADER) + sizeof (EFI_FV_BLOCK_MAP_ENTRY),\r
121ac757
LG
117 0xFBFF, // CheckSum\r
118 0, // ExtHeaderOffset\r
55e6660f 119 {\r
120 0,\r
121 }, // Reserved[1]\r
fc5f0e3f 122 2, // Revision\r
55e6660f 123 {\r
6d3aa33e 124 (FixedPcdGet32 (PcdFlashNvStorageVariableSize) +\r
125 FixedPcdGet32 (PcdFlashNvStorageFtwWorkingSize) +\r
126 FixedPcdGet32 (PcdFlashNvStorageFtwSpareSize) +\r
127 FixedPcdGet32 (PcdWinNtFlashNvStorageEventLogSize)) / FixedPcdGet32 (PcdWinNtFirmwareBlockSize),\r
128 FixedPcdGet32 (PcdWinNtFirmwareBlockSize),\r
55e6660f 129 }\r
130 },\r
131 {\r
132 0,\r
133 0\r
134 }\r
135 }\r
136};\r
137\r
138EFI_STATUS\r
139GetFvbInfo (\r
140 IN UINT64 FvLength,\r
141 OUT EFI_FIRMWARE_VOLUME_HEADER **FvbInfo\r
142 )\r
143{\r
144 UINTN Index;\r
145\r
146 for (Index = 0; Index < sizeof (mPlatformFvbMediaInfo) / sizeof (EFI_FVB_MEDIA_INFO); Index += 1) {\r
147 if (mPlatformFvbMediaInfo[Index].FvLength == FvLength) {\r
148 *FvbInfo = &mPlatformFvbMediaInfo[Index].FvbInfo;\r
149 return EFI_SUCCESS;\r
150 }\r
151 }\r
152\r
153 return EFI_NOT_FOUND;\r
154}\r