xref: /plan9/sys/src/cmd/aux/vga/vesadb.c (revision 6891d8578618fb7ccda4a131c122d4d0e6580c4b)
1 /* this file was automatically generated from vesa.txt */
2 
3 #include <u.h>
4 #include <libc.h>
5 #include <bio.h>
6 #include "pci.h"
7 #include "vga.h"
8 
9 /*
10  * VESA Monitor Timing Standard mode definitions as per
11  * VESA and Industry Standards and Guidelines for Computer
12  * Display Monitor Timing, Version 1.0, Revision 0.8, 17 September 1998.
13  *
14  * See /public/doc/vesa/dmtv1r08.pdf.
15  *
16  * This might go back into vgadb at some point. It's here mainly
17  * so that people don't change it, and so that we can run without vgadb.
18  */
19 
20 static Mode vesa640x480x60 = {
21 	.name = "640x480@60Hz",
22 	.x = 640,
23 	.y = 480,
24 
25 	.ht = 800,
26 	.shb = 648,
27 	.ehb = 648+144,
28 	.shs = 656,
29 	.ehs = 656+96,
30 
31 	.vt = 525,
32 	.vrs = 490,
33 	.vre = 490+2,
34 	.vbs = 488,
35 	.vbe = 488+29,
36 
37 	.frequency = 25175000,
38 
39 	.hsync = '-',
40 	.vsync = '-',
41 	.interlace = '\0',
42 };
43 
44 static Mode vesa640x480x72 = {
45 	.name = "640x480@72Hz",
46 	.x = 640,
47 	.y = 480,
48 
49 	.ht = 832,
50 	.shb = 648,
51 	.ehb = 648+176,
52 	.shs = 664,
53 	.ehs = 664+40,
54 
55 	.vt = 520,
56 	.vrs = 489,
57 	.vre = 489+3,
58 	.vbs = 488,
59 	.vbe = 488+24,
60 
61 	.frequency = 31500000,
62 
63 	.hsync = '-',
64 	.vsync = '-',
65 	.interlace = '\0',
66 };
67 
68 static Mode vesa640x480x75 = {
69 	.name = "640x480@75Hz",
70 	.x = 640,
71 	.y = 480,
72 
73 	.ht = 840,
74 	.shb = 640,
75 	.ehb = 640+200,
76 	.shs = 656,
77 	.ehs = 656+64,
78 
79 	.vt = 500,
80 	.vrs = 481,
81 	.vre = 481+3,
82 	.vbs = 480,
83 	.vbe = 480+20,
84 
85 	.frequency = 31500000,
86 
87 	.hsync = '-',
88 	.vsync = '-',
89 	.interlace = '\0',
90 };
91 
92 static Mode vesa640x480x85 = {
93 	.name = "640x480@85Hz",
94 	.x = 640,
95 	.y = 480,
96 
97 	.ht = 832,
98 	.shb = 640,
99 	.ehb = 640+192,
100 	.shs = 696,
101 	.ehs = 696+56,
102 
103 	.vt = 509,
104 	.vrs = 481,
105 	.vre = 481+3,
106 	.vbs = 480,
107 	.vbe = 480+29,
108 
109 	.frequency = 36000000,
110 
111 	.hsync = '-',
112 	.vsync = '-',
113 	.interlace = '\0',
114 };
115 
116 static Mode vesa800x600x56 = {
117 	.name = "800x600@56Hz",
118 	.x = 800,
119 	.y = 600,
120 
121 	.ht = 1024,
122 	.shb = 800,
123 	.ehb = 800+224,
124 	.shs = 824,
125 	.ehs = 824+72,
126 
127 	.vt = 625,
128 	.vrs = 601,
129 	.vre = 601+2,
130 	.vbs = 600,
131 	.vbe = 600+25,
132 
133 	.frequency = 36000000,
134 
135 	.hsync = '+',
136 	.vsync = '+',
137 	.interlace = '\0',
138 };
139 
140 static Mode vesa800x600x60 = {
141 	.name = "800x600@60Hz",
142 	.x = 800,
143 	.y = 600,
144 
145 	.ht = 1056,
146 	.shb = 800,
147 	.ehb = 800+256,
148 	.shs = 840,
149 	.ehs = 840+128,
150 
151 	.vt = 628,
152 	.vrs = 601,
153 	.vre = 601+4,
154 	.vbs = 600,
155 	.vbe = 600+28,
156 
157 	.frequency = 40000000,
158 
159 	.hsync = '+',
160 	.vsync = '+',
161 	.interlace = '\0',
162 };
163 
164 static Mode vesa800x600x72 = {
165 	.name = "800x600@72Hz",
166 	.x = 800,
167 	.y = 600,
168 
169 	.ht = 1040,
170 	.shb = 800,
171 	.ehb = 800+240,
172 	.shs = 856,
173 	.ehs = 856+120,
174 
175 	.vt = 666,
176 	.vrs = 637,
177 	.vre = 637+6,
178 	.vbs = 600,
179 	.vbe = 600+66,
180 
181 	.frequency = 50000000,
182 
183 	.hsync = '+',
184 	.vsync = '+',
185 	.interlace = '\0',
186 };
187 
188 static Mode vesa800x600x75 = {
189 	.name = "800x600@75Hz",
190 	.x = 800,
191 	.y = 600,
192 
193 	.ht = 1056,
194 	.shb = 800,
195 	.ehb = 800+256,
196 	.shs = 816,
197 	.ehs = 816+80,
198 
199 	.vt = 625,
200 	.vrs = 601,
201 	.vre = 601+3,
202 	.vbs = 600,
203 	.vbe = 600+25,
204 
205 	.frequency = 49500000,
206 
207 	.hsync = '+',
208 	.vsync = '+',
209 	.interlace = '\0',
210 };
211 
212 static Mode vesa800x600x85 = {
213 	.name = "800x600@85Hz",
214 	.x = 800,
215 	.y = 600,
216 
217 	.ht = 1048,
218 	.shb = 800,
219 	.ehb = 800+248,
220 	.shs = 832,
221 	.ehs = 832+64,
222 
223 	.vt = 631,
224 	.vrs = 601,
225 	.vre = 601+3,
226 	.vbs = 600,
227 	.vbe = 600+31,
228 
229 	.frequency = 56250000,
230 
231 	.hsync = '+',
232 	.vsync = '+',
233 	.interlace = '\0',
234 };
235 
236 static Mode vesa1024x768x60 = {
237 	.name = "1024x768@60Hz",
238 	.x = 1024,
239 	.y = 768,
240 
241 	.ht = 1344,
242 	.shb = 1024,
243 	.ehb = 1024+320,
244 	.shs = 1048,
245 	.ehs = 1048+136,
246 
247 	.vt = 806,
248 	.vrs = 771,
249 	.vre = 771+6,
250 	.vbs = 768,
251 	.vbe = 768+38,
252 
253 	.frequency = 65000000,
254 
255 	.hsync = '-',
256 	.vsync = '-',
257 	.interlace = '\0',
258 };
259 
260 static Mode vesa1024x768x70 = {
261 	.name = "1024x768@70Hz",
262 	.x = 1024,
263 	.y = 768,
264 
265 	.ht = 1328,
266 	.shb = 1024,
267 	.ehb = 1024+304,
268 	.shs = 1048,
269 	.ehs = 1048+136,
270 
271 	.vt = 806,
272 	.vrs = 771,
273 	.vre = 771+6,
274 	.vbs = 768,
275 	.vbe = 768+38,
276 
277 	.frequency = 75000000,
278 
279 	.hsync = '-',
280 	.vsync = '-',
281 	.interlace = '\0',
282 };
283 
284 static Mode vesa1024x768x75 = {
285 	.name = "1024x768@75Hz",
286 	.x = 1024,
287 	.y = 768,
288 
289 	.ht = 1312,
290 	.shb = 1024,
291 	.ehb = 1024+288,
292 	.shs = 1040,
293 	.ehs = 1040+96,
294 
295 	.vt = 800,
296 	.vrs = 769,
297 	.vre = 769+3,
298 	.vbs = 768,
299 	.vbe = 768+32,
300 
301 	.frequency = 78750000,
302 
303 	.hsync = '+',
304 	.vsync = '+',
305 	.interlace = '\0',
306 };
307 
308 static Mode vesa1024x768x85 = {
309 	.name = "1024x768@85Hz",
310 	.x = 1024,
311 	.y = 768,
312 
313 	.ht = 1376,
314 	.shb = 1024,
315 	.ehb = 1024+352,
316 	.shs = 1072,
317 	.ehs = 1072+96,
318 
319 	.vt = 808,
320 	.vrs = 769,
321 	.vre = 769+3,
322 	.vbs = 768,
323 	.vbe = 768+40,
324 
325 	.frequency = 94500000,
326 
327 	.hsync = '+',
328 	.vsync = '+',
329 	.interlace = '\0',
330 };
331 
332 static Mode vesa1152x864x75 = {
333 	.name = "1152x864@75Hz",
334 	.x = 1152,
335 	.y = 864,
336 
337 	.ht = 1600,
338 	.shb = 1152,
339 	.ehb = 1152+448,
340 	.shs = 1216,
341 	.ehs = 1216+128,
342 
343 	.vt = 900,
344 	.vrs = 865,
345 	.vre = 865+3,
346 	.vbs = 864,
347 	.vbe = 864+36,
348 
349 	.frequency = 108000000,
350 
351 	.hsync = '+',
352 	.vsync = '+',
353 	.interlace = '\0',
354 };
355 
356 static Mode vesa1280x960x60 = {
357 	.name = "1280x960@60Hz",
358 	.x = 1280,
359 	.y = 960,
360 
361 	.ht = 1800,
362 	.shb = 1280,
363 	.ehb = 1280+520,
364 	.shs = 1376,
365 	.ehs = 1376+112,
366 
367 	.vt = 1000,
368 	.vrs = 961,
369 	.vre = 961+3,
370 	.vbs = 960,
371 	.vbe = 960+40,
372 
373 	.frequency = 108000000,
374 
375 	.hsync = '+',
376 	.vsync = '+',
377 	.interlace = '\0',
378 };
379 
380 static Mode vesa1280x960x85 = {
381 	.name = "1280x960@85Hz",
382 	.x = 1280,
383 	.y = 960,
384 
385 	.ht = 1728,
386 	.shb = 1280,
387 	.ehb = 1280+448,
388 	.shs = 1344,
389 	.ehs = 1344+160,
390 
391 	.vt = 1011,
392 	.vrs = 961,
393 	.vre = 961+3,
394 	.vbs = 960,
395 	.vbe = 960+51,
396 
397 	.frequency = 148500000,
398 
399 	.hsync = '+',
400 	.vsync = '+',
401 	.interlace = '\0',
402 };
403 
404 static Mode vesa1280x1024x60 = {
405 	.name = "1280x1024@60Hz",
406 	.x = 1280,
407 	.y = 1024,
408 
409 	.ht = 1688,
410 	.shb = 1280,
411 	.ehb = 1280+408,
412 	.shs = 1328,
413 	.ehs = 1328+112,
414 
415 	.vt = 1066,
416 	.vrs = 1025,
417 	.vre = 1025+3,
418 	.vbs = 1024,
419 	.vbe = 1024+42,
420 
421 	.frequency = 108000000,
422 
423 	.hsync = '+',
424 	.vsync = '+',
425 	.interlace = '\0',
426 };
427 
428 static Mode vesa1280x1024x75 = {
429 	.name = "1280x1024@75Hz",
430 	.x = 1280,
431 	.y = 1024,
432 
433 	.ht = 1688,
434 	.shb = 1280,
435 	.ehb = 1280+408,
436 	.shs = 1296,
437 	.ehs = 1296+144,
438 
439 	.vt = 1066,
440 	.vrs = 1025,
441 	.vre = 1025+3,
442 	.vbs = 1024,
443 	.vbe = 1024+42,
444 
445 	.frequency = 135000000,
446 
447 	.hsync = '+',
448 	.vsync = '+',
449 	.interlace = '\0',
450 };
451 
452 static Mode vesa1280x1024x85 = {
453 	.name = "1280x1024@85Hz",
454 	.x = 1280,
455 	.y = 1024,
456 
457 	.ht = 1728,
458 	.shb = 1280,
459 	.ehb = 1280+448,
460 	.shs = 1344,
461 	.ehs = 1344+160,
462 
463 	.vt = 1072,
464 	.vrs = 1025,
465 	.vre = 1025+3,
466 	.vbs = 1024,
467 	.vbe = 1024+48,
468 
469 	.frequency = 157500000,
470 
471 	.hsync = '+',
472 	.vsync = '+',
473 	.interlace = '\0',
474 };
475 
476 static Mode vesa1600x1200x60 = {
477 	.name = "1600x1200@60Hz",
478 	.x = 1600,
479 	.y = 1200,
480 
481 	.ht = 2160,
482 	.shb = 1600,
483 	.ehb = 1600+560,
484 	.shs = 1664,
485 	.ehs = 1664+192,
486 
487 	.vt = 1250,
488 	.vrs = 1201,
489 	.vre = 1201+3,
490 	.vbs = 1200,
491 	.vbe = 1200+50,
492 
493 	.frequency = 162000000,
494 
495 	.hsync = '+',
496 	.vsync = '+',
497 	.interlace = '\0',
498 };
499 
500 static Mode vesa1600x1200x65 = {
501 	.name = "1600x1200@65Hz",
502 	.x = 1600,
503 	.y = 1200,
504 
505 	.ht = 2160,
506 	.shb = 1600,
507 	.ehb = 1600+560,
508 	.shs = 1664,
509 	.ehs = 1664+192,
510 
511 	.vt = 1250,
512 	.vrs = 1201,
513 	.vre = 1201+3,
514 	.vbs = 1200,
515 	.vbe = 1200+50,
516 
517 	.frequency = 175500000,
518 
519 	.hsync = '+',
520 	.vsync = '+',
521 	.interlace = '\0',
522 };
523 
524 static Mode vesa1600x1200x70 = {
525 	.name = "1600x1200@70Hz",
526 	.x = 1600,
527 	.y = 1200,
528 
529 	.ht = 2160,
530 	.shb = 1600,
531 	.ehb = 1600+560,
532 	.shs = 1664,
533 	.ehs = 1664+192,
534 
535 	.vt = 1250,
536 	.vrs = 1201,
537 	.vre = 1201+3,
538 	.vbs = 1200,
539 	.vbe = 1200+50,
540 
541 	.frequency = 189000000,
542 
543 	.hsync = '+',
544 	.vsync = '+',
545 	.interlace = '\0',
546 };
547 
548 static Mode vesa1600x1200x75 = {
549 	.name = "1600x1200@75Hz",
550 	.x = 1600,
551 	.y = 1200,
552 
553 	.ht = 2160,
554 	.shb = 1600,
555 	.ehb = 1600+560,
556 	.shs = 1664,
557 	.ehs = 1664+192,
558 
559 	.vt = 1250,
560 	.vrs = 1201,
561 	.vre = 1201+3,
562 	.vbs = 1200,
563 	.vbe = 1200+50,
564 
565 	.frequency = 202500000,
566 
567 	.hsync = '+',
568 	.vsync = '+',
569 	.interlace = '\0',
570 };
571 
572 static Mode vesa1600x1200x85 = {
573 	.name = "1600x1200@85Hz",
574 	.x = 1600,
575 	.y = 1200,
576 
577 	.ht = 2160,
578 	.shb = 1600,
579 	.ehb = 1600+560,
580 	.shs = 1664,
581 	.ehs = 1664+192,
582 
583 	.vt = 1250,
584 	.vrs = 1201,
585 	.vre = 1201+3,
586 	.vbs = 1200,
587 	.vbe = 1200+50,
588 
589 	.frequency = 229500000,
590 
591 	.hsync = '+',
592 	.vsync = '+',
593 	.interlace = '\0',
594 };
595 
596 static Mode vesa1792x1344x60 = {
597 	.name = "1792x1344@60Hz",
598 	.x = 1792,
599 	.y = 1344,
600 
601 	.ht = 2448,
602 	.shb = 1792,
603 	.ehb = 1792+656,
604 	.shs = 1920,
605 	.ehs = 1920+200,
606 
607 	.vt = 1394,
608 	.vrs = 1345,
609 	.vre = 1345+3,
610 	.vbs = 1344,
611 	.vbe = 1344+50,
612 
613 	.frequency = 204750000,
614 
615 	.hsync = '-',
616 	.vsync = '+',
617 	.interlace = '\0',
618 };
619 
620 static Mode vesa1792x1344x75 = {
621 	.name = "1792x1344@75Hz",
622 	.x = 1792,
623 	.y = 1344,
624 
625 	.ht = 2456,
626 	.shb = 1792,
627 	.ehb = 1792+664,
628 	.shs = 1888,
629 	.ehs = 1888+216,
630 
631 	.vt = 1417,
632 	.vrs = 1345,
633 	.vre = 1345+3,
634 	.vbs = 1344,
635 	.vbe = 1344+73,
636 
637 	.frequency = 261000000,
638 
639 	.hsync = '-',
640 	.vsync = '+',
641 	.interlace = '\0',
642 };
643 
644 static Mode vesa1856x1392x60 = {
645 	.name = "1856x1392@60Hz",
646 	.x = 1856,
647 	.y = 1392,
648 
649 	.ht = 2528,
650 	.shb = 1856,
651 	.ehb = 1856+672,
652 	.shs = 1952,
653 	.ehs = 1952+224,
654 
655 	.vt = 1439,
656 	.vrs = 1393,
657 	.vre = 1393+3,
658 	.vbs = 1392,
659 	.vbe = 1392+47,
660 
661 	.frequency = 218250000,
662 
663 	.hsync = '-',
664 	.vsync = '+',
665 	.interlace = '\0',
666 };
667 
668 static Mode vesa1856x1392x75 = {
669 	.name = "1856x1392@75Hz",
670 	.x = 1856,
671 	.y = 1392,
672 
673 	.ht = 2560,
674 	.shb = 1856,
675 	.ehb = 1856+704,
676 	.shs = 1984,
677 	.ehs = 1984+224,
678 
679 	.vt = 1500,
680 	.vrs = 1393,
681 	.vre = 1393+3,
682 	.vbs = 1392,
683 	.vbe = 1392+108,
684 
685 	.frequency = 288000000,
686 
687 	.hsync = '-',
688 	.vsync = '+',
689 	.interlace = '\0',
690 };
691 
692 static Mode vesa1920x1440x60 = {
693 	.name = "1920x1440@60Hz",
694 	.x = 1920,
695 	.y = 1440,
696 
697 	.ht = 2600,
698 	.shb = 1920,
699 	.ehb = 1920+680,
700 	.shs = 2048,
701 	.ehs = 2048+208,
702 
703 	.vt = 1500,
704 	.vrs = 1441,
705 	.vre = 1441+3,
706 	.vbs = 1440,
707 	.vbe = 1440+60,
708 
709 	.frequency = 234000000,
710 
711 	.hsync = '-',
712 	.vsync = '+',
713 	.interlace = '\0',
714 };
715 
716 static Mode vesa1920x1440x75 = {
717 	.name = "1920x1440@75Hz",
718 	.x = 1920,
719 	.y = 1440,
720 
721 	.ht = 2640,
722 	.shb = 1920,
723 	.ehb = 1920+720,
724 	.shs = 2064,
725 	.ehs = 2064+224,
726 
727 	.vt = 1500,
728 	.vrs = 1441,
729 	.vre = 1441+3,
730 	.vbs = 1440,
731 	.vbe = 1440+60,
732 
733 	.frequency = 297000000,
734 
735 	.hsync = '-',
736 	.vsync = '+',
737 	.interlace = '\0',
738 };
739 
740 Mode *vesamodes[] = {
741 	&vesa640x480x60,
742 	&vesa640x480x72,
743 	&vesa640x480x75,
744 	&vesa640x480x85,
745 	&vesa800x600x56,
746 	&vesa800x600x60,
747 	&vesa800x600x72,
748 	&vesa800x600x75,
749 	&vesa800x600x85,
750 	&vesa1024x768x60,
751 	&vesa1024x768x70,
752 	&vesa1024x768x75,
753 	&vesa1024x768x85,
754 	&vesa1152x864x75,
755 	&vesa1280x960x60,
756 	&vesa1280x960x85,
757 	&vesa1280x1024x60,
758 	&vesa1280x1024x75,
759 	&vesa1280x1024x85,
760 	&vesa1600x1200x60,
761 	&vesa1600x1200x65,
762 	&vesa1600x1200x70,
763 	&vesa1600x1200x75,
764 	&vesa1600x1200x85,
765 	&vesa1792x1344x60,
766 	&vesa1792x1344x75,
767 	&vesa1856x1392x60,
768 	&vesa1856x1392x75,
769 	&vesa1920x1440x60,
770 	&vesa1920x1440x75,
771 	0
772 };
773