123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /** @file
- Copyright (c) 2004 - 2020, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- Module Name:
- MonoStatusCode.c
- Abstract:
- PEIM to provide the status code functionality, to aid in system debug.
- It includes output to 0x80 port and/or to serial port.
- This PEIM is monolithic. Different platform should provide different library.
- --*/
- #include "MonoStatusCode.h"
- #include "PlatformStatusCode.h"
- #define CMOS_EFI_DEBUG 0x14
- //
- // Module globals
- //
- EFI_PEI_PROGRESS_CODE_PPI mStatusCodePpi = { PlatformReportStatusCode };
- EFI_PEI_PPI_DESCRIPTOR mPpiListStatusCode = {
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
- &gEfiPeiStatusCodePpiGuid,
- &mStatusCodePpi
- };
- //
- // Function implementations
- //
- /**
- Translate from a DXE status code interface into a PEI-callable
- interface, making the PEI the least common denominator..
- Same as DXE ReportStatusCode RT service
- **/
- EFI_STATUS
- EFIAPI
- TranslateDxeStatusCodeToPeiStatusCode (
- IN EFI_STATUS_CODE_TYPE CodeType,
- IN EFI_STATUS_CODE_VALUE Value,
- IN UINT32 Instance,
- IN EFI_GUID * CallerId,
- IN EFI_STATUS_CODE_DATA * Data OPTIONAL
- )
- {
- return PlatformReportStatusCode (NULL, CodeType, Value, Instance, CallerId, Data);
- }
- /**
- Build a hob describing the status code listener that has been installed.
- This will be used by DXE code until a runtime status code listener is
- installed.
- @param PeiServices General purpose services available to every PEIM.
- @retval Status EFI_SUCCESS if the interface could be successfully
- installed
- **/
- EFI_STATUS
- EFIAPI
- InitializeDxeReportStatusCode (
- IN const EFI_PEI_SERVICES **PeiServices
- )
- {
- EFI_STATUS Status = EFI_UNSUPPORTED;
- VOID *Instance;
- VOID *Result;
- Instance = (VOID *) (UINTN) TranslateDxeStatusCodeToPeiStatusCode;
- Result = BuildGuidDataHob (
- &gEfiStatusCodeRuntimeProtocolGuid,
- &Instance,
- sizeof (VOID *)
- );
- if (Result != NULL) {
- Status = EFI_SUCCESS;
- }
- return Status;
- }
- /**
- Initialize the platform status codes and publish the platform status code
- PPI.
- @param FfsHeader FV this PEIM was loaded from.
- @param PeiServices General purpose services available to every PEIM.
- @retval Status EFI_SUCCESS
- **/
- VOID
- EFIAPI
- InitializeMonoStatusCode (
- IN EFI_FFS_FILE_HEADER *FfsHeader,
- IN CONST EFI_PEI_SERVICES **PeiServices
- )
- {
- EFI_STATUS Status;
- //
- // Initialize status code listeners.
- //
- PlatformInitializeStatusCode (FfsHeader, PeiServices);
- //
- // Publish the status code capability to other modules
- //
- Status = (*PeiServices)->InstallPpi (PeiServices, &mPpiListStatusCode);
- ASSERT_EFI_ERROR (Status);
- DEBUG ((DEBUG_ERROR, "\nMono Status Code PEIM Loaded\n"));
- return ;
- }
|