/** @file Header file for BDS Hook Library Copyright (c) 2020, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _BOARD_BDS_HOOK_H_ #define _BOARD_BDS_HOOK_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 #include #include #include #include #include #include #include #include #include #include /// /// ConnectType /// #define CONSOLE_OUT 0x00000001 #define STD_ERROR 0x00000002 #define CONSOLE_IN 0x00000004 #define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR) extern EFI_GUID gUefiShellFileGuid; extern EFI_BOOT_MODE gBootMode; #define gPciRootBridge \ { \ { \ ACPI_DEVICE_PATH, \ ACPI_DP, \ { \ (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \ (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \ }, \ }, \ EISA_PNP_ID (0x0A03), \ 0 \ } #define gEndEntire \ { \ END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { END_DEVICE_PATH_LENGTH, 0 } \ } typedef struct { EFI_DEVICE_PATH_PROTOCOL *DevicePath; UINTN ConnectType; } BDS_CONSOLE_CONNECT_ENTRY; // // Platform Root Bridge // typedef struct { ACPI_HID_DEVICE_PATH PciRootBridge; EFI_DEVICE_PATH_PROTOCOL End; } PLATFORM_ROOT_BRIDGE_DEVICE_PATH; // // Below is the platform console device path // typedef struct { ACPI_HID_DEVICE_PATH PciRootBridge; PCI_DEVICE_PATH IsaBridge; ACPI_HID_DEVICE_PATH Keyboard; EFI_DEVICE_PATH_PROTOCOL End; } PLATFORM_KEYBOARD_DEVICE_PATH; typedef struct { ACPI_HID_DEVICE_PATH PciRootBridge; PCI_DEVICE_PATH PciDevice; EFI_DEVICE_PATH_PROTOCOL End; } PLATFORM_ONBOARD_CONTROLLER_DEVICE_PATH; typedef struct { ACPI_HID_DEVICE_PATH PciRootBridge; PCI_DEVICE_PATH Pci0Device; EFI_DEVICE_PATH_PROTOCOL End; } PLATFORM_PEG_ROOT_CONTROLLER_DEVICE_PATH; typedef struct { ACPI_HID_DEVICE_PATH PciRootBridge; PCI_DEVICE_PATH PciBridge; PCI_DEVICE_PATH PciDevice; EFI_DEVICE_PATH_PROTOCOL End; } PLATFORM_PCI_CONTROLLER_DEVICE_PATH; // // Below is the boot option device path // #define CLASS_HID 3 #define SUBCLASS_BOOT 1 #define PROTOCOL_KEYBOARD 1 typedef struct { USB_CLASS_DEVICE_PATH UsbClass; EFI_DEVICE_PATH_PROTOCOL End; } USB_CLASS_FORMAT_DEVICE_PATH; extern USB_CLASS_FORMAT_DEVICE_PATH gUsbClassKeyboardDevicePath; // // Platform BDS Functions // /** Perform the memory test base on the memory test intensive level, and update the memory resource. @param Level The memory test intensive level. @retval EFI_STATUS Success test all the system memory and update the memory resource **/ EFI_STATUS MemoryTest ( IN EXTENDMEM_COVERAGE_LEVEL Level ); /** Connect with predeined platform connect sequence, the OEM/IBV can customize with their own connect sequence. @param[in] BootMode Boot mode of this boot. **/ VOID ConnectSequence ( IN EFI_BOOT_MODE BootMode ); /** Compares boot priorities of two boot options @param Left The left boot option @param Right The right boot option @return The difference between the Left and Right boot options **/ INTN EFIAPI CompareBootOption ( CONST VOID *Left, CONST VOID *Right ); /** This function is called after all the boot options are enumerated and ordered properly. **/ VOID RegisterStaticHotkey ( VOID ); /** Registers/Unregisters boot option hotkey @param OptionNumber The boot option number for the key option. @param Key The the key input @param Add Flag to indicate to add or remove a key **/ VOID RegisterDefaultBootOption ( VOID ); #endif