]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CorebootModulePkg/CbSupportPei/CbSupportPei.c
CorebootPayloadPkg DSC: Add build option to disable deprecated APIs
[mirror_edk2.git] / CorebootModulePkg / CbSupportPei / CbSupportPei.c
index b3705fa4cdcfb6c7d6d374bf2e55f60b6daea6e6..9d5803449e2519b07f04e40e163f284d5fd15528 100755 (executable)
@@ -2,7 +2,7 @@
   This PEIM will parse coreboot table in memory and report resource information into pei core.\r
   This file contains the main entrypoint of the PEIM.\r
 \r
-Copyright (c) 2014 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -18,11 +18,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #define LEGACY_8259_MASK_REGISTER_SLAVE   0xA1\r
 \r
 EFI_MEMORY_TYPE_INFORMATION mDefaultMemoryTypeInformation[] = {\r
-  { EfiACPIReclaimMemory,   0x008 },\r
-  { EfiACPIMemoryNVS,       0x004 },\r
-  { EfiReservedMemoryType,  0x004 },\r
-  { EfiRuntimeServicesData, 0x080 },\r
-  { EfiRuntimeServicesCode, 0x080 },\r
+  { EfiACPIReclaimMemory,   FixedPcdGet32 (PcdMemoryTypeEfiACPIReclaimMemory) },\r
+  { EfiACPIMemoryNVS,       FixedPcdGet32 (PcdMemoryTypeEfiACPIMemoryNVS) },\r
+  { EfiReservedMemoryType,  FixedPcdGet32 (PcdMemoryTypeEfiReservedMemoryType) },\r
+  { EfiRuntimeServicesData, FixedPcdGet32 (PcdMemoryTypeEfiRuntimeServicesData) },\r
+  { EfiRuntimeServicesCode, FixedPcdGet32 (PcdMemoryTypeEfiRuntimeServicesCode) },\r
   { EfiMaxMemoryType,       0     }\r
 };\r
 \r
@@ -171,6 +171,8 @@ CbPeiEntryPoint (
   FRAME_BUFFER_INFO*   pFbInfo;\r
   ACPI_BOARD_INFO*     pAcpiBoardInfo;\r
   UINTN                PmCtrlRegBase, PmTimerRegBase, ResetRegAddress, ResetValue;\r
+  UINTN                PmEvtBase;\r
+  UINTN                PmGpeEnBase;\r
 \r
   LowMemorySize = 0;\r
   HighMemorySize = 0;\r
@@ -184,12 +186,16 @@ CbPeiEntryPoint (
 \r
   ASSERT (LowMemorySize > 0);\r
 \r
+  //\r
+  // Report lower 640KB of RAM. Attribute EFI_RESOURCE_ATTRIBUTE_TESTED  \r
+ // is intentionally omitted to prevent erasing of the coreboot header  \r
+ // record before it is processed by CbParseMemoryInfo.\r
+  //\r
   BuildResourceDescriptorHob (\r
     EFI_RESOURCE_SYSTEM_MEMORY,\r
     (\r
     EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
     EFI_RESOURCE_ATTRIBUTE_INITIALIZED |\r
-    EFI_RESOURCE_ATTRIBUTE_TESTED |\r
     EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |\r
     EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |\r
     EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |\r
@@ -323,7 +329,8 @@ CbPeiEntryPoint (
   if ((CbParseGetCbHeader (1, &pCbHeader) == RETURN_SUCCESS)\r
     && ((UINTN)pCbHeader > BASE_4KB)) {\r
     DEBUG((EFI_D_ERROR, "Actual Coreboot header: %p.\n", pCbHeader));\r
-    PcdSet32 (PcdCbHeaderPointer, (UINT32)(UINTN)pCbHeader);\r
+    Status = PcdSet32S (PcdCbHeaderPointer, (UINT32)(UINTN)pCbHeader);\r
+    ASSERT_EFI_ERROR (Status);\r
   }\r
 \r
   //\r
@@ -355,7 +362,7 @@ CbPeiEntryPoint (
   //\r
   // Create guid hob for acpi board information\r
   //\r
-  Status = CbParseFadtInfo (&PmCtrlRegBase, &PmTimerRegBase, &ResetRegAddress, &ResetValue);\r
+  Status = CbParseFadtInfo (&PmCtrlRegBase, &PmTimerRegBase, &ResetRegAddress, &ResetValue, &PmEvtBase, &PmGpeEnBase);\r
   ASSERT_EFI_ERROR (Status);\r
   pAcpiBoardInfo = NULL;\r
   pAcpiBoardInfo = BuildGuidHob (&gUefiAcpiBoardInfoGuid, sizeof (ACPI_BOARD_INFO));\r
@@ -364,6 +371,8 @@ CbPeiEntryPoint (
   pAcpiBoardInfo->PmTimerRegBase = (UINT64)PmTimerRegBase;\r
   pAcpiBoardInfo->ResetRegAddress = (UINT64)ResetRegAddress;\r
   pAcpiBoardInfo->ResetValue = (UINT8)ResetValue;\r
+  pAcpiBoardInfo->PmEvtBase = (UINT64)PmEvtBase;\r
+  pAcpiBoardInfo->PmGpeEnBase = (UINT64)PmGpeEnBase;\r
   DEBUG ((EFI_D_ERROR, "Create acpi board info guid hob\n"));\r
 \r
   //\r