1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/** @file
Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _PCH_RESET_PPI_H_
#define _PCH_RESET_PPI_H_
//
// Extern the GUID for PPI users.
//
extern EFI_GUID gPchResetPpiGuid;
extern EFI_GUID gPchResetCallbackPpiGuid;
//
// Forward reference for ANSI C compatibility
//
typedef struct _PCH_RESET_PPI PCH_RESET_PPI;
typedef struct _PCH_RESET_CALLBACK_PPI PCH_RESET_CALLBACK_PPI;
//
// Related Definitions
//
//
// PCH Reset Types
//
typedef enum {
ColdReset,
WarmReset,
ShutdownReset,
PowerCycleReset,
GlobalReset,
GlobalResetWithEc,
PchResetTypeMax
} PCH_RESET_TYPE;
//
// Member functions
//
/**
Execute Pch Reset from the host controller.
@param[in] This Pointer to the PCH_RESET_PPI instance.
@param[in] PchResetType Pch Reset Types which includes ColdReset, WarmReset, ShutdownReset,
PowerCycleReset, GlobalReset, GlobalResetWithEc
@retval EFI_SUCCESS Successfully completed.
@retval EFI_INVALID_PARAMETER If ResetType is invalid.
**/
typedef
EFI_STATUS
(EFIAPI *PCH_RESET_PPI_API) (
IN PCH_RESET_PPI *This,
IN PCH_RESET_TYPE PchResetType
);
/**
Execute call back function for Pch Reset.
@param[in] PchResetType Pch Reset Types which includes PowerCycle, Globalreset.
@retval EFI_SUCCESS The callback function has been done successfully
@retval EFI_NOT_FOUND Failed to find Pch Reset Callback ppi. Or, none of
callback ppi is installed.
@retval Others Do not do any reset from PCH
**/
typedef
EFI_STATUS
(EFIAPI *PCH_RESET_CALLBACK) (
IN PCH_RESET_TYPE PchResetType
);
/**
Interface structure to execute Pch Reset from the host controller.
**/
struct _PCH_RESET_PPI {
PCH_RESET_PPI_API Reset;
};
/**
This ppi is used to execute PCH Reset from the host controller.
The PCH Reset protocol and PCH Reset PPI implement the Intel (R) PCH Reset Interface
for DXE and PEI environments, respectively. If other drivers need to run their
callback function right before issuing the reset, they can install PCH Reset
Callback Protocol/PPI before PCH Reset DXE/PEI driver to achieve that.
**/
struct _PCH_RESET_CALLBACK_PPI {
PCH_RESET_CALLBACK ResetCallback;
};
#endif
|