savage_vbe.h revision ab47cfaa
1ab47cfaaSmrg/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/savage/savage_vbe.h,v 1.1 2000/12/02 01:16:15 dawes Exp $ */
2ab47cfaaSmrg
3ab47cfaaSmrg/*
4ab47cfaaSmrgThis file was originally part of the Linux Real-Mode Interface, or LRMI.
5ab47cfaaSmrgThere is nothing LRMI-specific here; this is all good, general VBE info.
6ab47cfaaSmrg
7ab47cfaaSmrgCopyright (C) 1996 by Josh Vanderhoof
8ab47cfaaSmrg
9ab47cfaaSmrgYou are free to distribute and modify this file, as long as you
10ab47cfaaSmrgdo not remove this copyright notice and clearly label modified
11ab47cfaaSmrgversions as being modified.
12ab47cfaaSmrg
13ab47cfaaSmrgThis software has NO WARRANTY.  Use it at your own risk.
14ab47cfaaSmrg*/
15ab47cfaaSmrg
16ab47cfaaSmrg#ifndef _SAVAGEVBE_H
17ab47cfaaSmrg#define _SAVAGEVBE_H
18ab47cfaaSmrg
19ab47cfaaSmrg/*
20ab47cfaaSmrg *  Common BIOS functions
21ab47cfaaSmrg */
22ab47cfaaSmrg
23ab47cfaaSmrg#define BIOS_SET_VBE_MODE       0x4F02
24ab47cfaaSmrg#define BIOS_GET_VBE_MODE       0x4F03
25ab47cfaaSmrg#define BIOS_SVGA_STATE         0x4F04
26ab47cfaaSmrg#define BIOS_LOG_SCANLINE       0x4F06
27ab47cfaaSmrg#define BIOS_VBE_PM_SERVICE     0x4F10
28ab47cfaaSmrg#define S3_EXTBIOS_INFO         0x4F14  /* S3 Extended BIOS services */
29ab47cfaaSmrg#define BIOS_VBE_DDC            0x4F15
30ab47cfaaSmrg
31ab47cfaaSmrg/*************************************************************************
32ab47cfaaSmrg *     Defines for BIOS compliant with S3 (Mobile and Desktop) PCI Video
33ab47cfaaSmrg *     Bios External Interface Specification, Core Revision 3.02+
34ab47cfaaSmrg *
35ab47cfaaSmrg *     e.g. used by Trio3D, GX-3
36ab47cfaaSmrg *************************************************************************/
37ab47cfaaSmrg
38ab47cfaaSmrg#define S3_GET_SVGA_BUF          0x0000
39ab47cfaaSmrg#define S3_SAVE_SVGA_STATE       0x0001
40ab47cfaaSmrg#define S3_RESTORE_SVGA_STATE    0x0002
41ab47cfaaSmrg/*
42ab47cfaaSmrg * For S3_EXTBIOS_INFO (0x4F14) services
43ab47cfaaSmrg */
44ab47cfaaSmrg#define S3_VBE_INFO         0x0000  /* fn0: Query S3/VBE info */
45ab47cfaaSmrg
46ab47cfaaSmrg#define S3_SET_REFRESH      0x0001  /* fn1,sub0: Set Refresh Rate for Mode */
47ab47cfaaSmrg#define S3_GET_REFRESH      0x0101  /* fn1,sub1: Get Refresh Rate for Mode */
48ab47cfaaSmrg#define S3_QUERY_REFRESH    0x0201  /* fn1,sub2: Query Refresh Rates for Mode */
49ab47cfaaSmrg
50ab47cfaaSmrg#define S3_QUERY_MODELIST   0x0202  /* fn2,sub2: Query Mode List */
51ab47cfaaSmrg#define S3_GET_EXT_MODEINFO 0x0302  /* fn2,sub3: Get Extended Mode Info */
52ab47cfaaSmrg
53ab47cfaaSmrg#define S3_QUERY_ATTACHED   0x0004  /* fn4,sub0: Query detected displays */
54ab47cfaaSmrg
55ab47cfaaSmrg#define S3_GET_ACTIVE_DISP  0x0103  /* fn3,sub1: Get Active Display */
56ab47cfaaSmrg#define S3_SET_ACTIVE_DISP  0x0003  /* fn3,sub0: Set Active Display */
57ab47cfaaSmrg#define S3_ALT_SET_ACTIVE_DISP  0x8003  /* fn8003,sub0: Alternate Set Active Display */
58ab47cfaaSmrg
59ab47cfaaSmrg#define S3_SET_TV_CONFIG    0x0007  /* fn7,sub0: Set TV Configuration */
60ab47cfaaSmrg#define S3_GET_TV_CONFIG    0x0107  /* fn7,sub1: Get TV Configuration */
61ab47cfaaSmrg
62ab47cfaaSmrg
63ab47cfaaSmrg#define BIOS_CRT1_ONLY              0x01
64ab47cfaaSmrg#define BIOS_LCD_ONLY               0x02
65ab47cfaaSmrg#define BIOS_TV_NTSC                0x04
66ab47cfaaSmrg#define BIOS_TV_PAL                 0x08
67ab47cfaaSmrg#define BIOS_TV_ONLY                0x0c
68ab47cfaaSmrg#define BIOS_DVI_ONLY               0x20
69ab47cfaaSmrg#define BIOS_DEVICE_MASK            (BIOS_CRT1_ONLY|BIOS_LCD_ONLY|BIOS_TV_ONLY|BIOS_DVI_ONLY)
70ab47cfaaSmrg
71ab47cfaaSmrg/* structures for vbe 2.0 */
72ab47cfaaSmrg
73ab47cfaaSmrg#ifndef __GNUC__
74ab47cfaaSmrg#define __attribute__(a)
75ab47cfaaSmrg#endif
76ab47cfaaSmrg
77ab47cfaaSmrgstruct vbe_info_block
78ab47cfaaSmrg	{
79ab47cfaaSmrg	char vbe_signature[4];
80ab47cfaaSmrg	short vbe_version;
81ab47cfaaSmrg	unsigned short oem_string_off;
82ab47cfaaSmrg	unsigned short oem_string_seg;
83ab47cfaaSmrg	int capabilities;
84ab47cfaaSmrg	unsigned short video_mode_list_off;
85ab47cfaaSmrg	unsigned short video_mode_list_seg;
86ab47cfaaSmrg	short total_memory;
87ab47cfaaSmrg	short oem_software_rev;
88ab47cfaaSmrg	unsigned short oem_vendor_name_off;
89ab47cfaaSmrg	unsigned short oem_vendor_name_seg;
90ab47cfaaSmrg	unsigned short oem_product_name_off;
91ab47cfaaSmrg	unsigned short oem_product_name_seg;
92ab47cfaaSmrg	unsigned short oem_product_rev_off;
93ab47cfaaSmrg	unsigned short oem_product_rev_seg;
94ab47cfaaSmrg	char reserved[222];
95ab47cfaaSmrg	char oem_data[256];
96ab47cfaaSmrg	} __attribute__ ((packed));
97ab47cfaaSmrg
98ab47cfaaSmrg#define VBE_ATTR_MODE_SUPPORTED 	(1 << 0)
99ab47cfaaSmrg#define VBE_ATTR_TTY 	(1 << 2)
100ab47cfaaSmrg#define VBE_ATTR_COLOR 	(1 << 3)
101ab47cfaaSmrg#define VBE_ATTR_GRAPHICS 	(1 << 4)
102ab47cfaaSmrg#define VBE_ATTR_NOT_VGA 	(1 << 5)
103ab47cfaaSmrg#define VBE_ATTR_NOT_WINDOWED 	(1 << 6)
104ab47cfaaSmrg#define VBE_ATTR_LINEAR 	(1 << 7)
105ab47cfaaSmrg
106ab47cfaaSmrg#define VBE_WIN_RELOCATABLE 	(1 << 0)
107ab47cfaaSmrg#define VBE_WIN_READABLE 	(1 << 1)
108ab47cfaaSmrg#define VBE_WIN_WRITEABLE 	(1 << 2)
109ab47cfaaSmrg
110ab47cfaaSmrg#define VBE_MODEL_TEXT 	0
111ab47cfaaSmrg#define VBE_MODEL_CGA 	1
112ab47cfaaSmrg#define VBE_MODEL_HERCULES 	2
113ab47cfaaSmrg#define VBE_MODEL_PLANAR 	3
114ab47cfaaSmrg#define VBE_MODEL_PACKED 	4
115ab47cfaaSmrg#define VBE_MODEL_256 	5
116ab47cfaaSmrg#define VBE_MODEL_RGB 	6
117ab47cfaaSmrg#define VBE_MODEL_YUV 	7
118ab47cfaaSmrg
119ab47cfaaSmrgstruct vbe_mode_info_block
120ab47cfaaSmrg	{
121ab47cfaaSmrg	unsigned short mode_attributes;
122ab47cfaaSmrg	unsigned char win_a_attributes;
123ab47cfaaSmrg	unsigned char win_b_attributes;
124ab47cfaaSmrg	unsigned short win_granularity;
125ab47cfaaSmrg	unsigned short win_size;
126ab47cfaaSmrg	unsigned short win_a_segment;
127ab47cfaaSmrg	unsigned short win_b_segment;
128ab47cfaaSmrg	unsigned short win_func_ptr_off;
129ab47cfaaSmrg	unsigned short win_func_ptr_seg;
130ab47cfaaSmrg	unsigned short bytes_per_scanline;
131ab47cfaaSmrg	unsigned short x_resolution;
132ab47cfaaSmrg	unsigned short y_resolution;
133ab47cfaaSmrg	unsigned char x_char_size;
134ab47cfaaSmrg	unsigned char y_char_size;
135ab47cfaaSmrg	unsigned char number_of_planes;
136ab47cfaaSmrg	unsigned char bits_per_pixel;
137ab47cfaaSmrg	unsigned char number_of_banks;
138ab47cfaaSmrg	unsigned char memory_model;
139ab47cfaaSmrg	unsigned char bank_size;
140ab47cfaaSmrg	unsigned char number_of_image_pages;
141ab47cfaaSmrg	unsigned char res1;
142ab47cfaaSmrg	unsigned char red_mask_size;
143ab47cfaaSmrg	unsigned char red_field_position;
144ab47cfaaSmrg	unsigned char green_mask_size;
145ab47cfaaSmrg	unsigned char green_field_position;
146ab47cfaaSmrg	unsigned char blue_mask_size;
147ab47cfaaSmrg	unsigned char blue_field_position;
148ab47cfaaSmrg	unsigned char rsvd_mask_size;
149ab47cfaaSmrg	unsigned char rsvd_field_position;
150ab47cfaaSmrg	unsigned char direct_color_mode_info;
151ab47cfaaSmrg	unsigned int phys_base_ptr;
152ab47cfaaSmrg	unsigned int offscreen_mem_offset;
153ab47cfaaSmrg	unsigned short offscreen_mem_size;
154ab47cfaaSmrg	unsigned char res2[206];
155ab47cfaaSmrg	} __attribute__ ((packed));
156ab47cfaaSmrg
157ab47cfaaSmrgstruct vbe_palette_entry
158ab47cfaaSmrg	{
159ab47cfaaSmrg	unsigned char blue;
160ab47cfaaSmrg	unsigned char green;
161ab47cfaaSmrg	unsigned char red;
162ab47cfaaSmrg	unsigned char align;
163ab47cfaaSmrg	} __attribute__ ((packed));
164ab47cfaaSmrg
165ab47cfaaSmrg#endif
166