]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/QemuVideoDxe/Qemu.h
OvmfPkg/QemuVideoDxe/VbeShim: handle PAM1 register on Q35 correctly
[mirror_edk2.git] / OvmfPkg / QemuVideoDxe / Qemu.h
index 52ee20d8ba973deb33f04471d32f6f4ccbf97b6c..7fbb25b3efd35c47bb88ac31bda9d92653f7f145 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   QEMU Video Controller Driver\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2016, 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
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/DevicePathLib.h>\r
 #include <Library/TimerLib.h>\r
+#include <Library/FrameBufferBltLib.h>\r
 \r
 #include <IndustryStandard/Pci.h>\r
+#include <IndustryStandard/Acpi.h>\r
 \r
 //\r
 // QEMU Video PCI Configuration Header values\r
@@ -54,7 +56,6 @@ typedef struct {
   UINT32  HorizontalResolution;\r
   UINT32  VerticalResolution;\r
   UINT32  ColorDepth;\r
-  UINT32  RefreshRate;\r
 } QEMU_VIDEO_MODE_DATA;\r
 \r
 #define PIXEL_RED_SHIFT   0\r
@@ -91,6 +92,7 @@ typedef enum {
   QEMU_VIDEO_CIRRUS_5446,\r
   QEMU_VIDEO_BOCHS,\r
   QEMU_VIDEO_BOCHS_MMIO,\r
+  QEMU_VIDEO_VMWARE_SVGA,\r
 } QEMU_VIDEO_VARIANT;\r
 \r
 typedef struct {\r
@@ -109,16 +111,18 @@ typedef struct {
   EFI_DEVICE_PATH_PROTOCOL              *GopDevicePath;\r
 \r
   //\r
-  // The next three fields match the client-visible\r
-  // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.Mode and\r
-  // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.MaxMode fields.\r
+  // The next two fields match the client-visible\r
+  // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.MaxMode field.\r
   //\r
-  UINTN                                 CurrentMode;\r
   UINTN                                 MaxMode;\r
   QEMU_VIDEO_MODE_DATA                  *ModeData;\r
+  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *VmwareSvgaModeInfo;\r
 \r
-  UINT8                                 *LineBuffer;\r
   QEMU_VIDEO_VARIANT                    Variant;\r
+  FRAME_BUFFER_CONFIGURE                *FrameBufferBltConfigure;\r
+  UINTN                                 FrameBufferBltConfigureSize;\r
+  UINT8                                 FrameBufferVramBarIndex;\r
+  UINT16                                VmwareSvgaBasePort;\r
 } QEMU_VIDEO_PRIVATE_DATA;\r
 \r
 ///\r
@@ -128,7 +132,6 @@ typedef struct {
   UINT32  Width;\r
   UINT32  Height;\r
   UINT32  ColorDepth;\r
-  UINT32  RefreshRate;\r
   UINT8   *CrtcSettings;\r
   UINT16  *SeqSettings;\r
   UINT8   MiscSetting;\r
@@ -503,9 +506,34 @@ QemuVideoBochsModeSetup (
   BOOLEAN                  IsQxl\r
   );\r
 \r
+EFI_STATUS\r
+QemuVideoVmwareSvgaModeSetup (\r
+  QEMU_VIDEO_PRIVATE_DATA *Private\r
+  );\r
+\r
 VOID\r
 InstallVbeShim (\r
   IN CONST CHAR16         *CardName,\r
   IN EFI_PHYSICAL_ADDRESS FrameBufferBase\r
   );\r
+\r
+VOID\r
+VmwareSvgaWrite (\r
+  QEMU_VIDEO_PRIVATE_DATA *Private,\r
+  UINT16                  Register,\r
+  UINT32                  Value\r
+  );\r
+\r
+UINT32\r
+VmwareSvgaRead (\r
+  QEMU_VIDEO_PRIVATE_DATA *Private,\r
+  UINT16                  Register\r
+  );\r
+\r
+VOID\r
+InitializeVmwareSvgaGraphicsMode (\r
+  QEMU_VIDEO_PRIVATE_DATA  *Private,\r
+  QEMU_VIDEO_BOCHS_MODES   *ModeData\r
+  );\r
+\r
 #endif\r