PlatformDxe.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. /*++
  2. Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.<BR>
  3. SPDX-License-Identifier: BSD-2-Clause-Patent
  4. Module Name:
  5. PlatformDxe.h
  6. Abstract:
  7. Header file for Platform Initialization Driver.
  8. ++*/
  9. #ifndef _PLATFORM_DRIVER_H
  10. #define _PLATFORM_DRIVER_H
  11. #include <PiDxe.h>
  12. #include <Library/BaseLib.h>
  13. #include <Library/DebugLib.h>
  14. #include <Library/UefiLib.h>
  15. #include <Library/UefiDriverEntryPoint.h>
  16. #include <Library/PcdLib.h>
  17. #include <Library/HobLib.h>
  18. #include <Library/MemoryAllocationLib.h>
  19. #include <Library/UefiBootServicesTableLib.h>
  20. #include <Library/BaseMemoryLib.h>
  21. #include <Library/UefiRuntimeServicesTableLib.h>
  22. #include <Library/IoLib.h>
  23. #include <Library/ReportStatusCodeLib.h>
  24. #include <Library/HobLib.h>
  25. #include <Library/EfiRegTableLib.h>
  26. #include <Library/Tpm2CommandLib.h>
  27. #include <Library/Tpm2DeviceLib.h>
  28. #include <Library/BaseCryptLib.h>
  29. #include <Library/BiosIdLib.h>
  30. #include <Protocol/GlobalNvsArea.h>
  31. #include <Protocol/PciRootBridgeIo.h>
  32. #include <Protocol/CpuIo2.h>
  33. #include <Guid/GlobalVariable.h>
  34. #include <Guid/BoardFeatures.h>
  35. #include <Guid/DataHubRecords.h>
  36. #include <Protocol/DataHub.h>
  37. #include <Protocol/PciIo.h>
  38. #include <Protocol/Speaker.h>
  39. #include <IndustryStandard/Pci22.h>
  40. #include <Guid/SetupVariable.h>
  41. #include <Guid/PlatformInfo.h>
  42. #include "Configuration.h"
  43. #include "PchAccess.h"
  44. #include "VlvAccess.h"
  45. #include "BoardIdDecode.h"
  46. #include "PlatformBaseAddresses.h"
  47. #include "SetupMode.h"
  48. #include "PlatformBootMode.h"
  49. #include "CpuType.h"
  50. #define PCAT_RTC_ADDRESS_REGISTER 0x74
  51. #define PCAT_RTC_DATA_REGISTER 0x75
  52. #define RTC_ADDRESS_SECOND_ALARM 0x01
  53. #define RTC_ADDRESS_MINUTE_ALARM 0x03
  54. #define RTC_ADDRESS_HOUR_ALARM 0x05
  55. #define RTC_ADDRESS_REGISTER_A 0x0A
  56. #define RTC_ADDRESS_REGISTER_B 0x0B
  57. #define RTC_ADDRESS_REGISTER_C 0x0C
  58. #define RTC_ADDRESS_REGISTER_D 0x0D
  59. #define B_RTC_ALARM_INT_ENABLE 0x20
  60. #define B_RTC_ALARM_INT_STATUS 0x20
  61. #define B_RTC_DATE_ALARM_MASK 0x3F
  62. //
  63. // Platform driver GUID
  64. //
  65. #define PLATFORM_NORMAL_MODE 0x01
  66. #define PLATFORM_SAFE_MODE 0x02
  67. #define PLATFORM_RECOVERY_MODE 0x04
  68. #define PLATFORM_MANUFACTURING_MODE 0x08
  69. #define PLATFORM_BACK_TO_BIOS_MODE 0x10
  70. #define EFI_OEM_SPECIFIC 0x8000
  71. #define EFI_CU_PLATFORM_DXE_INIT (EFI_OEM_SPECIFIC | 0x00000011)
  72. #define EFI_CU_PLATFORM_DXE_STEP1 (EFI_OEM_SPECIFIC | 0x00000012)
  73. #define EFI_CU_PLATFORM_DXE_STEP2 (EFI_OEM_SPECIFIC | 0x00000013)
  74. #define EFI_CU_PLATFORM_DXE_STEP3 (EFI_OEM_SPECIFIC | 0x00000014)
  75. #define EFI_CU_PLATFORM_DXE_STEP4 (EFI_OEM_SPECIFIC | 0x00000015)
  76. #define EFI_CU_PLATFORM_DXE_INIT_DONE (EFI_OEM_SPECIFIC | 0x00000016)
  77. #pragma pack(1)
  78. typedef UINT64 EFI_BOARD_FEATURES;
  79. typedef struct {
  80. CHAR8 AaNumber[7];
  81. UINT8 BoardId;
  82. EFI_BOARD_FEATURES Features;
  83. UINT16 SubsystemDeviceId;
  84. UINT16 AudioSubsystemDeviceId;
  85. UINT64 AcpiOemTableId;
  86. } BOARD_ID_DECODE;
  87. #pragma pack()
  88. //
  89. // Prototypes
  90. //
  91. VOID
  92. EFIAPI
  93. ReadyToBootFunction (
  94. EFI_EVENT Event,
  95. VOID *Context
  96. );
  97. VOID
  98. EFIAPI
  99. IdeDataFilter (
  100. IN EFI_EVENT Event,
  101. IN VOID* Context
  102. );
  103. VOID
  104. SwapEntries (
  105. IN CHAR8 *Data
  106. );
  107. VOID
  108. AsciiToUnicode (
  109. IN CHAR8 *AsciiString,
  110. IN CHAR16 *UnicodeString
  111. );
  112. VOID
  113. EFIAPI
  114. PciBusEvent (
  115. IN EFI_EVENT Event,
  116. IN VOID* Context
  117. );
  118. UINT8
  119. ReadCmosBank1Byte (
  120. IN EFI_CPU_IO2_PROTOCOL *CpuIo,
  121. IN UINT8 Index
  122. );
  123. VOID
  124. WriteCmosBank1Byte (
  125. IN EFI_CPU_IO2_PROTOCOL *CpuIo,
  126. IN UINT8 Index,
  127. IN UINT8 Data
  128. );
  129. VOID
  130. InitializeBoardId (
  131. );
  132. EFI_STATUS
  133. EFIAPI
  134. ProgramToneFrequency (
  135. IN EFI_SPEAKER_IF_PROTOCOL *This,
  136. IN UINT16 Frequency
  137. );
  138. EFI_STATUS
  139. EFIAPI
  140. GenerateBeepTone (
  141. IN EFI_SPEAKER_IF_PROTOCOL *This,
  142. IN UINTN NumberOfBeeps,
  143. IN UINTN BeepDuration,
  144. IN UINTN TimeInterval
  145. );
  146. EFI_STATUS
  147. InitializeObservableProtocol();
  148. EFI_STATUS
  149. PciBusDriverHook();
  150. VOID
  151. EFIAPI
  152. AdjustDefaultRtcTimeCallback (
  153. IN EFI_EVENT Event,
  154. IN VOID *Context
  155. );
  156. //
  157. // Global externs
  158. //
  159. extern SYSTEM_CONFIGURATION mSystemConfiguration;
  160. extern EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *mPciRootBridgeIo;
  161. extern UINT8 mBoardIdIndex;
  162. extern BOOLEAN mFoundAANum;
  163. extern EFI_BOARD_FEATURES mBoardFeatures;
  164. extern UINT16 mSubsystemDeviceId;
  165. extern UINT16 mSubsystemAudioDeviceId;
  166. extern BOARD_ID_DECODE mBoardIdDecodeTable[];
  167. extern UINTN mBoardIdDecodeTableSize;
  168. extern UINT8 mSmbusRsvdAddresses[];
  169. extern UINT8 mNumberSmbusAddress;
  170. extern BOOLEAN mMfgMode;
  171. extern UINT32 mPlatformBootMode;
  172. extern CHAR8 BoardAaNumber[];
  173. #endif