blob: 468e444622c507bd4d48c1e4d3277760e501789f [file] [log] [blame]
H. Peter Anvin5e8ddcbe2007-07-11 12:18:52 -07001/* ----------------------------------------------------------------------- *
2 *
3 * Copyright 1999-2007 H. Peter Anvin - All Rights Reserved
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, Inc., 53 Temple Place Ste 330,
8 * Boston MA 02111-1307, USA; either version 2 of the License, or
9 * (at your option) any later version; incorporated herein by reference.
10 *
11 * ----------------------------------------------------------------------- */
12
13#ifndef BOOT_VESA_H
14#define BOOT_VESA_H
15
16typedef struct {
17 u16 off, seg;
18} far_ptr;
19
20/* VESA General Information table */
21struct vesa_general_info {
22 u32 signature; /* 0 Magic number = "VESA" */
23 u16 version; /* 4 */
24 far_ptr vendor_string; /* 6 */
25 u32 capabilities; /* 10 */
26 far_ptr video_mode_ptr; /* 14 */
27 u16 total_memory; /* 18 */
28
Peter Korsgaard17227702008-03-06 10:56:45 +010029 u8 reserved[236]; /* 20 */
H. Peter Anvin5e8ddcbe2007-07-11 12:18:52 -070030} __attribute__ ((packed));
31
32#define VESA_MAGIC ('V' + ('E' << 8) + ('S' << 16) + ('A' << 24))
H. Peter Anvin5e8ddcbe2007-07-11 12:18:52 -070033
34struct vesa_mode_info {
35 u16 mode_attr; /* 0 */
36 u8 win_attr[2]; /* 2 */
37 u16 win_grain; /* 4 */
38 u16 win_size; /* 6 */
39 u16 win_seg[2]; /* 8 */
40 far_ptr win_scheme; /* 12 */
41 u16 logical_scan; /* 16 */
42
43 u16 h_res; /* 18 */
44 u16 v_res; /* 20 */
45 u8 char_width; /* 22 */
46 u8 char_height; /* 23 */
47 u8 memory_planes; /* 24 */
48 u8 bpp; /* 25 */
49 u8 banks; /* 26 */
50 u8 memory_layout; /* 27 */
51 u8 bank_size; /* 28 */
52 u8 image_planes; /* 29 */
53 u8 page_function; /* 30 */
54
55 u8 rmask; /* 31 */
56 u8 rpos; /* 32 */
57 u8 gmask; /* 33 */
58 u8 gpos; /* 34 */
59 u8 bmask; /* 35 */
60 u8 bpos; /* 36 */
61 u8 resv_mask; /* 37 */
62 u8 resv_pos; /* 38 */
63 u8 dcm_info; /* 39 */
64
65 u32 lfb_ptr; /* 40 Linear frame buffer address */
66 u32 offscreen_ptr; /* 44 Offscreen memory address */
67 u16 offscreen_size; /* 48 */
68
69 u8 reserved[206]; /* 50 */
70} __attribute__ ((packed));
71
72#endif /* LIB_SYS_VESA_H */