]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkPlatformPkg/Acpi/DxeSmm/SmmPowerManagement/SmmPowerManagement.c
QuarkPlatformPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / QuarkPlatformPkg / Acpi / DxeSmm / SmmPowerManagement / SmmPowerManagement.c
CommitLineData
b303605e
MK
1/** @file\r
2\r
3This is QNC Smm Power Management driver\r
4\r
5Copyright (c) 2013-2015 Intel Corporation.\r
6\r
0eb3de2e 7SPDX-License-Identifier: BSD-2-Clause-Patent\r
b303605e
MK
8\r
9\r
10**/\r
11\r
12#include "SmmPowerManagement.h"\r
13\r
14//\r
15// Global variables\r
16//\r
17EFI_SMM_CPU_PROTOCOL *mSmmCpu = NULL;\r
18EFI_GLOBAL_NVS_AREA *mGlobalNvsAreaPtr = NULL;\r
19EFI_MP_SERVICES_PROTOCOL *mMpService = NULL;\r
20EFI_ACPI_SDT_PROTOCOL *mAcpiSdt = NULL;\r
21EFI_ACPI_TABLE_PROTOCOL *mAcpiTable = NULL;\r
22\r
23EFI_GUID mS3CpuRegisterTableGuid = S3_CPU_REGISTER_TABLE_GUID;\r
24\r
25EFI_STATUS\r
26EFIAPI\r
27InitializePowerManagement (\r
28 IN EFI_HANDLE ImageHandle,\r
29 IN EFI_SYSTEM_TABLE *SystemTable\r
30 )\r
31/*++\r
32\r
33Routine Description:\r
34\r
35 Initializes the SMM Handler Driver\r
36\r
37Arguments:\r
38\r
39 ImageHandle -\r
40\r
41 SystemTable -\r
42\r
43Returns:\r
44\r
45 None\r
46\r
47--*/\r
48{\r
49 EFI_STATUS Status;\r
50 EFI_SMM_SW_DISPATCH2_PROTOCOL *SwDispatch;\r
51 EFI_GLOBAL_NVS_AREA_PROTOCOL *GlobalNvsAreaProtocol;\r
52\r
53 //\r
54 // Get SMM CPU protocol\r
55 //\r
56 Status = gSmst->SmmLocateProtocol (\r
57 &gEfiSmmCpuProtocolGuid,\r
58 NULL,\r
59 (VOID **)&mSmmCpu\r
60 );\r
61 ASSERT_EFI_ERROR (Status);\r
62\r
63 //\r
64 // Get the Sw dispatch protocol\r
65 //\r
66 Status = gSmst->SmmLocateProtocol (\r
67 &gEfiSmmSwDispatch2ProtocolGuid,\r
68 NULL,\r
69 (VOID**)&SwDispatch\r
70 );\r
71 ASSERT_EFI_ERROR (Status);\r
72\r
73 //\r
74 // Get Global NVS Area Protocol\r
75 //\r
76 Status = gBS->LocateProtocol (&gEfiGlobalNvsAreaProtocolGuid, NULL, (VOID **)&GlobalNvsAreaProtocol);\r
77 ASSERT_EFI_ERROR (Status);\r
78 mGlobalNvsAreaPtr = GlobalNvsAreaProtocol->Area;\r
79\r
80 //\r
81 // Locate and cache PI AcpiSdt Protocol.\r
82 //\r
83 Status = gBS->LocateProtocol (\r
84 &gEfiAcpiSdtProtocolGuid,\r
85 NULL,\r
86 (VOID **) &mAcpiSdt\r
87 );\r
88 ASSERT_EFI_ERROR (Status);\r
89\r
90\r
91 //\r
92 // Locate and cache PI AcpiSdt Protocol.\r
93 //\r
94 Status = gBS->LocateProtocol (\r
95 &gEfiAcpiTableProtocolGuid,\r
96 NULL,\r
97 (VOID **) &mAcpiTable\r
98 );\r
99 ASSERT_EFI_ERROR (Status);\r
100\r
101\r
102 //\r
103 // Get MpService protocol\r
104 //\r
105 Status = gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOID **)&mMpService);\r
106 ASSERT_EFI_ERROR (Status);\r
107 //\r
108 // Initialize power management features on processors\r
109 //\r
110 PpmInit();\r
111\r
112 return Status;\r
113}\r