+++ /dev/null
-/** @file\r
-\r
-This is QNC Smm Power Management driver\r
-\r
-Copyright (c) 2013-2015 Intel Corporation.\r
-\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-\r
-**/\r
-\r
-#include "SmmPowerManagement.h"\r
-\r
-//\r
-// Global variables\r
-//\r
-EFI_SMM_CPU_PROTOCOL *mSmmCpu = NULL;\r
-EFI_GLOBAL_NVS_AREA *mGlobalNvsAreaPtr = NULL;\r
-EFI_MP_SERVICES_PROTOCOL *mMpService = NULL;\r
-EFI_ACPI_SDT_PROTOCOL *mAcpiSdt = NULL;\r
-EFI_ACPI_TABLE_PROTOCOL *mAcpiTable = NULL;\r
-\r
-EFI_GUID mS3CpuRegisterTableGuid = S3_CPU_REGISTER_TABLE_GUID;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-InitializePowerManagement (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Initializes the SMM Handler Driver\r
-\r
-Arguments:\r
-\r
- ImageHandle -\r
-\r
- SystemTable -\r
-\r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-{\r
- EFI_STATUS Status;\r
- EFI_SMM_SW_DISPATCH2_PROTOCOL *SwDispatch;\r
- EFI_GLOBAL_NVS_AREA_PROTOCOL *GlobalNvsAreaProtocol;\r
-\r
- //\r
- // Get SMM CPU protocol\r
- //\r
- Status = gSmst->SmmLocateProtocol (\r
- &gEfiSmmCpuProtocolGuid,\r
- NULL,\r
- (VOID **)&mSmmCpu\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- //\r
- // Get the Sw dispatch protocol\r
- //\r
- Status = gSmst->SmmLocateProtocol (\r
- &gEfiSmmSwDispatch2ProtocolGuid,\r
- NULL,\r
- (VOID**)&SwDispatch\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
- //\r
- // Get Global NVS Area Protocol\r
- //\r
- Status = gBS->LocateProtocol (&gEfiGlobalNvsAreaProtocolGuid, NULL, (VOID **)&GlobalNvsAreaProtocol);\r
- ASSERT_EFI_ERROR (Status);\r
- mGlobalNvsAreaPtr = GlobalNvsAreaProtocol->Area;\r
-\r
- //\r
- // Locate and cache PI AcpiSdt Protocol.\r
- //\r
- Status = gBS->LocateProtocol (\r
- &gEfiAcpiSdtProtocolGuid,\r
- NULL,\r
- (VOID **) &mAcpiSdt\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
-\r
- //\r
- // Locate and cache PI AcpiSdt Protocol.\r
- //\r
- Status = gBS->LocateProtocol (\r
- &gEfiAcpiTableProtocolGuid,\r
- NULL,\r
- (VOID **) &mAcpiTable\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
-\r
-\r
- //\r
- // Get MpService protocol\r
- //\r
- Status = gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOID **)&mMpService);\r
- ASSERT_EFI_ERROR (Status);\r
- //\r
- // Initialize power management features on processors\r
- //\r
- PpmInit();\r
-\r
- return Status;\r
-}\r