+++ /dev/null
-/** @file\r
-Defined the platform specific device path which will be filled to\r
-ConIn/ConOut variables.\r
-\r
-Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
-SPDX-License-Identifier: BSD-2-Clause-Patent\r
-\r
-**/\r
-\r
-#include "PlatformBootManager.h"\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
-///\r
-/// PcdDefaultTerminalType values\r
-///\r
-#define PCANSITYPE 0\r
-#define VT100TYPE 1\r
-#define VT100PLUSTYPE 2\r
-#define VTUTF8TYPE 3\r
-#define TTYTERMTYPE 4\r
-\r
-//\r
-// Below is the platform console device path\r
-//\r
-typedef struct {\r
- ACPI_HID_DEVICE_PATH PciRootBridge;\r
- PCI_DEVICE_PATH PciUart;\r
- UART_DEVICE_PATH Uart;\r
- VENDOR_DEVICE_PATH TerminalType;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} PCI_UART_DEVICE_PATH;\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
-typedef struct {\r
- USB_CLASS_DEVICE_PATH UsbClass;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} USB_CLASS_FORMAT_DEVICE_PATH;\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 PCI_DEVICE_PATH_NODE(Func, Dev) \\r
- { \\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
- }, \\r
- (Func), \\r
- (Dev) \\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
-//\r
-// Platform specific serial device path\r
-//\r
-PCI_UART_DEVICE_PATH gPciUartDevicePath0 = {\r
- PNPID_DEVICE_PATH_NODE(0x0A03),\r
- PCI_DEVICE_PATH_NODE(1, 20),\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, // Reserved\r
- 921600, // BaudRate\r
- 8, // DataBits\r
- 1, // Parity\r
- 1 // StopBits\r
- },\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
- gEndEntire\r
-};\r
-\r
-PCI_UART_DEVICE_PATH gPciUartDevicePath1 = {\r
- PNPID_DEVICE_PATH_NODE(0x0A03),\r
- PCI_DEVICE_PATH_NODE(5, 20),\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, // Reserved\r
- 921600, // BaudRate\r
- 8, // DataBits\r
- 1, // Parity\r
- 1 // StopBits\r
- },\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
- gEndEntire\r
-};\r
-\r
-VENDOR_UART_DEVICE_PATH gDebugAgentUartDevicePath = {\r
- {\r
- {\r
- HARDWARE_DEVICE_PATH,\r
- HW_VENDOR_DP,\r
- {\r
- (UINT8) (sizeof (VENDOR_DEVICE_PATH)),\r
- (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)\r
- }\r
- },\r
- EFI_DEBUG_AGENT_GUID,\r
- },\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, // Reserved\r
- 0, // BaudRate - Default\r
- 0, // DataBits - Default\r
- 0, // Parity - Default\r
- 0, // StopBits - Default\r
- },\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
- gEndEntire\r
-};\r
-\r
-USB_CLASS_FORMAT_DEVICE_PATH gUsbClassKeyboardDevicePath = {\r
- {\r
- {\r
- MESSAGING_DEVICE_PATH,\r
- MSG_USB_CLASS_DP,\r
- {\r
- (UINT8)(sizeof (USB_CLASS_DEVICE_PATH)),\r
- (UINT8)((sizeof (USB_CLASS_DEVICE_PATH)) >> 8)\r
- }\r
- },\r
- 0xffff, // VendorId - Match any vendor\r
- 0xffff, // ProductId - Match any product\r
- CLASS_HID, // DeviceClass\r
- SUBCLASS_BOOT, // DeviceSubClass\r
- PROTOCOL_KEYBOARD // DeviceProtocol\r
- },\r
- gEndEntire\r
-};\r
-\r
-//\r
-// Predefined platform default console device path\r
-//\r
-PLATFORM_CONSOLE_CONNECT_ENTRY gPlatformConsole[] = {\r
- { (EFI_DEVICE_PATH_PROTOCOL *) &gPciUartDevicePath0, (CONSOLE_OUT | CONSOLE_IN) },\r
- { (EFI_DEVICE_PATH_PROTOCOL *) &gPciUartDevicePath1, (CONSOLE_OUT | CONSOLE_IN) },\r
- { (EFI_DEVICE_PATH_PROTOCOL *) &gDebugAgentUartDevicePath, (CONSOLE_OUT | CONSOLE_IN) },\r
- { (EFI_DEVICE_PATH_PROTOCOL *) &gUsbClassKeyboardDevicePath, (CONSOLE_IN) },\r
- { NULL, 0 }\r
-};\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-InitializePlatformBootManagerLib (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-{\r
- EFI_GUID *TerminalTypeGuid;\r
-\r
- //\r
- // Update UART device path nodes based on UART PCD settings\r
- //\r
- gPciUartDevicePath0.Uart.BaudRate = PcdGet64 (PcdUartDefaultBaudRate);\r
- gPciUartDevicePath0.Uart.DataBits = PcdGet8 (PcdUartDefaultDataBits);\r
- gPciUartDevicePath0.Uart.Parity = PcdGet8 (PcdUartDefaultParity);\r
- gPciUartDevicePath0.Uart.StopBits = PcdGet8 (PcdUartDefaultStopBits);\r
- gPciUartDevicePath1.Uart.BaudRate = PcdGet64 (PcdUartDefaultBaudRate);\r
- gPciUartDevicePath1.Uart.DataBits = PcdGet8 (PcdUartDefaultDataBits);\r
- gPciUartDevicePath1.Uart.Parity = PcdGet8 (PcdUartDefaultParity);\r
- gPciUartDevicePath1.Uart.StopBits = PcdGet8 (PcdUartDefaultStopBits);\r
-\r
- //\r
- // Update Vendor device path nodes based on terminal type PCD settings\r
- //\r
- switch (PcdGet8 (PcdDefaultTerminalType)) {\r
- case PCANSITYPE:\r
- TerminalTypeGuid = &gEfiPcAnsiGuid;\r
- break;\r
- case VT100TYPE:\r
- TerminalTypeGuid = &gEfiVT100Guid;\r
- break;\r
- case VT100PLUSTYPE:\r
- TerminalTypeGuid = &gEfiVT100PlusGuid;\r
- break;\r
- case VTUTF8TYPE:\r
- TerminalTypeGuid = &gEfiVTUTF8Guid;\r
- break;\r
- case TTYTERMTYPE:\r
- TerminalTypeGuid = &gEfiTtyTermGuid;\r
- break;\r
- default:\r
- TerminalTypeGuid = &gEfiPcAnsiGuid;\r
- break;\r
- }\r
- CopyGuid (&gPciUartDevicePath0.TerminalType.Guid, TerminalTypeGuid);\r
- CopyGuid (&gPciUartDevicePath1.TerminalType.Guid, TerminalTypeGuid);\r
-\r
- return EFI_SUCCESS;\r
-}\r