Partially implement VBE interface, create VBE driver skeleton
[seabios.git] / vgasrc / vbe.c
1 #include "vgatables.h"
2 #include "vbe.h"
3
4 struct mode
5 {
6     u16 mode;
7     u16 width;
8     u16 height;
9     u8 depth;
10 } vbe_modes[] VAR16 = {
11     /* standard modes */
12     { 0x100, 640,  400,  8  },
13     { 0x101, 640,  480,  8  },
14     { 0x102, 800,  600,  4  },
15     { 0x103, 800,  600,  8  },
16     { 0x104, 1024, 768,  4  },
17     { 0x105, 1024, 768,  8  },
18     { 0x106, 1280, 1024, 4  },
19     { 0x107, 1280, 1024, 8  },
20     { 0x10D, 320,  200,  15 },
21     { 0x10E, 320,  200,  16 },
22     { 0x10F, 320,  200,  24 },
23     { 0x110, 640,  480,  15 },
24     { 0x111, 640,  480,  16 },
25     { 0x112, 640,  480,  24 },
26     { 0x113, 800,  600,  15 },
27     { 0x114, 800,  600,  16 },
28     { 0x115, 800,  600,  24 },
29     { 0x116, 1024, 768,  15 },
30     { 0x117, 1024, 768,  16 },
31     { 0x118, 1024, 768,  24 },
32     { 0x119, 1280, 1024, 15 },
33     { 0x11A, 1280, 1024, 16 },
34     { 0x11B, 1280, 1024, 24 },
35     { 0x11C, 1600, 1200, 8  },
36     { 0x11D, 1600, 1200, 15 },
37     { 0x11E, 1600, 1200, 16 },
38     { 0x11F, 1600, 1200, 24 },
39     /* BOCHS modes */
40     { 0x140, 320,  200,  32 },
41     { 0x141, 640,  400,  32 },
42     { 0x142, 640,  480,  32 },
43     { 0x143, 800,  600,  32 },
44     { 0x144, 1024, 768,  32 },
45     { 0x145, 1280, 1024, 32 },
46     { 0x146, 320,  200,  8  },
47     { 0x147, 1600, 1200, 32 },
48     { 0x148, 1152, 864,  8  },
49     { 0x149, 1152, 864,  15 },
50     { 0x14a, 1152, 864,  16 },
51     { 0x14b, 1152, 864,  24 },
52     { 0x14c, 1152, 864,  32 },
53     { 0x178, 1280, 800,  16 },
54     { 0x179, 1280, 800,  24 },
55     { 0x17a, 1280, 800,  32 },
56     { 0x17b, 1280, 960,  16 },
57     { 0x17c, 1280, 960,  24 },
58     { 0x17d, 1280, 960,  32 },
59     { 0x17e, 1440, 900,  16 },
60     { 0x17f, 1440, 900,  24 },
61     { 0x180, 1440, 900,  32 },
62     { 0x181, 1400, 1050, 16 },
63     { 0x182, 1400, 1050, 24 },
64     { 0x183, 1400, 1050, 32 },
65     { 0x184, 1680, 1050, 16 },
66     { 0x185, 1680, 1050, 24 },
67     { 0x186, 1680, 1050, 32 },
68     { 0x187, 1920, 1200, 16 },
69     { 0x188, 1920, 1200, 24 },
70     { 0x189, 1920, 1200, 32 },
71     { 0x18a, 2560, 1600, 16 },
72     { 0x18b, 2560, 1600, 24 },
73     { 0x18c, 2560, 1600, 32 },
74     { 0, },
75 };
76
77 /* Called only during POST */
78 int
79 vbe_init(u8 bus, u8 devfn)
80 {
81     return -1;
82 }
83
84 int
85 vbe_enabled(void)
86 {
87     return 0;
88 }
89
90 u16
91 vbe_total_mem(void)
92 {
93     return 0;
94 }
95
96 int
97 vbe_list_modes(u16 seg, u16 ptr)
98 {
99     int count = 0;
100     u16 *dest = (u16 *)(u32)ptr;
101
102     SET_FARVAR(seg, dest[count], 0xffff); /* End of list */
103
104     return count;
105 }
106
107 int
108 vbe_mode_info(u16 mode, struct vbe_modeinfo *info)
109 {
110     return -1;
111 }
112
113 void
114 vbe_hires_enable(int enable)
115 {
116
117 }
118
119 void
120 vbe_set_mode(u16 mode, struct vbe_modeinfo *info)
121 {
122
123 }
124
125 void
126 vbe_clear_scr(void)
127 {
128
129 }
130
131 int
132 vbe_hires_enabled(void)
133 {
134     return 0;
135 }
136
137 u16
138 vbe_curr_mode(void)
139 {
140     return 0;
141 }
142