summaryrefslogtreecommitdiff
path: root/Include/Protocol/SmmControl.h
blob: 154e6c919c94ca0eff006d1af2708ec9c4768d89 (plain)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
//*************************************************************************
//*************************************************************************
//**                                                                     **
//**        (C)Copyright 1985-2009, American Megatrends, Inc.            **
//**                                                                     **
//**                       All Rights Reserved.                          **
//**                                                                     **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
//**                                                                     **
//**                       Phone: (770)-246-8600                         **
//**                                                                     **
//*************************************************************************
//*************************************************************************

//**********************************************************************
// $Header: /Alaska/SOURCE/Modules/SMM/SmmControl.h 2     7/08/09 8:01p Markw $
//
// $Revision: 2 $
//
// $Date: 7/08/09 8:01p $
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/SOURCE/Modules/SMM/SmmControl.h $
// 
// 2     7/08/09 8:01p Markw
// Update headers.
// 
// 1     3/18/07 1:54p Markw
// 
// 4     12/19/06 12:42p Felixp
// AMI_SMM_SW_SMI_16_BITS switch removed. Header is reverted to the
// previous version.
// 
// 2     3/13/06 1:40a Felixp
// 
// 1     1/28/05 12:44p Felixp
// 
// 2     1/18/05 3:22p Felixp
// PrintDebugMessage renamed to Trace
// 
// 1     12/23/04 9:41a Felixp
// 
// 2     2/09/04 2:43p Markw
// Fixed header info.
// 
// 1     1/30/04 10:26a Markw
// 
// 1     1/26/04 3:25p Markw
// 
//**********************************************************************
//<AMI_FHDR_START>
//
// Name: SmmControl.h
//
// Description:	Provides south bridge functions for triggering and clearing SMIs.
//
//<AMI_FHDR_END>
//**********************************************************************
#ifndef __SMM_CONTROL_PROTOCOL_H__
#define __SMM_CONTROL_PROTOCOL_H__
#ifdef __cplusplus
extern "C" {
#endif
#include <EFI.h>

#define EFI_SMM_CONTROL_PROTOCOL_GUID \
    {0x8d12e231,0xc667,0x4fd1,0x98,0xf2,0x24,0x49,0xa7,0xe7,0xb2,0xe5}

GUID_VARIABLE_DECLARATION(gEfiSmmControlProtocolGuid,EFI_SMM_CONTROL_PROTOCOL_GUID);

//************************************************
// EFI_SMM_PERIOD
//************************************************
typedef UINTN EFI_SMM_PERIOD;

//*********************************************
// EFI_SMM_CONTROL_REGISTER
//*********************************************
typedef struct {
    UINT8 SmiTriggerRegister;
    UINT8 SmiDataRegister;
} EFI_SMM_CONTROL_REGISTER;


typedef struct _EFI_SMM_CONTROL_PROTOCOL EFI_SMM_CONTROL_PROTOCOL;

typedef EFI_STATUS (EFIAPI *EFI_SMM_ACTIVATE) (
    IN EFI_SMM_CONTROL_PROTOCOL *This,
    IN OUT INT8                 *ArgumentBuffer OPTIONAL,
    IN OUT UINTN                *ArgumentBufferSize OPTIONAL,
    IN BOOLEAN                  Periodic OPTIONAL,
    IN UINTN                    ActivationInterval OPTIONAL
);

typedef EFI_STATUS (EFIAPI *EFI_SMM_DEACTIVATE) (
    IN EFI_SMM_CONTROL_PROTOCOL *This,
    IN BOOLEAN                  Periodic OPTIONAL
);

typedef EFI_STATUS (EFIAPI *EFI_SMM_GET_REGISTER_INFO) (
    IN EFI_SMM_CONTROL_PROTOCOL     *This,
    IN OUT EFI_SMM_CONTROL_REGISTER *SmiRegister
);

//**********************************************************************
//<AMI_THDR_START>
//
// Name:        EFI_SMM_CONTROL_PROTOCOL
//
// Description: Provides south bridge functions for triggering and clearing SMIs.
//
// Fields:     Name			   Type					 Description
//        ------------------------------------------------------------
//        Trigger			   EFI_SMM_ACTIVATE          	Trigger SMI and provide it with a byte code. 
//        Clear			       EFI_SMM_DEACTIVATE         	Clear all SMI sources.
//        GetRegisterInfo	   EFI_SMM_GET_REGISTER_INFO	Get SMI Trigger information.
//        MinimumTriggerPeriod UINTN  						0 in IA32. SMI period is not supported.
//
//<AMI_THDR_END>
//**********************************************************************
struct _EFI_SMM_CONTROL_PROTOCOL {
    EFI_SMM_ACTIVATE            Trigger;
    EFI_SMM_DEACTIVATE          Clear;
    EFI_SMM_GET_REGISTER_INFO   GetRegisterInfo;
    UINTN                       MinimumTriggerPeriod;
};

/****** DO NOT WRITE BELOW THIS LINE *******/
#ifdef __cplusplus
}
#endif
#endif

//*************************************************************************
//*************************************************************************
//**                                                                     **
//**        (C)Copyright 1985-2009, American Megatrends, Inc.            **
//**                                                                     **
//**                       All Rights Reserved.                          **
//**                                                                     **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093           **
//**                                                                     **
//**                       Phone: (770)-246-8600                         **
//**                                                                     **
//*************************************************************************
//*************************************************************************