2 Defined the platform specific device path which will be filled to
3 ConIn/ConOut variables.
5 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 #include "PlatformBootManager.h"
19 /// the short form device path for Usb keyboard
22 #define SUBCLASS_BOOT 1
23 #define PROTOCOL_KEYBOARD 1
26 /// PcdDefaultTerminalType values
30 #define VT100PLUSTYPE 2
35 // Below is the platform console device path
38 ACPI_HID_DEVICE_PATH PciRootBridge
;
39 PCI_DEVICE_PATH PciUart
;
40 UART_DEVICE_PATH Uart
;
41 VENDOR_DEVICE_PATH TerminalType
;
42 EFI_DEVICE_PATH_PROTOCOL End
;
43 } PCI_UART_DEVICE_PATH
;
46 VENDOR_DEVICE_PATH VendorHardware
;
47 UART_DEVICE_PATH Uart
;
48 VENDOR_DEVICE_PATH TerminalType
;
49 EFI_DEVICE_PATH_PROTOCOL End
;
50 } VENDOR_UART_DEVICE_PATH
;
53 USB_CLASS_DEVICE_PATH UsbClass
;
54 EFI_DEVICE_PATH_PROTOCOL End
;
55 } USB_CLASS_FORMAT_DEVICE_PATH
;
57 #define PNPID_DEVICE_PATH_NODE(PnpId) \
63 (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
64 (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \
67 EISA_PNP_ID((PnpId)), \
71 #define PCI_DEVICE_PATH_NODE(Func, Dev) \
74 HARDWARE_DEVICE_PATH, \
77 (UINT8) (sizeof (PCI_DEVICE_PATH)), \
78 (UINT8) ((sizeof (PCI_DEVICE_PATH)) >> 8) \
87 END_DEVICE_PATH_TYPE, \
88 END_ENTIRE_DEVICE_PATH_SUBTYPE, \
90 END_DEVICE_PATH_LENGTH, \
96 // Platform specific serial device path
98 PCI_UART_DEVICE_PATH gPciUartDevicePath0
= {
99 PNPID_DEVICE_PATH_NODE(0x0A03),
100 PCI_DEVICE_PATH_NODE(1, 20),
103 MESSAGING_DEVICE_PATH
,
106 (UINT8
)(sizeof (UART_DEVICE_PATH
)),
107 (UINT8
)((sizeof (UART_DEVICE_PATH
)) >> 8)
118 MESSAGING_DEVICE_PATH
,
121 (UINT8
)(sizeof (VENDOR_DEVICE_PATH
)),
122 (UINT8
)((sizeof (VENDOR_DEVICE_PATH
)) >> 8)
125 DEVICE_PATH_MESSAGING_PC_ANSI
130 PCI_UART_DEVICE_PATH gPciUartDevicePath1
= {
131 PNPID_DEVICE_PATH_NODE(0x0A03),
132 PCI_DEVICE_PATH_NODE(5, 20),
135 MESSAGING_DEVICE_PATH
,
138 (UINT8
)(sizeof (UART_DEVICE_PATH
)),
139 (UINT8
)((sizeof (UART_DEVICE_PATH
)) >> 8)
150 MESSAGING_DEVICE_PATH
,
153 (UINT8
)(sizeof (VENDOR_DEVICE_PATH
)),
154 (UINT8
)((sizeof (VENDOR_DEVICE_PATH
)) >> 8)
157 DEVICE_PATH_MESSAGING_PC_ANSI
162 VENDOR_UART_DEVICE_PATH gDebugAgentUartDevicePath
= {
165 HARDWARE_DEVICE_PATH
,
168 (UINT8
) (sizeof (VENDOR_DEVICE_PATH
)),
169 (UINT8
) ((sizeof (VENDOR_DEVICE_PATH
)) >> 8)
172 EFI_DEBUG_AGENT_GUID
,
176 MESSAGING_DEVICE_PATH
,
179 (UINT8
) (sizeof (UART_DEVICE_PATH
)),
180 (UINT8
) ((sizeof (UART_DEVICE_PATH
)) >> 8)
184 0, // BaudRate - Default
185 0, // DataBits - Default
186 0, // Parity - Default
187 0, // StopBits - Default
191 MESSAGING_DEVICE_PATH
,
194 (UINT8
)(sizeof (VENDOR_DEVICE_PATH
)),
195 (UINT8
)((sizeof (VENDOR_DEVICE_PATH
)) >> 8)
198 DEVICE_PATH_MESSAGING_PC_ANSI
203 USB_CLASS_FORMAT_DEVICE_PATH gUsbClassKeyboardDevicePath
= {
206 MESSAGING_DEVICE_PATH
,
209 (UINT8
)(sizeof (USB_CLASS_DEVICE_PATH
)),
210 (UINT8
)((sizeof (USB_CLASS_DEVICE_PATH
)) >> 8)
213 0xffff, // VendorId - Match any vendor
214 0xffff, // ProductId - Match any product
215 CLASS_HID
, // DeviceClass
216 SUBCLASS_BOOT
, // DeviceSubClass
217 PROTOCOL_KEYBOARD
// DeviceProtocol
223 // Predefined platform default console device path
225 PLATFORM_CONSOLE_CONNECT_ENTRY gPlatformConsole
[] = {
226 { (EFI_DEVICE_PATH_PROTOCOL
*) &gPciUartDevicePath0
, (CONSOLE_OUT
| CONSOLE_IN
) },
227 { (EFI_DEVICE_PATH_PROTOCOL
*) &gPciUartDevicePath1
, (CONSOLE_OUT
| CONSOLE_IN
) },
228 { (EFI_DEVICE_PATH_PROTOCOL
*) &gDebugAgentUartDevicePath
, (CONSOLE_OUT
| CONSOLE_IN
) },
229 { (EFI_DEVICE_PATH_PROTOCOL
*) &gUsbClassKeyboardDevicePath
, (CONSOLE_IN
) },
235 InitializePlatformBootManagerLib (
236 IN EFI_HANDLE ImageHandle
,
237 IN EFI_SYSTEM_TABLE
*SystemTable
240 EFI_GUID
*TerminalTypeGuid
;
243 // Update UART device path nodes based on UART PCD settings
245 gPciUartDevicePath0
.Uart
.BaudRate
= PcdGet64 (PcdUartDefaultBaudRate
);
246 gPciUartDevicePath0
.Uart
.DataBits
= PcdGet8 (PcdUartDefaultDataBits
);
247 gPciUartDevicePath0
.Uart
.Parity
= PcdGet8 (PcdUartDefaultParity
);
248 gPciUartDevicePath0
.Uart
.StopBits
= PcdGet8 (PcdUartDefaultStopBits
);
249 gPciUartDevicePath1
.Uart
.BaudRate
= PcdGet64 (PcdUartDefaultBaudRate
);
250 gPciUartDevicePath1
.Uart
.DataBits
= PcdGet8 (PcdUartDefaultDataBits
);
251 gPciUartDevicePath1
.Uart
.Parity
= PcdGet8 (PcdUartDefaultParity
);
252 gPciUartDevicePath1
.Uart
.StopBits
= PcdGet8 (PcdUartDefaultStopBits
);
255 // Update Vendor device path nodes based on terminal type PCD settings
257 switch (PcdGet8 (PcdDefaultTerminalType
)) {
259 TerminalTypeGuid
= &gEfiPcAnsiGuid
;
262 TerminalTypeGuid
= &gEfiVT100Guid
;
265 TerminalTypeGuid
= &gEfiVT100PlusGuid
;
268 TerminalTypeGuid
= &gEfiVTUTF8Guid
;
271 TerminalTypeGuid
= &gEfiTtyTermGuid
;
274 TerminalTypeGuid
= &gEfiPcAnsiGuid
;
277 CopyGuid (&gPciUartDevicePath0
.TerminalType
.Guid
, TerminalTypeGuid
);
278 CopyGuid (&gPciUartDevicePath1
.TerminalType
.Guid
, TerminalTypeGuid
);