/** @file
SiliconPolicyInit PEIM.
This PEIM initializes silicon policy with the defaults from the silicon provider.
We publish a PPI that is consumed by a shim library instance that provides the functions used by the
common MinPlatformPkg PolicyInit pre and post memory code.
@copyright
Copyright 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
#include
#include
#include
#include
STATIC SILICON_POLICY_INIT_LIB_PPI mSiliconPolicyInitLibPpi = {
SiliconPolicyInitPreMem,
SiliconPolicyDonePreMem,
SiliconPolicyInitPostMem,
SiliconPolicyDonePostMem
};
STATIC EFI_PEI_PPI_DESCRIPTOR mSiliconPolicyInitLibPpiDescriptor = {
EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
&gSiliconPolicyInitLibInterfaceGuid,
&mSiliconPolicyInitLibPpi
};
/**
Entry point function for the PEIM
@param FileHandle Handle of the file being invoked.
@param PeiServices Describes the list of possible PEI Services.
@return EFI_SUCCESS If we installed our PPI
**/
EFI_STATUS
EFIAPI
SiliconPolicyInitPreAndPostMemPeimEntry (
IN EFI_PEI_FILE_HANDLE FileHandle,
IN CONST EFI_PEI_SERVICES **PeiServices
)
{
EFI_STATUS Status = EFI_SUCCESS;
//
// Just produce our PPI
//
Status = PeiServicesInstallPpi (&mSiliconPolicyInitLibPpiDescriptor);
if (EFI_ERROR (Status)) {
DEBUG ((EFI_D_ERROR, "EntryPoint: failed to register PPI!\n"));
ASSERT_EFI_ERROR (Status);
return Status;
}
return Status;
}