RTEMS 7.0-rc1
Loading...
Searching...
No Matches
vbe3.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0+-with-RTEMS-exception */
2
17/*
18 * Copyright (C) 2014 Jan Dolezal (dolezj21@fel.cvut.cz)
19 * CTU in Prague.
20 *
21 * The license and distribution terms for this file may be
22 * found in the file LICENSE in this distribution or at
23 * http://www.rtems.org/license/LICENSE.
24 */
25
26#ifndef _VBE_H
27#define _VBE_H
28
29#ifndef ASM /* ASM */
30
31#include <stdint.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif /* __cplusplus */
36
38
39/* VESA BIOS EXTENSION (VBE) Core functions Standard
40 Version: 3.0 Date: September 16, 1998 */
41
44#define VBE_functionSupported 0x4F
46#define VBE_callSuccessful 0x00
48#define VBE_callFailed 0x01
50#define VBE_notSupportedInCurHWConf 0x02
52#define VBE_callInvalid 0x03
53
54/* VBE Mode Numbers */
56#define VBE_modeNumberMask 0x01FF
57#define VBE_modeNumberShift 0x00
60#define VBE_VESAmodeMask 0x0100
61#define VBE_VESAmodeShift 0x08
62/* D9-D10 = Reserved by VESA for future expansion (= 0) */
65#define VBE_refreshRateCtrlMask 0x0800
66#define VBE_refreshRateCtrlShift 0x0B
67/* D12-13 = Reserved for VBE/AF (must be 0) */
70#define VBE_linearFlatFrameBufMask 0x4000
71#define VBE_linearFlatFrameBufShift 0x0E
74#define VBE_preserveDispMemMask 0x8000
75#define VBE_preserveDispMemShift 0x0F
76
77/* Graphics modes */
79#define VBE_R640x400C256 0x100
81#define VBE_R640x480C256 0x101
83#define VBE_R800x600C16 0x102
85#define VBE_b7R800x600C16 0x6A
87#define VBE_R800x600C256 0x103
89#define VBE_R1024x768C16 0x104
91#define VBE_R1024x768C256 0x105
93#define VBE_R1280x1024C16 0x106
95#define VBE_R1280x1024C256 0x107
97#define VBE_R320x200C32K 0x10D
99#define VBE_R320x200C64K 0x10E
101#define VBE_R320x200C17M 0x10F
103#define VBE_R640x480C32K 0x110
105#define VBE_R640x480C64K 0x111
107#define VBE_R640x480C17M 0x112
109#define VBE_R800x600C32K 0x113
111#define VBE_R800x600C64K 0x114
113#define VBE_R800x600C17M 0x115
115#define VBE_R1024x768C32K 0x116
117#define VBE_R1024x768C64K 0x117
119#define VBE_R1024x768C17M 0x118
121#define VBE_R1280x1024C32K 0x119
123#define VBE_R1280x1024C64K 0x11A
125#define VBE_R1280x1024C17M 0x11B
126#define VBE_SpecialMode 0x81FF
127
128/* Text modes */
129#define VBE_C80R60 0x108
130#define VBE_C132R25 0x109
131#define VBE_C132R43 0x10A
132#define VBE_C132R50 0x10B
133#define VBE_C132R60 0x10C
135/* VBE function numbers - passed in AX register */
137#define VBE_RetVBEConInf 0x4F00
139#define VBE_RetVBEModInf 0x4F01
141#define VBE_SetVBEMod 0x4F02
143#define VBE_RetCurVBEMod 0x4F03
145#define VBE_SavResSta 0x4F04
147#define VBE_DisWinCon 0x4F05
149#define VBE_SetGetLogScaLinLen 0x4F06
151#define VBE_SetGetDisSta 0x4F07
153#define VBE_SetGetDACPalFor 0x4F08
155#define VBE_SetGetPalDat 0x4F09
157#define VBE_RetVBEProModInt 0x4F0A
159#define VBE_GetSetpixclo 0x4F0B
161#define VBE_PowManExt 0x4F10
163#define VBE_FlaPanIntExt 0x4F11
165#define VBE_AudIntExt 0x4F13
167#define VBE_OEMExt 0x4F14
169#define VBE_DisDatCha 0x4F15
170
171/* VBE subfunction numbers - passed in BL register */
172#define VBE_RetVBESupSpeInf 0x00
174/* *** Structures *** */
178typedef struct {
180 uint16_t offset;
183 uint16_t selector;
184} RTEMS_PACKED VBE_far_pointer;
185
189typedef struct {
191 uint8_t Signature[4];
193 uint16_t EntryPoint;
195 uint16_t PMInitialize;
197 uint16_t BIOSDataSel;
199 uint16_t A0000Sel;
201 uint16_t B0000Sel;
203 uint16_t B8000Sel;
205 uint16_t CodeSegSel;
209 uint8_t Checksum;
210} RTEMS_PACKED VBE_protected_mode_info_block;
211
213#define VBE_SIGNATURE "VESA"
215#define VBE20plus_SIGNATURE "VBE2"
217#define VBE_STUB_VideoModeList 0xFFFF
218#define VBE_END_OF_VideoModeList 0xFFFF
222typedef struct {
224 uint8_t VbeSignature[4];
226 uint16_t VbeVersion;
228 uint8_t *OemStringPtr;
230 uint8_t Capabilities[4];
232 uint32_t *VideoModePtr;
234 uint16_t TotalMemory;
235 /* Added for VBE 2.0+ */
245 uint8_t Reserved[222];
247 uint8_t OemData[256];
248} RTEMS_PACKED VBE_vbe_info_block;
249
253typedef struct {
254 /* Mandatory information for all VBE revisions */
264 uint16_t WinSize;
266 uint16_t WinASegment;
268 uint16_t WinBSegment;
270 uint32_t *WinFuncPtr;
273 /* Mandatory information for VBE 1.2 and above */
275 uint16_t XResolution;
277 uint16_t YResolution;
279 uint8_t XCharSize;
281 uint8_t YCharSize;
289 uint8_t MemoryModel;
291 uint8_t BankSize;
295 uint8_t Reserved0;
296 /* Direct Color fields (required for direct/6 and YUV/7 memory models) */
298 uint8_t RedMaskSize;
315 /* Mandatory information for VBE 2.0 and above */
317 uint32_t *PhysBasePtr;
319 uint32_t Reserved1;
321 uint16_t Reserved2;
322 /* Mandatory information for VBE 3.0 and above */
329 /* linear modes */
349 uint8_t Reserved3[189];
350} RTEMS_PACKED VBE_mode_info_block;
351
355typedef struct {
369 uint8_t Flags;
371 uint32_t PixelClock;
373 uint16_t RefreshRate;
375 uint8_t Reserved[40];
376} RTEMS_PACKED VBE_CRTC_info_block;
377
381typedef struct {
383 uint8_t Blue;
385 uint8_t Green;
387 uint8_t Red;
389 uint8_t Alignment;
390} RTEMS_PACKED VBE_palette_entry;
391
395typedef struct {
397 uint8_t SupVbeSignature[7];
401 uint8_t SupVbeSubFunc[8];
403 uint16_t OemSoftwareRev;
405 uint8_t *OemVendorNamePtr;
407 uint8_t *OemProductNamePtr;
409 uint8_t *OemProductRevPtr;
411 uint8_t *OemStringPtr;
413 uint8_t Reserved[221];
414} RTEMS_PACKED VBE_supplemental_vbe_info_block;
415
416/* VBE_vbe_info_block Capabilities */
420#define VBE_DACswitchableMask 0x0001
424#define VBE_notVGAcompatibleMask 0x0002
429#define VBE_specialRAMDACopMask 0x0004
433#define VBE_hwStereoscopicMask 0x0008
437#define VBE_supportEVCconnMask 0x0010
438/* D5-31 = Reserved */
439
440/* VBE_mode_info_block ModeAttributes */
445#define VBE_modSupInHWMask 0x0001
446/* D1 = 1 (Reserved) */
451#define VBE_TTYOutSupByBIOSMask 0x0004
456#define VBE_ColorModeMask 0x0008
461#define VBE_GraphicsModeMask 0x0010
466#define VBE_VGACompModeMask 0x0020
471#define VBE_VGACompWinMemModeMask 0x0040
476#define VBE_LinFraBufModeAvaiMask 0x0080
481#define VBE_DblScnModeAvaiMask 0x0100
486#define VBE_InterlModeAvaiMask 0x0200
491#define VBE_HWTripBufSupMask 0x0400
496#define VBE_HWSterDispSupMask 0x0800
501#define VBE_DualDispStAdrSupMask 0x1000
502/* D13-D15 = Reserved */
503
504/* VBE_mode_info_block WinXAttributes */
508#define VBE_RelocWinSupMask 0x01
512#define VBE_WinReadableMask 0x02
516#define VBE_WinWritableMask 0x04
517/* D3-D7 = Reserved */
518
519/* VBE_mode_info_block MemoryModel */
520#define VBE_TextMode 0x00
521#define VBE_CGAGraphics 0x01
522#define VBE_HerculesGraphics 0x02
523#define VBE_Planar 0x03
524#define VBE_PackedPixel 0x04
525#define VBE_NonChain4Color256 0x05
526#define VBE_DirectColor 0x06
527#define VBE_YUV 0x07
528 /* 0x08-0x0F Reserved, to be defined by VESA */
529 /* 0x10-0xFF To be defined by OEM */
530
531/* VBE_mode_info_block DirectColorModeInfo */
535#define VBE_ColRampProgMask 0x01
539#define VBE_RsvdBitsUsableMask 0x02
540
541/* VBE_CRTC_info_block Flags */
546#define VBE_GrModeDblScanMask 0x01
551#define VBE_GrModeInterlMask 0x02
556#define VBE_HorSncPolNegMask 0x04
561#define VBE_VerSncPolNegMask 0x08
562
563
564/* VESA BIOS Extensions/Display Data Channel Standard
565 Version: 1.1 November 18, 1999 */
566
567/* VBE/DDC subfunction numbers - passed in BL register */
569#define VBEDDC_Capabilities 0x0
571#define VBEDDC_ReadEDID 0x1
572
573/* DDC Capabilities */
574/* DDC level supported - returned in BL register */
576#define VBEDDC_1SupportedMask 0x1
578#define VBEDDC_2SupportedMask 0x2
581#define VBEDDC_scrBlnkDatTrMs 0x4
582
583
584/* VESA BIOS Extensions/Serial Control Interface Standard
585 Version: 1.0 Revision: 2 Date: July 2, 1997 */
586
587/* VBE/SCI subfunction numbers - passed in BL register */
589#define VBESCI_ReportCapabil 0x10
591#define VBESCI_BegSCLSDACtrl 0x11
593#define VBESCI_EndSCLSDACtrl 0x12
595#define VBESCI_WrtSCLClkLine 0x13
597#define VBESCI_WrtSDADatLine 0x14
599#define VBESCI_RdySCLClkLine 0x15
601#define VBESCI_RdySDADatLine 0x16
602
603/* SCI Capabilities */
604/* I2C level supported - returned in BL register */
606#define VBESCI_capSCLwrtMask 0x1
608#define VBESCI_capSDAwrtMask 0x2
610#define VBESCI_capSCLrdyMask 0x4
612#define VBESCI_capSDArdyMask 0x8
613
614
615#ifdef __cplusplus
616}
617#endif /* __cplusplus */
618
619#endif /* ASM */
620
621#endif /* _VBE_H */
This header file provides basic definitions used by the API and the implementation.
Used for passing and retrieving registers content to/from real mode interrupt call.
Definition: realmode_int.h:45
uint8_t RedMaskSize
Definition: vbe3.h:298
uint8_t BnkNumberOfImagePages
Definition: vbe3.h:326
uint32_t * WinFuncPtr
Definition: vbe3.h:270
uint16_t HorizontalSyncEnd
Definition: vbe3.h:361
uint8_t RsvdMaskSize
Definition: vbe3.h:310
uint8_t Checksum
Definition: vbe3.h:209
uint8_t LinBlueMaskSize
Definition: vbe3.h:339
uint16_t HorizontalSyncStart
Definition: vbe3.h:359
uint32_t PixelClock
Definition: vbe3.h:371
uint8_t GreenFieldPosition
Definition: vbe3.h:304
uint16_t WinBSegment
Definition: vbe3.h:268
uint8_t Green
Definition: vbe3.h:385
uint8_t MemoryModel
Definition: vbe3.h:289
uint16_t OemSoftwareRev
Definition: vbe3.h:237
uint16_t VerticalSyncEnd
Definition: vbe3.h:367
uint8_t XCharSize
Definition: vbe3.h:279
uint8_t LinNumberOfImagePages
Definition: vbe3.h:328
uint16_t BIOSDataSel
Definition: vbe3.h:197
uint8_t GreenMaskSize
Definition: vbe3.h:302
uint32_t * VideoModePtr
Definition: vbe3.h:232
uint8_t BankSize
Definition: vbe3.h:291
uint32_t MaxPixelClock
Definition: vbe3.h:347
uint8_t * OemStringPtr
Definition: vbe3.h:228
uint16_t PMInitialize
Definition: vbe3.h:195
uint16_t LinBytesPerScanLine
Definition: vbe3.h:324
uint16_t WinASegment
Definition: vbe3.h:266
uint16_t VbeVersion
Definition: vbe3.h:226
uint8_t Reserved0
Definition: vbe3.h:295
uint16_t VerticalSyncStart
Definition: vbe3.h:365
uint16_t VerticalTotal
Definition: vbe3.h:363
uint32_t * PhysBasePtr
Definition: vbe3.h:317
uint16_t offset
Offset to segment described by selector.
Definition: vbe3.h:180
uint16_t A0000Sel
Definition: vbe3.h:199
uint16_t BytesPerScanLine
Definition: vbe3.h:272
uint8_t LinRedMaskSize
Definition: vbe3.h:331
uint16_t RefreshRate
Definition: vbe3.h:373
uint8_t WinAAttributes
Definition: vbe3.h:258
uint32_t Reserved1
Definition: vbe3.h:319
uint8_t NumberOfBanks
Definition: vbe3.h:287
uint8_t LinRsvdMaskSize
Definition: vbe3.h:343
uint16_t ModeAttributes
Definition: vbe3.h:256
uint8_t Blue
Definition: vbe3.h:383
uint8_t * OemProductNamePtr
Definition: vbe3.h:241
uint8_t BitsPerPixel
Definition: vbe3.h:285
uint8_t NumberOfPlanes
Definition: vbe3.h:283
uint8_t LinRsvdFieldPosition
Definition: vbe3.h:345
uint16_t B8000Sel
Definition: vbe3.h:203
uint8_t DirectColorModeInfo
Definition: vbe3.h:314
uint8_t LinRedFieldPosition
Definition: vbe3.h:333
uint16_t SupVbeVersion
Definition: vbe3.h:399
uint8_t Red
Definition: vbe3.h:387
uint16_t Reserved2
Definition: vbe3.h:321
uint16_t CodeSegSel
Definition: vbe3.h:205
uint8_t Flags
Definition: vbe3.h:369
uint8_t RsvdFieldPosition
Definition: vbe3.h:312
uint8_t * OemVendorNamePtr
Definition: vbe3.h:239
uint8_t YCharSize
Definition: vbe3.h:281
uint8_t NumberOfImagePages
Definition: vbe3.h:293
uint8_t InProtectMode
Definition: vbe3.h:207
uint16_t YResolution
Definition: vbe3.h:277
uint16_t selector
Selector or Segment depending on whether this is used from 16bit protected mode or from real mode.
Definition: vbe3.h:183
uint8_t LinBlueFieldPosition
Definition: vbe3.h:341
uint8_t WinBAttributes
Definition: vbe3.h:260
uint8_t * OemProductRevPtr
Definition: vbe3.h:243
uint8_t LinGreenMaskSize
Definition: vbe3.h:335
uint16_t XResolution
Definition: vbe3.h:275
uint16_t WinGranularity
Definition: vbe3.h:262
uint8_t LinGreenFieldPosition
Definition: vbe3.h:337
uint16_t HorizontalTotal
Definition: vbe3.h:357
uint16_t WinSize
Definition: vbe3.h:264
uint8_t BlueMaskSize
Definition: vbe3.h:306
uint16_t B0000Sel
Definition: vbe3.h:201
uint8_t BlueFieldPosition
Definition: vbe3.h:308
uint8_t RedFieldPosition
Definition: vbe3.h:300
uint8_t Alignment
Definition: vbe3.h:389
uint16_t TotalMemory
Definition: vbe3.h:234
uint16_t EntryPoint
Definition: vbe3.h:193