/*++ Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent Module Name: SmmPlatform.h Abstract: Header file for ++*/ #ifndef _PLATFORM_H #define _PLATFORM_H #include #include #include #include #include #include #include #include #include #include #include #include #include "Protocol/GlobalNvsArea.h" #include #include #include #include #include #include "PchAccess.h" #include "PlatformBaseAddresses.h" #include #include #include #include #include #include #include #include #include #include #include typedef struct { UINT8 Register; UINT8 Function; UINT8 Device; UINT8 Bus; UINT32 ExtendedRegister; } SMM_PCI_IO_ADDRESS; typedef struct { CHAR8 BoardAaNumber[7]; UINTN BoardFabNumber; } BOARD_AA_NUMBER_DECODE; // // BugBug -- Need to get these two values from acpi.h, but right now, they are // declared in platform-specific variants of this file, so no easy // way to pick-up the include file and work across platforms. // Need these definitions to go into a file like common\acpi.h. // #define ACPI_ENABLE 0xA0 #define ACPI_DISABLE 0xA1 #define APM_12_FUNCS 0x50 #define SMI_SET_SMMVARIABLE_PROTOCOL 0x51 // this is used in Cpu\Pentium\Smm\Base\SmmBase.c #define SMI_CMD_GET_MSEG_STATUS 0x70 #define SMI_CMD_UPDATE_MSEG_SIZE 0x71 #define SMI_CMD_LOAD_STM 0x72 #define SMI_CMD_UNLOAD_STM 0x73 #define SMI_CMD_GET_SMRAM_RANGES 0x74 #define PCAT_RTC_ADDRESS_REGISTER 0x74 #define PCAT_RTC_DATA_REGISTER 0x75 #define RTC_ADDRESS_SECOND 0x00 #define RTC_ADDRESS_SECOND_ALARM 0x01 #define RTC_ADDRESS_MINUTE 0x02 #define RTC_ADDRESS_MINUTE_ALARM 0x03 #define RTC_ADDRESS_HOUR 0x04 #define RTC_ADDRESS_HOUR_ALARM 0x05 #define RTC_ADDRESS_REGISTER_A 0x0A #define RTC_ADDRESS_REGISTER_B 0x0B #define RTC_ADDRESS_REGISTER_C 0x0C #define RTC_ADDRESS_REGISTER_D 0x0D #define B_RTC_ALARM_INT_ENABLE 0x20 #define B_RTC_ALARM_INT_STATUS 0x20 #define B_RTC_DATE_ALARM_MASK 0x3F #define PCAT_CMOS_2_ADDRESS_REGISTER 0x72 #define PCAT_CMOS_2_DATA_REGISTER 0x73 #define EC_C_PORT 0x66 #define SMC_SMI_DISABLE 0xBC #define SMC_ENABLE_ACPI_MODE 0xAA // Enable ACPI mode #define IO_MISC 156 #define MAXIMUM_NUMBER_OF_PSTATES 12 #define ICH_SMM_DATA_PORT 0xB3 #define EFI_IA32_PMG_CST_CONFIG 0x000000E2 #define B_EFI_CST_CONTROL_LOCK BIT15 #define B_EFI_IO_MWAIT_REDIRECTION_ENABLE BIT10 #define EFI_IA32_PMG_IO_CAPTURE_ADDR 0x000000E4 extern EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *mPciRootBridgeIo; // // Callback function prototypes // VOID EFIAPI PowerButtonCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT *DispatchContext ); VOID S5SleepWakeOnLanCallBack ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext ); VOID EFIAPI S5SleepAcLossCallBack ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext ); VOID EFIAPI S4S5CallBack ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext ); VOID EFIAPI EnableAcpiCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext ); VOID EFIAPI DisableAcpiCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext ); VOID EFIAPI SmmReadyToBootCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext ); VOID DummyTco1Callback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext ); VOID PerrSerrCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext ); VOID RiCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext ); VOID SetAfterG3On ( BOOLEAN Enable ); VOID TurnOffVregUsb ( ); VOID PStateSupportCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext ); VOID PStateTransitionCallback ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext ); EFI_STATUS EFIAPI SxSleepEntryCallBack ( IN EFI_HANDLE DispatchHandle, IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext ); EFI_STATUS SaveRuntimeScriptTable ( VOID ); #endif