123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- /** @file
- Header file for BDS Platform specific code
- Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef _BDS_PLATFORM_H
- #define _BDS_PLATFORM_H
- #include <PiDxe.h>
- #include <Protocol/DevicePath.h>
- #include <Protocol/SimpleNetwork.h>
- #include <Protocol/PciRootBridgeIo.h>
- #include <Protocol/LoadFile.h>
- #include <Protocol/PciIo.h>
- #include <Protocol/CpuIo2.h>
- #include <Protocol/LoadedImage.h>
- #include <Protocol/DiskInfo.h>
- #include <Protocol/GraphicsOutput.h>
- #include <Protocol/GenericMemoryTest.h>
- #include <Protocol/DevicePathToText.h>
- #include <Protocol/FirmwareVolume2.h>
- #include <Protocol/SimpleFileSystem.h>
- #include <Guid/CapsuleVendor.h>
- #include <Guid/MemoryTypeInformation.h>
- #include <Guid/GlobalVariable.h>
- #include <Guid/MemoryOverwriteControl.h>
- #include <Guid/FileInfo.h>
- #include <Library/DebugLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/UefiRuntimeServicesTableLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/BaseLib.h>
- #include <Library/PcdLib.h>
- #include <Library/PlatformBootManagerLib.h>
- #include <Library/DevicePathLib.h>
- #include <Library/UefiLib.h>
- #include <Library/HobLib.h>
- #include <Library/DxeServicesLib.h>
- #include <Library/DxeServicesTableLib.h>
- #include <Library/PrintLib.h>
- #include <Library/HiiLib.h>
- #include <Library/CapsuleLib.h>
- #include <Library/PerformanceLib.h>
- #include <IndustryStandard/Pci30.h>
- #include <IndustryStandard/PciCodeId.h>
- ///
- /// 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 PCI_DEVICE_PATH_NODE(Func, Dev) \
- { \
- HARDWARE_DEVICE_PATH, \
- HW_PCI_DP, \
- { \
- (UINT8) (sizeof (PCI_DEVICE_PATH)), \
- (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \
- }, \
- (Func), \
- (Dev) \
- }
- #define PNPID_DEVICE_PATH_NODE(PnpId) \
- { \
- { \
- ACPI_DEVICE_PATH, \
- ACPI_DP, \
- { \
- (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
- (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \
- } \
- }, \
- EISA_PNP_ID((PnpId)), \
- 0 \
- }
- #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 gPciIsaBridge \
- PCI_DEVICE_PATH_NODE(0, 0x1f)
- #define gPnp16550ComPort \
- PNPID_DEVICE_PATH_NODE(0x0501)
- #define gUart(BaudRate, DataBits, Parity, StopBits) \
- { \
- { \
- MESSAGING_DEVICE_PATH, \
- MSG_UART_DP, \
- { \
- (UINT8) (sizeof (UART_DEVICE_PATH)), \
- (UINT8) ((sizeof (UART_DEVICE_PATH)) >> 8) \
- } \
- }, \
- 0, \
- (BaudRate), \
- (DataBits), \
- (Parity), \
- (StopBits) \
- }
- #define gPcAnsiTerminal \
- { \
- { \
- MESSAGING_DEVICE_PATH, \
- MSG_VENDOR_DP, \
- { \
- (UINT8) (sizeof (VENDOR_DEVICE_PATH)), \
- (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8) \
- } \
- }, \
- DEVICE_PATH_MESSAGING_PC_ANSI \
- }
- #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;
- typedef struct {
- ACPI_HID_DEVICE_PATH PciRootBridge;
- PCI_DEVICE_PATH IsaBridge;
- ACPI_HID_DEVICE_PATH IsaSerial;
- UART_DEVICE_PATH Uart;
- VENDOR_DEVICE_PATH TerminalType;
- EFI_DEVICE_PATH_PROTOCOL End;
- } PLATFORM_ISA_SERIAL_DEVICE_PATH;
- //
- // 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
- );
- VOID
- ConnectSequence (
- IN EFI_BOOT_MODE BootMode
- );
- INTN
- EFIAPI
- CompareBootOption (
- CONST VOID *Left,
- CONST VOID *Right
- );
- VOID
- RegisterStaticHotkey (
- VOID
- );
- VOID
- RegisterDefaultBootOption (
- VOID
- );
- #endif
|