]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/Library/PchSmmLib/PchSmmLib.c
MdePkg: Move SIO header files to MdePkg.
[mirror_edk2.git] / Vlv2TbltDevicePkg / Library / PchSmmLib / PchSmmLib.c
CommitLineData
3cbfba02
DW
1/** @file\r
2 PCH Smm Library Services that implements both S/W SMI generation and detection.\r
3\r
4 Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
5 \r\r
6 This program and the accompanying materials are licensed and made available under\r\r
7 the terms and conditions of the BSD License that accompanies this distribution. \r\r
8 The full text of the license may be found at \r\r
9 http://opensource.org/licenses/bsd-license.php. \r\r
10 \r\r
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r\r
13 \r\r
14\r
15**/\r
16\r
17\r
18#include "CommonHeader.h"\r
19\r
20\r
21/**\r
22 Triggers a run time or boot time SMI.\r
23\r
24 This function triggers a software SMM interrupt and set the APMC status with an 8-bit Data.\r
25\r
26 @param Data The value to set the APMC status.\r
27\r
28**/\r
29VOID\r
30InternalTriggerSmi (\r
31 IN UINT8 Data\r
32 )\r
33{\r
34 ASSERT(FALSE);\r
35}\r
36\r
37\r
38/**\r
39 Triggers an SMI at boot time.\r
40\r
41 This function triggers a software SMM interrupt at boot time.\r
42\r
43**/\r
44VOID\r
45EFIAPI\r
46TriggerBootServiceSoftwareSmi (\r
47 VOID\r
48 )\r
49{\r
50 ASSERT(FALSE);\r
51}\r
52\r
53\r
54/**\r
55 Triggers an SMI at run time.\r
56\r
57 This function triggers a software SMM interrupt at run time.\r
58\r
59**/\r
60VOID\r
61EFIAPI\r
62TriggerRuntimeSoftwareSmi (\r
63 VOID\r
64 )\r
65{\r
66 ASSERT(FALSE);\r
67}\r
68\r
69\r
70/**\r
71 Gets the software SMI data.\r
72\r
73 This function tests if a software SMM interrupt happens. If a software SMI happens,\r
74 it retrieves the SMM data and returns it as a non-negative value; otherwise a negative\r
75 value is returned.\r
76\r
77 @return Data The data retrieved from SMM data port in case of a software SMI;\r
78 otherwise a negative value.\r
79\r
80**/\r
81INTN\r
82InternalGetSwSmiData (\r
83 VOID\r
84 )\r
85{\r
86 ASSERT(FALSE);\r
87 return -1;\r
88}\r
89\r
90\r
91/**\r
92 Test if a boot time software SMI happened.\r
93\r
94 This function tests if a software SMM interrupt happened. If a software SMM interrupt happened and\r
95 it was triggered at boot time, it returns TRUE. Otherwise, it returns FALSE.\r
96\r
97 @retval TRUE A software SMI triggered at boot time happened.\r
98 @retval FLASE No software SMI happened or the software SMI was triggered at run time.\r
99\r
100**/\r
101BOOLEAN\r
102EFIAPI\r
103IsBootServiceSoftwareSmi (\r
104 VOID\r
105 )\r
106{\r
107 ASSERT(FALSE);\r
108 return FALSE;\r
109}\r
110\r
111\r
112/**\r
113 Test if a run time software SMI happened.\r
114\r
115 This function tests if a software SMM interrupt happened. If a software SMM interrupt happened and\r
116 it was triggered at run time, it returns TRUE. Otherwise, it returns FALSE.\r
117\r
118 @retval TRUE A software SMI triggered at run time happened.\r
119 @retval FLASE No software SMI happened or the software SMI was triggered at boot time.\r
120\r
121**/\r
122BOOLEAN\r
123EFIAPI\r
124IsRuntimeSoftwareSmi (\r
125 VOID\r
126 )\r
127{\r
128 ASSERT(FALSE);\r
129 return FALSE;\r
130}\r
131\r
132\r
133/**\r
134\r
135 Clear APM SMI Status Bit; Set the EOS bit.\r
136\r
137**/\r
138VOID\r
139EFIAPI\r
140ClearSmi (\r
141 VOID\r
142 )\r
143{\r
144\r
145 UINT16 PmBase;\r
146\r
147 //\r
148 // Get PMBase\r
149 //\r
150 PmBase = PcdGet16 (PcdPchAcpiIoPortBaseAddress);\r
151\r
152 //\r
153 // Clear the APM SMI Status Bit\r
154 //\r
155 IoWrite16 (PmBase + R_PCH_ACPI_SMI_STS, B_PCH_ACPI_APM_STS);\r
156\r
157 //\r
158 // Set the EOS Bit\r
159 //\r
160 IoOr32 (PmBase + R_PCH_ACPI_SMI_EN, B_PCH_ACPI_EOS);\r
161}\r
162\r