3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
16 PEIM to provide the status code functionality, to aid in system debug.
17 It includes output to 0x80 port and/or to serial port.
18 This PEIM is monolithic. Different platform should provide different library.
22 #include "MonoStatusCode.h"
23 #include "PlatformStatusCode.h"
24 #define CMOS_EFI_DEBUG 0x14
29 EFI_PEI_PROGRESS_CODE_PPI mStatusCodePpi
= { PlatformReportStatusCode
};
31 EFI_PEI_PPI_DESCRIPTOR mPpiListStatusCode
= {
32 (EFI_PEI_PPI_DESCRIPTOR_PPI
| EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST
),
33 &gEfiPeiStatusCodePpiGuid
,
38 // Function implemenations
42 Translate from a DXE status code interface into a PEI-callable
43 interface, making the PEI the least common denominator..
45 Same as DXE ReportStatusCode RT service
51 TranslateDxeStatusCodeToPeiStatusCode (
52 IN EFI_STATUS_CODE_TYPE CodeType
,
53 IN EFI_STATUS_CODE_VALUE Value
,
55 IN EFI_GUID
* CallerId
,
56 IN EFI_STATUS_CODE_DATA
* Data OPTIONAL
59 return PlatformReportStatusCode (NULL
, CodeType
, Value
, Instance
, CallerId
, Data
);
63 Build a hob describing the status code listener that has been installed.
64 This will be used by DXE code until a runtime status code listener is
67 @param PeiServices General purpose services available to every PEIM.
69 @retval Status EFI_SUCCESS if the interface could be successfully
75 InitializeDxeReportStatusCode (
76 IN
const EFI_PEI_SERVICES
**PeiServices
79 EFI_STATUS Status
= EFI_UNSUPPORTED
;
85 Instance
= (VOID
*) (UINTN
) TranslateDxeStatusCodeToPeiStatusCode
;
87 Result
= BuildGuidDataHob (
88 &gEfiStatusCodeRuntimeProtocolGuid
,
99 Initialize the platform status codes and publish the platform status code
102 @param FfsHeader FV this PEIM was loaded from.
103 @param PeiServices General purpose services available to every PEIM.
105 @retval Status EFI_SUCCESS
110 InitializeMonoStatusCode (
111 IN EFI_FFS_FILE_HEADER
*FfsHeader
,
112 IN CONST EFI_PEI_SERVICES
**PeiServices
118 // Initialize status code listeners.
120 PlatformInitializeStatusCode (FfsHeader
, PeiServices
);
123 // Publish the status code capability to other modules
125 Status
= (*PeiServices
)->InstallPpi (PeiServices
, &mPpiListStatusCode
);
127 ASSERT_EFI_ERROR (Status
);
129 DEBUG ((DEBUG_ERROR
, "\nMono Status Code PEIM Loaded\n"));