// position of RGB in the frame buffer is specified in the VBE Mode information\r
//\r
typedef struct {\r
- UINT8 Position; // Position of the color\r
- UINT8 Mask; // The number of bits expressed as a mask\r
+ UINT8 Position; // Position of the color\r
+ UINT8 Mask; // The number of bits expressed as a mask\r
} BIOS_VIDEO_COLOR_PLACEMENT;\r
\r
//\r
// BIOS Graphics Output Graphical Mode Data\r
//\r
typedef struct {\r
- UINT16 VbeModeNumber;\r
- UINT16 BytesPerScanLine;\r
- VOID *LinearFrameBuffer;\r
- UINTN FrameBufferSize;\r
- UINT32 HorizontalResolution;\r
- UINT32 VerticalResolution;\r
- UINT32 ColorDepth;\r
- UINT32 RefreshRate;\r
- UINT32 BitsPerPixel;\r
- BIOS_VIDEO_COLOR_PLACEMENT Red;\r
- BIOS_VIDEO_COLOR_PLACEMENT Green;\r
- BIOS_VIDEO_COLOR_PLACEMENT Blue;\r
- BIOS_VIDEO_COLOR_PLACEMENT Reserved;\r
- EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;\r
- EFI_PIXEL_BITMASK PixelBitMask;\r
+ UINT16 VbeModeNumber;\r
+ UINT16 BytesPerScanLine;\r
+ VOID *LinearFrameBuffer;\r
+ UINTN FrameBufferSize;\r
+ UINT32 HorizontalResolution;\r
+ UINT32 VerticalResolution;\r
+ UINT32 ColorDepth;\r
+ UINT32 RefreshRate;\r
+ UINT32 BitsPerPixel;\r
+ BIOS_VIDEO_COLOR_PLACEMENT Red;\r
+ BIOS_VIDEO_COLOR_PLACEMENT Green;\r
+ BIOS_VIDEO_COLOR_PLACEMENT Blue;\r
+ BIOS_VIDEO_COLOR_PLACEMENT Reserved;\r
+ EFI_GRAPHICS_PIXEL_FORMAT PixelFormat;\r
+ EFI_PIXEL_BITMASK PixelBitMask;\r
} BIOS_VIDEO_MODE_DATA;\r
\r
//\r
// BIOS video child handle private data Structure\r
//\r
-#define BIOS_VIDEO_DEV_SIGNATURE SIGNATURE_32 ('B', 'V', 'M', 'p')\r
+#define BIOS_VIDEO_DEV_SIGNATURE SIGNATURE_32 ('B', 'V', 'M', 'p')\r
\r
typedef struct {\r
- UINTN Signature;\r
- EFI_HANDLE Handle;\r
+ UINTN Signature;\r
+ EFI_HANDLE Handle;\r
\r
//\r
// Consumed Protocols\r
//\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
- EFI_LEGACY_BIOS_PROTOCOL *LegacyBios;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+ EFI_LEGACY_BIOS_PROTOCOL *LegacyBios;\r
\r
//\r
// Produced Protocols\r
//\r
- EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
- EFI_EDID_DISCOVERED_PROTOCOL EdidDiscovered;\r
- EFI_EDID_ACTIVE_PROTOCOL EdidActive;\r
- EFI_VGA_MINI_PORT_PROTOCOL VgaMiniPort;\r
+ EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
+ EFI_EDID_DISCOVERED_PROTOCOL EdidDiscovered;\r
+ EFI_EDID_ACTIVE_PROTOCOL EdidActive;\r
+ EFI_VGA_MINI_PORT_PROTOCOL VgaMiniPort;\r
\r
//\r
// General fields\r
//\r
- BOOLEAN VgaCompatible;\r
- BOOLEAN ProduceGraphicsOutput;\r
+ BOOLEAN VgaCompatible;\r
+ BOOLEAN ProduceGraphicsOutput;\r
\r
//\r
// Graphics Output Protocol related fields\r
//\r
- BOOLEAN HardwareNeedsStarting;\r
- UINTN CurrentMode;\r
- UINTN MaxMode;\r
- BIOS_VIDEO_MODE_DATA *ModeData;\r
- UINT8 *LineBuffer;\r
- EFI_GRAPHICS_OUTPUT_BLT_PIXEL *VbeFrameBuffer;\r
- UINT8 *VgaFrameBuffer;\r
+ BOOLEAN HardwareNeedsStarting;\r
+ UINTN CurrentMode;\r
+ UINTN MaxMode;\r
+ BIOS_VIDEO_MODE_DATA *ModeData;\r
+ UINT8 *LineBuffer;\r
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *VbeFrameBuffer;\r
+ UINT8 *VgaFrameBuffer;\r
\r
//\r
// VESA Bios Extensions related fields\r
//\r
- UINTN NumberOfPagesBelow1MB; // Number of 4KB pages in PagesBelow1MB\r
- EFI_PHYSICAL_ADDRESS PagesBelow1MB; // Buffer for all VBE Information Blocks\r
- VESA_BIOS_EXTENSIONS_INFORMATION_BLOCK *VbeInformationBlock; // 0x200 bytes. Must be allocated below 1MB\r
- VESA_BIOS_EXTENSIONS_MODE_INFORMATION_BLOCK *VbeModeInformationBlock; // 0x100 bytes. Must be allocated below 1MB\r
- VESA_BIOS_EXTENSIONS_EDID_DATA_BLOCK *VbeEdidDataBlock; // 0x80 bytes. Must be allocated below 1MB\r
- VESA_BIOS_EXTENSIONS_CRTC_INFORMATION_BLOCK *VbeCrtcInformationBlock; // 59 bytes. Must be allocated below 1MB\r
- UINTN VbeSaveRestorePages; // Number of 4KB pages in VbeSaveRestoreBuffer\r
- EFI_PHYSICAL_ADDRESS VbeSaveRestoreBuffer; // Must be allocated below 1MB\r
+ UINTN NumberOfPagesBelow1MB; // Number of 4KB pages in PagesBelow1MB\r
+ EFI_PHYSICAL_ADDRESS PagesBelow1MB; // Buffer for all VBE Information Blocks\r
+ VESA_BIOS_EXTENSIONS_INFORMATION_BLOCK *VbeInformationBlock; // 0x200 bytes. Must be allocated below 1MB\r
+ VESA_BIOS_EXTENSIONS_MODE_INFORMATION_BLOCK *VbeModeInformationBlock; // 0x100 bytes. Must be allocated below 1MB\r
+ VESA_BIOS_EXTENSIONS_EDID_DATA_BLOCK *VbeEdidDataBlock; // 0x80 bytes. Must be allocated below 1MB\r
+ VESA_BIOS_EXTENSIONS_CRTC_INFORMATION_BLOCK *VbeCrtcInformationBlock; // 59 bytes. Must be allocated below 1MB\r
+ UINTN VbeSaveRestorePages; // Number of 4KB pages in VbeSaveRestoreBuffer\r
+ EFI_PHYSICAL_ADDRESS VbeSaveRestoreBuffer; // Must be allocated below 1MB\r
//\r
// Status code\r
//\r
- EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *GopDevicePath;\r
\r
- EFI_EVENT ExitBootServicesEvent;\r
+ EFI_EVENT ExitBootServicesEvent;\r
} BIOS_VIDEO_DEV;\r
\r
#define BIOS_VIDEO_DEV_FROM_PCI_IO_THIS(a) CR (a, BIOS_VIDEO_DEV, PciIo, BIOS_VIDEO_DEV_SIGNATURE)\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
-\r
/**\r
Install Graphics Output Protocol onto VGA device handles.\r
\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
);\r
\r
-\r
/**\r
Stop.\r
\r
IN OUT BIOS_VIDEO_DEV *BiosVideoPrivate\r
);\r
\r
-\r
/**\r
Check for VGA device.\r
\r
IN OUT BIOS_VIDEO_DEV *BiosVideoPrivate\r
);\r
\r
-\r
-\r
-\r
/**\r
Release resource for BIOS video instance.\r
\r
OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info\r
);\r
\r
-\r
/**\r
Graphics Output protocol interface to set video mode.\r
\r
EFI_STATUS\r
EFIAPI\r
BiosVideoGraphicsOutputSetMode (\r
- IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
- IN UINT32 ModeNumber\r
+ IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
+ IN UINT32 ModeNumber\r
);\r
\r
-\r
/**\r
Graphics Output protocol instance to block transfer for VBE device.\r
\r
IN UINTN Delta\r
);\r
\r
-\r
/**\r
Graphics Output protocol instance to block transfer for VGA device.\r
\r
VOID\r
EFIAPI\r
BiosVideoNotifyExitBootServices (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
);\r
\r
//\r
// Standard VGA Definitions\r
//\r
-#define VGA_HORIZONTAL_RESOLUTION 640\r
-#define VGA_VERTICAL_RESOLUTION 480\r
-#define VGA_NUMBER_OF_BIT_PLANES 4\r
-#define VGA_PIXELS_PER_BYTE 8\r
-#define VGA_BYTES_PER_SCAN_LINE (VGA_HORIZONTAL_RESOLUTION / VGA_PIXELS_PER_BYTE)\r
-#define VGA_BYTES_PER_BIT_PLANE (VGA_VERTICAL_RESOLUTION * VGA_BYTES_PER_SCAN_LINE)\r
+#define VGA_HORIZONTAL_RESOLUTION 640\r
+#define VGA_VERTICAL_RESOLUTION 480\r
+#define VGA_NUMBER_OF_BIT_PLANES 4\r
+#define VGA_PIXELS_PER_BYTE 8\r
+#define VGA_BYTES_PER_SCAN_LINE (VGA_HORIZONTAL_RESOLUTION / VGA_PIXELS_PER_BYTE)\r
+#define VGA_BYTES_PER_BIT_PLANE (VGA_VERTICAL_RESOLUTION * VGA_BYTES_PER_SCAN_LINE)\r
\r
-#define VGA_GRAPHICS_CONTROLLER_ADDRESS_REGISTER 0x3ce\r
-#define VGA_GRAPHICS_CONTROLLER_DATA_REGISTER 0x3cf\r
+#define VGA_GRAPHICS_CONTROLLER_ADDRESS_REGISTER 0x3ce\r
+#define VGA_GRAPHICS_CONTROLLER_DATA_REGISTER 0x3cf\r
\r
-#define VGA_GRAPHICS_CONTROLLER_SET_RESET_REGISTER 0x00\r
+#define VGA_GRAPHICS_CONTROLLER_SET_RESET_REGISTER 0x00\r
\r
-#define VGA_GRAPHICS_CONTROLLER_ENABLE_SET_RESET_REGISTER 0x01\r
+#define VGA_GRAPHICS_CONTROLLER_ENABLE_SET_RESET_REGISTER 0x01\r
\r
-#define VGA_GRAPHICS_CONTROLLER_COLOR_COMPARE_REGISTER 0x02\r
+#define VGA_GRAPHICS_CONTROLLER_COLOR_COMPARE_REGISTER 0x02\r
\r
-#define VGA_GRAPHICS_CONTROLLER_DATA_ROTATE_REGISTER 0x03\r
-#define VGA_GRAPHICS_CONTROLLER_FUNCTION_REPLACE 0x00\r
-#define VGA_GRAPHICS_CONTROLLER_FUNCTION_AND 0x08\r
-#define VGA_GRAPHICS_CONTROLLER_FUNCTION_OR 0x10\r
-#define VGA_GRAPHICS_CONTROLLER_FUNCTION_XOR 0x18\r
+#define VGA_GRAPHICS_CONTROLLER_DATA_ROTATE_REGISTER 0x03\r
+#define VGA_GRAPHICS_CONTROLLER_FUNCTION_REPLACE 0x00\r
+#define VGA_GRAPHICS_CONTROLLER_FUNCTION_AND 0x08\r
+#define VGA_GRAPHICS_CONTROLLER_FUNCTION_OR 0x10\r
+#define VGA_GRAPHICS_CONTROLLER_FUNCTION_XOR 0x18\r
\r
#define VGA_GRAPHICS_CONTROLLER_READ_MAP_SELECT_REGISTER 0x04\r
\r
-#define VGA_GRAPHICS_CONTROLLER_MODE_REGISTER 0x05\r
-#define VGA_GRAPHICS_CONTROLLER_READ_MODE_0 0x00\r
-#define VGA_GRAPHICS_CONTROLLER_READ_MODE_1 0x08\r
-#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_0 0x00\r
-#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_1 0x01\r
-#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_2 0x02\r
-#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_3 0x03\r
+#define VGA_GRAPHICS_CONTROLLER_MODE_REGISTER 0x05\r
+#define VGA_GRAPHICS_CONTROLLER_READ_MODE_0 0x00\r
+#define VGA_GRAPHICS_CONTROLLER_READ_MODE_1 0x08\r
+#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_0 0x00\r
+#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_1 0x01\r
+#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_2 0x02\r
+#define VGA_GRAPHICS_CONTROLLER_WRITE_MODE_3 0x03\r
\r
-#define VGA_GRAPHICS_CONTROLLER_MISCELLANEOUS_REGISTER 0x06\r
+#define VGA_GRAPHICS_CONTROLLER_MISCELLANEOUS_REGISTER 0x06\r
\r
#define VGA_GRAPHICS_CONTROLLER_COLOR_DONT_CARE_REGISTER 0x07\r
\r
-#define VGA_GRAPHICS_CONTROLLER_BIT_MASK_REGISTER 0x08\r
+#define VGA_GRAPHICS_CONTROLLER_BIT_MASK_REGISTER 0x08\r
\r
/**\r
Install child handles if the Handle supports MBR format.\r
**/\r
EFI_STATUS\r
BiosVideoChildHandleUninstall (\r
- EFI_DRIVER_BINDING_PROTOCOL *This,\r
- EFI_HANDLE Controller,\r
- EFI_HANDLE Handle\r
+ EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ EFI_HANDLE Controller,\r
+ EFI_HANDLE Handle\r
);\r
\r
/**\r
HasChildHandle (\r
IN EFI_HANDLE Controller\r
);\r
+\r
#endif\r