PlatformDxe.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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 <Protocol/PciIo.h>
  36. #include <Protocol/Speaker.h>
  37. #include <IndustryStandard/Pci22.h>
  38. #include <Guid/SetupVariable.h>
  39. #include <Guid/PlatformInfo.h>
  40. #include "Configuration.h"
  41. #include "PchAccess.h"
  42. #include "VlvAccess.h"
  43. #include "BoardIdDecode.h"
  44. #include "PlatformBaseAddresses.h"
  45. #include "SetupMode.h"
  46. #include "PlatformBootMode.h"
  47. #include "CpuType.h"
  48. #define PCAT_RTC_ADDRESS_REGISTER 0x74
  49. #define PCAT_RTC_DATA_REGISTER 0x75
  50. #define RTC_ADDRESS_SECOND_ALARM 0x01
  51. #define RTC_ADDRESS_MINUTE_ALARM 0x03
  52. #define RTC_ADDRESS_HOUR_ALARM 0x05
  53. #define RTC_ADDRESS_REGISTER_A 0x0A
  54. #define RTC_ADDRESS_REGISTER_B 0x0B
  55. #define RTC_ADDRESS_REGISTER_C 0x0C
  56. #define RTC_ADDRESS_REGISTER_D 0x0D
  57. #define B_RTC_ALARM_INT_ENABLE 0x20
  58. #define B_RTC_ALARM_INT_STATUS 0x20
  59. #define B_RTC_DATE_ALARM_MASK 0x3F
  60. //
  61. // Platform driver GUID
  62. //
  63. #define PLATFORM_NORMAL_MODE 0x01
  64. #define PLATFORM_SAFE_MODE 0x02
  65. #define PLATFORM_RECOVERY_MODE 0x04
  66. #define PLATFORM_MANUFACTURING_MODE 0x08
  67. #define PLATFORM_BACK_TO_BIOS_MODE 0x10
  68. #define EFI_OEM_SPECIFIC 0x8000
  69. #define EFI_CU_PLATFORM_DXE_INIT (EFI_OEM_SPECIFIC | 0x00000011)
  70. #define EFI_CU_PLATFORM_DXE_STEP1 (EFI_OEM_SPECIFIC | 0x00000012)
  71. #define EFI_CU_PLATFORM_DXE_STEP2 (EFI_OEM_SPECIFIC | 0x00000013)
  72. #define EFI_CU_PLATFORM_DXE_STEP3 (EFI_OEM_SPECIFIC | 0x00000014)
  73. #define EFI_CU_PLATFORM_DXE_STEP4 (EFI_OEM_SPECIFIC | 0x00000015)
  74. #define EFI_CU_PLATFORM_DXE_INIT_DONE (EFI_OEM_SPECIFIC | 0x00000016)
  75. #pragma pack(1)
  76. typedef UINT64 EFI_BOARD_FEATURES;
  77. typedef struct {
  78. CHAR8 AaNumber[7];
  79. UINT8 BoardId;
  80. EFI_BOARD_FEATURES Features;
  81. UINT16 SubsystemDeviceId;
  82. UINT16 AudioSubsystemDeviceId;
  83. UINT64 AcpiOemTableId;
  84. } BOARD_ID_DECODE;
  85. #pragma pack()
  86. //
  87. // Prototypes
  88. //
  89. VOID
  90. EFIAPI
  91. ReadyToBootFunction (
  92. EFI_EVENT Event,
  93. VOID *Context
  94. );
  95. VOID
  96. EFIAPI
  97. IdeDataFilter (
  98. IN EFI_EVENT Event,
  99. IN VOID* Context
  100. );
  101. VOID
  102. SwapEntries (
  103. IN CHAR8 *Data
  104. );
  105. VOID
  106. AsciiToUnicode (
  107. IN CHAR8 *AsciiString,
  108. IN CHAR16 *UnicodeString
  109. );
  110. VOID
  111. EFIAPI
  112. PciBusEvent (
  113. IN EFI_EVENT Event,
  114. IN VOID* Context
  115. );
  116. UINT8
  117. ReadCmosBank1Byte (
  118. IN EFI_CPU_IO2_PROTOCOL *CpuIo,
  119. IN UINT8 Index
  120. );
  121. VOID
  122. WriteCmosBank1Byte (
  123. IN EFI_CPU_IO2_PROTOCOL *CpuIo,
  124. IN UINT8 Index,
  125. IN UINT8 Data
  126. );
  127. VOID
  128. InitializeBoardId (
  129. );
  130. EFI_STATUS
  131. EFIAPI
  132. ProgramToneFrequency (
  133. IN EFI_SPEAKER_IF_PROTOCOL *This,
  134. IN UINT16 Frequency
  135. );
  136. EFI_STATUS
  137. EFIAPI
  138. GenerateBeepTone (
  139. IN EFI_SPEAKER_IF_PROTOCOL *This,
  140. IN UINTN NumberOfBeeps,
  141. IN UINTN BeepDuration,
  142. IN UINTN TimeInterval
  143. );
  144. EFI_STATUS
  145. InitializeObservableProtocol();
  146. EFI_STATUS
  147. PciBusDriverHook();
  148. VOID
  149. EFIAPI
  150. AdjustDefaultRtcTimeCallback (
  151. IN EFI_EVENT Event,
  152. IN VOID *Context
  153. );
  154. //
  155. // Global externs
  156. //
  157. extern SYSTEM_CONFIGURATION mSystemConfiguration;
  158. extern EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *mPciRootBridgeIo;
  159. extern UINT8 mBoardIdIndex;
  160. extern BOOLEAN mFoundAANum;
  161. extern EFI_BOARD_FEATURES mBoardFeatures;
  162. extern UINT16 mSubsystemDeviceId;
  163. extern UINT16 mSubsystemAudioDeviceId;
  164. extern BOARD_ID_DECODE mBoardIdDecodeTable[];
  165. extern UINTN mBoardIdDecodeTableSize;
  166. extern UINT8 mSmbusRsvdAddresses[];
  167. extern UINT8 mNumberSmbusAddress;
  168. extern BOOLEAN mMfgMode;
  169. extern UINT32 mPlatformBootMode;
  170. extern CHAR8 BoardAaNumber[];
  171. #endif