]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/QemuVideoDxe/Initialize.c
OvmfPkg/OvmfXen: Override PcdFSBClock to Xen vLAPIC timer frequency
[mirror_edk2.git] / OvmfPkg / QemuVideoDxe / Initialize.c
index 357124d628e7c6bc425ca27e310e8905f96f432a..6ee42fb8d9d71d0b9eeaf8e5ce65e4a7502b0bdb 100644 (file)
@@ -3,17 +3,10 @@
 \r
   Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
 \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
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
-#include <IndustryStandard/VmwareSvga.h>\r
 #include "Qemu.h"\r
 \r
 \r
@@ -347,159 +340,3 @@ QemuVideoBochsModeSetup (
   return EFI_SUCCESS;\r
 }\r
 \r
-EFI_STATUS\r
-QemuVideoVmwareSvgaModeSetup (\r
-  QEMU_VIDEO_PRIVATE_DATA *Private\r
-  )\r
-{\r
-  EFI_STATUS                            Status;\r
-  UINT32                                FbSize;\r
-  UINT32                                MaxWidth, MaxHeight;\r
-  UINT32                                Capabilities;\r
-  UINT32                                BitsPerPixel;\r
-  UINT32                                Index;\r
-  QEMU_VIDEO_MODE_DATA                  *ModeData;\r
-  QEMU_VIDEO_BOCHS_MODES                *VideoMode;\r
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *ModeInfo;\r
-\r
-  VmwareSvgaWrite (Private, VmwareSvgaRegEnable, 0);\r
-\r
-  Private->ModeData =\r
-    AllocatePool (sizeof (Private->ModeData[0]) * QEMU_VIDEO_BOCHS_MODE_COUNT);\r
-  if (Private->ModeData == NULL) {\r
-    Status = EFI_OUT_OF_RESOURCES;\r
-    goto ModeDataAllocError;\r
-  }\r
-\r
-  Private->VmwareSvgaModeInfo =\r
-    AllocatePool (\r
-      sizeof (Private->VmwareSvgaModeInfo[0]) * QEMU_VIDEO_BOCHS_MODE_COUNT\r
-      );\r
-  if (Private->VmwareSvgaModeInfo == NULL) {\r
-    Status = EFI_OUT_OF_RESOURCES;\r
-    goto ModeInfoAllocError;\r
-  }\r
-\r
-  FbSize =       VmwareSvgaRead (Private, VmwareSvgaRegFbSize);\r
-  MaxWidth =     VmwareSvgaRead (Private, VmwareSvgaRegMaxWidth);\r
-  MaxHeight =    VmwareSvgaRead (Private, VmwareSvgaRegMaxHeight);\r
-  Capabilities = VmwareSvgaRead (Private, VmwareSvgaRegCapabilities);\r
-  if ((Capabilities & VMWARE_SVGA_CAP_8BIT_EMULATION) != 0) {\r
-    BitsPerPixel = VmwareSvgaRead (\r
-                     Private,\r
-                     VmwareSvgaRegHostBitsPerPixel\r
-                     );\r
-    VmwareSvgaWrite (\r
-      Private,\r
-      VmwareSvgaRegBitsPerPixel,\r
-      BitsPerPixel\r
-      );\r
-  } else {\r
-    BitsPerPixel = VmwareSvgaRead (\r
-                     Private,\r
-                     VmwareSvgaRegBitsPerPixel\r
-                     );\r
-  }\r
-\r
-  if (FbSize == 0       ||\r
-      MaxWidth == 0     ||\r
-      MaxHeight == 0    ||\r
-      BitsPerPixel == 0 ||\r
-      BitsPerPixel % 8 != 0) {\r
-    Status = EFI_DEVICE_ERROR;\r
-    goto Rollback;\r
-  }\r
-\r
-  ModeData = Private->ModeData;\r
-  ModeInfo = Private->VmwareSvgaModeInfo;\r
-  VideoMode = &QemuVideoBochsModes[0];\r
-  for (Index = 0; Index < QEMU_VIDEO_BOCHS_MODE_COUNT; Index++) {\r
-    UINTN RequiredFbSize;\r
-\r
-    RequiredFbSize = (UINTN) VideoMode->Width * VideoMode->Height *\r
-                     (BitsPerPixel / 8);\r
-    if (RequiredFbSize <= FbSize     &&\r
-        VideoMode->Width <= MaxWidth &&\r
-        VideoMode->Height <= MaxHeight) {\r
-      UINT32  BytesPerLine;\r
-      UINT32  RedMask, GreenMask, BlueMask, PixelMask;\r
-\r
-      VmwareSvgaWrite (\r
-        Private,\r
-        VmwareSvgaRegWidth,\r
-        VideoMode->Width\r
-        );\r
-      VmwareSvgaWrite (\r
-        Private,\r
-        VmwareSvgaRegHeight,\r
-        VideoMode->Height\r
-        );\r
-\r
-      ModeData->InternalModeIndex    = Index;\r
-      ModeData->HorizontalResolution = VideoMode->Width;\r
-      ModeData->VerticalResolution   = VideoMode->Height;\r
-      ModeData->ColorDepth           = BitsPerPixel;\r
-\r
-      //\r
-      // Setting VmwareSvgaRegWidth/VmwareSvgaRegHeight actually changes\r
-      // the device's display mode, so we save all properties of each mode up\r
-      // front to avoid inadvertent mode changes later.\r
-      //\r
-      ModeInfo->Version = 0;\r
-      ModeInfo->HorizontalResolution = ModeData->HorizontalResolution;\r
-      ModeInfo->VerticalResolution   = ModeData->VerticalResolution;\r
-\r
-      ModeInfo->PixelFormat = PixelBitMask;\r
-\r
-      RedMask   = VmwareSvgaRead (Private, VmwareSvgaRegRedMask);\r
-      ModeInfo->PixelInformation.RedMask = RedMask;\r
-\r
-      GreenMask = VmwareSvgaRead (Private, VmwareSvgaRegGreenMask);\r
-      ModeInfo->PixelInformation.GreenMask = GreenMask;\r
-\r
-      BlueMask  = VmwareSvgaRead (Private, VmwareSvgaRegBlueMask);\r
-      ModeInfo->PixelInformation.BlueMask = BlueMask;\r
-\r
-      //\r
-      // Reserved mask is whatever bits in the pixel not containing RGB data,\r
-      // so start with binary 1s for every bit in the pixel, then mask off\r
-      // bits already used for RGB. Special case 32 to avoid undefined\r
-      // behaviour in the shift.\r
-      //\r
-      if (BitsPerPixel == 32) {\r
-        if (BlueMask == 0xff && GreenMask == 0xff00 && RedMask == 0xff0000) {\r
-          ModeInfo->PixelFormat = PixelBlueGreenRedReserved8BitPerColor;\r
-        } else if (BlueMask == 0xff0000 &&\r
-                   GreenMask == 0xff00 &&\r
-                   RedMask == 0xff) {\r
-          ModeInfo->PixelFormat = PixelRedGreenBlueReserved8BitPerColor;\r
-        }\r
-        PixelMask = MAX_UINT32;\r
-      } else {\r
-        PixelMask = (1u << BitsPerPixel) - 1;\r
-      }\r
-      ModeInfo->PixelInformation.ReservedMask =\r
-        PixelMask & ~(RedMask | GreenMask | BlueMask);\r
-\r
-      BytesPerLine = VmwareSvgaRead (Private, VmwareSvgaRegBytesPerLine);\r
-      ModeInfo->PixelsPerScanLine = BytesPerLine / (BitsPerPixel / 8);\r
-\r
-      ModeData++;\r
-      ModeInfo++;\r
-    }\r
-    VideoMode++;\r
-  }\r
-  Private->MaxMode = ModeData - Private->ModeData;\r
-  return EFI_SUCCESS;\r
-\r
-Rollback:\r
-  FreePool (Private->VmwareSvgaModeInfo);\r
-  Private->VmwareSvgaModeInfo = NULL;\r
-\r
-ModeInfoAllocError:\r
-  FreePool (Private->ModeData);\r
-  Private->ModeData = NULL;\r
-\r
-ModeDataAllocError:\r
-  return Status;\r
-}\r