}\r
}\r
\r
+STATIC\r
+UINT8\r
+VgaInb (\r
+ QEMU_VIDEO_PRIVATE_DATA *Private,\r
+ UINTN Reg\r
+ )\r
+{\r
+ EFI_STATUS Status;\r
+ UINT8 Data;\r
+\r
+ if (Private->Variant == QEMU_VIDEO_BOCHS_MMIO) {\r
+ Data = 0;\r
+ Status = Private->PciIo->Mem.Read (\r
+ Private->PciIo,\r
+ EfiPciIoWidthUint8,\r
+ PCI_BAR_IDX2,\r
+ 0x400 - 0x3c0 + Reg,\r
+ 1,\r
+ &Data\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ } else {\r
+ Data = inb (Private, Reg);\r
+ }\r
+\r
+ return Data;\r
+}\r
+\r
VOID\r
InitializeBochsGraphicsMode (\r
QEMU_VIDEO_PRIVATE_DATA *Private,\r
- QEMU_VIDEO_BOCHS_MODES *ModeData\r
+ QEMU_VIDEO_MODE_DATA *ModeData\r
)\r
{\r
DEBUG ((\r
DEBUG_INFO,\r
"InitializeBochsGraphicsMode: %dx%d @ %d\n",\r
- ModeData->Width,\r
- ModeData->Height,\r
+ ModeData->HorizontalResolution,\r
+ ModeData->VerticalResolution,\r
ModeData->ColorDepth\r
));\r
\r
- /* unblank */\r
+ /* set color mode */\r
+ VgaOutb (Private, MISC_OUTPUT_REGISTER, 0x01);\r
+\r
+ /* reset flip flop + unblank */\r
+ VgaInb (Private, INPUT_STATUS_1_REGISTER);\r
VgaOutb (Private, ATT_ADDRESS_REGISTER, 0x20);\r
\r
BochsWrite (Private, VBE_DISPI_INDEX_ENABLE, 0);\r
BochsWrite (Private, VBE_DISPI_INDEX_Y_OFFSET, 0);\r
\r
BochsWrite (Private, VBE_DISPI_INDEX_BPP, (UINT16)ModeData->ColorDepth);\r
- BochsWrite (Private, VBE_DISPI_INDEX_XRES, (UINT16)ModeData->Width);\r
- BochsWrite (Private, VBE_DISPI_INDEX_VIRT_WIDTH, (UINT16)ModeData->Width);\r
- BochsWrite (Private, VBE_DISPI_INDEX_YRES, (UINT16)ModeData->Height);\r
- BochsWrite (Private, VBE_DISPI_INDEX_VIRT_HEIGHT, (UINT16)ModeData->Height);\r
+ BochsWrite (Private, VBE_DISPI_INDEX_XRES, (UINT16)ModeData->HorizontalResolution);\r
+ BochsWrite (Private, VBE_DISPI_INDEX_VIRT_WIDTH, (UINT16)ModeData->HorizontalResolution);\r
+ BochsWrite (Private, VBE_DISPI_INDEX_YRES, (UINT16)ModeData->VerticalResolution);\r
+ BochsWrite (Private, VBE_DISPI_INDEX_VIRT_HEIGHT, (UINT16)ModeData->VerticalResolution);\r
\r
BochsWrite (\r
Private,\r