3 This is QNC Smm Power Management driver
5 Copyright (c) 2013-2015 Intel Corporation.
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 #include "SmmPowerManagement.h"
23 EFI_SMM_CPU_PROTOCOL
*mSmmCpu
= NULL
;
24 EFI_GLOBAL_NVS_AREA
*mGlobalNvsAreaPtr
= NULL
;
25 EFI_MP_SERVICES_PROTOCOL
*mMpService
= NULL
;
26 EFI_ACPI_SDT_PROTOCOL
*mAcpiSdt
= NULL
;
27 EFI_ACPI_TABLE_PROTOCOL
*mAcpiTable
= NULL
;
29 EFI_GUID mS3CpuRegisterTableGuid
= S3_CPU_REGISTER_TABLE_GUID
;
33 InitializePowerManagement (
34 IN EFI_HANDLE ImageHandle
,
35 IN EFI_SYSTEM_TABLE
*SystemTable
41 Initializes the SMM Handler Driver
56 EFI_SMM_SW_DISPATCH2_PROTOCOL
*SwDispatch
;
57 EFI_GLOBAL_NVS_AREA_PROTOCOL
*GlobalNvsAreaProtocol
;
60 // Get SMM CPU protocol
62 Status
= gSmst
->SmmLocateProtocol (
63 &gEfiSmmCpuProtocolGuid
,
67 ASSERT_EFI_ERROR (Status
);
70 // Get the Sw dispatch protocol
72 Status
= gSmst
->SmmLocateProtocol (
73 &gEfiSmmSwDispatch2ProtocolGuid
,
77 ASSERT_EFI_ERROR (Status
);
80 // Get Global NVS Area Protocol
82 Status
= gBS
->LocateProtocol (&gEfiGlobalNvsAreaProtocolGuid
, NULL
, (VOID
**)&GlobalNvsAreaProtocol
);
83 ASSERT_EFI_ERROR (Status
);
84 mGlobalNvsAreaPtr
= GlobalNvsAreaProtocol
->Area
;
87 // Locate and cache PI AcpiSdt Protocol.
89 Status
= gBS
->LocateProtocol (
90 &gEfiAcpiSdtProtocolGuid
,
94 ASSERT_EFI_ERROR (Status
);
98 // Locate and cache PI AcpiSdt Protocol.
100 Status
= gBS
->LocateProtocol (
101 &gEfiAcpiTableProtocolGuid
,
103 (VOID
**) &mAcpiTable
105 ASSERT_EFI_ERROR (Status
);
109 // Get MpService protocol
111 Status
= gBS
->LocateProtocol (&gEfiMpServiceProtocolGuid
, NULL
, (VOID
**)&mMpService
);
112 ASSERT_EFI_ERROR (Status
);
114 // Initialize power management features on processors