]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/QemuVideoDxe/Gop.c
OvmfPkg: fix conversion specifiers in DEBUG format strings
[mirror_edk2.git] / OvmfPkg / QemuVideoDxe / Gop.c
index bd49ee91391fb6e995465b8868a5eb258e9c5ff8..18d0779896ca494c1765577cfede6ad428710a29 100644 (file)
@@ -70,8 +70,10 @@ QemuVideoCompleteModeData (
   Mode->FrameBufferBase = FrameBufDesc->AddrRangeMin;\r
   Mode->FrameBufferSize = Info->HorizontalResolution * Info->VerticalResolution;\r
   Mode->FrameBufferSize = Mode->FrameBufferSize * ((ModeData->ColorDepth + 7) / 8);\r
-  DEBUG ((EFI_D_INFO, "FrameBufferBase: 0x%x, FrameBufferSize: 0x%x\n", Mode->FrameBufferBase, Mode->FrameBufferSize));\r
+  DEBUG ((EFI_D_INFO, "FrameBufferBase: 0x%Lx, FrameBufferSize: 0x%Lx\n",\r
+    Mode->FrameBufferBase, (UINT64)Mode->FrameBufferSize));\r
 \r
+  FreePool (FrameBufDesc);\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -113,10 +115,6 @@ Routine Description:
 \r
   Private = QEMU_VIDEO_PRIVATE_DATA_FROM_GRAPHICS_OUTPUT_THIS (This);\r
 \r
-  if (Private->HardwareNeedsStarting) {\r
-    return EFI_NOT_STARTED;\r
-  }\r
-\r
   if (Info == NULL || SizeOfInfo == NULL || ModeNumber >= This->Mode->MaxMode) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -175,7 +173,6 @@ Routine Description:
     gBS->FreePool (Private->LineBuffer);\r
   }\r
 \r
-  Private->LineBuffer = NULL;\r
   Private->LineBuffer = AllocatePool (4 * ModeData->HorizontalResolution);\r
   if (Private->LineBuffer == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -184,7 +181,11 @@ Routine Description:
   switch (Private->Variant) {\r
   case QEMU_VIDEO_CIRRUS_5430:\r
   case QEMU_VIDEO_CIRRUS_5446:\r
-    InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->ModeNumber]);\r
+    InitializeCirrusGraphicsMode (Private, &QemuVideoCirrusModes[ModeData->InternalModeIndex]);\r
+    break;\r
+  case QEMU_VIDEO_BOCHS_MMIO:\r
+  case QEMU_VIDEO_BOCHS:\r
+    InitializeBochsGraphicsMode (Private, &QemuVideoBochsModes[ModeData->InternalModeIndex]);\r
     break;\r
   default:\r
     ASSERT (FALSE);\r
@@ -205,8 +206,6 @@ Routine Description:
     This->Mode->Info\r
     );\r
 \r
-  Private->HardwareNeedsStarting  = FALSE;\r
-\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -316,23 +315,27 @@ QemuVideoGraphicsOutputConstructor (
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
+\r
   Status = gBS->AllocatePool (\r
                   EfiBootServicesData,\r
                   sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION),\r
                   (VOID **) &Private->GraphicsOutput.Mode->Info\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    return Status;\r
+    goto FreeMode;\r
   }\r
   Private->GraphicsOutput.Mode->MaxMode = (UINT32) Private->MaxMode;\r
   Private->GraphicsOutput.Mode->Mode    = GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER;\r
-  Private->HardwareNeedsStarting        = TRUE;\r
   Private->LineBuffer                   = NULL;\r
 \r
   //\r
   // Initialize the hardware\r
   //\r
-  GraphicsOutput->SetMode (GraphicsOutput, 0);\r
+  Status = GraphicsOutput->SetMode (GraphicsOutput, 0);\r
+  if (EFI_ERROR (Status)) {\r
+    goto FreeInfo;\r
+  }\r
+\r
   DrawLogo (\r
     Private,\r
     Private->ModeData[Private->GraphicsOutput.Mode->Mode].HorizontalResolution,\r
@@ -340,6 +343,15 @@ QemuVideoGraphicsOutputConstructor (
     );\r
 \r
   return EFI_SUCCESS;\r
+\r
+FreeInfo:\r
+  FreePool (Private->GraphicsOutput.Mode->Info);\r
+\r
+FreeMode:\r
+  FreePool (Private->GraphicsOutput.Mode);\r
+  Private->GraphicsOutput.Mode = NULL;\r
+\r
+  return Status;\r
 }\r
 \r
 EFI_STATUS\r
@@ -358,6 +370,10 @@ Returns:
 \r
 --*/\r
 {\r
+  if (Private->LineBuffer != NULL) {\r
+    FreePool (Private->LineBuffer);\r
+  }\r
+\r
   if (Private->GraphicsOutput.Mode != NULL) {\r
     if (Private->GraphicsOutput.Mode->Info != NULL) {\r
       gBS->FreePool (Private->GraphicsOutput.Mode->Info);\r