\r
#pragma pack (1)\r
typedef struct {\r
- UINT16 Offset;\r
- UINT16 Segment;\r
+ UINT16 Offset;\r
+ UINT16 Segment;\r
} IVT_ENTRY;\r
#pragma pack ()\r
\r
// This string is displayed by Windows 2008 R2 SP1 in the Screen Resolution,\r
// Advanced Settings dialog. It should be short.\r
//\r
-STATIC CONST CHAR8 mProductRevision[] = "2.0";\r
+STATIC CONST CHAR8 mProductRevision[] = "2.0";\r
\r
-#define NUM_VBE_MODES 3\r
-STATIC CONST UINT16 vbeModeIds[] = {\r
+#define NUM_VBE_MODES 3\r
+STATIC CONST UINT16 vbeModeIds[] = {\r
0x13f, // 640x480x32\r
0x140, // 800x600x32\r
0x141 // 1024x768x32\r
};\r
\r
// Modes can be toggled with bit-0\r
-#define VBE_MODE_ENABLED 0x00BB\r
-#define VBE_MODE_DISABLED 0x00BA\r
+#define VBE_MODE_ENABLED 0x00BB\r
+#define VBE_MODE_DISABLED 0x00BA\r
\r
-STATIC VBE2_MODE_INFO vbeModes[] = {\r
+STATIC VBE2_MODE_INFO vbeModes[] = {\r
{ // 0x13f 640x480x32\r
-\r
// ModeAttr - BytesPerScanLine\r
- VBE_MODE_DISABLED, 0x07, 0x00, 0x40, 0x40, 0xA000, 0x00, 0x0000, 640*4,\r
+ VBE_MODE_DISABLED, 0x07, 0x00, 0x40, 0x40, 0xA000, 0x00, 0x0000, 640*4,\r
// Width, Height..., Vbe3\r
- 640, 480, 16, 8, 1, 32, 1, 0x06, 0, 0, 1,\r
+ 640, 480, 16, 8, 1, 32, 1, 0x06, 0, 0, 1,\r
// Masks\r
- 0x08, 0x10, 0x08, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00,\r
+ 0x08, 0x10, 0x08, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00,\r
// Framebuffer\r
- 0xdeadbeef, 0x0000, 0x0000\r
+ 0xdeadbeef, 0x0000, 0x0000\r
},\r
{ // 0x140 800x600x32\r
-\r
// ModeAttr - BytesPerScanLine\r
- VBE_MODE_DISABLED, 0x07, 0x00, 0x40, 0x40, 0xA000, 0x00, 0x0000, 800*4,\r
+ VBE_MODE_DISABLED, 0x07, 0x00, 0x40, 0x40, 0xA000, 0x00, 0x0000, 800*4,\r
// Width, Height..., Vbe3\r
- 800, 600, 16, 8, 1, 32, 1, 0x06, 0, 0, 1,\r
+ 800, 600, 16, 8, 1, 32, 1, 0x06, 0, 0, 1,\r
// Masks\r
- 0x08, 0x10, 0x08, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00,\r
+ 0x08, 0x10, 0x08, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00,\r
// Framebuffer\r
- 0xdeadbeef, 0x0000, 0x0000\r
+ 0xdeadbeef, 0x0000, 0x0000\r
},\r
{ // 0x141 1024x768x32\r
-\r
// ModeAttr - BytesPerScanLine\r
- VBE_MODE_ENABLED, 0x07, 0x00, 0x40, 0x40, 0xA000, 0x00, 0x0000, 1024*4,\r
+ VBE_MODE_ENABLED, 0x07, 0x00, 0x40, 0x40, 0xA000, 0x00, 0x0000, 1024*4,\r
// Width, Height..., Vbe3\r
- 1024, 768, 16, 8, 1, 32, 1, 0x06, 0, 0, 1,\r
+ 1024, 768, 16, 8, 1, 32, 1, 0x06, 0, 0, 1,\r
// Masks\r
- 0x08, 0x10, 0x08, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00,\r
+ 0x08, 0x10, 0x08, 0x08, 0x08, 0x00, 0x08, 0x18, 0x00,\r
// Framebuffer\r
- 0xdeadbeef, 0x0000, 0x0000\r
+ 0xdeadbeef, 0x0000, 0x0000\r
}\r
};\r
\r
**/\r
VOID\r
InstallVbeShim (\r
- IN CONST CHAR16 *CardName,\r
- IN EFI_PHYSICAL_ADDRESS FrameBufferBase\r
+ IN CONST CHAR16 *CardName,\r
+ IN EFI_PHYSICAL_ADDRESS FrameBufferBase\r
)\r
{\r
- EFI_PHYSICAL_ADDRESS Segment0, SegmentC, SegmentF;\r
- UINTN Segment0Pages;\r
- IVT_ENTRY *Int0x10;\r
- EFI_STATUS Status;\r
- UINTN Pam1Address;\r
- UINT8 Pam1;\r
- UINTN SegmentCPages;\r
- VBE_INFO *VbeInfoFull;\r
- VBE_INFO_BASE *VbeInfo;\r
- UINT8 *Ptr;\r
- UINTN Printed;\r
- VBE_MODE_INFO *VbeModeInfo;\r
- UINTN i;\r
+ EFI_PHYSICAL_ADDRESS Segment0, SegmentC, SegmentF;\r
+ UINTN Segment0Pages;\r
+ IVT_ENTRY *Int0x10;\r
+ EFI_STATUS Status;\r
+ UINTN Pam1Address;\r
+ UINT8 Pam1;\r
+ UINTN SegmentCPages;\r
+ VBE_INFO *VbeInfoFull;\r
+ VBE_INFO_BASE *VbeInfo;\r
+ UINT8 *Ptr;\r
+ UINTN Printed;\r
+ VBE_MODE_INFO *VbeModeInfo;\r
+ UINTN i;\r
\r
Segment0 = 0x00000;\r
SegmentC = 0xC0000;\r
//\r
Segment0Pages = 1;\r
Int0x10 = (IVT_ENTRY *)(UINTN)Segment0 + 0x10;\r
- Status = gBS->AllocatePages (AllocateAddress, EfiBootServicesCode,\r
- Segment0Pages, &Segment0);\r
+ Status = gBS->AllocatePages (\r
+ AllocateAddress,\r
+ EfiBootServicesCode,\r
+ Segment0Pages,\r
+ &Segment0\r
+ );\r
\r
if (EFI_ERROR (Status)) {\r
- EFI_PHYSICAL_ADDRESS Handler;\r
+ EFI_PHYSICAL_ADDRESS Handler;\r
\r
//\r
// Check if a video BIOS handler has been installed previously -- we\r
// it's already present.\r
//\r
Handler = (Int0x10->Segment << 4) + Int0x10->Offset;\r
- if (Handler >= SegmentC && Handler < SegmentF) {\r
- DEBUG ((DEBUG_VERBOSE, "%a: Video BIOS handler found at %04x:%04x\n",\r
- __FUNCTION__, Int0x10->Segment, Int0x10->Offset));\r
+ if ((Handler >= SegmentC) && (Handler < SegmentF)) {\r
+ DEBUG ((\r
+ DEBUG_VERBOSE,\r
+ "%a: Video BIOS handler found at %04x:%04x\n",\r
+ __FUNCTION__,\r
+ Int0x10->Segment,\r
+ Int0x10->Offset\r
+ ));\r
return;\r
}\r
\r
// Otherwise we'll overwrite the Int10h vector, even though we may not own\r
// the page at zero.\r
//\r
- DEBUG ((DEBUG_VERBOSE, "%a: failed to allocate page at zero: %r\n",\r
- __FUNCTION__, Status));\r
+ DEBUG ((\r
+ DEBUG_VERBOSE,\r
+ "%a: failed to allocate page at zero: %r\n",\r
+ __FUNCTION__,\r
+ Status\r
+ ));\r
} else {\r
//\r
// We managed to allocate the page at zero. SVN r14218 guarantees that it\r
VbeInfo->Capabilities = BIT1 | BIT0; // DAC can be switched into 8-bit mode\r
\r
VbeInfo->ModeListAddress = (UINT32)SegmentC << 12 | (UINT16)((UINTN)Ptr-SegmentC);\r
- for (i = 0; i < NUM_VBE_MODES; i ++) {\r
- *(UINT16*)Ptr = vbeModeIds[i]; // mode number\r
- Ptr += 2;\r
+ for (i = 0; i < NUM_VBE_MODES; i++) {\r
+ *(UINT16 *)Ptr = vbeModeIds[i]; // mode number\r
+ Ptr += 2;\r
}\r
- *(UINT16*)Ptr = 0xFFFF; // mode list terminator\r
- Ptr += 2;\r
\r
- VbeInfo->VideoMem64K = (UINT16)((1024 * 768 * 4 + 65535) / 65536);\r
+ *(UINT16 *)Ptr = 0xFFFF; // mode list terminator\r
+ Ptr += 2;\r
+\r
+ VbeInfo->VideoMem64K = (UINT16)((1024 * 768 * 4 + 65535) / 65536);\r
VbeInfo->OemSoftwareVersion = 0x0200;\r
\r
VbeInfo->VendorNameAddress = (UINT32)SegmentC << 12 | (UINT16)((UINTN)Ptr-SegmentC);\r
Ptr += 5;\r
\r
VbeInfo->ProductNameAddress = (UINT32)SegmentC << 12 | (UINT16)((UINTN)Ptr-SegmentC);\r
- Printed = AsciiSPrint ((CHAR8 *)Ptr,\r
- sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer), "%s",\r
- CardName);\r
+ Printed = AsciiSPrint (\r
+ (CHAR8 *)Ptr,\r
+ sizeof VbeInfoFull->Buffer - (Ptr - VbeInfoFull->Buffer),\r
+ "%s",\r
+ CardName\r
+ );\r
Ptr += Printed + 1;\r
\r
VbeInfo->ProductRevAddress = (UINT32)SegmentC << 12 | (UINT16)((UINTN)Ptr-SegmentC);\r
// Fill in the VBE MODE INFO structure list\r
//\r
VbeModeInfo = (VBE_MODE_INFO *)(VbeInfoFull + 1);\r
- Ptr = (UINT8 *)VbeModeInfo;\r
+ Ptr = (UINT8 *)VbeModeInfo;\r
for (i = 0; i < NUM_VBE_MODES; i++) {\r
vbeModes[i].LfbAddress = (UINT32)FrameBufferBase;\r
CopyMem (Ptr, &vbeModes[i], 0x32);\r
//\r
// Second, point the Int10h vector at the shim.\r
//\r
- Int0x10->Segment = (UINT16) ((UINT32)SegmentC >> 4);\r
- Int0x10->Offset = (UINT16) ((UINTN) (VbeModeInfo + 1) - SegmentC);\r
-\r
- DEBUG ((DEBUG_INFO, "%a: VBE shim installed to %x:%x\n",\r
- __FUNCTION__, Int0x10->Segment, Int0x10->Offset));\r
+ Int0x10->Segment = (UINT16)((UINT32)SegmentC >> 4);\r
+ Int0x10->Offset = (UINT16)((UINTN)(VbeModeInfo + 1) - SegmentC);\r
+\r
+ DEBUG ((\r
+ DEBUG_INFO,\r
+ "%a: VBE shim installed to %x:%x\n",\r
+ __FUNCTION__,\r
+ Int0x10->Segment,\r
+ Int0x10->Offset\r
+ ));\r
}\r