3 This is QNC Smm Power Management driver
5 Copyright (c) 2013-2015 Intel Corporation.
7 SPDX-License-Identifier: BSD-2-Clause-Patent
12 #include "SmmPowerManagement.h"
17 EFI_SMM_CPU_PROTOCOL
*mSmmCpu
= NULL
;
18 EFI_GLOBAL_NVS_AREA
*mGlobalNvsAreaPtr
= NULL
;
19 EFI_MP_SERVICES_PROTOCOL
*mMpService
= NULL
;
20 EFI_ACPI_SDT_PROTOCOL
*mAcpiSdt
= NULL
;
21 EFI_ACPI_TABLE_PROTOCOL
*mAcpiTable
= NULL
;
23 EFI_GUID mS3CpuRegisterTableGuid
= S3_CPU_REGISTER_TABLE_GUID
;
27 InitializePowerManagement (
28 IN EFI_HANDLE ImageHandle
,
29 IN EFI_SYSTEM_TABLE
*SystemTable
35 Initializes the SMM Handler Driver
50 EFI_SMM_SW_DISPATCH2_PROTOCOL
*SwDispatch
;
51 EFI_GLOBAL_NVS_AREA_PROTOCOL
*GlobalNvsAreaProtocol
;
54 // Get SMM CPU protocol
56 Status
= gSmst
->SmmLocateProtocol (
57 &gEfiSmmCpuProtocolGuid
,
61 ASSERT_EFI_ERROR (Status
);
64 // Get the Sw dispatch protocol
66 Status
= gSmst
->SmmLocateProtocol (
67 &gEfiSmmSwDispatch2ProtocolGuid
,
71 ASSERT_EFI_ERROR (Status
);
74 // Get Global NVS Area Protocol
76 Status
= gBS
->LocateProtocol (&gEfiGlobalNvsAreaProtocolGuid
, NULL
, (VOID
**)&GlobalNvsAreaProtocol
);
77 ASSERT_EFI_ERROR (Status
);
78 mGlobalNvsAreaPtr
= GlobalNvsAreaProtocol
->Area
;
81 // Locate and cache PI AcpiSdt Protocol.
83 Status
= gBS
->LocateProtocol (
84 &gEfiAcpiSdtProtocolGuid
,
88 ASSERT_EFI_ERROR (Status
);
92 // Locate and cache PI AcpiSdt Protocol.
94 Status
= gBS
->LocateProtocol (
95 &gEfiAcpiTableProtocolGuid
,
99 ASSERT_EFI_ERROR (Status
);
103 // Get MpService protocol
105 Status
= gBS
->LocateProtocol (&gEfiMpServiceProtocolGuid
, NULL
, (VOID
**)&mMpService
);
106 ASSERT_EFI_ERROR (Status
);
108 // Initialize power management features on processors