mirror of
https://github.com/reactos/reactos.git
synced 2024-11-20 14:30:57 +00:00
221 lines
6.1 KiB
C
221 lines
6.1 KiB
C
/*
|
|
* PROJECT: VGA Miniport Driver
|
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
|
* FILE: win32ss/drivers/miniport/vga_new/vbe.h
|
|
* PURPOSE: VESA VBE Registers and Structures
|
|
* PROGRAMMERS: ReactOS Portable Systems Group
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#define LOWORD(l) ((USHORT)((ULONG_PTR)(l)))
|
|
#define HIWORD(l) ((USHORT)(((ULONG_PTR)(l)>>16)&0xFFFF))
|
|
|
|
|
|
/*
|
|
* VBE Command Definitions
|
|
*/
|
|
|
|
#define VBE_GET_CONTROLLER_INFORMATION 0x4F00
|
|
#define VBE_GET_MODE_INFORMATION 0x4F01
|
|
#define VBE_SET_VBE_MODE 0x4F02
|
|
#define VBE_GET_CURRENT_VBE_MODE 0x4F03
|
|
#define VBE_SAVE_RESTORE_STATE 0x4F04
|
|
#define VBE_DISPLAY_WINDOW_CONTROL 0x4F05
|
|
#define VBE_SET_GET_LOGICAL_SCAN_LINE_LENGTH 0x4F06
|
|
#define VBE_SET_GET_DISPLAY_START 0x4F07
|
|
#define VBE_SET_GET_DAC_PALETTE_FORMAT 0x4F08
|
|
#define VBE_SET_GET_PALETTE_DATA 0x4F09
|
|
|
|
/* VBE 2.0+ */
|
|
#define VBE_RETURN_PROTECTED_MODE_INTERFACE 0x4F0A
|
|
#define VBE_GET_SET_PIXEL_CLOCK 0x4F0B
|
|
|
|
/* Extensions */
|
|
#define VBE_POWER_MANAGEMENT_EXTENSIONS 0x4F10
|
|
#define VBE_FLAT_PANEL_INTERFACE_EXTENSIONS 0x4F11
|
|
#define VBE_AUDIO_INTERFACE_EXTENSIONS 0x4F12
|
|
#define VBE_OEM_EXTENSIONS 0x4F13
|
|
#define VBE_DISPLAY_DATA_CHANNEL 0x4F14
|
|
#define VBE_DDC 0x4F15
|
|
|
|
/*
|
|
* VBE DDC Sub-Functions
|
|
*/
|
|
|
|
#define VBE_DDC_READ_EDID 0x01
|
|
#define VBE_DDC_REPORT_CAPABILITIES 0x10
|
|
#define VBE_DDC_BEGIN_SCL_SDA_CONTROL 0x11
|
|
#define VBE_DDC_END_SCL_SDA_CONTROL 0x12
|
|
#define VBE_DDC_WRITE_SCL_CLOCK_LINE 0x13
|
|
#define VBE_DDC_WRITE_SDA_DATA_LINE 0x14
|
|
#define VBE_DDC_READ_SCL_CLOCK_LINE 0x15
|
|
#define VBE_DDC_READ_SDA_DATA_LINE 0x16
|
|
|
|
/*
|
|
* VBE Video Mode Information Definitions
|
|
*/
|
|
#define VBE_MODEATTR_VALID 0x01
|
|
#define VBE_MODEATTR_COLOR 0x08
|
|
#define VBE_MODEATTR_GRAPHICS 0x10
|
|
#define VBE_MODEATTR_NON_VGA 0x20
|
|
#define VBE_MODEATTR_NO_BANK_SWITCH 0x40
|
|
#define VBE_MODEATTR_LINEAR 0x80
|
|
|
|
#define VBE_MODE_BITS 8
|
|
#define VBE_MODE_RESERVED_1 0x200
|
|
#define VBE_MODE_RESERVED_2 0x400
|
|
#define VBE_MODE_REFRESH_CONTROL 0x800
|
|
#define VBE_MODE_ACCELERATED_1 0x1000
|
|
#define VBE_MODE_ACCELERATED_2 0x2000
|
|
#define VBE_MODE_LINEAR_FRAMEBUFFER 0x4000
|
|
#define VBE_MODE_PRESERVE_DISPLAY 0x8000
|
|
#define VBE_MODE_MASK ((1 << (VBE_MODE_BITS + 1)) - 1)
|
|
|
|
#define VBE_MEMORYMODEL_PACKEDPIXEL 0x04
|
|
#define VBE_MEMORYMODEL_DIRECTCOLOR 0x06
|
|
|
|
/*
|
|
* VBE Return Codes
|
|
*/
|
|
|
|
#define VBE_SUCCESS 0x4F
|
|
#define VBE_UNSUCCESSFUL 0x14F
|
|
#define VBE_NOT_SUPPORTED 0x24F
|
|
#define VBE_FUNCTION_INVALID 0x34F
|
|
|
|
#define VBE_GETRETURNCODE(x) (x & 0xFFFF)
|
|
|
|
#include <pshpack1.h>
|
|
|
|
/*
|
|
* VBE specification defined structure for general adapter info
|
|
* returned by function VBE_GET_CONTROLLER_INFORMATION command.
|
|
*/
|
|
|
|
typedef struct _VBE_CONTROLLER_INFO
|
|
{
|
|
ULONG Signature;
|
|
USHORT Version;
|
|
ULONG OemStringPtr;
|
|
LONG Capabilities;
|
|
ULONG VideoModePtr;
|
|
USHORT TotalMemory;
|
|
USHORT OemSoftwareRevision;
|
|
ULONG OemVendorNamePtr;
|
|
ULONG OemProductNamePtr;
|
|
ULONG OemProductRevPtr;
|
|
CHAR Reserved[222];
|
|
CHAR OemData[256];
|
|
} VBE_CONTROLLER_INFO, *PVBE_CONTROLLER_INFO;
|
|
|
|
/*
|
|
* VBE specification defined structure for specific video mode
|
|
* info returned by function VBE_GET_MODE_INFORMATION command.
|
|
*/
|
|
|
|
typedef struct _VBE_MODE_INFO
|
|
{
|
|
/* Mandatory information for all VBE revisions */
|
|
USHORT ModeAttributes;
|
|
UCHAR WinAAttributes;
|
|
UCHAR WinBAttributes;
|
|
USHORT WinGranularity;
|
|
USHORT WinSize;
|
|
USHORT WinASegment;
|
|
USHORT WinBSegment;
|
|
ULONG WinFuncPtr;
|
|
USHORT BytesPerScanLine;
|
|
|
|
/* Mandatory information for VBE 1.2 and above */
|
|
USHORT XResolution;
|
|
USHORT YResolution;
|
|
UCHAR XCharSize;
|
|
UCHAR YCharSize;
|
|
UCHAR NumberOfPlanes;
|
|
UCHAR BitsPerPixel;
|
|
UCHAR NumberOfBanks;
|
|
UCHAR MemoryModel;
|
|
UCHAR BankSize;
|
|
UCHAR NumberOfImagePages;
|
|
UCHAR Reserved1;
|
|
|
|
/* Direct Color fields (required for Direct/6 and YUV/7 memory models) */
|
|
UCHAR RedMaskSize;
|
|
UCHAR RedFieldPosition;
|
|
UCHAR GreenMaskSize;
|
|
UCHAR GreenFieldPosition;
|
|
UCHAR BlueMaskSize;
|
|
UCHAR BlueFieldPosition;
|
|
UCHAR ReservedMaskSize;
|
|
UCHAR ReservedFieldPosition;
|
|
UCHAR DirectColorModeInfo;
|
|
|
|
/* Mandatory information for VBE 2.0 and above */
|
|
ULONG PhysBasePtr;
|
|
ULONG Reserved2;
|
|
USHORT Reserved3;
|
|
|
|
/* Mandatory information for VBE 3.0 and above */
|
|
USHORT LinBytesPerScanLine;
|
|
UCHAR BnkNumberOfImagePages;
|
|
UCHAR LinNumberOfImagePages;
|
|
UCHAR LinRedMaskSize;
|
|
UCHAR LinRedFieldPosition;
|
|
UCHAR LinGreenMaskSize;
|
|
UCHAR LinGreenFieldPosition;
|
|
UCHAR LinBlueMaskSize;
|
|
UCHAR LinBlueFieldPosition;
|
|
UCHAR LinReservedMaskSize;
|
|
UCHAR LinReservedFieldPosition;
|
|
ULONG MaxPixelClock;
|
|
|
|
CHAR Reserved4[190];
|
|
} VBE_MODE_INFO, *PVBE_MODE_INFO;
|
|
|
|
#include <poppack.h>
|
|
|
|
typedef struct _VBE_INFO
|
|
{
|
|
VBE_CONTROLLER_INFO Info;
|
|
VBE_MODE_INFO Modes;
|
|
USHORT ModeArray[129];
|
|
} VBE_INFO, *PVBE_INFO;
|
|
|
|
C_ASSERT(sizeof(VBE_CONTROLLER_INFO) == 0x200);
|
|
C_ASSERT(sizeof(VBE_MODE_INFO) == 0x100);
|
|
|
|
typedef struct _VBE_COLOR_REGISTER
|
|
{
|
|
UCHAR Blue;
|
|
UCHAR Green;
|
|
UCHAR Red;
|
|
UCHAR Pad;
|
|
} VBE_COLOR_REGISTER, *PVBE_COLOR_REGISTER;
|
|
|
|
VOID
|
|
NTAPI
|
|
InitializeModeTable(IN PHW_DEVICE_EXTENSION VgaExtension);
|
|
|
|
VP_STATUS
|
|
NTAPI
|
|
VbeSetMode(IN PHW_DEVICE_EXTENSION VgaDeviceExtension,
|
|
IN PVIDEOMODE VgaMode,
|
|
OUT PULONG PhysPtrChange);
|
|
|
|
VP_STATUS
|
|
NTAPI
|
|
VbeSetColorLookup(IN PHW_DEVICE_EXTENSION VgaExtension,
|
|
IN PVIDEO_CLUT ClutBuffer);
|
|
|
|
BOOLEAN
|
|
NTAPI
|
|
ValidateVbeInfo(IN PHW_DEVICE_EXTENSION VgaExtension,
|
|
IN PVBE_INFO VbeInfo);
|
|
|
|
extern BOOLEAN g_bIntelBrookdaleBIOS;
|
|
|
|
/* VBE2 magic number */
|
|
#define VBE2_MAGIC ('V' + ('B' << 8) + ('E' << 16) + ('2' << 24))
|
|
|
|
/* EOF */
|