Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


imported SEABIOS source tree
[palacios.git] / bios / seabios / vgasrc / vgatables.h
1 #ifndef __VGATABLES_H
2 #define __VGATABLES_H
3
4 #include "types.h" // u8
5 #include "farptr.h" // struct segoff_s
6
7 /*
8  *
9  * VGA registers
10  *
11  */
12 #define VGAREG_ACTL_ADDRESS            0x3c0
13 #define VGAREG_ACTL_WRITE_DATA         0x3c0
14 #define VGAREG_ACTL_READ_DATA          0x3c1
15
16 #define VGAREG_INPUT_STATUS            0x3c2
17 #define VGAREG_WRITE_MISC_OUTPUT       0x3c2
18 #define VGAREG_VIDEO_ENABLE            0x3c3
19 #define VGAREG_SEQU_ADDRESS            0x3c4
20 #define VGAREG_SEQU_DATA               0x3c5
21
22 #define VGAREG_PEL_MASK                0x3c6
23 #define VGAREG_DAC_STATE               0x3c7
24 #define VGAREG_DAC_READ_ADDRESS        0x3c7
25 #define VGAREG_DAC_WRITE_ADDRESS       0x3c8
26 #define VGAREG_DAC_DATA                0x3c9
27
28 #define VGAREG_READ_FEATURE_CTL        0x3ca
29 #define VGAREG_READ_MISC_OUTPUT        0x3cc
30
31 #define VGAREG_GRDC_ADDRESS            0x3ce
32 #define VGAREG_GRDC_DATA               0x3cf
33
34 #define VGAREG_MDA_CRTC_ADDRESS        0x3b4
35 #define VGAREG_MDA_CRTC_DATA           0x3b5
36 #define VGAREG_VGA_CRTC_ADDRESS        0x3d4
37 #define VGAREG_VGA_CRTC_DATA           0x3d5
38
39 #define VGAREG_MDA_WRITE_FEATURE_CTL   0x3ba
40 #define VGAREG_VGA_WRITE_FEATURE_CTL   0x3da
41 #define VGAREG_ACTL_RESET              0x3da
42
43 #define VGAREG_MDA_MODECTL             0x3b8
44 #define VGAREG_CGA_MODECTL             0x3d8
45 #define VGAREG_CGA_PALETTE             0x3d9
46
47 /* Video memory */
48 #define SEG_GRAPH 0xA000
49 #define SEG_CTEXT 0xB800
50 #define SEG_MTEXT 0xB000
51
52 /*
53  * Tables of default values for each mode
54  */
55 #define TEXT       0x80
56
57 #define CTEXT      (0x00 | TEXT)
58 #define MTEXT      (0x01 | TEXT)
59 #define CGA        0x02
60 #define PLANAR1    0x03
61 #define PLANAR4    0x04
62 #define LINEAR8    0x05
63
64 // for SVGA
65 #define LINEAR15   0x10
66 #define LINEAR16   0x11
67 #define LINEAR24   0x12
68 #define LINEAR32   0x13
69
70 #define SCREEN_IO_START(x,y,p) (((((x)*(y)) | 0x00ff) + 1) * (p))
71 #define SCREEN_MEM_START(x,y,p) SCREEN_IO_START(((x)*2),(y),(p))
72
73 /* standard BIOS Video Parameter Table */
74 struct VideoParam_s {
75     u8 twidth;
76     u8 theightm1;
77     u8 cheight;
78     u16 slength;
79     u8 sequ_regs[4];
80     u8 miscreg;
81     u8 crtc_regs[25];
82     u8 actl_regs[20];
83     u8 grdc_regs[9];
84 } PACKED;
85
86 struct vgamode_s {
87     u8 svgamode;
88     struct VideoParam_s *vparam;
89     u8 memmodel;    /* CTEXT,MTEXT,CGA,PL1,PL2,PL4,P8,P15,P16,P24,P32 */
90     u8 pixbits;
91     u16 sstart;
92     u8 pelmask;
93     u8 *dac;
94     u16 dacsize;
95 };
96
97 struct saveVideoHardware {
98     u8 sequ_index;
99     u8 crtc_index;
100     u8 grdc_index;
101     u8 actl_index;
102     u8 feature;
103     u8 sequ_regs[4];
104     u8 sequ0;
105     u8 crtc_regs[25];
106     u8 actl_regs[20];
107     u8 grdc_regs[9];
108     u16 crtc_addr;
109     u8 plane_latch[4];
110 };
111
112 struct saveBDAstate {
113     u8 video_mode;
114     u16 video_cols;
115     u16 video_pagesize;
116     u16 crtc_address;
117     u8 video_rows;
118     u16 char_height;
119     u8 video_ctl;
120     u8 video_switches;
121     u8 modeset_ctl;
122     u16 cursor_type;
123     u16 cursor_pos[8];
124     u16 video_pagestart;
125     u8 video_page;
126     /* current font */
127     struct segoff_s font0;
128     struct segoff_s font1;
129 };
130
131 struct saveDACcolors {
132     u8 rwmode;
133     u8 peladdr;
134     u8 pelmask;
135     u8 dac[768];
136     u8 color_select;
137 };
138
139 // vgatables.c
140 struct vgamode_s *find_vga_entry(u8 mode);
141 extern u16 video_save_pointer_table[];
142 extern struct VideoParam_s video_param_table[];
143 extern u8 static_functionality[];
144
145 // vgafonts.c
146 extern u8 vgafont8[];
147 extern u8 vgafont14[];
148 extern u8 vgafont16[];
149 extern u8 vgafont14alt[];
150 extern u8 vgafont16alt[];
151
152 // vga.c
153 struct carattr {
154     u8 car, attr, use_attr;
155 };
156 struct cursorpos {
157     u8 x, y, page;
158 };
159
160 // vgafb.c
161 void clear_screen(struct vgamode_s *vmode_g);
162 void vgafb_scroll(int nblines, int attr
163                   , struct cursorpos ul, struct cursorpos lr);
164 void vgafb_write_char(struct cursorpos cp, struct carattr ca);
165 struct carattr vgafb_read_char(struct cursorpos cp);
166 void vgafb_write_pixel(u8 color, u16 x, u16 y);
167 u8 vgafb_read_pixel(u16 x, u16 y);
168 void vgafb_load_font(u16 seg, void *src_far, u16 count
169                      , u16 start, u8 destflags, u8 fontsize);
170
171 // vgaio.c
172 void vgahw_screen_disable(void);
173 void vgahw_screen_enable(void);
174 void vgahw_set_border_color(u8 color);
175 void vgahw_set_overscan_border_color(u8 color);
176 u8 vgahw_get_overscan_border_color(void);
177 void vgahw_set_palette(u8 palid);
178 void vgahw_set_single_palette_reg(u8 reg, u8 val);
179 u8 vgahw_get_single_palette_reg(u8 reg);
180 void vgahw_set_all_palette_reg(u16 seg, u8 *data_far);
181 void vgahw_get_all_palette_reg(u16 seg, u8 *data_far);
182 void vgahw_toggle_intensity(u8 flag);
183 void vgahw_select_video_dac_color_page(u8 flag, u8 data);
184 void vgahw_read_video_dac_state(u8 *pmode, u8 *curpage);
185 void vgahw_set_dac_regs(u16 seg, u8 *data_far, u8 start, int count);
186 void vgahw_get_dac_regs(u16 seg, u8 *data_far, u8 start, int count);
187 void vgahw_set_pel_mask(u8 val);
188 u8 vgahw_get_pel_mask(void);
189 void vgahw_save_dac_state(u16 seg, struct saveDACcolors *info);
190 void vgahw_restore_dac_state(u16 seg, struct saveDACcolors *info);
191 void vgahw_sequ_write(u8 index, u8 value);
192 void vgahw_grdc_write(u8 index, u8 value);
193 void vgahw_set_text_block_specifier(u8 spec);
194 void get_font_access(void);
195 void release_font_access(void);
196 void vgahw_set_cursor_shape(u8 start, u8 end);
197 void vgahw_set_active_page(u16 address);
198 void vgahw_set_cursor_pos(u16 address);
199 void vgahw_set_scan_lines(u8 lines);
200 u16 vgahw_get_vde(void);
201 void vgahw_save_state(u16 seg, struct saveVideoHardware *info);
202 void vgahw_restore_state(u16 seg, struct saveVideoHardware *info);
203 void vgahw_set_mode(struct VideoParam_s *vparam_g);
204 void vgahw_enable_video_addressing(u8 disable);
205 void vgahw_init(void);
206
207 // clext.c
208 void cirrus_set_video_mode(u8 mode);
209 void cirrus_init(void);
210
211 // vbe.c -- not implemented yet.
212 #define VBE_DISPI_DISABLED              0x00
213 void dispi_set_enable(int enable);
214 void vbe_init(void);
215 int vbe_has_vbe_display(void);
216
217 #endif // vgatables.h