summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/Include/IndustryStandard/LegacyVgaBios.h
blob: 7568d585a96fa6dd40598f732b20d405bb39676d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/** @file
  Type definitions related to the VBE (VESA BIOS Extension, Int10h AH=4Fh)
  services GET INFORMATION (AL=00h) and GET MODE INFORMATION (AL=01h).

  For reference, see Ralf Brown's Interrupt List:
  <http://www.cs.cmu.edu/~ralf/files.html>
  <http://www.ctyme.com/rbrown.htm>

  Copyright (C) 2014, Red Hat, Inc.

  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef __LEGACY_VGA_BIOS_H__
#define __LEGACY_VGA_BIOS_H__

#include <Base.h>

#pragma pack (1)
typedef struct {
  UINT8     Signature[4];
  UINT16    VesaVersion;
  UINT32    OemNameAddress;
  UINT32    Capabilities;
  UINT32    ModeListAddress;
  UINT16    VideoMem64K;
  UINT16    OemSoftwareVersion;
  UINT32    VendorNameAddress;
  UINT32    ProductNameAddress;
  UINT32    ProductRevAddress;
} VBE_INFO_BASE;

typedef struct {
  VBE_INFO_BASE    Base;
  UINT8            Buffer[256 - sizeof (VBE_INFO_BASE)];
} VBE_INFO;

typedef struct {
  UINT16    ModeAttr;
  UINT8     WindowAAttr;
  UINT8     WindowBAttr;
  UINT16    WindowGranularityKB;
  UINT16    WindowSizeKB;
  UINT16    WindowAStartSegment;
  UINT16    WindowBStartSegment;
  UINT32    WindowPositioningAddress;
  UINT16    BytesPerScanLine;

  UINT16    Width;
  UINT16    Height;
  UINT8     CharCellWidth;
  UINT8     CharCellHeight;
  UINT8     NumPlanes;
  UINT8     BitsPerPixel;
  UINT8     NumBanks;
  UINT8     MemoryModel;
  UINT8     BankSizeKB;
  UINT8     NumImagePagesLessOne;
  UINT8     Vbe3;

  UINT8     RedMaskSize;
  UINT8     RedMaskPos;
  UINT8     GreenMaskSize;
  UINT8     GreenMaskPos;
  UINT8     BlueMaskSize;
  UINT8     BlueMaskPos;
  UINT8     ReservedMaskSize;
  UINT8     ReservedMaskPos;
  UINT8     DirectColorModeInfo;

  UINT32    LfbAddress;
  UINT32    OffScreenAddress;
  UINT16    OffScreenSizeKB;

  UINT16    BytesPerScanLineLinear;
  UINT8     NumImagesLessOneBanked;
  UINT8     NumImagesLessOneLinear;
  UINT8     RedMaskSizeLinear;
  UINT8     RedMaskPosLinear;
  UINT8     GreenMaskSizeLinear;
  UINT8     GreenMaskPosLinear;
  UINT8     BlueMaskSizeLinear;
  UINT8     BlueMaskPosLinear;
  UINT8     ReservedMaskSizeLinear;
  UINT8     ReservedMaskPosLinear;
  UINT32    MaxPixelClockHz;
  UINT8     Reserved[190];
} VBE_MODE_INFO;

typedef struct {
  UINT16    ModeAttr;
  UINT8     WindowAAttr;
  UINT8     WindowBAttr;
  UINT16    WindowGranularityKB;
  UINT16    WindowSizeKB;
  UINT16    WindowAStartSegment;
  UINT16    WindowBStartSegment;
  UINT32    WindowPositioningAddress;
  UINT16    BytesPerScanLine;

  UINT16    Width;
  UINT16    Height;
  UINT8     CharCellWidth;
  UINT8     CharCellHeight;
  UINT8     NumPlanes;
  UINT8     BitsPerPixel;
  UINT8     NumBanks;
  UINT8     MemoryModel;
  UINT8     BankSizeKB;
  UINT8     NumImagePagesLessOne;
  UINT8     Vbe3;

  UINT8     RedMaskSize;
  UINT8     RedMaskPos;
  UINT8     GreenMaskSize;
  UINT8     GreenMaskPos;
  UINT8     BlueMaskSize;
  UINT8     BlueMaskPos;
  UINT8     ReservedMaskSize;
  UINT8     ReservedMaskPos;
  UINT8     DirectColorModeInfo;

  UINT32    LfbAddress;
  UINT32    OffScreenAddress;
  UINT16    OffScreenSizeKB;
} VBE2_MODE_INFO;
#pragma pack ()

#endif