+++ /dev/null
-/*++\r
-\r
- Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
- \r\r
- SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
- \r\r
-\r
-\r
-Module Name:\r
-\r
- BdsPlatform.h\r
-\r
-Abstract:\r
-\r
- Head file for BDS Platform specific code\r
-\r
---*/\r
-\r
-#ifndef _BDS_PLATFORM_H\r
-#define _BDS_PLATFORM_H\r
-\r
-#include <FrameworkDxe.h>\r
-\r
-#include <Protocol/FirmwareVolume2.h>\r
-#include <Protocol/DevicePath.h>\r
-#include <Protocol/SimpleNetwork.h>\r
-#include <Protocol/PciRootBridgeIo.h>\r
-#include <Protocol/LoadFile.h>\r
-#include <Protocol/LegacyBios.h>\r
-#include <Protocol/PciIo.h>\r
-#include <Protocol/SmmAccess2.h>\r
-#include <Protocol/DxeSmmReadyToLock.h>\r
-#include <Protocol/UserManager.h>\r
-#include <Protocol/DeferredImageLoad.h>\r
-#include <Protocol/AcpiS3Save.h>\r
-#include <Protocol/ExitPmAuth.h>\r
-#include <Protocol/MmioDevice.h>\r
-#include <Protocol/I2cBusMcg.h>\r
-#include <Protocol/I2cHostMcg.h>\r
-#include <Guid/CapsuleVendor.h>\r
-#include <Guid/MemoryTypeInformation.h>\r
-#include <Guid/GlobalVariable.h>\r
-#include <Guid/DebugAgentGuid.h>\r
-\r
-\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/PcdLib.h>\r
-#include <Library/IoLib.h>\r
-#include <Library/GenericBdsLib.h>\r
-#include <Library/PlatformBdsLib.h>\r
-#include <Library/DevicePathLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/HobLib.h>\r
-#include <Library/PrintLib.h>\r
-#include <Library/PerformanceLib.h>\r
-#include <Library/ReportStatusCodeLib.h>\r
-\r
-#include <IndustryStandard/Pci.h>\r
-\r
-extern EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges [];\r
-extern BDS_CONSOLE_CONNECT_ENTRY gPlatformConsole [];\r
-extern EFI_DEVICE_PATH_PROTOCOL *gPlatformAllPossiblePciVgaConsole [];\r
-extern EFI_DEVICE_PATH_PROTOCOL *gPlatformConnectSequence [];\r
-extern EFI_DEVICE_PATH_PROTOCOL *gPlatformDriverOption [];\r
-extern EFI_DEVICE_PATH_PROTOCOL *gPlatformBootOption [];\r
-extern EFI_DEVICE_PATH_PROTOCOL *gUserAuthenticationDevice[];\r
-extern BDS_CONSOLE_CONNECT_ENTRY gPlatformSimpleConsole [];\r
-extern EFI_DEVICE_PATH_PROTOCOL *gPlatformSimpleBootOption [];\r
-\r
-extern BOOLEAN mEnumBootDevice;\r
-\r
-\r
-//\r
-// the short form device path for Usb keyboard\r
-//\r
-#define CLASS_HID 3\r
-#define SUBCLASS_BOOT 1\r
-#define PROTOCOL_KEYBOARD 1\r
-\r
-#define PCI_DEVICE_PATH_NODE(Func, Dev) \\r
- { \\r
- HARDWARE_DEVICE_PATH, \\r
- HW_PCI_DP, \\r
- { \\r
- (UINT8) (sizeof (PCI_DEVICE_PATH)), \\r
- (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \\r
- }, \\r
- (Func), \\r
- (Dev) \\r
- }\r
-\r
-#define PNPID_DEVICE_PATH_NODE(PnpId) \\r
- { \\r
- { \\r
- ACPI_DEVICE_PATH, \\r
- ACPI_DP, \\r
- { \\r
- (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \\r
- (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \\r
- } \\r
- }, \\r
- EISA_PNP_ID((PnpId)), \\r
- 0 \\r
- }\r
-\r
-#define gUart(BaudRate, DataBits, Parity, StopBits) \\r
- { \\r
- { \\r
- MESSAGING_DEVICE_PATH, \\r
- MSG_UART_DP, \\r
- { \\r
- (UINT8) (sizeof (UART_DEVICE_PATH)), \\r
- (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \\r
- } \\r
- }, \\r
- 0, \\r
- (BaudRate), \\r
- (DataBits), \\r
- (Parity), \\r
- (StopBits) \\r
- }\r
-\r
-#define gPcAnsiTerminal \\r
- { \\r
- { \\r
- MESSAGING_DEVICE_PATH, \\r
- MSG_VENDOR_DP, \\r
- { \\r
- (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \\r
- (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \\r
- } \\r
- }, \\r
- DEVICE_PATH_MESSAGING_PC_ANSI \\r
- }\r
-\r
-#define gUsbKeyboardMouse \\r
- { \\r
- { \\r
- MESSAGING_DEVICE_PATH, \\r
- MSG_USB_CLASS_DP, \\r
- (UINT8) (sizeof (USB_CLASS_DEVICE_PATH)), \\r
- (UINT8) ((sizeof (USB_CLASS_DEVICE_PATH)) >> 8) \\r
- }, \\r
- 0xffff, \\r
- 0xffff, \\r
- CLASS_HID, \\r
- SUBCLASS_BOOT, \\r
- PROTOCOL_KEYBOARD \\r
- }\r
-\r
-#define gEndEntire \\r
- { \\r
- END_DEVICE_PATH_TYPE, \\r
- END_ENTIRE_DEVICE_PATH_SUBTYPE, \\r
- { \\r
- END_DEVICE_PATH_LENGTH, \\r
- 0 \\r
- } \\r
- }\r
-\r
-#define gPciRootBridge \\r
- PNPID_DEVICE_PATH_NODE(0x0A03)\r
-\r
-#define gPnpPs2Keyboard \\r
- PNPID_DEVICE_PATH_NODE(0x0303)\r
-\r
-#define gPnp16550ComPort \\r
- PNPID_DEVICE_PATH_NODE(0x0501)\r
-\r
-#define gPciePort0Bridge \\r
- PCI_DEVICE_PATH_NODE(0, 0x1C)\r
-\r
-#define gPciePort1Bridge \\r
- PCI_DEVICE_PATH_NODE(1, 0x1C)\r
-\r
-#define gPciePort2Bridge \\r
- PCI_DEVICE_PATH_NODE(2, 0x1C)\r
-\r
-#define gPciePort3Bridge \\r
- PCI_DEVICE_PATH_NODE(3, 0x1C)\r
-\r
-#define gPciIsaBridge \\r
- PCI_DEVICE_PATH_NODE(0, 0x1f)\r
-\r
-//\r
-// Platform Root Bridge\r
-//\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_ROOT_BRIDGE_DEVICE_PATH;\r
-\r
-//\r
-// Below is the platform console device path\r
-//\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH IsaBridge;\r
- ACPI_HID_DEVICE_PATH Keyboard;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_ISA_KEYBOARD_DEVICE_PATH;\r
-\r
-typedef struct {\r
- VENDOR_DEVICE_PATH VendorDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} HII_VENDOR_DEVICE_PATH;\r
-\r
-typedef struct {\r
- USB_CLASS_DEVICE_PATH UsbClass;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} USB_CLASS_FORMAT_DEVICE_PATH;\r
-\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH OnboardVga;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_ONBOARD_VGA_DEVICE_PATH;\r
-\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH AgpBridge;\r
- PCI_DEVICE_PATH AgpDevice;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_OFFBOARD_VGA_DEVICE_PATH;\r
-\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH IsaBridge;\r
- ACPI_HID_DEVICE_PATH IsaSerial;\r
- UART_DEVICE_PATH Uart;\r
- VENDOR_DEVICE_PATH TerminalType;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_ISA_SERIAL_DEVICE_PATH;\r
-\r
-//\r
-// Below is the boot option device path\r
-//\r
-typedef struct {\r
- BBS_BBS_DEVICE_PATH LegacyHD;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} LEGACY_HD_DEVICE_PATH;\r
-\r
-//\r
-// Below is the platform IDE device path\r
-//\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH IsaBridge;\r
- ATAPI_DEVICE_PATH Ide;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_IDE_DEVICE_PATH;\r
-\r
-//\r
-// Floppy device path definition\r
-//\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH IsaBridge;\r
- ACPI_HID_DEVICE_PATH Floppy;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_FLOPPY_DEVICE_PATH;\r
-\r
-//\r
-// Below is the platform USB controller device path for\r
-// USB disk as user authentication device.\r
-//\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH PciDevice;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_USB_DEVICE_PATH;\r
-\r
-//\r
-// Debug Agent UART Console device path definition\r
-//\r
-typedef struct {\r
- VENDOR_DEVICE_PATH VendorHardware;\r
- UART_DEVICE_PATH Uart;\r
- VENDOR_DEVICE_PATH TerminalType;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} VENDOR_UART_DEVICE_PATH;\r
-\r
-//\r
-// Below is the platform PCI device path\r
-//\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH PciDevice;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PLATFORM_PCI_DEVICE_PATH;\r
-\r
-typedef enum {\r
- PMIC_Equal = 0, // = 0\r
- PMIC_Greater_Than, // > 1\r
- PMIC_Smaller_Than, // < 2\r
- PMIC_Greater_Equal, // >= 3\r
- PMIC_Smaller_Equal, // <= 4\r
- PMIC_Any // don't care 5\r
-} PMIC_Condition_list;\r
-\r
-typedef enum {\r
- PMIC_White_List = 0, //White list\r
- PMIC_Black_List = 1 //Black list\r
-} PMIC_Compliance_mode;\r
-\r
-typedef struct {\r
- UINT8 Cond_Choice; // PMIC_Condition_list\r
- UINT8 Cond_Number; // the number\r
-}PMIC_Condition_Item;\r
-\r
-typedef struct {\r
- PMIC_Condition_Item PMIC_BoardID;\r
- PMIC_Condition_Item PMIC_FabID;\r
- PMIC_Condition_Item Soc_Stepping;//define PMIC type, 1:Dialog , 2:Rohm\r
- PMIC_Condition_Item PMIC_VendID;\r
- PMIC_Condition_Item PMIC_RevID;\r
- PMIC_Compliance_mode mode; //if 1, blacklist; if 0, white list.\r
-} PMIC_Compliance_Item;\r
-\r
-//\r
-// Platform BDS Functions\r
-//\r
-VOID\r
-PlatformBdsGetDriverOption (\r
- IN LIST_ENTRY *BdsDriverLists\r
- );\r
-\r
-VOID\r
-PlatformBdsPredictBootOption (\r
- IN LIST_ENTRY *BdsBootOptionList\r
- );\r
-\r
-EFI_STATUS\r
-PlatformBdsShowProgress (\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleForeground,\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL TitleBackground,\r
- CHAR16 *Title,\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL ProgressColor,\r
- UINTN Progress,\r
- UINTN PreviousValue\r
- );\r
-\r
-VOID\r
-PlatformBdsConnectSequence (\r
- VOID\r
- );\r
-\r
-EFI_STATUS\r
-PlatformBdsConnectConsole (\r
- IN BDS_CONSOLE_CONNECT_ENTRY *PlatformConsole\r
- );\r
-\r
-EFI_STATUS\r
-PlatformBdsNoConsoleAction (\r
- VOID\r
- );\r
-\r
-VOID\r
-PlatformBdsEnterFrontPage (\r
- IN UINT16 TimeoutDefault,\r
- IN BOOLEAN ConnectAllHappened\r
- );\r
-\r
-VOID\r
-EFIAPI\r
-PlatformBdsUserIdentify (\r
- OUT EFI_USER_PROFILE_HANDLE *User,\r
- OUT BOOLEAN *DeferredImage\r
- );\r
-\r
-VOID\r
-EFIAPI\r
-PlatformBdsConnectAuthDevice (\r
- VOID\r
- );\r
-\r
-VOID\r
-PlatformBdsEnterFrontPageWithHotKey (\r
- IN UINT16 TimeoutDefault,\r
- IN BOOLEAN ConnectAllHappened\r
- );\r
-\r
- EFI_STATUS\r
- ShowProgress (\r
- IN UINT16 TimeoutDefault\r
- );\r
-\r
- EFI_STATUS\r
- InitializeFrontPage (\r
- IN BOOLEAN InitializeHiiData\r
- );\r
-\r
- VOID\r
- UpdateFrontPageStrings (\r
- VOID\r
- );\r
- \r
- \r
- EFI_STATUS\r
- InitBMPackage (\r
- VOID\r
- );\r
- \r
- \r
- VOID\r
- FreeBMPackage (\r
- VOID\r
- );\r
- \r
- \r
- EFI_STATUS\r
- CallFrontPage (\r
- VOID\r
- );\r
-\r
-\r
- VOID\r
- CallBootManager (\r
- VOID\r
- );\r
-\r
-VOID\r
-CallDeviceManager (\r
- VOID\r
- );\r
-\r
-VOID\r
-BdsStartBootMaint (\r
- VOID\r
- );\r
-\r
-CHAR16 *\r
-GetStringById (\r
- IN EFI_STRING_ID Id\r
- );\r
-\r
-EFI_STATUS\r
-WaitForSingleEvent (\r
- IN EFI_EVENT Event,\r
- IN UINT64 Timeout OPTIONAL\r
- );\r
-\r
-EFI_STATUS\r
-BdsLibDeleteOptionFromHandle (\r
- IN EFI_HANDLE Handle\r
- );\r
-\r
-EFI_STATUS\r
-BdsDeleteAllInvalidEfiBootOption (\r
- VOID\r
- );\r
-\r
-\r
-#define ONE_SECOND 10000000\r
-#define FRONT_PAGE_KEY_CONTINUE 0x1000\r
-#define FRONT_PAGE_KEY_LANGUAGE 0x1234\r
-#define FRONT_PAGE_KEY_BOOT_MANAGER 0x1064\r
-#define FRONT_PAGE_KEY_DEVICE_MANAGER 0x8567\r
-#define FRONT_PAGE_KEY_BOOT_MAINTAIN 0x9876\r
-\r
-#define PORT_A_DVO 0 // ; DVO A\r
-#define PORT_B_DVO 1 // ; DVO B\r
-#define PORT_C_DVO 2 // ; DVO C\r
-#define PORT_D_DVO 3 // ; DVO D\r
-#define PORT_LVDS 4 // ; Integrated LVDS port\r
-#define PORT_ANALOG_TV 5 // ; Integrated TV port\r
-#define PORT_CRT 6 // ; integrated Analog port\r
-#define PORT_B_DP 7 // ; DisplayPort B\r
-#define PORT_C_DP 8 // ; DisplayPort C\r
-#define PORT_D_DP 9 // ; DisplayPort D\r
-#define PORT_A_DP 10 // ; DisplayPort A (for eDP on ILK)\r
-#define PORT_B_HDMI 11 // ; HDMI B\r
-#define PORT_C_HDMI 12 // ; HDMI C\r
-#define PORT_D_HDMI 13 // ; HDMI D\r
-#define PORT_B_DVI 14 // ; DVI B\r
-#define PORT_C_DVI 15 // ; DVI C\r
-#define PORT_D_DVI 16 // ; DVI D\r
-#define PORT_MIPI_A 21 // ; MIPI\r
-#define PORT_MIPI_B 22\r
-#define PORT_MIPI_C 23\r
-\r
-\r
-extern BOOLEAN gConnectAllHappened;\r
-extern UINTN gCallbackKey;\r
-\r
-VOID\r
-BdsBootDeviceSelect (\r
- VOID\r
-);\r
-VOID FastBoot(VOID);\r
-\r
-extern BOOLEAN mModeInitialized;\r
-\r
-//\r
-// Boot video resolution and text mode.\r
-//\r
-extern UINT32 mBootHorizontalResolution ;\r
-extern UINT32 mBootVerticalResolution ;\r
-extern UINT32 mBootTextModeColumn ;\r
-extern UINT32 mBootTextModeRow ;\r
-\r
-//\r
-// BIOS setup video resolution and text mode.\r
-//\r
-extern UINT32 mSetupTextModeColumn ;\r
-extern UINT32 mSetupTextModeRow ;\r
-extern UINT32 mSetupHorizontalResolution ;\r
-extern UINT32 mSetupVerticalResolution ;\r
-extern EFI_STATUS BdsSetConsoleMode (BOOLEAN);\r
-#endif // _BDS_PLATFORM_H\r