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
#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
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
\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
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
//\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
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