SmmPlatform.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. /*++
  2. Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>
  3. SPDX-License-Identifier: BSD-2-Clause-Patent
  4. Module Name:
  5. SmmPlatform.h
  6. Abstract:
  7. Header file for
  8. ++*/
  9. #ifndef _PLATFORM_H
  10. #define _PLATFORM_H
  11. #include <PiSmm.h>
  12. #include <Protocol/SmmBase.h>
  13. #include <Protocol/FirmwareVolume.h>
  14. #include <Protocol/SmmPowerButtonDispatch.h>
  15. #include <Protocol/SmmSxDispatch.h>
  16. #include <Protocol/SmmSwDispatch.h>
  17. #include <Protocol/SmmSwDispatch2.h>
  18. #include <Protocol/SmmIchnDispatch.h>
  19. #include <Protocol/SmmAccess.h>
  20. #include <Protocol/SmmVariable.h>
  21. #include <Protocol/PciRootBridgeIo.h>
  22. #include <Protocol/LoadedImage.h>
  23. #include "Protocol/GlobalNvsArea.h"
  24. #include <Guid/SetupVariable.h>
  25. #include <Guid/EfiVpdData.h>
  26. #include <Guid/PciLanInfo.h>
  27. #include <IndustryStandard/Pci22.h>
  28. #include "PchAccess.h"
  29. #include "PlatformBaseAddresses.h"
  30. #include <Library/UefiBootServicesTableLib.h>
  31. #include <Library/S3BootScriptLib.h>
  32. #include <Library/IoLib.h>
  33. #include <Library/DebugLib.h>
  34. #include <Library/HobLib.h>
  35. #include <Library/BaseLib.h>
  36. #include <Library/BaseMemoryLib.h>
  37. #include <Library/DevicePathLib.h>
  38. #include <Library/PcdLib.h>
  39. #include <Library/PchPlatformLib.h>
  40. #include <Library/StallSmmLib.h>
  41. typedef struct {
  42. UINT8 Register;
  43. UINT8 Function;
  44. UINT8 Device;
  45. UINT8 Bus;
  46. UINT32 ExtendedRegister;
  47. } SMM_PCI_IO_ADDRESS;
  48. typedef struct {
  49. CHAR8 BoardAaNumber[7];
  50. UINTN BoardFabNumber;
  51. } BOARD_AA_NUMBER_DECODE;
  52. //
  53. // BugBug -- Need to get these two values from acpi.h, but right now, they are
  54. // declared in platform-specific variants of this file, so no easy
  55. // way to pick-up the include file and work across platforms.
  56. // Need these definitions to go into a file like common\acpi.h.
  57. //
  58. #define ACPI_ENABLE 0xA0
  59. #define ACPI_DISABLE 0xA1
  60. #define APM_12_FUNCS 0x50
  61. #define SMI_SET_SMMVARIABLE_PROTOCOL 0x51 // this is used in Cpu\Pentium\Smm\Base\SmmBase.c
  62. #define SMI_CMD_GET_MSEG_STATUS 0x70
  63. #define SMI_CMD_UPDATE_MSEG_SIZE 0x71
  64. #define SMI_CMD_LOAD_STM 0x72
  65. #define SMI_CMD_UNLOAD_STM 0x73
  66. #define SMI_CMD_GET_SMRAM_RANGES 0x74
  67. #define PCAT_RTC_ADDRESS_REGISTER 0x74
  68. #define PCAT_RTC_DATA_REGISTER 0x75
  69. #define RTC_ADDRESS_SECOND 0x00
  70. #define RTC_ADDRESS_SECOND_ALARM 0x01
  71. #define RTC_ADDRESS_MINUTE 0x02
  72. #define RTC_ADDRESS_MINUTE_ALARM 0x03
  73. #define RTC_ADDRESS_HOUR 0x04
  74. #define RTC_ADDRESS_HOUR_ALARM 0x05
  75. #define RTC_ADDRESS_REGISTER_A 0x0A
  76. #define RTC_ADDRESS_REGISTER_B 0x0B
  77. #define RTC_ADDRESS_REGISTER_C 0x0C
  78. #define RTC_ADDRESS_REGISTER_D 0x0D
  79. #define B_RTC_ALARM_INT_ENABLE 0x20
  80. #define B_RTC_ALARM_INT_STATUS 0x20
  81. #define B_RTC_DATE_ALARM_MASK 0x3F
  82. #define PCAT_CMOS_2_ADDRESS_REGISTER 0x72
  83. #define PCAT_CMOS_2_DATA_REGISTER 0x73
  84. #define EC_C_PORT 0x66
  85. #define SMC_SMI_DISABLE 0xBC
  86. #define SMC_ENABLE_ACPI_MODE 0xAA // Enable ACPI mode
  87. #define IO_MISC 156
  88. #define MAXIMUM_NUMBER_OF_PSTATES 12
  89. #define ICH_SMM_DATA_PORT 0xB3
  90. #define EFI_IA32_PMG_CST_CONFIG 0x000000E2
  91. #define B_EFI_CST_CONTROL_LOCK BIT15
  92. #define B_EFI_IO_MWAIT_REDIRECTION_ENABLE BIT10
  93. #define EFI_IA32_PMG_IO_CAPTURE_ADDR 0x000000E4
  94. extern EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *mPciRootBridgeIo;
  95. //
  96. // Callback function prototypes
  97. //
  98. VOID
  99. EFIAPI
  100. PowerButtonCallback (
  101. IN EFI_HANDLE DispatchHandle,
  102. IN EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT *DispatchContext
  103. );
  104. VOID
  105. S5SleepWakeOnLanCallBack (
  106. IN EFI_HANDLE DispatchHandle,
  107. IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext
  108. );
  109. VOID
  110. EFIAPI
  111. S5SleepAcLossCallBack (
  112. IN EFI_HANDLE DispatchHandle,
  113. IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext
  114. );
  115. VOID
  116. EFIAPI
  117. S4S5CallBack (
  118. IN EFI_HANDLE DispatchHandle,
  119. IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext
  120. );
  121. VOID
  122. EFIAPI
  123. EnableAcpiCallback (
  124. IN EFI_HANDLE DispatchHandle,
  125. IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext
  126. );
  127. VOID
  128. EFIAPI
  129. DisableAcpiCallback (
  130. IN EFI_HANDLE DispatchHandle,
  131. IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext
  132. );
  133. VOID
  134. EFIAPI
  135. SmmReadyToBootCallback (
  136. IN EFI_HANDLE DispatchHandle,
  137. IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext
  138. );
  139. VOID
  140. DummyTco1Callback (
  141. IN EFI_HANDLE DispatchHandle,
  142. IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext
  143. );
  144. VOID
  145. PerrSerrCallback (
  146. IN EFI_HANDLE DispatchHandle,
  147. IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext
  148. );
  149. VOID
  150. RiCallback (
  151. IN EFI_HANDLE DispatchHandle,
  152. IN EFI_SMM_ICHN_DISPATCH_CONTEXT *DispatchContext
  153. );
  154. VOID
  155. SetAfterG3On (
  156. BOOLEAN Enable
  157. );
  158. VOID
  159. TurnOffVregUsb (
  160. );
  161. VOID
  162. PStateSupportCallback (
  163. IN EFI_HANDLE DispatchHandle,
  164. IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext
  165. );
  166. VOID
  167. PStateTransitionCallback (
  168. IN EFI_HANDLE DispatchHandle,
  169. IN EFI_SMM_SW_DISPATCH_CONTEXT *DispatchContext
  170. );
  171. EFI_STATUS
  172. EFIAPI
  173. SxSleepEntryCallBack (
  174. IN EFI_HANDLE DispatchHandle,
  175. IN EFI_SMM_SX_DISPATCH_CONTEXT *DispatchContext
  176. );
  177. EFI_STATUS
  178. SaveRuntimeScriptTable (
  179. VOID
  180. );
  181. #endif