/*++ Copyright (c) 2004 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent Module Name: PlatformDxe.h Abstract: Header file for Platform Initialization Driver. ++*/ #ifndef _PLATFORM_DRIVER_H #define _PLATFORM_DRIVER_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Configuration.h" #include "PchAccess.h" #include "VlvAccess.h" #include "BoardIdDecode.h" #include "PlatformBaseAddresses.h" #include "SetupMode.h" #include "PlatformBootMode.h" #include "CpuType.h" #define PCAT_RTC_ADDRESS_REGISTER 0x74 #define PCAT_RTC_DATA_REGISTER 0x75 #define RTC_ADDRESS_SECOND_ALARM 0x01 #define RTC_ADDRESS_MINUTE_ALARM 0x03 #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 // // Platform driver GUID // #define PLATFORM_NORMAL_MODE 0x01 #define PLATFORM_SAFE_MODE 0x02 #define PLATFORM_RECOVERY_MODE 0x04 #define PLATFORM_MANUFACTURING_MODE 0x08 #define PLATFORM_BACK_TO_BIOS_MODE 0x10 #define EFI_OEM_SPECIFIC 0x8000 #define EFI_CU_PLATFORM_DXE_INIT (EFI_OEM_SPECIFIC | 0x00000011) #define EFI_CU_PLATFORM_DXE_STEP1 (EFI_OEM_SPECIFIC | 0x00000012) #define EFI_CU_PLATFORM_DXE_STEP2 (EFI_OEM_SPECIFIC | 0x00000013) #define EFI_CU_PLATFORM_DXE_STEP3 (EFI_OEM_SPECIFIC | 0x00000014) #define EFI_CU_PLATFORM_DXE_STEP4 (EFI_OEM_SPECIFIC | 0x00000015) #define EFI_CU_PLATFORM_DXE_INIT_DONE (EFI_OEM_SPECIFIC | 0x00000016) #pragma pack(1) typedef UINT64 EFI_BOARD_FEATURES; typedef struct { CHAR8 AaNumber[7]; UINT8 BoardId; EFI_BOARD_FEATURES Features; UINT16 SubsystemDeviceId; UINT16 AudioSubsystemDeviceId; UINT64 AcpiOemTableId; } BOARD_ID_DECODE; #pragma pack() // // Prototypes // VOID EFIAPI ReadyToBootFunction ( EFI_EVENT Event, VOID *Context ); VOID EFIAPI IdeDataFilter ( IN EFI_EVENT Event, IN VOID* Context ); VOID SwapEntries ( IN CHAR8 *Data ); VOID AsciiToUnicode ( IN CHAR8 *AsciiString, IN CHAR16 *UnicodeString ); VOID EFIAPI PciBusEvent ( IN EFI_EVENT Event, IN VOID* Context ); UINT8 ReadCmosBank1Byte ( IN EFI_CPU_IO2_PROTOCOL *CpuIo, IN UINT8 Index ); VOID WriteCmosBank1Byte ( IN EFI_CPU_IO2_PROTOCOL *CpuIo, IN UINT8 Index, IN UINT8 Data ); VOID InitializeBoardId ( ); EFI_STATUS EFIAPI ProgramToneFrequency ( IN EFI_SPEAKER_IF_PROTOCOL *This, IN UINT16 Frequency ); EFI_STATUS EFIAPI GenerateBeepTone ( IN EFI_SPEAKER_IF_PROTOCOL *This, IN UINTN NumberOfBeeps, IN UINTN BeepDuration, IN UINTN TimeInterval ); EFI_STATUS InitializeObservableProtocol(); EFI_STATUS PciBusDriverHook(); VOID EFIAPI AdjustDefaultRtcTimeCallback ( IN EFI_EVENT Event, IN VOID *Context ); // // Global externs // extern SYSTEM_CONFIGURATION mSystemConfiguration; extern EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *mPciRootBridgeIo; extern UINT8 mBoardIdIndex; extern BOOLEAN mFoundAANum; extern EFI_BOARD_FEATURES mBoardFeatures; extern UINT16 mSubsystemDeviceId; extern UINT16 mSubsystemAudioDeviceId; extern BOARD_ID_DECODE mBoardIdDecodeTable[]; extern UINTN mBoardIdDecodeTableSize; extern UINT8 mSmbusRsvdAddresses[]; extern UINT8 mNumberSmbusAddress; extern BOOLEAN mMfgMode; extern UINT32 mPlatformBootMode; extern CHAR8 BoardAaNumber[]; #endif