[BACK]Return to vbe.h CVS log [TXT][DIR] Up to [local] / sys / dev / vesa

Annotation of sys/dev/vesa/vbe.h, Revision 1.1.1.1

1.1       nbrk        1: /*
                      2:  * Copyright (c) 2007 Gordon Willem Klok <gwk@openbsd.org>
                      3:  *
                      4:  * Permission to use, copy, modify, and distribute this software for any
                      5:  * purpose with or without fee is hereby granted, provided that the above
                      6:  * copyright notice and this permission notice appear in all copies.
                      7:  *
                      8:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
                      9:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
                     10:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
                     11:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
                     12:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
                     13:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
                     14:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
                     15:  */
                     16:
                     17: /*
                     18:  * Information taken from VESA Bios Extention (VBE) Core Functions Standard
                     19:  * Version 3.0 found at http://www.vesa.org/public/VBE/vbe3.pdf
                     20:  */
                     21: #ifndef VBE_H
                     22: #define VBE_H
                     23:
                     24: #define BIOS_VIDEO_INTR                        0x10
                     25:
                     26: /* A well know address to locate a page at in the vm86 task */
                     27: #define KVM86_CALL_TASKVA              0x2000
                     28:
                     29: /* Information contained in AH following a VBE function call */
                     30: /* Low byte determins call support */
                     31: #define VBECALL_SUPPORT(v)             (v & 0xff)
                     32: #define VBECALL_SUPPORTED              0x4f
                     33:
                     34: /* High byte determins call sucess */
                     35: #define VBECALL_SUCESS(v)              (v >> 8 & 0xFF)
                     36: #define VBECALL_SUCCEDED               0x00
                     37: #define VBECALL_FAILED                 0x01
                     38: #define VBECALL_MISMATCH               0x02 /* BIOS SUPPORTS HW DOES NOT */
                     39: #define VBECALL_INVALID                        0x03 /* INVALID IN CURRENT MODE */
                     40:
                     41: /* VBE Standard Function Calls */
                     42: #define VBE_FUNC_CTRLINFO              0x4F00
                     43: #define VBE_FUNC_MODEINFO              0x4F01
                     44: #define VBE_FUNC_SETMODE               0x4F02
                     45: #define VBE_FUNC_GETMODE               0x4F03
                     46: #define VBE_FUNC_SAVEREST              0x4F04
                     47: #define VBE_FUNC_DWC                   0x4F05 /* Display window control */
                     48: #define VBE_FUNC_LSLL                  0x4F06 /* Logical Scan Line Length */
                     49: #define VBE_FUNC_START                 0x4F07 /* Set/Get Display Start */
                     50: #define VBE_FUNC_DAC                   0x4F08 /* Set/Get DAC Pallete Format */
                     51: #define VBE_FUNC_PALETTE               0x4F09 /* Set/Get Pallete Data */
                     52: #define VBE_FUNC_PMI                   0x4F0A /* Protected Mode Interface */
                     53: #define VBE_FUNC_PIXELCLOCK            0x4F0B
                     54:
                     55: /* VBE Supplemental Function Calls */
                     56: #define VBE_FUNC_PM                    0x4F10 /* Power Management Interface */
                     57: #define VBE_FUNC_FLATPANEL             0x4F11 /* Flat Panel Interface */
                     58: #define VBE_FUNC_AUDIO                 0x4F13 /* Audio Interface */
                     59: #define VBE_FUNC_OEM                   0x4F14 /* OEM Extentions */
                     60: #define VBE_FUNC_DDC                   0x4F15 /* Display Data Channel (DDC) */
                     61:
                     62: #define VBE_CTRLINFO_VERSION(v)                (v >> 8)
                     63: #define VBE_CTRLINFO_REVISION(v)       (v & 0xff)
                     64: #define VBE_DDC_GET                    0x01
                     65:
                     66: struct edid_chroma {
                     67:        uint8_t chroma_rglow;
                     68:        uint8_t chroma_bwlow;
                     69:        uint8_t chroma_redx;
                     70:        uint8_t chroma_redy;
                     71:        uint8_t chroma_greenx;
                     72:        uint8_t chroma_greeny;
                     73:        uint8_t chroma_bluex;
                     74:        uint8_t chroma_bluey;
                     75:        uint8_t chroma_whitex;
                     76:        uint8_t chroma_whitey;
                     77: } __packed;
                     78:
                     79: struct edid_db {
                     80:        uint16_t db_pixelclock;
                     81:        uint8_t db_stor[16];
                     82: } __packed;
                     83:
                     84: #define EDID_DB_FLAG_INTERLACED                0x80
                     85: #define EDID_DB_FLAG_STEREO            0x10
                     86: #define EDID_DB_POSITIVE_HSYNC         0x04
                     87: #define EDID_DB_POSITIVE_VSYNC         0x02
                     88:
                     89: /* Types of Descriptor Blocks */
                     90: #define EDID_DB_BT_MONSERIAL           0xff
                     91: #define EDID_DB_BT_ASCIISTR            0xfe
                     92: #define EDID_DB_BT_RANGELIMITS         0xfd
                     93: #define EDID_DB_BT_MONITORNAME         0xfc
                     94: #define EDID_DB_BT_COLORPOINT          0xfb
                     95: #define EDID_DB_BT_STDTIMEDATA         0xfa
                     96: #define EDID_DB_BT_UNDEF               0xf9
                     97: #define EDID_DB_BT_MANUFDEF            0xf8
                     98:
                     99: struct edid_ranges {
                    100:        uint8_t range_minvertfreq;
                    101:        uint8_t range_maxvertfreq;
                    102:        uint8_t range_minhorizfreq;
                    103:        uint8_t range_maxhorizfreq;
                    104:        uint8_t range_pixelclock;
                    105:        uint16_t range_secgtftoggle;
                    106:        uint8_t range_starthorizfreq;
                    107:        uint8_t range_c;
                    108:        uint16_t range_m;
                    109:        uint16_t range_k;
                    110:        uint16_t range_y;
                    111: } __packed;
                    112:
                    113: struct edid_timing {
                    114:        uint8_t timing_estb1;
                    115:        uint8_t timing_estb2;
                    116:        uint8_t timing_manu;
                    117:        uint16_t timing_std1;
                    118:        uint16_t timing_std2;
                    119:        uint16_t timing_std3;
                    120:        uint16_t timing_std4;
                    121:        uint16_t timing_std5;
                    122:        uint16_t timing_std6;
                    123:        uint16_t timing_std7;
                    124:        uint16_t timing_std8;
                    125: } __packed;
                    126:
                    127: struct edid {
                    128:        uint8_t edid_header[8];
                    129:        uint16_t edid_manufacture;
                    130:        uint16_t edid_product;
                    131:        uint32_t edid_serialno;
                    132:        uint8_t edid_week;
                    133:        uint8_t edid_year;
                    134:        uint8_t edid_version;
                    135:        uint8_t edid_revision;
                    136:        uint8_t edid_vidid;
                    137:        uint8_t edid_maxhoriz_isize;
                    138:        uint8_t edid_maxvert_isize;
                    139:        uint8_t edid_gamma;
                    140:        uint8_t edid_pmfeatures;
                    141:        struct edid_chroma edid_chroma;
                    142:        struct edid_timing edid_timing;
                    143:        struct edid_db edid_db1;
                    144:        struct edid_db edid_db2;
                    145:        struct edid_db edid_db3;
                    146:        struct edid_db edid_db4;
                    147:        uint8_t edid_extblocks;
                    148:        uint8_t edid_chksum;
                    149: } __packed;
                    150:
                    151: #endif

CVSweb