]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/QemuVideoDxe/Initialize.c
OvmfPkg/QemuVideoDxe: child handles should have open parent protocol BY_CHILD_CONTROLLER
[mirror_edk2.git] / OvmfPkg / QemuVideoDxe / Initialize.c
index 2491733df9762c6220d75c5b3bdf2f00b6c48719..305797bd50d20d7202595c57d27e41a2510e4687 100644 (file)
@@ -143,7 +143,7 @@ UINT16 Seq_1024_768_32bpp_60[15] = {
 ///\r
 /// Table of supported video modes\r
 ///\r
-QEMU_VIDEO_VIDEO_MODES  QemuVideoVideoModes[] = {\r
+QEMU_VIDEO_CIRRUS_MODES  QemuVideoCirrusModes[] = {\r
 //  {  640, 480, 8, 60, Crtc_640_480_256_60,  Seq_640_480_256_60,  0xe3 },\r
 //  {  800, 600, 8, 60, Crtc_800_600_256_60,  Seq_800_600_256_60,  0xef },\r
   {  640, 480, 32, 60, Crtc_640_480_32bpp_60,  Seq_640_480_32bpp_60,  0xef },\r
@@ -154,38 +154,38 @@ QEMU_VIDEO_VIDEO_MODES  QemuVideoVideoModes[] = {
 //  { 960, 720, 32, 60, Crtc_960_720_32bpp_60, Seq_1024_768_32bpp_60, 0xef }\r
 };\r
 \r
-#define QEMU_VIDEO_MODE_COUNT \\r
-  (sizeof (QemuVideoVideoModes) / sizeof (QemuVideoVideoModes[0]))\r
+#define QEMU_VIDEO_CIRRUS_MODE_COUNT \\r
+  (sizeof (QemuVideoCirrusModes) / sizeof (QemuVideoCirrusModes[0]))\r
 \r
 /**\r
   Construct the valid video modes for QemuVideo.\r
 \r
 **/\r
 EFI_STATUS\r
-QemuVideoVideoModeSetup (\r
+QemuVideoCirrusModeSetup (\r
   QEMU_VIDEO_PRIVATE_DATA  *Private\r
   )\r
 {\r
   UINT32                                 Index;\r
   QEMU_VIDEO_MODE_DATA                   *ModeData;\r
-  QEMU_VIDEO_VIDEO_MODES                 *VideoMode;\r
+  QEMU_VIDEO_CIRRUS_MODES                *VideoMode;\r
 \r
   //\r
   // Setup Video Modes\r
   //\r
   Private->ModeData = AllocatePool (\r
-                        sizeof (Private->ModeData[0]) * QEMU_VIDEO_MODE_COUNT\r
+                        sizeof (Private->ModeData[0]) * QEMU_VIDEO_CIRRUS_MODE_COUNT\r
                         );\r
   ModeData = Private->ModeData;\r
-  VideoMode = &QemuVideoVideoModes[0];\r
-  for (Index = 0; Index < QEMU_VIDEO_MODE_COUNT; Index ++) {\r
+  VideoMode = &QemuVideoCirrusModes[0];\r
+  for (Index = 0; Index < QEMU_VIDEO_CIRRUS_MODE_COUNT; Index ++) {\r
     ModeData->ModeNumber = Index;\r
     ModeData->HorizontalResolution          = VideoMode->Width;\r
     ModeData->VerticalResolution            = VideoMode->Height;\r
     ModeData->ColorDepth                    = VideoMode->ColorDepth;\r
     ModeData->RefreshRate                   = VideoMode->RefreshRate;\r
     DEBUG ((EFI_D_INFO,\r
-      "Adding Video Mode %d: %dx%d, %d-bit, %d Hz\n",\r
+      "Adding Cirrus Video Mode %d: %dx%d, %d-bit, %d Hz\n",\r
       ModeData->ModeNumber,\r
       ModeData->HorizontalResolution,\r
       ModeData->VerticalResolution,\r
@@ -196,7 +196,59 @@ QemuVideoVideoModeSetup (
     ModeData ++ ;\r
     VideoMode ++;\r
   }\r
-  Private->MaxMode = QEMU_VIDEO_MODE_COUNT;\r
+  Private->MaxMode = QEMU_VIDEO_CIRRUS_MODE_COUNT;\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+///\r
+/// Table of supported video modes\r
+///\r
+QEMU_VIDEO_BOCHS_MODES  QemuVideoBochsModes[] = {\r
+  {  640, 480, 32 },\r
+  {  800, 600, 32 },\r
+  { 1024, 768, 24 },\r
+};\r
+\r
+#define QEMU_VIDEO_BOCHS_MODE_COUNT \\r
+  (sizeof (QemuVideoBochsModes) / sizeof (QemuVideoBochsModes[0]))\r
+\r
+EFI_STATUS\r
+QemuVideoBochsModeSetup (\r
+  QEMU_VIDEO_PRIVATE_DATA  *Private\r
+  )\r
+{\r
+  UINT32                                 Index;\r
+  QEMU_VIDEO_MODE_DATA                   *ModeData;\r
+  QEMU_VIDEO_BOCHS_MODES                 *VideoMode;\r
+\r
+  //\r
+  // Setup Video Modes\r
+  //\r
+  Private->ModeData = AllocatePool (\r
+                        sizeof (Private->ModeData[0]) * QEMU_VIDEO_BOCHS_MODE_COUNT\r
+                        );\r
+  ModeData = Private->ModeData;\r
+  VideoMode = &QemuVideoBochsModes[0];\r
+  for (Index = 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index ++) {\r
+    ModeData->ModeNumber = Index;\r
+    ModeData->HorizontalResolution          = VideoMode->Width;\r
+    ModeData->VerticalResolution            = VideoMode->Height;\r
+    ModeData->ColorDepth                    = VideoMode->ColorDepth;\r
+    ModeData->RefreshRate                   = 60;\r
+    DEBUG ((EFI_D_INFO,\r
+      "Adding Bochs Video Mode %d: %dx%d, %d-bit, %d Hz\n",\r
+      ModeData->ModeNumber,\r
+      ModeData->HorizontalResolution,\r
+      ModeData->VerticalResolution,\r
+      ModeData->ColorDepth,\r
+      ModeData->RefreshRate\r
+      ));\r
+\r
+    ModeData ++ ;\r
+    VideoMode ++;\r
+  }\r
+  Private->MaxMode = QEMU_VIDEO_BOCHS_MODE_COUNT;\r
 \r
   return EFI_SUCCESS;\r
 }\r