123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /** @file
- @copyright
- Copyright 2017 - 2021 Intel Corporation. <BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #include "ExStatusCodeHandlerPei.h"
- EFI_PEI_EX_RSC_HANDLER_PPI mExStatusCodeHandlerPpi = {
- RegisterExStatusCodeHandler
- };
- EFI_PEI_PPI_DESCRIPTOR mExStatusCodeHandlerPpiList[] = {
- {
- EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
- &gEfiPeiExStatusCodeHandlerPpiGuid,
- &mExStatusCodeHandlerPpi
- }
- };
- /**
- Registers ExSerialStatusCodeReportWorker as callback function for ReportStatusCode() notification.
- @param[in] PeiServices Pointer to PEI Services Table.
- @retval EFI_SUCCESS Function was successfully registered.
- @retval EFI_INVALID_PARAMETER The callback function was NULL.
- @retval EFI_OUT_OF_RESOURCES The internal buffer ran out of space. No more functions can be
- registered.
- @retval EFI_ALREADY_STARTED The function was already registered. It can't be registered again.
- **/
- EFI_STATUS
- EFIAPI
- RegisterExStatusCodeHandler (
- IN CONST EFI_PEI_SERVICES **PeiServices
- )
- {
- EFI_STATUS Status;
- EFI_PEI_RSC_HANDLER_PPI *RscHandlerPpi;
- Status = PeiServicesLocatePpi (
- &gEfiPeiRscHandlerPpiGuid,
- 0,
- NULL,
- (VOID **) &RscHandlerPpi
- );
- ASSERT_EFI_ERROR (Status);
- if (PcdGetBool (PcdStatusCodeUseSerial)) {
- Status = RscHandlerPpi->Register (ExSerialStatusCodeReportWorker);
- if (Status != EFI_ALREADY_STARTED) {
- ASSERT_EFI_ERROR (Status);
- }
- }
- return Status;
- }
- /**
- Entry point of EX Status Code PEIM.
- This function is the entry point of this EX Status Code PEIM.
- It initializes serial port status code handler with policy features.
- @param FileHandle Handle of the file being invoked.
- @param PeiServices Describes the list of possible PEI Services.
- @retval EFI_SUCESS The entry point of PEIM executes successfully.
- **/
- EFI_STATUS
- EFIAPI
- ExStatusCodeHandlerPeiEntry (
- IN EFI_PEI_FILE_HANDLE FileHandle,
- IN CONST EFI_PEI_SERVICES **PeiServices
- )
- {
- EFI_STATUS Status;
- UINT32 DebugPrintErrorLevel;
- //
- // Dispatch initialization request to sub-statuscode-devices.
- //
- Status = SerialPortInitialize();
- ASSERT_EFI_ERROR (Status);
- //
- // If serial logging is disabled. set PcdStatusCodeUseSerial to FALSE.
- //
- DebugPrintErrorLevel = GetDebugPrintErrorLevel ();
- if (DebugPrintErrorLevel == 0) {
- Status = PcdSetBoolS (PcdStatusCodeUseSerial, FALSE);
- ASSERT_EFI_ERROR (Status);
- }
- Status = RegisterExStatusCodeHandler (PeiServices);
- ASSERT_EFI_ERROR (Status);
- //
- // Install Report Status Code Handler PPI
- //
- Status = PeiServicesInstallPpi (mExStatusCodeHandlerPpiList);
- ASSERT_EFI_ERROR (Status);
- return EFI_SUCCESS;
- }
|