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