Kevin O'Connor | e1e000b | 2011-12-31 03:30:40 -0500 | [diff] [blame] | 1 | #ifndef __VGABIOS_H |
| 2 | #define __VGABIOS_H |
Kevin O'Connor | 1f2c307 | 2009-05-06 23:35:59 -0400 | [diff] [blame] | 3 | |
| 4 | #include "types.h" // u8 |
Kevin O'Connor | 9f98542 | 2009-09-09 11:34:39 -0400 | [diff] [blame] | 5 | #include "farptr.h" // struct segoff_s |
Kevin O'Connor | 1f2c307 | 2009-05-06 23:35:59 -0400 | [diff] [blame] | 6 | |
Kevin O'Connor | aad3b69 | 2012-01-14 23:15:40 -0500 | [diff] [blame] | 7 | // standard BIOS Video Parameter Table |
| 8 | struct VideoParam_s { |
| 9 | u8 twidth; |
| 10 | u8 theightm1; |
| 11 | u8 cheight; |
| 12 | u16 slength; |
| 13 | u8 sequ_regs[4]; |
| 14 | u8 miscreg; |
| 15 | u8 crtc_regs[25]; |
| 16 | u8 actl_regs[20]; |
| 17 | u8 grdc_regs[9]; |
| 18 | } PACKED; |
| 19 | |
| 20 | extern struct VideoParam_s video_param_table[29]; |
| 21 | |
Kevin O'Connor | ca66864 | 2009-05-21 23:06:08 -0400 | [diff] [blame] | 22 | struct saveBDAstate { |
Kevin O'Connor | 2469f89 | 2012-02-04 12:40:02 -0500 | [diff] [blame] | 23 | u16 video_mode; |
Kevin O'Connor | ca66864 | 2009-05-21 23:06:08 -0400 | [diff] [blame] | 24 | u16 video_cols; |
| 25 | u16 video_pagesize; |
| 26 | u16 crtc_address; |
| 27 | u8 video_rows; |
| 28 | u16 char_height; |
| 29 | u8 video_ctl; |
| 30 | u8 video_switches; |
| 31 | u8 modeset_ctl; |
| 32 | u16 cursor_type; |
| 33 | u16 cursor_pos[8]; |
| 34 | u16 video_pagestart; |
| 35 | u8 video_page; |
| 36 | /* current font */ |
Kevin O'Connor | 9f98542 | 2009-09-09 11:34:39 -0400 | [diff] [blame] | 37 | struct segoff_s font0; |
| 38 | struct segoff_s font1; |
Kevin O'Connor | ca66864 | 2009-05-21 23:06:08 -0400 | [diff] [blame] | 39 | }; |
| 40 | |
Kevin O'Connor | 821d6b4 | 2011-12-31 18:19:22 -0500 | [diff] [blame] | 41 | // Mode flags |
| 42 | #define MF_GRAYSUM 0x0002 |
| 43 | #define MF_NOPALETTE 0x0008 |
| 44 | #define MF_CUSTOMCRTC 0x0800 |
| 45 | #define MF_LINEARFB 0x4000 |
| 46 | #define MF_NOCLEARMEM 0x8000 |
Kevin O'Connor | e6bc4c1 | 2012-01-21 11:26:37 -0500 | [diff] [blame] | 47 | #define MF_VBEFLAGS 0xfe00 |
Kevin O'Connor | 821d6b4 | 2011-12-31 18:19:22 -0500 | [diff] [blame] | 48 | |
Kevin O'Connor | d4398ad | 2012-01-01 12:32:53 -0500 | [diff] [blame] | 49 | // Memory model types |
| 50 | #define MM_TEXT 0x00 |
| 51 | #define MM_CGA 0x01 |
| 52 | #define MM_HERCULES 0x02 |
| 53 | #define MM_PLANAR 0x03 |
| 54 | #define MM_PACKED 0x04 |
| 55 | #define MM_NON_CHAIN_4_256 0x05 |
| 56 | #define MM_DIRECT 0x06 |
| 57 | #define MM_YUV 0x07 |
| 58 | |
Kevin O'Connor | 10dff3d | 2012-01-09 19:19:44 -0500 | [diff] [blame] | 59 | struct vgamode_s { |
| 60 | u8 memmodel; |
| 61 | u16 width; |
| 62 | u16 height; |
| 63 | u8 depth; |
| 64 | u8 cwidth; |
| 65 | u8 cheight; |
| 66 | u16 sstart; |
| 67 | }; |
| 68 | |
Kevin O'Connor | 1f2c307 | 2009-05-06 23:35:59 -0400 | [diff] [blame] | 69 | // vgafonts.c |
| 70 | extern u8 vgafont8[]; |
| 71 | extern u8 vgafont14[]; |
| 72 | extern u8 vgafont16[]; |
| 73 | extern u8 vgafont14alt[]; |
| 74 | extern u8 vgafont16alt[]; |
| 75 | |
Kevin O'Connor | 4c85a26 | 2012-02-12 11:50:52 -0500 | [diff] [blame] | 76 | // Debug settings |
| 77 | #define DEBUG_VGA_POST 1 |
| 78 | #define DEBUG_VGA_10 3 |
| 79 | |
Kevin O'Connor | e1e000b | 2011-12-31 03:30:40 -0500 | [diff] [blame] | 80 | // vgabios.c |
Kevin O'Connor | 8cf8f8e | 2012-01-16 19:05:27 -0500 | [diff] [blame] | 81 | extern int VgaBDF; |
Kevin O'Connor | cfd7ef9 | 2012-02-02 22:52:17 -0500 | [diff] [blame] | 82 | extern int HaveRunInit; |
Kevin O'Connor | f376037 | 2011-12-23 22:41:08 -0500 | [diff] [blame] | 83 | #define SET_VGA(var, val) SET_FARVAR(get_global_seg(), (var), (val)) |
Kevin O'Connor | 0926241 | 2009-05-25 11:44:11 -0400 | [diff] [blame] | 84 | struct carattr { |
Kevin O'Connor | 6ee837b | 2012-02-13 20:09:02 -0500 | [diff] [blame] | 85 | u8 car, attr, use_attr, pad; |
Kevin O'Connor | 0926241 | 2009-05-25 11:44:11 -0400 | [diff] [blame] | 86 | }; |
Kevin O'Connor | 918b156 | 2009-05-25 11:05:18 -0400 | [diff] [blame] | 87 | struct cursorpos { |
Kevin O'Connor | 6ee837b | 2012-02-13 20:09:02 -0500 | [diff] [blame] | 88 | u8 x, y, page, pad; |
Kevin O'Connor | 918b156 | 2009-05-25 11:05:18 -0400 | [diff] [blame] | 89 | }; |
Kevin O'Connor | 3876b53 | 2012-01-24 00:07:44 -0500 | [diff] [blame] | 90 | int vga_bpp(struct vgamode_s *vmode_g); |
Kevin O'Connor | 83047be | 2012-01-07 18:27:19 -0500 | [diff] [blame] | 91 | u16 calc_page_size(u8 memmodel, u16 width, u16 height); |
Kevin O'Connor | 9f857fc | 2012-02-04 11:59:02 -0500 | [diff] [blame] | 92 | void save_bda_state(u16 seg, struct saveBDAstate *info); |
| 93 | void restore_bda_state(u16 seg, struct saveBDAstate *info); |
Kevin O'Connor | 4a73f93 | 2012-01-21 11:08:35 -0500 | [diff] [blame] | 94 | struct vgamode_s *get_current_mode(void); |
Kevin O'Connor | e6bc4c1 | 2012-01-21 11:26:37 -0500 | [diff] [blame] | 95 | int vga_set_mode(int mode, int flags); |
Kevin O'Connor | c0c7df6 | 2009-05-17 18:11:33 -0400 | [diff] [blame] | 96 | |
| 97 | // vgafb.c |
Kevin O'Connor | 217f2bc | 2009-05-31 00:46:47 -0400 | [diff] [blame] | 98 | void vgafb_scroll(int nblines, int attr |
| 99 | , struct cursorpos ul, struct cursorpos lr); |
Kevin O'Connor | d3b3815 | 2009-05-26 00:05:37 -0400 | [diff] [blame] | 100 | void vgafb_write_char(struct cursorpos cp, struct carattr ca); |
| 101 | struct carattr vgafb_read_char(struct cursorpos cp); |
Kevin O'Connor | 227a2bb | 2009-05-31 22:00:20 -0400 | [diff] [blame] | 102 | void vgafb_write_pixel(u8 color, u16 x, u16 y); |
| 103 | u8 vgafb_read_pixel(u16 x, u16 y); |
Kevin O'Connor | c0c7df6 | 2009-05-17 18:11:33 -0400 | [diff] [blame] | 104 | |
Julian Pidancet | 87879e2 | 2011-12-19 05:08:00 +0000 | [diff] [blame] | 105 | // vbe.c |
Kevin O'Connor | 31f67ae | 2012-01-29 11:37:01 -0500 | [diff] [blame] | 106 | extern u32 VBE_total_memory; |
| 107 | extern u32 VBE_capabilities; |
| 108 | extern u32 VBE_framebuffer; |
| 109 | extern u16 VBE_win_granularity; |
Julian Pidancet | 87879e2 | 2011-12-19 05:08:00 +0000 | [diff] [blame] | 110 | #define VBE_OEM_STRING "SeaBIOS VBE(C) 2011" |
| 111 | #define VBE_VENDOR_STRING "SeaBIOS Developers" |
| 112 | #define VBE_PRODUCT_STRING "SeaBIOS VBE Adapter" |
| 113 | #define VBE_REVISION_STRING "Rev. 1" |
Kevin O'Connor | 4040195 | 2011-12-31 03:43:12 -0500 | [diff] [blame] | 114 | struct bregs; |
| 115 | void handle_104f(struct bregs *regs); |
| 116 | |
Kevin O'Connor | e1e000b | 2011-12-31 03:30:40 -0500 | [diff] [blame] | 117 | #endif // vgabios.h |