]> 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 78e182e6bf57554d698dc00baa8a0f6e53108a5f..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
 // QEMU Vide Graphical Mode Data\r
 //\r
 typedef struct {\r
-  UINT32  ModeNumber;\r
+  UINT32  InternalModeIndex; // points into card-specific mode table\r
   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
@@ -107,21 +109,29 @@ typedef struct {
   UINT64                                OriginalPciAttributes;\r
   EFI_GRAPHICS_OUTPUT_PROTOCOL          GraphicsOutput;\r
   EFI_DEVICE_PATH_PROTOCOL              *GopDevicePath;\r
-  UINTN                                 CurrentMode;\r
+\r
+  //\r
+  // The next two fields match the client-visible\r
+  // EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE.MaxMode field.\r
+  //\r
   UINTN                                 MaxMode;\r
   QEMU_VIDEO_MODE_DATA                  *ModeData;\r
-  UINT8                                 *LineBuffer;\r
+  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *VmwareSvgaModeInfo;\r
+\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
-/// Video Mode structure\r
+/// Card-specific Video Mode structures\r
 ///\r
 typedef struct {\r
   UINT32  Width;\r
   UINT32  Height;\r
   UINT32  ColorDepth;\r
-  UINT32  RefreshRate;\r
   UINT8   *CrtcSettings;\r
   UINT16  *SeqSettings;\r
   UINT8   MiscSetting;\r
@@ -492,7 +502,38 @@ QemuVideoCirrusModeSetup (
 \r
 EFI_STATUS\r
 QemuVideoBochsModeSetup (\r
-  QEMU_VIDEO_PRIVATE_DATA  *Private\r
+  QEMU_VIDEO_PRIVATE_DATA  *Private,\r
+  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