]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/PlatformBootManagerLib/PlatformData.c
OvmfPkg: add QemuRamfb to platform console
[mirror_edk2.git] / OvmfPkg / Library / PlatformBootManagerLib / PlatformData.c
index f69c1a8714ec21b2f8e3c969fd5cc8063f379819..1250a6d351ffd63affc09c463ebff77facc75e50 100644 (file)
@@ -2,7 +2,7 @@
   Defined the platform specific device path which will be used by\r
   platform Bbd to perform the platform policy connect.\r
 \r
-  Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
 **/\r
 \r
 #include "BdsPlatform.h"\r
+#include <Guid/QemuRamfb.h>\r
 \r
 //\r
-// Predefined platform default time out value\r
+// Debug Agent UART Device Path structure\r
 //\r
-UINT16                      gPlatformBootTimeOutDefault = 5;\r
+#pragma pack(1)\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
+#pragma pack()\r
+\r
+//\r
+// USB Keyboard Device Path structure\r
+//\r
+#pragma pack (1)\r
+typedef struct {\r
+  USB_CLASS_DEVICE_PATH    Keyboard;\r
+  EFI_DEVICE_PATH_PROTOCOL End;\r
+} USB_KEYBOARD_DEVICE_PATH;\r
+#pragma pack ()\r
+\r
+//\r
+// QemuRamfb Device Path structure\r
+//\r
+#pragma pack (1)\r
+typedef struct {\r
+  VENDOR_DEVICE_PATH        Vendor;\r
+  ACPI_ADR_DEVICE_PATH      AcpiAdr;\r
+  EFI_DEVICE_PATH_PROTOCOL  End;\r
+} VENDOR_RAMFB_DEVICE_PATH;\r
+#pragma pack ()\r
 \r
 ACPI_HID_DEVICE_PATH       gPnpPs2KeyboardDeviceNode  = gPnpPs2Keyboard;\r
 ACPI_HID_DEVICE_PATH       gPnp16550ComPortDeviceNode = gPnp16550ComPort;\r
@@ -29,21 +58,117 @@ VENDOR_DEVICE_PATH         gTerminalTypeDeviceNode    = gPcAnsiTerminal;
 // Platform specific keyboard device path\r
 //\r
 \r
+\r
+//\r
+// Debug Agent UART Device Path\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
+  gPcAnsiTerminal,\r
+  gEndEntire\r
+};\r
+\r
+STATIC USB_KEYBOARD_DEVICE_PATH gUsbKeyboardDevicePath = {\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: any\r
+    0xFFFF, // ProductId: any\r
+    3,      // DeviceClass: HID\r
+    1,      // DeviceSubClass: boot\r
+    1       // DeviceProtocol: keyboard\r
+  },\r
+  gEndEntire\r
+};\r
+\r
+STATIC VENDOR_RAMFB_DEVICE_PATH gQemuRamfbDevicePath = {\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
+    QEMU_RAMFB_GUID,\r
+  },\r
+  {\r
+    {\r
+      ACPI_DEVICE_PATH,\r
+      ACPI_ADR_DP,\r
+      {\r
+        (UINT8) (sizeof (ACPI_ADR_DEVICE_PATH)),\r
+        (UINT8) ((sizeof (ACPI_ADR_DEVICE_PATH)) >> 8)\r
+      }\r
+    },\r
+    ACPI_DISPLAY_ADR (\r
+      1,                                       // DeviceIdScheme\r
+      0,                                       // HeadId\r
+      0,                                       // NonVgaOutput\r
+      1,                                       // BiosCanDetect\r
+      0,                                       // VendorInfo\r
+      ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL,  // Type\r
+      0,                                       // Port\r
+      0                                        // Index\r
+      ),\r
+  },\r
+  gEndEntire\r
+};\r
+\r
 //\r
 // Predefined platform default console device path\r
 //\r
-BDS_CONSOLE_CONNECT_ENTRY   gPlatformConsole[] = {\r
+PLATFORM_CONSOLE_CONNECT_ENTRY   gPlatformConsole[] = {\r
+  {\r
+    (EFI_DEVICE_PATH_PROTOCOL *) &gDebugAgentUartDevicePath,\r
+    (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)\r
+  },\r
+  {\r
+    (EFI_DEVICE_PATH_PROTOCOL *)&gUsbKeyboardDevicePath,\r
+    CONSOLE_IN\r
+  },\r
+  {\r
+    (EFI_DEVICE_PATH_PROTOCOL *)&gQemuRamfbDevicePath,\r
+    CONSOLE_OUT\r
+  },\r
   {\r
     NULL,\r
     0\r
   }\r
 };\r
 \r
-//\r
-// Predefined platform specific driver option\r
-//\r
-EFI_DEVICE_PATH_PROTOCOL    *gPlatformDriverOption[] = { NULL };\r
-\r
 //\r
 // Predefined platform connect sequence\r
 //\r