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