]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/PlatformInitPei/PlatformInfoInit.c
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / Vlv2TbltDevicePkg / PlatformInitPei / PlatformInfoInit.c
CommitLineData
3cbfba02
DW
1/** @file\r
2\r
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
4 \r\r
9dc8036d
MK
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
3cbfba02
DW
7 \r\r
8\r
9Module Name:\r
10\r
11 PlatformInfoInit.c\r
12\r
13Abstract:\r
14 Platform Info Driver.\r
15\r
16--*/\r
17\r
18#include "PlatformEarlyInit.h"\r
19\r
20#define LEN_64M 0x4000000\r
21\r
22//\r
23// Default PCI32 resource size\r
24//\r
25#define RES_MEM32_MIN_LEN 0x38000000\r
26\r
27#define RES_IO_BASE 0x0D00\r
28#define RES_IO_LIMIT 0xFFFF\r
29\r
30#define MemoryCeilingVariable L"MemCeil."\r
31\r
32EFI_STATUS\r
33CheckOsSelection (\r
34 IN CONST EFI_PEI_SERVICES **PeiServices,\r
35 IN SYSTEM_CONFIGURATION *SystemConfiguration\r
36 )\r
37{\r
38 EFI_STATUS Status;\r
39 EFI_PEI_READ_ONLY_VARIABLE2_PPI *Variable;\r
40 UINTN VariableSize;\r
41 EFI_OS_SELECTION_HOB *OsSelectionHob;\r
42 UINT8 OsSelection;\r
43 UINT8 *LpssDataHobPtr;\r
44 UINT8 *LpssDataVarPtr;\r
45 UINTN i;\r
46\r
47 Status = (*PeiServices)->LocatePpi (\r
48 PeiServices,\r
49 &gEfiPeiReadOnlyVariable2PpiGuid,\r
50 0,\r
51 NULL,\r
52 (void **)&Variable\r
53 );\r
54 if (!EFI_ERROR(Status)) {\r
55 VariableSize = sizeof (OsSelection);\r
56 Status = Variable->GetVariable (\r
57 Variable,\r
58 L"OsSelection",\r
59 &gOsSelectionVariableGuid,\r
60 NULL,\r
61 &VariableSize,\r
62 &OsSelection\r
63 );\r
64\r
65 if (!EFI_ERROR(Status) && (SystemConfiguration->ReservedO != OsSelection)) {\r
66 //\r
67 // Build HOB for OsSelection\r
68 //\r
69 OsSelectionHob = BuildGuidHob (&gOsSelectionVariableGuid, sizeof (EFI_OS_SELECTION_HOB));\r
70 ASSERT (OsSelectionHob != NULL);\r
71\r
72 OsSelectionHob->OsSelectionChanged = TRUE;\r
73 OsSelectionHob->OsSelection = OsSelection;\r
74 SystemConfiguration->ReservedO = OsSelectionHob->OsSelection;\r
75\r
76 //\r
2e182e30 77 // Load LPSS and SCC default configurations\r
3cbfba02
DW
78 //\r
79 OsSelectionHob->LpssData.LpsseMMCEnabled = FALSE;\r
80 OsSelectionHob->LpssData.LpssSdioEnabled = TRUE;\r
81 OsSelectionHob->LpssData.LpssSdcardEnabled = TRUE;\r
82 OsSelectionHob->LpssData.LpssSdCardSDR25Enabled = FALSE;\r
83 OsSelectionHob->LpssData.LpssSdCardDDR50Enabled = TRUE;\r
84 OsSelectionHob->LpssData.LpssMipiHsi = FALSE;\r
85 OsSelectionHob->LpssData.LpsseMMC45Enabled = TRUE;\r
86 OsSelectionHob->LpssData.LpsseMMC45DDR50Enabled = TRUE;\r
87 OsSelectionHob->LpssData.LpsseMMC45HS200Enabled = FALSE;\r
88 OsSelectionHob->LpssData.LpsseMMC45RetuneTimerValue = 8;\r
89 OsSelectionHob->LpssData.eMMCBootMode = 1; // Auto Detect\r
90\r
91\r
92 SystemConfiguration->Lpe = OsSelectionHob->Lpe;\r
93 SystemConfiguration->PchAzalia = SystemConfiguration->PchAzalia;\r
94 LpssDataHobPtr = &OsSelectionHob->LpssData.LpssPciModeEnabled;\r
95 LpssDataVarPtr = &SystemConfiguration->LpssPciModeEnabled;\r
96\r
97 for (i = 0; i < sizeof(EFI_PLATFORM_LPSS_DATA); i++) {\r
98 *LpssDataVarPtr = *LpssDataHobPtr;\r
99 LpssDataVarPtr++;\r
100 LpssDataHobPtr++;\r
101 }\r
102 }\r
103 }\r
104\r
105 return EFI_SUCCESS;\r
106}\r
107\r
108\r
109EFI_STATUS\r
110PlatformInfoUpdate (\r
111 IN CONST EFI_PEI_SERVICES **PeiServices,\r
112 IN OUT EFI_PLATFORM_INFO_HOB *PlatformInfoHob,\r
113 IN SYSTEM_CONFIGURATION *SystemConfiguration\r
114 )\r
115{\r
116 EFI_STATUS Status;\r
117 EFI_PEI_READ_ONLY_VARIABLE2_PPI *Variable;\r
118 UINTN VariableSize;\r
119 UINT32 MemoryCeiling;\r
120\r
121 //\r
122 // Checking PCI32 resource from previous boot to determine the memory ceiling\r
123 //\r
124 Status = (*PeiServices)->LocatePpi (\r
125 PeiServices,\r
126 &gEfiPeiReadOnlyVariable2PpiGuid,\r
127 0,\r
128 NULL,\r
129 (void **)&Variable\r
130 );\r
131 if (!EFI_ERROR(Status)) {\r
132 //\r
133 // Get the memory ceiling\r
134 //\r
135 VariableSize = sizeof(MemoryCeiling);\r
136 Status = Variable->GetVariable (\r
137 Variable,\r
138 MemoryCeilingVariable,\r
139 &gEfiGlobalVariableGuid,\r
140 NULL,\r
141 &VariableSize,\r
142 &MemoryCeiling\r
143 );\r
144 if(!EFI_ERROR(Status)) {\r
145 //\r
146 // Set the new PCI32 resource Base if the variable available\r
147 //\r
148 PlatformInfoHob->PciData.PciResourceMem32Base = MemoryCeiling;\r
149 PlatformInfoHob->MemData.MemMaxTolm = MemoryCeiling;\r
150 PlatformInfoHob->MemData.MemTolm = MemoryCeiling;\r
151\r
152 //\r
153 // Platform PCI MMIO Size in unit of 1MB\r
154 //\r
155 PlatformInfoHob->MemData.MmioSize = 0x1000 - (UINT16)(PlatformInfoHob->MemData.MemMaxTolm >> 20);\r
156 }\r
157 }\r
158\r
159 return EFI_SUCCESS;\r
160}\r
161\r
162/**\r
163 Initialize the platform related info hob according to the\r
164 pre-determine value or setup option\r
165\r
166 @retval EFI_SUCCESS Memory initialization completed successfully.\r
167 @retval Others All other error conditions encountered result in an ASSERT.\r
168**/\r
169EFI_STATUS\r
170InitializePlatform (\r
171 IN CONST EFI_PEI_SERVICES **PeiServices,\r
172 IN EFI_PLATFORM_INFO_HOB *PlatformInfoHob,\r
173 IN SYSTEM_CONFIGURATION *SystemConfiguration\r
174)\r
175{\r
176//\r
177// -- cchew10 need to update here.\r
178//\r
179 return EFI_SUCCESS;\r
180}\r
181\r