8
#include <lib/libds/array.h>
10
#include <drivers/video/vesa_modes.h>
11
#include <drivers/video/fb.h>
12
#include <drivers/video/fb_videomodes.h>
14
static const struct fb_videomode vesa_modes[] = {
16
{ NULL, 85, 640, 350, 31746, 96, 32, 60, 32, 64, 3,
17
FB_SYNC_HOR_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA},
19
{ NULL, 85, 640, 400, 31746, 96, 32, 41, 01, 64, 3,
20
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
22
{ NULL, 85, 721, 400, 28169, 108, 36, 42, 01, 72, 3,
23
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
25
{ NULL, 60, 640, 480, 39682, 48, 16, 33, 10, 96, 2,
26
0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
28
{ NULL, 72, 640, 480, 31746, 128, 24, 29, 9, 40, 2,
29
0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
31
{ NULL, 75, 640, 480, 31746, 120, 16, 16, 01, 64, 3,
32
0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
34
{ NULL, 85, 640, 480, 27777, 80, 56, 25, 01, 56, 3,
35
0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
37
{ NULL, 56, 800, 600, 27777, 128, 24, 22, 01, 72, 2,
38
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
39
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
41
{ NULL, 60, 800, 600, 25000, 88, 40, 23, 01, 128, 4,
42
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
43
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
45
{ NULL, 72, 800, 600, 20000, 64, 56, 23, 37, 120, 6,
46
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
47
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
49
{ NULL, 75, 800, 600, 20202, 160, 16, 21, 01, 80, 3,
50
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
51
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
53
{ NULL, 85, 800, 600, 17761, 152, 32, 27, 01, 64, 3,
54
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
55
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
57
{ NULL, 43, 1024, 768, 22271, 56, 8, 41, 0, 176, 8,
58
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
59
FB_VMODE_INTERLACED, FB_MODE_IS_VESA },
61
{ NULL, 60, 1024, 768, 15384, 160, 24, 29, 3, 136, 6,
62
0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
64
{ NULL, 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6,
65
0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
67
{ NULL, 75, 1024, 768, 12690, 176, 16, 28, 1, 96, 3,
68
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
69
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
71
{ NULL, 85, 1024, 768, 10582, 208, 48, 36, 1, 96, 3,
72
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
73
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
75
{ NULL, 75, 1152, 864, 9259, 256, 64, 32, 1, 128, 3,
76
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
77
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
79
{ NULL, 60, 1280, 960, 9259, 312, 96, 36, 1, 112, 3,
80
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
81
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
83
{ NULL, 85, 1280, 960, 6734, 224, 64, 47, 1, 160, 3,
84
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
85
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
87
{ NULL, 60, 1280, 1024, 9259, 248, 48, 38, 1, 112, 3,
88
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
89
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
91
{ NULL, 75, 1280, 1024, 7407, 248, 16, 38, 1, 144, 3,
92
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
93
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
95
{ NULL, 85, 1280, 1024, 6349, 224, 64, 44, 1, 160, 3,
96
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
97
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
99
{ NULL, 60, 1600, 1200, 6172, 304, 64, 46, 1, 192, 3,
100
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
101
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
103
{ NULL, 65, 1600, 1200, 5698, 304, 64, 46, 1, 192, 3,
104
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
105
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
107
{ NULL, 70, 1600, 1200, 5291, 304, 64, 46, 1, 192, 3,
108
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
109
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
111
{ NULL, 75, 1600, 1200, 4938, 304, 64, 46, 1, 192, 3,
112
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
113
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
115
{ NULL, 85, 1600, 1200, 4357, 304, 64, 46, 1, 192, 3,
116
FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
117
FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
119
{ NULL, 60, 1792, 1344, 4882, 328, 128, 46, 1, 200, 3,
120
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
122
{ NULL, 75, 1792, 1344, 3831, 352, 96, 69, 1, 216, 3,
123
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
125
{ NULL, 60, 1856, 1392, 4580, 352, 96, 43, 1, 224, 3,
126
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
128
{ NULL, 75, 1856, 1392, 3472, 352, 128, 104, 1, 224, 3,
129
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
131
{ NULL, 60, 1920, 1440, 4273, 344, 128, 56, 1, 200, 3,
132
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
134
{ NULL, 75, 1920, 1440, 3367, 352, 144, 56, 1, 224, 3,
135
FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA },
137
{ NULL, 85, 480, 272, 31746, 96, 32, 60, 32, 64, 3,
138
FB_SYNC_HOR_HIGH_ACT, FB_VMODE_NONINTERLACED},
141
const struct fb_videomode *fb_get_videomode_table(struct fb_info *fb_info) {
145
int fb_get_videomode_table_size(struct fb_info *fb_info) {
146
return ARRAY_SIZE(vesa_modes);