, get_global_seg(), GET_GLOBAL(stdmode_g->grdc_regs)
, ARRAY_SIZE(vparam_g->grdc_regs));
}
+
+ // Fill available legacy modes in video_func_static table
+ u32 modes = 0;
+ for (i = 0; i < ARRAY_SIZE(vga_modes); i++) {
+ u16 mode = vga_modes[i].mode;
+ if (mode <= 0x13)
+ modes |= 1<<i;
+ }
+ SET_VGA(static_functionality.modes, modes);
}
void
}
-static struct video_func_static static_functionality VAR16 = {
- .modes = 0x0fe0ff,
+struct video_func_static static_functionality VAR16 = {
+ .modes = 0x00, // Filled in by stdvga_build_video_param()
.scanlines = 0x07, // 200, 350, 400 scan lines
.cblocks = 0x02, // mamimum number of visible charsets in text mode
.active_cblocks = 0x08, // total number of charset blocks in text mode
int bda_save_restore(int cmd, u16 seg, void *data);
struct vgamode_s *get_current_mode(void);
int vga_set_mode(int mode, int flags);
+extern struct video_func_static static_functionality;
// vgafb.c
void init_gfx_op(struct gfx_op *op, struct vgamode_s *vmode_g);