TianoCore EDK2 master
Loading...
Searching...
No Matches
Reset.c
Go to the documentation of this file.
1
9#include "PeiMain.h"
10
24EFIAPI
26 IN CONST EFI_PEI_SERVICES **PeiServices
27 )
28{
29 EFI_STATUS Status;
30 EFI_PEI_RESET_PPI *ResetPpi;
31
32 //
33 // Attempt to use newer ResetSystem2(). If this returns, then ResetSystem2()
34 // is not available.
35 //
37
38 //
39 // Look for PEI Reset System PPI
40 //
41 Status = PeiServicesLocatePpi (
42 &gEfiPeiResetPpiGuid,
43 0,
44 NULL,
45 (VOID **)&ResetPpi
46 );
47 if (!EFI_ERROR (Status)) {
48 return ResetPpi->ResetSystem (PeiServices);
49 }
50
51 //
52 // Report Status Code that Reset PPI is not available.
53 //
55 EFI_ERROR_CODE | EFI_ERROR_MINOR,
56 (EFI_SOFTWARE_PEI_CORE | EFI_SW_PS_EC_RESET_NOT_AVAILABLE)
57 );
58
59 //
60 // No reset PPIs are available yet.
61 //
63}
64
78VOID
79EFIAPI
81 IN EFI_RESET_TYPE ResetType,
82 IN EFI_STATUS ResetStatus,
83 IN UINTN DataSize,
84 IN VOID *ResetData OPTIONAL
85 )
86{
87 EFI_STATUS Status;
88 EFI_PEI_RESET2_PPI *Reset2Ppi;
89
90 //
91 // Look for PEI Reset System 2 PPI
92 //
93 Status = PeiServicesLocatePpi (
94 &gEfiPeiReset2PpiGuid,
95 0,
96 NULL,
97 (VOID **)&Reset2Ppi
98 );
99 if (!EFI_ERROR (Status)) {
100 Reset2Ppi->ResetSystem (ResetType, ResetStatus, DataSize, ResetData);
101 return;
102 }
103
104 //
105 // Report Status Code that Reset2 PPI is not available.
106 //
108 EFI_ERROR_CODE | EFI_ERROR_MINOR,
109 (EFI_SOFTWARE_PEI_CORE | EFI_SW_PS_EC_RESET_NOT_AVAILABLE)
110 );
111}
UINT64 UINTN
EFI_STATUS EFIAPI PeiServicesLocatePpi(IN CONST EFI_GUID *Guid, IN UINTN Instance, IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, IN OUT VOID **Ppi)
VOID EFIAPI PeiResetSystem2(IN EFI_RESET_TYPE ResetType, IN EFI_STATUS ResetStatus, IN UINTN DataSize, IN VOID *ResetData OPTIONAL)
Definition: Reset.c:80
EFI_STATUS EFIAPI PeiResetSystem(IN CONST EFI_PEI_SERVICES **PeiServices)
Definition: Reset.c:25
#define NULL
Definition: Base.h:319
#define CONST
Definition: Base.h:259
#define VOID
Definition: Base.h:269
#define IN
Definition: Base.h:279
#define REPORT_STATUS_CODE(Type, Value)
#define EFI_NOT_AVAILABLE_YET
Definition: PiMultiPhase.h:54
#define EFI_SW_PS_EC_RESET_NOT_AVAILABLE
#define EFI_ERROR_MINOR
Definition: PiStatusCode.h:59
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
#define EFI_SUCCESS
Definition: UefiBaseType.h:112
EFI_RESET_TYPE
@ EfiResetCold