1 | /** @file
|
---|
2 | EFI SMM Control PPI definition.
|
---|
3 |
|
---|
4 | This PPI is used to initiate SMI/PMI activations. This protocol could be published by either:
|
---|
5 | - A processor driver to abstract the SMI/PMI IPI
|
---|
6 | - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an
|
---|
7 | Intel chipset
|
---|
8 | Because of the possibility of performing SMI or PMI IPI transactions, the ability to generate this
|
---|
9 | event from a platform chipset agent is an optional capability for both IA-32 and Itanium-based
|
---|
10 | systems.
|
---|
11 |
|
---|
12 | Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
|
---|
13 |
|
---|
14 | SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
15 |
|
---|
16 | **/
|
---|
17 |
|
---|
18 |
|
---|
19 | #ifndef _SMM_CONTROL_PPI_H_
|
---|
20 | #define _SMM_CONTROL_PPI_H_
|
---|
21 |
|
---|
22 | #define PEI_SMM_CONTROL_PPI_GUID \
|
---|
23 | { 0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5 }
|
---|
24 |
|
---|
25 | typedef struct _PEI_SMM_CONTROL_PPI PEI_SMM_CONTROL_PPI;
|
---|
26 |
|
---|
27 | /**
|
---|
28 | Invokes SMI activation from either the preboot or runtime environment.
|
---|
29 |
|
---|
30 | @param PeiServices General purpose services available to every PEIM.
|
---|
31 | @param This The PEI_SMM_CONTROL_PPI instance.
|
---|
32 | @param ArgumentBuffer The optional sized data to pass into the protocol activation.
|
---|
33 | @param ArgumentBufferSize The optional size of the data.
|
---|
34 | @param Periodic An optional mechanism to periodically repeat activation.
|
---|
35 | @param ActivationInterval An optional parameter to repeat at this period one
|
---|
36 | time or, if the Periodic Boolean is set, periodically.
|
---|
37 |
|
---|
38 | @retval EFI_SUCCESS The SMI/PMI has been engendered.
|
---|
39 | @retval EFI_DEVICE_ERROR The timing is unsupported.
|
---|
40 | @retval EFI_INVALID_PARAMETER The activation period is unsupported.
|
---|
41 | @retval EFI_NOT_STARTED The SMM base service has not been initialized.
|
---|
42 |
|
---|
43 | **/
|
---|
44 | typedef
|
---|
45 | EFI_STATUS
|
---|
46 | (EFIAPI *PEI_SMM_ACTIVATE) (
|
---|
47 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
48 | IN PEI_SMM_CONTROL_PPI * This,
|
---|
49 | IN OUT INT8 *ArgumentBuffer OPTIONAL,
|
---|
50 | IN OUT UINTN *ArgumentBufferSize OPTIONAL,
|
---|
51 | IN BOOLEAN Periodic OPTIONAL,
|
---|
52 | IN UINTN ActivationInterval OPTIONAL
|
---|
53 | );
|
---|
54 |
|
---|
55 | /**
|
---|
56 | Clears any system state that was created in response to the Active call.
|
---|
57 |
|
---|
58 | @param PeiServices General purpose services available to every PEIM.
|
---|
59 | @param This The PEI_SMM_CONTROL_PPI instance.
|
---|
60 | @param Periodic Optional parameter to repeat at this period one
|
---|
61 | time or, if the Periodic Boolean is set, periodically.
|
---|
62 |
|
---|
63 | @retval EFI_SUCCESS The SMI/PMI has been engendered.
|
---|
64 | @retval EFI_DEVICE_ERROR The source could not be cleared.
|
---|
65 | @retval EFI_INVALID_PARAMETER The service did not support the Periodic input argument.
|
---|
66 |
|
---|
67 | **/
|
---|
68 | typedef
|
---|
69 | EFI_STATUS
|
---|
70 | (EFIAPI *PEI_SMM_DEACTIVATE) (
|
---|
71 | IN EFI_PEI_SERVICES **PeiServices,
|
---|
72 | IN PEI_SMM_CONTROL_PPI * This,
|
---|
73 | IN BOOLEAN Periodic OPTIONAL
|
---|
74 | );
|
---|
75 |
|
---|
76 | ///
|
---|
77 | /// PEI SMM Control PPI is used to initiate SMI/PMI activations. This protocol could be published by either:
|
---|
78 | /// - A processor driver to abstract the SMI/PMI IPI
|
---|
79 | /// - The driver that abstracts the ASIC that is supporting the APM port, such as the ICH in an
|
---|
80 | /// Intel chipset
|
---|
81 | ///
|
---|
82 | struct _PEI_SMM_CONTROL_PPI {
|
---|
83 | PEI_SMM_ACTIVATE Trigger;
|
---|
84 | PEI_SMM_DEACTIVATE Clear;
|
---|
85 | };
|
---|
86 |
|
---|
87 | extern EFI_GUID gPeiSmmControlPpiGuid;
|
---|
88 |
|
---|
89 | #endif
|
---|