1/*
2 * Copyright 2004-2005 The Unichrome Project  [unichrome.sf.net]
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sub license,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice (including the
12 * next paragraph) shall be included in all copies or substantial portions
13 * of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21 * DEALINGS IN THE SOFTWARE.
22 */
23#ifndef _VIA_VT162X_H_
24#define _VIA_VT162X_H_ 1
25
26struct VT162xModePrivate {
27    char   id[12]; /* "VT162x" */
28    CARD8  Standard;
29};
30
31/* Hmm this seemed like a reasonable approach initially. perhaps not. */
32static struct VT162xModePrivate VT162xModePrivateNTSC = { { 'V', 'T', '1', '6', '2', 'x', 0, 0, 0, 0, 0, 0 }, TVTYPE_NTSC,};
33static struct VT162xModePrivate VT162xModePrivatePAL = {  { 'V', 'T', '1', '6', '2', 'x', 0, 0, 0, 0, 0, 0 }, TVTYPE_PAL,};
34static struct VT162xModePrivate VT162xModePrivate480P = { { 'V', 'T', '1', '6', '2', 'x', 0, 0, 0, 0, 0, 0 }, TVTYPE_480P,};
35static struct VT162xModePrivate VT162xModePrivate576P = { { 'V', 'T', '1', '6', '2', 'x', 0, 0, 0, 0, 0, 0 }, TVTYPE_576P,};
36static struct VT162xModePrivate VT162xModePrivate720P = { { 'V', 'T', '1', '6', '2', 'x', 0, 0, 0, 0, 0, 0 }, TVTYPE_720P,};
37static struct VT162xModePrivate VT162xModePrivate1080I = {{ 'V', 'T', '1', '6', '2', 'x', 0, 0, 0, 0, 0, 0 }, TVTYPE_1080I,};
38
39#define MODEPREFIX(name) NULL, NULL, name, 0,M_T_DEFAULT
40#define MODESUFFIXNTSC       0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,\
41	sizeof(struct VT162xModePrivate),(void *)&VT162xModePrivateNTSC,0,0.0,0.0
42#define MODESUFFIXPAL        0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,\
43	sizeof(struct VT162xModePrivate),(void *)&VT162xModePrivatePAL,0,0.0,0.0
44#define MODESUFFIX480P       0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,\
45	sizeof(struct VT162xModePrivate),(void *)&VT162xModePrivate480P,0,0.0,0.0
46#define MODESUFFIX576P       0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,\
47	sizeof(struct VT162xModePrivate),(void *)&VT162xModePrivate576P,0,0.0,0.0
48#define MODESUFFIX720P       0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,\
49	sizeof(struct VT162xModePrivate),(void *)&VT162xModePrivate720P,0,0.0,0.0
50#define MODESUFFIX1080I      0,0, 0,0,0,0,0,0,0, 0,0,0,0,0,0,FALSE,FALSE,\
51	sizeof(struct VT162xModePrivate),(void *)&VT162xModePrivate1080I,0,0.0,0.0
52
53/*
54 *
55 * VT1621 modetables
56 *
57 */
58/* for dotclock i just took HTotal*VTotal*50 -- is not actually used - just to satisfy modevalidation */
59static DisplayModeRec VT1621Modes[] = {
60    { MODEPREFIX("640x480"),     23520,  640,  656,  752,  784, 0,  480,  520,  523,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
61    { MODEPREFIX("640x480"),     26250,  640,  664,  792,  840, 0,  480,  529,  539,  625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
62    { MODEPREFIX("800x600"),     39900,  800,  840,  976, 1064, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
63    { MODEPREFIX("800x600"),     36000,  800,  824,  904,  960, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
64    { MODEPREFIX("640x480Over"), 20580,  640,  656,  752,  784, 0,  480,  494,  507,  525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
65    { MODEPREFIX("640x480Over"), 24000,  640,  672,  888,  960, 0,  480,  485,  491,  500, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
66    { MODEPREFIX("800x600Over"), 36400,  800,  840,  960, 1040, 0,  600,  602,  604,  700, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
67    { MODEPREFIX("800x600Over"), 29500,  800,  824,  896,  944, 0,  600,  599,  604,  625, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
68};
69
70struct VT1621TableRec {
71    char *  name;
72    CARD16  Width;
73    CARD16  Height;
74    int     Standard;
75    CARD8   PrimaryCR6C;
76    CARD8   TV[0x25];
77    CARD8   TVC[0x18];
78    CARD8   TVS[0x18];
79    CARD32  SubCarrier;
80    CARD32  DotCrawlSubCarrier;
81};
82
83static struct VT1621TableRec
84VT1621Table[] = {
85    { "640x480", 640,  480, TVTYPE_NTSC, 0,
86      { 0x64, 0x03, 0x22, 0x33, 0x43,    0, 0x10, 0x7D,  0xAC, 0x05, 0x99, 0x17, 0x93, 0xA5, 0x03, 0xBA,
87	   0,    0, 0x0A, 0xCD, 0x80, 0x28,    0,    0,     0,    0,    0,    0, 0x02,    0,    0,    0,
88	0x75, 0x0C, 0x04, 0x6D },
89      { 0x48, 0x01, 0x02,    0, 0xFC, 0xF9, 0xFF, 0x10,  0x23, 0x2C, 0x09, 0x08, 0x0A, 0x0C, 0x0D, 0x0D },
90      { 0x48, 0x02, 0x02, 0xFD, 0x06, 0xF8, 0x0B, 0xF3,  0x0F, 0x70, 0x05, 0xF9, 0x0B, 0xF1, 0x11, 0x6E },
91      0x207FFFBE, 0x207FF6BE,
92    },
93    { "640x480", 640,  480, TVTYPE_PAL, 0x04,
94      { 0x64, 0x01, 0x02, 0x33, 0x40,    0, 0x10, 0xAD,  0xD3, 0x37, 0xA3,    0, 0x94, 0xFF, 0x03, 0xBA,
95	   0,    0, 0x07, 0x26, 0x2C, 0x20,    0,    0,     0,    0,    0,    0, 0x02,    0,    0,    0,
96	0x75, 0x0C, 0x04, 0x76 },
97      { 0x48,    0,    0, 0xFE, 0xFC, 0xFD, 0x05, 0x12,  0x1F, 0x25, 0x0B, 0x08, 0x0A, 0x0C, 0x0D, 0x0D },
98      { 0x48, 0xFE, 0x03, 0xFB, 0x06, 0xF8, 0x0A, 0xF5,  0x0C, 0x73, 0x06, 0xF8, 0x0B, 0xF2, 0x10, 0x6F },
99      0x25D56350, 0,
100    },
101    { "800x600", 800,  600, TVTYPE_NTSC, 0x1E,
102      { 0x84, 0x03, 0x2A, 0x33, 0x43,    0, 0x10, 0xDD,  0xB9, 0x15, 0x99, 0x17, 0x93, 0xA5, 0x03, 0xBA,
103	   0,    0, 0x0A, 0xED, 0x98, 0x1C,    0,    0,     0,    0,    0,    0, 0x02,    0,    0,    0,
104	0x75, 0x0C, 0x04, 0x6D },
105      { 0x48,    0, 0xFF, 0xFD, 0xFC, 0xFF, 0x07, 0x13,  0x1E, 0x22, 0x0D, 0x08, 0x09, 0x0A, 0x0B, 0x0C },
106      { 0x48, 0x02, 0x02, 0xFD, 0x06, 0xF8, 0x0B, 0xF3,  0x0F, 0x70, 0x05, 0xF9, 0x0B, 0xF1, 0x11, 0x6E },
107      0x1B5E5096, 0x1B5E5796,
108    },
109    { "800x600", 800,  600, TVTYPE_PAL, 0x04,
110      { 0x84, 0x03, 0x1A, 0x33, 0x40,    0, 0x10, 0x85,  0xF1, 0x4B, 0xA3,    0, 0x94, 0xFF, 0x03, 0xBA,
111	   0,    0, 0x07, 0x25, 0x2C, 0x1C,    0,    0,     0,    0,    0,    0, 0x02,    0,    0,    0,
112	0x75, 0x0C, 0x04, 0x76 },
113      { 0x48, 0xFF, 0xFE, 0xFD, 0xFE, 0x02, 0x0A, 0x13,  0x1A, 0x1D, 0x0F, 0x08, 0x09, 0x0A, 0x0B, 0x0B },
114      { 0x48, 0xFB, 0x04, 0xFB, 0x07, 0xF8, 0x09, 0xF6,  0x0A, 0x74, 0x06, 0xF8, 0x0B, 0xF2, 0x10, 0x6F },
115      0x1F872818, 0,
116    },
117    { "640x480Over", 640,  480, TVTYPE_NTSC, 0,
118      { 0x64, 0x03, 0x02, 0x33, 0x43,    0, 0x10, 0x7D,  0x72, 0x05, 0x99, 0x17, 0x93, 0xA5, 0x03, 0xBA,
119	   0,    0, 0x0D, 0x45, 0x38, 0x34,    0,    0,     0,    0,    0,    0, 0x02,    0,    0,    0,
120	0x75, 0x0C, 0x04, 0x6D },
121      { 0x48,    0, 0x01, 0x02, 0xFF, 0xF9, 0xFA, 0x0C,  0x26, 0x32, 0x07, 0x08, 0x0A, 0x0D, 0x0E, 0x0F },
122      { 0x48, 0x02, 0x02, 0xFD, 0x06, 0xF8, 0x0B, 0xF3,  0x0F, 0x70, 0x05, 0xF9, 0x0B, 0xF1, 0x11, 0x6E },
123      0x252491F1, 0x252499F1,
124    },
125    { "640x480Over", 640, 480, TVTYPE_PAL, 0,
126      { 0x64, 0x01, 0x12, 0x33, 0x40,    0, 0x10, 0x1D,  0x68, 0x26, 0xA3,    0, 0x94, 0xFF, 0x03, 0xBA,
127	   0,    0, 0x0F, 0x67, 0x58, 0x3C,    0,    0,     0,    0,    0,    0, 0x0A,    0,    0,    0,
128	0x75, 0x0C, 0x04, 0x76 },
129      { 0x48,    0, 0x01, 0x01, 0xFE, 0xFA, 0xFD, 0x0E,  0x24, 0x2E, 0x07, 0x07, 0x0A, 0x0D, 0x0F, 0x0F },
130      { 0x48, 0xFD, 0x03, 0xFB, 0x07, 0xF8, 0x0A, 0xF5,  0x0B, 0x74, 0x06, 0xF8, 0x0B, 0xF2, 0x10, 0x6F },
131      0x2F4ABC24, 0,
132    },
133    { "800x600Over", 800, 600, TVTYPE_NTSC, 0,
134      { 0x84, 0x03, 0x0A, 0x33, 0x43,    0, 0x10, 0xC5,  0xAD, 0x10, 0x99, 0x17, 0x93, 0xA5, 0x03, 0xBA,
135	   0,    0, 0x04, 0x07, 0x20, 0x0C,    0,    0,     0,    0,    0,    0, 0x02,    0,    0,    0,
136	0x75, 0x0C, 0x04, 0x6D },
137      { 0x48,    0, 0xFF, 0xFD, 0xFC, 0xFE, 0x06, 0x13,  0x1E, 0x23, 0x0D, 0x08, 0x0A, 0x0B, 0x0C, 0x0C },
138      { 0x48, 0x02, 0x02, 0xFD, 0x06, 0xF8, 0x0B, 0xF3,  0x0F, 0x70, 0x05, 0xF9, 0x0B, 0xF1, 0x11, 0x6E },
139      0x1C000008, 0x1C000808,
140    },
141    { "800x600Over", 800, 600, TVTYPE_PAL, 0,
142      { 0x84, 0x03, 0x02, 0x33, 0x40,    0, 0x10, 0x75,  0x7B, 0x34, 0xA3,    0, 0x94, 0xFF, 0x03, 0xBA,
143	   0,    0, 0x08, 0xFD, 0xEF, 0x20,    0,    0,     0,    0,    0,    0, 0x02,    0,    0,    0,
144	0x75, 0x0C, 0x04, 0x76 },
145      { 0x48, 0xFF, 0xFE, 0xFD, 0xFE, 0x02, 0x0A, 0x13,  0x1A, 0x1D, 0x0F, 0x08, 0x09, 0x0A, 0x0B, 0x0B },
146      { 0x48, 0xFB, 0x04, 0xFB, 0x07, 0xF8, 0x09, 0xF6,  0x0A, 0x74, 0x06, 0xF8, 0x0B, 0xF2, 0x10, 0x6F },
147      0x26798C0C, 0,
148    },
149    { NULL, 0, 0, 0, 0,
150      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
151	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
152	0, 0, 0, 0 },
153      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 },
154      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 },
155      0, 0,
156    }
157};
158
159/*
160 *
161 * VT1622 modetables
162 *
163 */
164static DisplayModeRec VT1622Modes[] = {
165    { MODEPREFIX("640x480"),        23520,  640,  656,  744,  784, 0,  480,  487,  491,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
166    { MODEPREFIX("640x480"),        30000,  640,  680,  808, 1000, 0,  480,  520,  523,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
167    { MODEPREFIX("800x600"),        39900,  800,  840,  976, 1064, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
168    { MODEPREFIX("800x600"),        34500,  800,  816,  880,  920, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
169    { MODEPREFIX("1024x768"),       54810, 1024, 1032, 1088, 1160, 0,  768,  780,  792,  945, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
170    { MODEPREFIX("1024x768"),       57000, 1024, 1040, 1112, 1200, 0,  768,  829,  840,  950, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
171    { MODEPREFIX("848x480"),        34860,  848,  872, 1032, 1200, 0,  480,  495,  509,  581, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
172    { MODEPREFIX("848x480"),        36000,  848,  872, 1032, 1200, 0,  480,  498,  509,  600, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
173    { MODEPREFIX("720x480"),        25200,  720,  728,  776,  840, 0,  480,  511,  515,  600, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXNTSC },
174    { MODEPREFIX("720x576"),        28500,  720,  728,  744,  760, 0,  576,  635,  643,  750, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL  },
175    { MODEPREFIX("640x480Over"),    20160,  640,  648,  704,  720, 0,  480,  487,  491,  560, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
176    { MODEPREFIX("640x480Over"),    21000,  640,  664,  792,  840, 0,  480,  485,  491,  500, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
177    { MODEPREFIX("800x600Over"),    35910,  800,  840,  984, 1080, 0,  600,  601,  604,  665, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
178    { MODEPREFIX("800x600Over"),    32500,  800,  832,  928, 1000, 0,  600,  600,  604,  650, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
179    { MODEPREFIX("1024x768Over"),   50400, 1024, 1040, 1112, 1200, 0,  768,  772,  776,  840, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
180    { MODEPREFIX("1024x768Over"),   49500, 1024, 1032, 1112, 1200, 0,  768,  771,  776,  825, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
181    { MODEPREFIX("848x480Over"),    27720,  848,  856,  928, 1008, 0,  480,  490,  493,  550, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
182    { MODEPREFIX("848x480Over"),    33000,  848,  872, 1032, 1200, 0,  480,  490,  493,  550, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
183    { MODEPREFIX("720x480Over"),    21000,  720,  728,  760,  800, 0,  480,  480,  483,  525, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXNTSC },
184    { MODEPREFIX("720x576Over"),    30000,  720,  728,  864, 1000, 0,  576,  576,  579,  600, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL  },
185    { MODEPREFIX("720x480Noscale"), 27972,  720,  736,  768,  888, 0,  480,  480,  483,  525, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXNTSC },
186    { MODEPREFIX("720x576Noscale"), 28000,  720,  728,  864,  896, 0,  576,  576,  579,  625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
187};
188
189struct VT162XTableRec {
190    char *  name;
191    CARD16  Width;
192    CARD16  Height;
193    int     Standard;
194    CARD8   PrimaryCR6C;
195    CARD8   SecondaryCR6C;
196    CARD8   TV1[0x30];
197    CARD8   TV2[0x1B];
198    CARD8   RGB[6];
199    CARD8   YCbCr[3];
200    CARD32  SubCarrier;
201    CARD32  DotCrawlSubCarrier;
202};
203
204static struct VT162XTableRec
205VT1622Table[] = {
206    { "640x480", 640, 480, TVTYPE_NTSC, 0, 0,
207      { 0x04,    0,    0, 0x02, 0x03,    0, 0x10, 0x7E,  0x9D, 0x0D, 0x60, 0x17, 0x52, 0x45, 0x0F,    0,
208	   0,    0, 0xD0, 0x33, 0xBF, 0x3A,    0,    0,     0,    0, 0xE9,    0,    0,    0,    0, 0x05,
209	0x12, 0x0C, 0x04, 0x74,    0, 0x5A, 0x2F, 0x97,  0x50,    0,    0, 0xAA, 0x2B, 0x7A, 0xD8,    0 },
210      { 0xDC, 0x50, 0x04,    0,    0, 0x40, 0x0F, 0x81,  0x23, 0x57, 0x02, 0x0F, 0x29, 0x73, 0x23, 0x86,
211	0xC4, 0xEA, 0xDF, 0x05, 0x92, 0xA1, 0x04,    0,     0, 0x7F, 0x03 },
212      { 0xAF, 0xAA, 0xAA, 0x91, 0x9C, 0x27 },
213      { 0x50, 0x4B, 0x4D },
214      0x252491F1, 0x252487BE,
215    },
216    { "640x480", 640, 480, TVTYPE_PAL, 0, 0,
217      { 0x04,    0,    0, 0x82,    0,    0, 0x10, 0x3E,  0xA4, 0x37, 0x67,    0, 0x49, 0x49, 0x0F,    0,
218	   0,    0, 0xEC, 0x2A, 0xB8, 0x29,    0,    0,     0,    0, 0xED,    0, 0x0A,    0,    0, 0x04,
219	0x12, 0x0C, 0x04, 0x7B,    0, 0x64, 0x30, 0x93,  0x49, 0x5F, 0x15, 0xA5, 0x23, 0x7A, 0xCC,    0 },
220      { 0xF9, 0x50, 0x04,    0,    0, 0x45, 0xE7, 0x81,  0x23, 0x57, 0x02, 0x1F, 0x31, 0x75, 0x23, 0x8A,
221	0xC8, 0xF0, 0xFF, 0x05, 0xD7, 0x8E, 0x03, 0x7F,  0xCF, 0xBF, 0x03 },
222      { 0x8A, 0x86, 0x86, 0x8D, 0x96, 0x20 },
223      { 0x42, 0x49, 0x49 },
224      0x2D66772D, 0,
225    },
226    { "800x600", 800, 600, TVTYPE_NTSC, 0x1E, 0,
227      { 0x84,    0,    0, 0x24, 0x03,    0, 0x10, 0xDE,  0xD4, 0x0E, 0x59, 0x17, 0x46, 0x40, 0x0F,    0,
228	   0,    0, 0xEA, 0x0D, 0x98, 0x1C,    0,    0,     0,    0, 0x3D,    0, 0x01,    0,    0, 0x85,
229	0x0D, 0x0A, 0x04, 0x74,    0, 0x5A, 0x41, 0x96,  0x6B,    0,    0, 0xAA, 0x2B, 0xA6, 0x1E, 0x10 },
230      { 0xE4, 0x69, 0x04,    0,    0, 0x3F, 0x27, 0x21,  0x34, 0xED, 0x02, 0x27, 0xF5, 0x9D, 0x24, 0xB7,
231	0x0D, 0x40,    0, 0x58, 0xB6, 0x3B, 0x05,    0,  0x01, 0xEF, 0x05 },
232      { 0x93, 0x90, 0x90, 0x91, 0x9C, 0 },
233      { 0x43, 0x4A, 0x49 },
234      0x1B5E5096, 0x1B5E4912,
235    },
236    { "800x600", 800, 600, TVTYPE_PAL, 0, 0,
237      { 0x84,    0,    0, 0xA4,    0,    0, 0x19, 0x66,  0xBF, 0x12, 0x60,    0, 0x56, 0x45, 0x0F,    0,
238	   0,    0, 0xEC, 0x15, 0xFD, 0x28,    0,    0,     0,    0, 0x16,    0, 0x01,    0,    0, 0x85,
239	0x10, 0x0C, 0x04, 0x7B,    0, 0x64, 0x37, 0x93,  0x54, 0x5F, 0x15, 0xA5, 0x23, 0x8F, 0xF4,    0 },
240      { 0xE7, 0x45, 0x04,    0,    0, 0x44, 0x97, 0x21,  0x33, 0xED, 0x02, 0x97, 0x87, 0x87, 0x23, 0x9F,
241	0xE7, 0x16, 0xE7, 0x16, 0xCC, 0xF3, 0x04,    0,  0x01, 0x4F, 0x04 },
242      { 0xB8, 0xB4, 0xB4, 0, 0, 0 },
243      { 0x58, 0x5E, 0x5E },
244      0x277A7DE4, 0,
245    },
246    { "1024x768", 1024, 768, TVTYPE_NTSC, 0x12, 0x1C,
247      { 0x84,    0,    0, 0x44, 0x03,    0, 0x10, 0x80,  0x15, 0x0A, 0x58, 0x17, 0x5B, 0x40, 0x0F,    0,
248	   0,    0, 0xE9, 0x1E, 0x9D, 0x19,    0,    0,     0,    0, 0x9C,    0, 0x05,    0,    0, 0x85,
249	0x0A, 0x05, 0x04, 0x74,    0, 0x5A, 0x56, 0x96,  0x8B,    0,    0, 0xAA, 0x2B, 0xDA, 0x79, 0x10 },
250      { 0xDA, 0x50, 0x04,    0,    0, 0x3F, 0x87, 0xFF,  0x34, 0xB0, 0x03, 0x6F, 0xDB, 0xCD, 0x35, 0xF1,
251	0x5E, 0xA5, 0x7E, 0x5A, 0x33, 0x26, 0x07,    0,  0x01, 0x27, 0x08 },
252      { 0xC2, 0xBE, 0xBE, 0x91, 0x9C, 0 },
253      { 0x58, 0x4B, 0x4A },
254      0x14EB66D6, 0x14EB6118,
255    },
256    { "1024x768", 1024, 768, TVTYPE_PAL, 0x1E, 0,
257      { 0x84,    0,    0, 0xC0,    0,    0, 0x10, 0xA0,  0x2A, 0x38, 0x70,    0, 0x4E, 0x50, 0x0F,    0,
258	   0,    0, 0xE4, 0x23, 0xD1, 0x0C,    0,    0,     0,    0, 0x96,    0, 0x07,    0,    0, 0x85,
259	0x0C, 0x0C, 0x04, 0x7B,    0, 0x64, 0x53, 0x90,  0x7B, 0x5B, 0x15, 0xA0, 0x22, 0xD1, 0x71, 0x10 },
260      { 0xDD, 0x60, 0x04,    0,    0, 0x45, 0xAF, 0xFF,  0x34, 0xB5, 0x03, 0x57, 0xA8, 0xC8, 0x35, 0xEC,
261	0x4C, 0xCC, 0x67, 0x5A, 0x14, 0x5C, 0x06,    0,  0x01, 0x1F, 0x07 },
262      { 0xA9, 0xA6, 0xA6, 0x90, 0x99, 0 },
263      { 0x51, 0x49, 0x49 },
264      0x1A8CC372, 0,
265    },
266    { "848x480", 848, 480, TVTYPE_NTSC, 0, 0,
267      { 0x84,    0,    0, 0x24, 0x03,    0, 0x10, 0x46,  0xCC, 0x0E, 0x56, 0x17, 0x43, 0x3E, 0x0F,    0,
268	   0,    0, 0xE8, 0x29, 0x67, 0x19,    0,    0,     0,    0, 0x29,    0, 0x0B,    0,    0, 0x85,
269	0x0E, 0x08, 0x04, 0x74,    0, 0x5A, 0x3D, 0x96,  0x64,    0,    0, 0xAA, 0x2B, 0x9C, 0x17, 0x10 },
270      { 0xDC, 0x50,    0,    0,    0, 0x40, 0xAF, 0x51,  0x34, 0x44, 0x02, 0xE3, 0xC1, 0x93, 0x23, 0xAD,
271	0xFD, 0x2B, 0x7C, 0x17, 0x6D, 0xCA, 0x04,    0,  0x01, 0x2F, 0x05 },
272      { 0x94, 0x90, 0x91, 0x91, 0x9C, 0 },
273      { 0x44, 0x45, 0x45 },
274      0x1D3CA863, 0x1D3CA05B,
275    },
276    { "848x480", 848, 480, TVTYPE_PAL, 0x08, 0,
277      { 0x04,    0,    0, 0xC2,    0,    0, 0x10, 0x47,  0xE4, 0x09, 0x64,    0, 0x4F, 0x48, 0x0F,    0,
278	   0,    0, 0xE7, 0x05, 0x2C, 0x1C,    0,    0,     0,    0, 0x5E,    0, 0x09,    0,    0, 0x84,
279	0x0A, 0x0C, 0x04, 0x7B,    0, 0x64, 0x46, 0x93,  0x68, 0x5F, 0x15, 0xA5, 0x23, 0xB4, 0x2A, 0x10 },
280      { 0xE7, 0x45, 0x04,    0,    0, 0x43, 0xAF, 0x51,  0x34, 0x57, 0x02, 0x7F, 0x4F, 0xA9, 0x34, 0xD1,
281	0x2B, 0x5D, 0xAA, 0x58, 0xD7, 0x01, 0x03,    0,  0x01, 0x7F, 0x04 },
282      { 0xA4, 0xA0, 0xA1, 0, 0, 0 },
283      { 0x50, 0x49, 0x49 },
284      0x1F872818, 0,
285    },
286    { "720x480", 720, 480, TVTYPE_NTSC, 0x04, 0,
287      { 0x04,    0,    0, 0x26, 0x03,    0, 0x10, 0x6D,  0xC3, 0x08, 0x56, 0x17, 0x43, 0x3E, 0x0F,    0,
288	   0,    0, 0x0D, 0x07, 0x60, 0x34,    0,    0,     0,    0, 0x1E,    0, 0x03,    0,    0, 0x85,
289	0x0F, 0x08, 0x04, 0x74,    0, 0x5A, 0x39, 0x95,  0x5E,    0,    0, 0xAA, 0x2B, 0x92, 0xFF,    0 },
290      { 0xE4, 0x69, 0x04,    0,    0, 0x40, 0x47, 0xD1,  0x23, 0x57, 0x02, 0xBF, 0xAF, 0x8D, 0x23, 0xA4,
291	0xF3, 0x20, 0x36, 0x17, 0x92, 0x33, 0x04,    0,     0, 0xBF, 0x03 },
292      { 0x94, 0x90, 0x90, 0x91, 0x9C, 0 },
293      { 0x42, 0x49, 0x48 },
294      0x1E555518, 0x1E554CC3,
295    },
296    { "720x576", 720, 576, TVTYPE_PAL, 0, 0,
297      { 0x04,    0,    0, 0xA2,    0,    0, 0x10, 0x1E,  0xAC, 0x38, 0x67,    0, 0x57, 0x49, 0x0F,    0,
298	   0,    0, 0xF0, 0x0F, 0xD1, 0x38,    0,    0,     0,    0, 0xF2,    0, 0x02,    0,    0, 0x84,
299	0x13, 0x0C, 0x04, 0x7B, 0x48, 0x64, 0x30, 0x93,  0x49, 0x5F, 0x15, 0xA5, 0x23, 0x8B, 0xBD,    0 },
300      { 0xE7, 0x45, 0x04,    0,    0, 0x45, 0xF7, 0xD1,  0x22, 0xED, 0x02, 0x1D, 0x29, 0x75, 0x23, 0x88,
301	0xC6, 0xF0, 0xFA, 0x0F, 0xCC, 0x30, 0x14,    0,     0, 0x8F, 0x03 },
302      { 0xB5, 0xB1, 0xB1, 0, 0, 0 },
303      { 0x59, 0x4D, 0x4A },
304      0x2D839832, 0,
305    },
306    { "640x480Over", 640, 480, TVTYPE_NTSC, 0, 0,
307      { 0x04,    0,    0, 0x02, 0x03,    0, 0x10, 0x48,  0x72, 0x0A, 0x60, 0x17, 0x52, 0x45, 0x0F,    0,
308	   0,    0, 0xED, 0x23, 0x80, 0x35,    0,    0,     0,    0, 0xE9,    0, 0x02,    0,    0, 0x05,
309	0x12, 0x0C, 0x04, 0x75,    0, 0x5A, 0x2F, 0x97,  0x50,    0,    0, 0xAA, 0x2B, 0x7A, 0xD8,    0 },
310      { 0xC4, 0x50, 0x04,    0,    0, 0x41, 0xCF, 0x7F,  0x22, 0x2F, 0x02, 0xFF, 0x7F, 0x71, 0x22, 0x83,
311	0xC0, 0xE5, 0xC0, 0x05, 0x44,    0, 0x04,    0,     0, 0xFF, 0x02 },
312      { 0xAD, 0xA9, 0xA9, 0, 0, 0 },
313      { 0x4F, 0x49, 0x49 },
314      0x25EAAA5E, 0x25EA9FF4,
315    },
316    { "640x480Over", 640, 480, TVTYPE_PAL, 0, 0,
317      { 0x04,    0,    0, 0x82,    0,    0, 0x10, 0xB0,  0x39, 0x39, 0x67,    0, 0x48, 0x4A, 0x0F,    0,
318	   0,    0, 0x2C, 0x05, 0x2C, 0x30,    0,    0,     0,    0, 0xC8,    0, 0x02,    0,    0, 0x05,
319	0x15, 0x0C, 0x04, 0x7B,    0, 0x64, 0x28, 0x93,  0x3E, 0x5F, 0x15, 0xA5, 0x23, 0x65, 0xCC,    0 },
320      { 0xF9, 0x50, 0x04,    0,    0, 0x45, 0x47, 0x7F,  0x23, 0xF3, 0x01, 0x9F, 0x7F, 0x62, 0x22, 0x72,
321	0xA7, 0xCB, 0x05, 0x05, 0x33,    0, 0x03,    0,     0, 0x9F, 0x02 },
322      { 0x8A, 0x86, 0x86, 0x90, 0x99, 0 },
323      { 0x42, 0x49, 0x49 },
324      0x360C44BC, 0,
325    },
326    { "800x600Over", 800, 600, TVTYPE_NTSC, 0, 0,
327      { 0x84,    0,    0, 0x24, 0x03,    0, 0x10, 0xEF,  0xB0, 0x0A, 0x5A, 0x17, 0x46, 0x40, 0x0F,    0,
328	   0,    0, 0xE8, 0x32, 0xC3, 0x19,    0,    0,     0,    0, 0x33,    0, 0x01,    0,    0, 0x85,
329	0x0D, 0x0A, 0x04, 0x75,    0, 0x5A, 0x41, 0x96,  0x68,    0,    0, 0xAA, 0x2B, 0x9E, 0x1E, 0x10 },
330      { 0xE4, 0x69, 0x04,    0,    0, 0x40, 0x37, 0x21,  0x34, 0x98, 0x02, 0x01, 0x21, 0x97, 0x34, 0xB1,
331	0xFF, 0x34, 0xB6, 0x17, 0x11,    0, 0x05,    0,  0x01, 0x57, 0x05 },
332      { 0x93, 0x90, 0x90, 0, 0, 0 },
333      { 0x42, 0x45, 0x45 },
334      0x1C61CEE0, 0x1C61C714,
335    },
336    { "800x600Over", 800, 600, TVTYPE_PAL, 0, 0,
337      { 0x84,    0,    0, 0xA0,    0,    0, 0x19, 0xA6,  0x9F, 0x38, 0x60,    0, 0x57, 0x45, 0x0F,    0,
338	   0,    0, 0xC8, 0x12, 0x8F, 0x1C,    0,    0,     0,    0, 0x0E,    0, 0x03,    0,    0, 0x85,
339	0x10, 0x0C, 0x04, 0x7B,    0, 0x64, 0x37, 0x93,  0x54, 0x5F, 0x15, 0xA5, 0x23, 0x8B, 0xF4,    0 },
340      { 0xE9, 0x50, 0x04,    0,    0, 0x44, 0xE7, 0x1F,  0x33, 0x89, 0x02, 0x8D, 0xBC, 0x85, 0x23, 0x9C,
341	0xE4, 0x13, 0xD4, 0x16, 0x28, 0x90, 0x04,    0,  0x01, 0x0F, 0x04 },
342      { 0xB8, 0xB4, 0xB4, 0x90, 0x99, 0 },
343      { 0x58, 0x48, 0x48 },
344      0x27E98D57, 0,
345    },
346    { "1024x768Over", 1024, 768, TVTYPE_NTSC, 0x16, 0x1C,
347      { 0x84,    0,    0, 0x44, 0x03,    0, 0x10, 0xA0,  0xAA, 0x05, 0x57, 0x17, 0x5C, 0x3F, 0x0F,    0,
348	   0,    0, 0xE8, 0x33, 0x1A, 0x16,    0,    0,     0,    0, 0x66,    0, 0x01,    0,    0, 0x85,
349	0x0A, 0x05, 0x04, 0x74,    0, 0x5A, 0x4B, 0x96,  0x79,    0,    0, 0xAA, 0x2B, 0xB9, 0x4B, 0x10 },
350      { 0xE4, 0x50, 0x04,    0,    0, 0x40, 0xAF, 0xFF,  0x34, 0x47, 0x03, 0xAF, 0xFF, 0xB1, 0x34, 0xD1,
351	0x30, 0x68, 0x0B, 0x59, 0x66,    0, 0x06,    0,  0x01, 0x7F, 0x07 },
352      { 0xC2, 0xBE, 0xBE, 0, 0, 0 },
353      { 0x57, 0x45, 0x45 },
354      0x1844440E, 0x18443D63,
355    },
356    { "1024x768Over", 1024, 768, TVTYPE_PAL, 0x1E, 0,
357      { 0x84,    0,    0, 0xC0,    0,    0, 0x10, 0xA8,  0xC5, 0x36, 0x5D,    0, 0x4E, 0x43, 0x0F,    0,
358	   0,    0, 0xC9, 0x0A, 0x79, 0x1C,    0,    0,     0,    0, 0x6E,    0, 0x03,    0,    0, 0x85,
359	0x0C, 0x0C, 0x04, 0x7B,    0, 0x64, 0x4B, 0x93,  0x6F, 0x5F, 0x15, 0xA5, 0x23, 0xBE, 0x5A, 0x10 },
360      { 0xDD, 0x60, 0x04,    0,    0, 0x43, 0xAF, 0xFF,  0x34, 0x38, 0x03, 0xCF, 0xDF, 0xB4, 0x34, 0xD6,
361	0x35, 0x75, 0x47, 0x59, 0x47, 0x20, 0x05,    0,  0x01, 0x2F, 0x06 },
362      { 0xA9, 0xA6, 0xA6, 0x90, 0x99, 0 },
363      { 0x51, 0x49, 0x49 },
364      0x1D7B0E38, 0,
365    },
366    { "848x480Over", 848, 480, TVTYPE_NTSC, 0, 0,
367      { 0x84,    0,    0, 0x44, 0x03,    0, 0x10, 0x96,  0xA7, 0x08, 0x5B, 0x17, 0x46, 0x40, 0x0F,    0,
368	   0,    0, 0xE8, 0x3C, 0x2D, 0x22,    0,    0,     0,    0, 0x3D,    0, 0x01,    0,    0, 0x85,
369	0x0D, 0x08, 0x04, 0x75,    0, 0x5A, 0x41, 0x96,  0x69,    0,    0, 0xAA, 0x2B, 0xA2, 0x24, 0x10 },
370      { 0xDC, 0x50,    0,    0,    0, 0x40, 0xEF, 0x51,  0x33, 0x25, 0x02, 0x1F, 0x4D, 0x9C, 0x34, 0xB5,
371	0x0C, 0x3D, 0xF1, 0x57, 0x30, 0x01, 0x04,    0,  0x01, 0x1F, 0x04 },
372      { 0xC0, 0xBC, 0xBC, 0, 0, 0 },
373      { 0x58, 0x45, 0x45 },
374      0x1B9364A1, 0x1B933067,
375    },
376    { "848x480Over", 848, 480, TVTYPE_PAL, 0, 0,
377      { 0x84,    0,    0, 0xC0,    0,    0, 0x10, 0x47,  0xA8, 0x39, 0x64,    0, 0x4E, 0x46, 0x0F,    0,
378	   0,    0, 0xEA, 0x15, 0xF2, 0x28,    0,    0,     0,    0, 0x39,    0, 0x0B,    0,    0, 0x84,
379	0x0F, 0x0C, 0x04, 0x7B,    0, 0x64, 0x40, 0x93,  0x5F, 0x5F, 0x15, 0xA5, 0x23, 0xA3, 0x2A, 0x10 },
380      { 0xE7, 0x45, 0x04,    0,    0, 0x43, 0xAF, 0x4F,  0x34, 0x25, 0x02, 0x1F, 0x4F, 0x9B, 0x34, 0xB7,
381	0x0A, 0x3F, 0xF0, 0x57, 0x85,    0, 0x03,    0,  0x01, 0x1F, 0x04 },
382      { 0xA4, 0xA1, 0xA1, 0x90, 0x99, 0 },
383      { 0x4E, 0x49, 0x49 },
384      0x2264E5EC, 0,
385    },
386    { "720x480Over", 720, 480, TVTYPE_NTSC, 0, 0,
387      { 0x04,    0,    0, 0x02, 0x03,    0, 0x10, 0x18,  0x28, 0x09, 0x5B, 0x17, 0x46, 0x41, 0x0F,    0,
388	   0,    0, 0xEE, 0x0D, 0xA0, 0x38,    0,    0,     0,    0, 0xEE,    0, 0x02,    0,    0, 0x85,
389	0x11, 0x08, 0x04, 0x75,    0, 0x5A, 0x31, 0x95,  0x51,    0,    0, 0xAA, 0x2B, 0x7A, 0xDB,    0 },
390      { 0xE4, 0x69, 0x04,    0,    0, 0x40, 0x1F, 0xCF,  0x23, 0x0C, 0x02, 0x1F, 0xCF, 0x76, 0x23, 0x88,
391	0xC9, 0xEF, 0xFF, 0x05,    0,    0,    0,    0,     0, 0x1F, 0x03 },
392      { 0xAB, 0xA7, 0xA7, 0, 0, 0 },
393      { 0x4D, 0x49, 0x49 },
394      0x2466661D, 0x24665C1E,
395    },
396    { "720x576Over", 720, 576, TVTYPE_PAL, 0, 0,
397      { 0x04,    0,    0, 0xA6,    0,    0, 0x10, 0x10,  0x7D, 0x32, 0x60,    0, 0x57, 0x46, 0x0F,    0,
398	   0,    0, 0xEC, 0x15, 0xDC, 0x28,    0,    0,     0,    0, 0xEE,    0, 0x0A,    0,    0, 0x84,
399	0x13, 0x0C, 0x04, 0x7B, 0x48, 0x64, 0x30, 0x93,  0x49, 0x5F, 0x15, 0xA5, 0x23, 0x77, 0xFF,    0 },
400      { 0xE7, 0x45, 0x04,    0,    0, 0x45, 0xE7, 0xCF,  0x23, 0x57, 0x02, 0x1F, 0x80, 0x75, 0x23, 0x89,
401	0xC7, 0xF1, 0xFF, 0x05, 0xD7, 0x80, 0x03,    0,     0, 0xBF, 0x03 },
402      { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 },
403      { 0x58, 0x48, 0x49 },
404      0x2D66772D, 0,
405    },
406    { "720x480Noscale", 720, 480, TVTYPE_NTSC, 0, 0,
407      { 0x04,    0,    0,    0, 0x03,    0, 0x10, 0x98,  0x98, 0x08, 0x5A, 0x17, 0x49, 0x41,    0, 0x89,
408           0,    0, 0xA9, 0x19, 0xDC, 0x24,    0,    0,     0,    0, 0xEE, 0x03, 0x02, 0x80,    0, 0x04,
409        0x11, 0x08, 0x04, 0x75,    0, 0x5A, 0x31, 0x95,  0x51,    0,    0, 0xAA, 0x2B, 0x7A, 0xDB,    0 },
410      { 0xE4, 0x69, 0x04,    0,    0, 0x40, 0x77, 0xD0,  0x23, 0x0C, 0x02, 0x77, 0xD0, 0x80, 0x23, 0x88,
411        0xC9, 0x30, 0xD0, 0x16,    0,    0,    0,    0,     0, 0x77, 0x03 },
412      { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 }, /* added later - untested */
413      { 0x58, 0x48, 0x49 }, /* added later - untested */
414      0x20BA2E8B, 0,
415    },
416    { "720x576Noscale", 720, 576, TVTYPE_PAL, 0, 0,
417      { 0x04,    0,    0, 0xA4,    0,    0, 0x10, 0x75,  0xA5, 0x3A, 0x5A,    0, 0x49, 0x46,    0, 0x89,
418           0,    0, 0xE9, 0x19, 0xDC, 0x24,    0,    0,     0,    0, 0xEE,    0, 0x0A,    0,    0, 0x04,
419        0x13, 0x0C, 0x04, 0x7B, 0x48, 0x64, 0x30, 0x93,  0x49, 0x5F, 0x15, 0xA5, 0x23, 0x77, 0xFF,    0 },
420      { 0xE7, 0x45, 0x04,    0,    0, 0x45, 0x7F, 0xD0,  0x23, 0x70, 0x02, 0x7F, 0xD0, 0x93, 0x23, 0x89,
421        0xC7, 0xF1, 0xBD, 0x06,    0,    0,    0,    0,     0, 0x7F, 0x03 },
422      { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 }, /* added later - untested */
423      { 0x58, 0x48, 0x49 }, /* added later - untested */
424      0x288933E3, 0,
425    },
426    { NULL, 0, 0, 0, 0, 0,
427      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
428	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
429	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 },
430      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
431	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0 },
432      { 0, 0, 0, 0, 0, 0},
433      { 0, 0, 0 },
434      0, 0,
435    }
436};
437
438/*
439 *
440 * VT1622A/VT1623 modetables
441 *
442 */
443static DisplayModeRec VT1623Modes[] = {
444    { MODEPREFIX("640x480"),      23520,  640,  656,  744,  784, 0,  480,  487,  491,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
445    { MODEPREFIX("640x480"),      30000,  640,  680,  808, 1000, 0,  480,  520,  523,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
446    { MODEPREFIX("800x600"),      39900,  800,  840,  976, 1064, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
447    { MODEPREFIX("800x600"),      34500,  800,  816,  880,  920, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
448    { MODEPREFIX("1024x768"),     54810, 1024, 1032, 1088, 1160, 0,  768,  780,  792,  945, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
449    { MODEPREFIX("1024x768"),     57000, 1024, 1040, 1112, 1200, 0,  768,  829,  840,  950, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
450    { MODEPREFIX("848x480"),      34860,  848,  872, 1032, 1200, 0,  480,  495,  509,  581, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
451    { MODEPREFIX("848x480"),      36000,  848,  872, 1032, 1200, 0,  480,  498,  509,  600, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
452    { MODEPREFIX("720x480"),      25200,  720,  728,  776,  840, 0,  480,  511,  515,  600, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXNTSC },
453    { MODEPREFIX("720x576"),      28500,  720,  728,  744,  760, 0,  576,  635,  643,  750, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL  },
454    { MODEPREFIX("640x480Over"),  20160,  640,  648,  704,  720, 0,  480,  490,  491,  560, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
455    { MODEPREFIX("640x480Over"),  21000,  640,  664,  792,  840, 0,  480,  485,  491,  500, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
456    { MODEPREFIX("800x600Over"),  35910,  800,  840,  984, 1080, 0,  600,  601,  604,  665, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
457    { MODEPREFIX("800x600Over"),  32500,  800,  832,  928, 1000, 0,  600,  600,  604,  650, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
458    { MODEPREFIX("1024x768Over"), 50400, 1024, 1040, 1112, 1200, 0,  768,  772,  776,  840, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC },
459    { MODEPREFIX("1024x768Over"), 49500, 1024, 1032, 1112, 1200, 0,  768,  771,  776,  825, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
460    { MODEPREFIX("848x480Over"),  27720,  848,  856,  928, 1008, 0,  480,  490,  493,  550, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXNTSC },
461    { MODEPREFIX("848x480Over"),  33000,  848,  872, 1032, 1200, 0,  480,  490,  493,  550, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL  },
462    { MODEPREFIX("720x480Over"),  21000,  720,  728,  760,  800, 0,  480,  480,  483,  525, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXNTSC },
463    { MODEPREFIX("720x576Over"),  27000,  720,  768,  800,  864, 0,  576,  577,  579,  625, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL  },
464    { MODEPREFIX("720x576Noscale"),  28000,  720,  736,  768,  896,  0,  576,  576,  579,  625,  0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL  },
465    { MODEPREFIX("720x480Noscale"),  27972,  720,  736,  768,  888,  0,  480,  480,  483,  525,  0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
466    { MODEPREFIX("720x480pal"), 27972,  720,  736,  768,  888, 0,  480,  480,  483,  525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL },
467};
468
469static struct VT162XTableRec
470VT1623Table[] = {
471    { "640x480", 640, 480, TVTYPE_NTSC, 0, 0,
472      { 0x04,    0,    0, 0x06, 0x03,    0, 0x20, 0x28,  0x9A, 0x0C, 0x55,    0, 0x52, 0x3B, 0x0F,    0,
473	   0,    0, 0xF8, 0x3E, 0x81, 0x56,    0,    0,     0,    0, 0xEA,    0,    0,    0,    0, 0x11,
474	0x15, 0x0C, 0x5F, 0x75, 0x08, 0x56, 0x2F, 0x90,  0x50,    0,    0, 0xA3, 0x29, 0x5B, 0xBF,    0 },
475      {    0,    0,    0,    0,    0, 0x3B, 0x0F, 0x7F,  0x23, 0x57, 0x02, 0x0F, 0x26, 0x73, 0x63, 0x86,
476	0xC4, 0xEA, 0xDF, 0x05, 0x92, 0xA1, 0x84,    0,     0, 0x7F, 0x03 },
477      { 0x6A, 0x62, 0x65, 0x91, 0x9C, 0x27 },
478      { 0x50, 0x4B, 0x4D },
479      0x252491F1, 0x252487BE,
480    },
481    { "640x480", 640, 480, TVTYPE_PAL, 0, 0,
482      { 0x04,    0,    0, 0x06,    0,    0, 0x20, 0xBF,  0x9F, 0x37, 0x5D,    0, 0x4F, 0x42, 0x0F,    0,
483	   0,    0, 0xAC, 0x15, 0x6E, 0x28,    0,    0,     0,    0, 0xED,    0, 0x02,    0,    0, 0x99,
484	0x17, 0x0C, 0x31, 0x7A, 0x04, 0x62, 0x30, 0x8E,  0x4A, 0x5B, 0x15, 0xA0, 0x22, 0x5C, 0xCC,    0 },
485      {    0,    0,    0,    0,    0, 0x43, 0xE7, 0x7F,  0x23, 0x57, 0x02, 0x1F, 0x2F, 0x75, 0x63, 0x8A,
486	0xC8, 0xF0, 0xFF, 0x05, 0xD7, 0x8E, 0x83, 0x7F,  0xCF, 0xBF, 0x03 },
487      { 0x6A, 0x62, 0x65, 0x8D, 0x96, 0x20 },
488      { 0x42, 0x49, 0x49 },
489      0x2D66772D, 0,
490    },
491    { "800x600", 800, 600, TVTYPE_NTSC, 0, 0,
492      { 0x84,    0,    0, 0x04, 0x03,    0, 0x20, 0x58,  0xD4, 0x09, 0x52,    0, 0x51, 0x3B, 0x0F,    0,
493	   0,    0, 0x6A, 0x0D, 0x4C, 0x1C,    0,    0,     0,    0, 0x3E,    0, 0x01,    0,    0, 0x44,
494	0x10, 0x0A, 0x9C, 0x75, 0x04, 0x56, 0x41, 0x90,  0x6B,    0,    0, 0xA3, 0x29, 0x86, 0x10, 0x10 },
495      {    0,    0,    0,    0,    0, 0x3A, 0x27, 0x1F,  0x34, 0xED, 0x02, 0x27, 0xF5, 0x9D, 0x64, 0xB7,
496	0x0D, 0x40,    0, 0x58, 0xB6, 0x3B, 0x85,    0,  0x01, 0xEF, 0x05 },
497      { 0x6A, 0x62, 0x65, 0x91, 0x9C, 0 },
498      { 0x43, 0x4A, 0x49 },
499      0x1B5E5096, 0x1B5E4912,
500    },
501    { "800x600", 800, 600, TVTYPE_PAL, 0, 0,
502      { 0x84,    0,    0, 0x04,    0,    0, 0x20, 0x27,  0xB8, 0x0D, 0x5C,    0, 0x4E, 0x40, 0x0F,    0,
503	   0,    0, 0xEC, 0x2A, 0xFD, 0x28,    0,    0,     0,    0, 0x11,    0, 0x01,    0,    0, 0xAA,
504	0x13, 0x0C, 0x9F, 0x79, 0x0C, 0x62, 0x37, 0x8E,  0x54, 0x5B, 0x15, 0xA0, 0x22, 0x70, 0xF4,    0 },
505      {    0,    0,    0,    0,    0, 0x41, 0x97, 0x1F,  0x33, 0xED, 0x02, 0x97, 0x87, 0x87, 0x63, 0x9F,
506	0xE7, 0x16, 0xE7, 0x16, 0xCC, 0xF3, 0x84,    0,  0x01, 0x4F, 0x04 },
507      { 0x6A, 0x62, 0x65, 0, 0, 0},
508      { 0x58, 0x5E, 0x5E },
509      0x277A7DE4, 0,
510    },
511    { "1024x768", 1024, 768, TVTYPE_NTSC, 0, 0,
512      { 0x84,    0,    0, 0x04, 0x03,    0, 0x20, 0x47,  0x12, 0x08, 0x50,    0, 0x50, 0x3A, 0x0F,    0,
513	   0,    0, 0xEF, 0x37, 0x77, 0x2A,    0,    0,     0,    0, 0xA1,    0, 0x05,    0,    0, 0x77,
514	0x0D, 0x05, 0xEF, 0x73, 0x0C, 0x56, 0x56, 0x90,  0x8B,    0,    0, 0xA3, 0x29, 0xB9, 0x6A, 0x10 },
515      {    0,    0,    0,    0,    0, 0x39, 0x87, 0xFF,  0x34, 0xB0, 0x03, 0x6F, 0xDC, 0xCD, 0x35, 0xF1,
516	0x5E, 0xA5, 0x7E, 0x5A, 0x33, 0x26, 0x87,    0,  0x01, 0x27, 0x08 },
517      { 0x6A, 0x62, 0x65, 0x91, 0x9C, 0 },
518      { 0x58, 0x4B, 0x4A },
519      0x14EB66D6, 0x14EB6118,
520    },
521    { "1024x768", 1024, 768, TVTYPE_PAL, 0, 0,
522      { 0x84,    0,    0, 0x04,    0,    0, 0x20, 0x57,  0x25, 0x35, 0x5A,    0, 0x4D, 0x40, 0x0F,    0,
523	   0,    0, 0xE8, 0x23, 0xD1, 0x18,    0,    0,     0,    0, 0x96,    0, 0x07,    0,    0, 0xFF,
524	0x0F, 0x0C, 0x87, 0x79,    0, 0x62, 0x53, 0x8E,  0x7B, 0x5B, 0x15, 0xA0, 0x22, 0xB6, 0x5A, 0x10 },
525      {    0,    0,    0,    0,    0, 0x40, 0xAF, 0xFF,  0x34, 0xB5, 0x03, 0x57, 0xA8, 0xC8, 0x35, 0xEC,
526	0x4C, 0xCC, 0x67, 0x5A, 0x14, 0x5C, 0x06,    0,  0x01, 0x1F, 0x07 },
527      { 0x6A, 0x62, 0x65, 0, 0, 0 },
528      { 0x50, 0x69, 0x69 },
529      0x1A8CC372, 0,
530    },
531    { "848x480", 848, 480, TVTYPE_NTSC, 0, 0,
532      { 0x84,    0,    0, 0x04, 0x03,    0, 0x20, 0xA7,  0xC1, 0x07, 0x50,    0, 0x50, 0x39, 0x0F,    0,
533	   0,    0, 0xF0, 0x29, 0x67, 0x31,    0,    0,     0,    0, 0x2A,    0, 0x03,    0,    0, 0x33,
534	0x11, 0x08, 0x47, 0x73, 0x0C, 0x56, 0x3C, 0x90,  0x65,    0,    0, 0xA3, 0x29, 0x7C,    0, 0x10 },
535      {    0,    0,    0,    0,    0, 0x39, 0xAF, 0x4F,  0x34, 0x44, 0x02, 0xE3, 0xC2, 0x93, 0x63, 0xAD,
536	0xFD, 0x2B, 0x7C, 0x17, 0x6D, 0xCA, 0x84,    0,  0x01, 0x2F, 0x05 },
537      { 0x6A, 0x62, 0x65, 0x91, 0x9C, 0 },
538      { 0x44, 0x45, 0x45 },
539      0x1D3CA863, 0x1D3CA05B,
540    },
541    { "848x480", 848, 480, TVTYPE_PAL, 0, 0,
542      { 0x04,    0,    0, 0x06,    0,    0, 0x20, 0xA7,  0xE6, 0x06, 0x5C,    0, 0x4E, 0x41, 0x0F,    0,
543	   0,    0, 0xE6, 0x23, 0x84, 0x18,    0,    0,     0,    0, 0x56,    0, 0x01,    0,    0, 0xCC,
544	0x0F, 0x0C, 0x60, 0x79,    0, 0x62, 0x46, 0x8E,  0x68, 0x5B, 0x15, 0xA0, 0x22, 0x94, 0x2A, 0x10 },
545      {    0,    0,    0,    0,    0, 0x40, 0xAF, 0x4F,  0x34, 0x57, 0x02, 0x7F, 0x31, 0xA9, 0x74, 0xD1,
546	0x2B, 0x5D, 0xAA, 0x58, 0xD7, 0x26, 0x83,    0,  0x01, 0x7F, 0x04 },
547      { 0x6A, 0x62, 0x65, 0, 0, 0 },
548      { 0x50, 0x49, 0x49 },
549      0x1F872818, 0,
550    },
551    { "720x480", 720, 480, TVTYPE_NTSC, 0, 0,
552      { 0x04,    0,    0, 0x06, 0x03,    0, 0x20, 0x3F,  0xB6, 0x07, 0x52,    0, 0x51, 0x3A, 0x0F,    0,
553	   0,    0, 0xED, 0x31, 0x50, 0x35,    0,    0,     0,    0, 0x1E,    0, 0x03,    0,    0, 0x33,
554	0x12, 0x08, 0x57, 0x75,    0, 0x56, 0x3A, 0x90,  0x61,    0,    0, 0xA3, 0x29, 0x76, 0xF1,    0 },
555      {    0,    0,    0,    0,    0, 0x3A, 0x47, 0xCF,  0x23, 0x57, 0x02, 0xBF, 0xAD, 0x8D, 0x63, 0xA4,
556	0xF3, 0x20, 0x36, 0x17, 0x92, 0x33, 0x84,    0,     0, 0xBF, 0x03 },
557      { 0x6A, 0x62, 0x65, 0x91, 0x9C, 0 },
558      { 0x42, 0x49, 0x48 },
559      0x1E555518, 0x1E554CC3,
560    },
561    { "720x576", 720, 576, TVTYPE_PAL, 0, 0,
562      { 0x04,    0,    0, 0x06,    0,    0, 0x20, 0x0F,  0xAF, 0x35, 0x5D,    0, 0x4F, 0x41, 0x0F,    0,
563	   0,    0, 0xF8, 0x3C, 0x73, 0x56,    0,    0,     0,    0, 0xED,    0, 0x02,    0,    0, 0x99,
564	0x18, 0x0C, 0x76, 0x7A, 0x44, 0x62, 0x30, 0x8E,  0x49, 0x5B, 0x15, 0xA0, 0x22, 0x5C, 0xBD,    0 },
565      {    0,    0,    0,    0,    0, 0x43, 0xF7, 0xCF,  0x22, 0xED, 0x02, 0x1D, 0x29, 0x75, 0x63, 0x88,
566	0xC6, 0xF0, 0xFA, 0x0F, 0xCC, 0x30, 0x94,    0,     0, 0x8F, 0x03 },
567      { 0x6A, 0x62, 0x65, 0, 0, 0 },
568      { 0x59, 0x4D, 0x4A },
569      0x2D839832, 0,
570    },
571    { "640x480Over", 640, 480, TVTYPE_NTSC, 0, 0,
572      { 0x04,    0,    0, 0x06, 0x03,    0, 0x20, 0x10,  0x76, 0x0A, 0x56, 0x05, 0x50, 0x3B, 0x0F,    0,
573	   0,    0, 0xED, 0x23, 0xC0, 0x34,    0,    0,     0,    0, 0xE5,    0, 0x02,    0,    0, 0x11,
574	0x17, 0x0C, 0x46, 0x73, 0x0C, 0x56, 0x2E, 0x90,  0x4E,    0,    0, 0xA3, 0x29, 0x59, 0xBA,    0 },
575      {    0,    0,    0,    0,    0, 0x3A, 0xCF, 0x7F,  0x22, 0x2F, 0x02, 0xFF, 0x59, 0x71, 0x62, 0x83,
576	0xC0, 0xE5, 0xC0, 0x05, 0x44, 0x44, 0x84,    0,     0, 0xFF, 0x02 },
577      { 0x6A, 0x62, 0x65, 0, 0, 0 },
578      { 0x4F, 0x49, 0x49 },
579      0x25EAAA5E, 0x25EA9FF4,
580    },
581    { "640x480Over", 640, 480, TVTYPE_PAL, 0, 0,
582      { 0x04,    0,    0, 0x06,    0,    0, 0x20, 0x23,  0x4E, 0x2A, 0x61,    0, 0x4D, 0x47, 0x0F,    0,
583	   0,    0, 0x4A, 0x0F, 0x37, 0x28,    0,    0,     0,    0, 0xC7,    0, 0x02,    0,    0, 0x88,
584	0x1B, 0x0C, 0xFF, 0x79,    0, 0x62, 0x28, 0x8E,  0x3E, 0x5B, 0x15, 0xA0, 0x22, 0x49, 0xCC,    0 },
585      {    0,    0,    0,    0,    0, 0x44, 0x47, 0x7F,  0x23, 0xF3, 0x01, 0x9F, 0x3F, 0x62, 0x62, 0x72,
586	0xA7, 0xCB, 0x05, 0x05, 0x33, 0x70, 0x83,    0,     0, 0x9F, 0x02 },
587      { 0x6A, 0x62, 0x65, 0x90, 0x99, 0 },
588      { 0x42, 0x49, 0x49 },
589      0x360C44BC, 0,
590    },
591    { "800x600Over", 800, 600, TVTYPE_NTSC, 0, 0,
592      { 0x84,    0,    0, 0x04, 0x03,    0, 0x20, 0x5F,  0xA4, 0x08, 0x51,    0, 0x50, 0x39, 0x0F,    0,
593	   0,    0, 0xE8, 0x33, 0xE6, 0x18,    0,    0,     0,    0, 0x32,    0, 0x03,    0,    0, 0x33,
594	0x11, 0x0A, 0x9B, 0x73, 0x08, 0x56, 0x3F, 0x90,  0x68,    0,    0, 0xA3, 0x29, 0x82, 0x02, 0x10 },
595      {    0,    0,    0,    0,    0, 0x39, 0x37, 0x21,  0x34, 0x98, 0x02, 0x01, 0x21, 0x97, 0x74, 0xB1,
596	0xFF, 0x34, 0xB6, 0x17, 0x11,    0, 0x85,    0,  0x01, 0x57, 0x05 },
597      { 0x6A, 0x62, 0x65, 0, 0, 0 },
598      { 0x42, 0x45, 0x45 },
599      0x1C61CEE0, 0x1C61C714,
600    },
601    { "800x600Over", 800, 600, TVTYPE_PAL, 0, 0,
602      { 0x84,    0,    0, 0x04,    0,    0, 0x20, 0x47,  0x90, 0x3B, 0x5A,    0, 0x4D, 0x3F, 0x0F,    0,
603	   0,    0, 0xE8, 0x24, 0x8F, 0x1C,    0,    0,     0,    0, 0x0E,    0, 0x03,    0,    0, 0xAA,
604	0x14, 0x0C, 0x2F, 0x79,    0, 0x62, 0x37, 0x8E,  0x54, 0x5B, 0x15, 0xA0, 0x22, 0x6E, 0xF4,    0 },
605      {    0,    0,    0,    0,    0, 0x41, 0xE7, 0x1F,  0x33, 0x89, 0x02, 0x8D, 0xCD, 0x85, 0x63, 0x9C,
606	0xE4, 0x13, 0xD4, 0x16, 0x28, 0x60, 0x84,    0,  0x01, 0x0F, 0x04 },
607      { 0x6A, 0x62, 0x65, 0x90, 0x99, 0 },
608      { 0x58, 0x48, 0x48 },
609      0x27E98D57, 0,
610    },
611    { "1024x768Over", 1024, 768, TVTYPE_NTSC, 0, 0,
612      { 0x84,    0,    0, 0x04, 0x03,    0, 0x20, 0x52,  0xAE, 0x09, 0x50,    0, 0x50, 0x39, 0x0F,    0,
613	   0,    0, 0xE8, 0x33, 0x0D, 0x15,    0,    0,     0,    0, 0x66,    0, 0x03,    0,    0, 0x55,
614	0x0F, 0x05, 0xF1, 0x73, 0x08, 0x56, 0x4A, 0x90,  0x79,    0,    0, 0xA3, 0x29, 0x9B, 0x33, 0x10 },
615      {    0,    0,    0,    0,    0, 0x39, 0xAF, 0xFF,  0x34, 0x47, 0x03, 0xAF, 0xC3, 0xB1, 0x34, 0xD1,
616	0x30, 0x68, 0x0B, 0x59, 0x66, 0x40, 0x86,    0,  0x01, 0x7F, 0x07 },
617      { 0x6A, 0x62, 0x65, 0, 0, 0 },
618      { 0x57, 0x45, 0x45 },
619      0x1844440E, 0x18443D63,
620    },
621    { "1024x768Over", 1024, 768, TVTYPE_PAL, 0, 0,
622      { 0x84,    0,    0, 0x04,    0,    0, 0x20, 0x56,  0xC0, 0x32, 0x5A,    0, 0x4D, 0x40, 0x0F,    0,
623	   0,    0, 0xC9, 0x14, 0x79, 0x1C,    0,    0,     0,    0, 0x6D,    0, 0x03,    0,    0, 0xDD,
624	0x0F, 0x0C, 0xCA, 0x79, 0x08, 0x62, 0x4B, 0x8E,  0x6F, 0x5B, 0x15, 0xA0, 0x22, 0xA1, 0x5A, 0x10 },
625      {    0,    0,    0,    0,    0, 0x40, 0xAF, 0xFF,  0x34, 0x38, 0x03, 0xCF, 0xDF, 0xB4, 0x34, 0xD6,
626	0x35, 0x75, 0x47, 0x59, 0x47, 0x20, 0x05,    0,  0x01, 0x2F, 0x06 },
627      { 0x6A, 0x62, 0x65, 0x90, 0x99, 0 },
628      { 0x51, 0x49, 0x49 },
629      0x1D7B0E38, 0,
630    },
631    { "848x480Over", 848, 480, TVTYPE_NTSC, 0, 0,
632      { 0x84,    0,    0, 0x04, 0x03,    0, 0x20, 0x4E,  0x9E, 0x07, 0x51,    0, 0x50, 0x3A, 0x0F,    0,
633	   0,    0, 0xED, 0x23, 0x08, 0x35,    0,    0,     0,    0, 0x3C,    0, 0x03,    0,    0, 0x44,
634	0x11, 0x0A, 0xF0, 0x73, 0x04, 0x56, 0x41, 0x90,  0x6A,    0,    0, 0xA3, 0x29, 0x87, 0x0A, 0x10 },
635      {    0,    0,    0,    0,    0, 0x39, 0xEF, 0x51,  0x33, 0x25, 0x02, 0x1F, 0x47, 0x9C, 0x74, 0xB5,
636	0x0C, 0x3D, 0xF1, 0x57, 0x30, 0x0C, 0x84,    0,  0x01, 0x1F, 0x04 },
637      { 0x6A, 0x62, 0x65, 0, 0, 0 },
638      { 0x58, 0x45, 0x45 },
639      0x1B9364A1, 0x1B933067,
640    },
641    { "848x480Over", 848, 480, TVTYPE_PAL, 0, 0,
642      { 0x84,    0,    0, 0x04,    0,    0, 0x20, 0xA5,  0xA1, 0x38, 0x5E,    0, 0x4D, 0x41, 0x0F,    0,
643	   0,    0, 0xC7, 0x1E, 0x79, 0x1C,    0,    0,     0,    0, 0x39,    0, 0x03,    0,    0, 0xBB,
644	0x12, 0x0C, 0x5A, 0x79, 0x0C, 0x62, 0x40, 0x8E,  0x5F, 0x5B, 0x15, 0xA0, 0x22, 0x88, 0x2A, 0x10 },
645      {    0,    0,    0,    0,    0, 0x3A, 0xAF, 0x4F,  0x34, 0x25, 0x02, 0x1F, 0x4F, 0x9B, 0x74, 0xB7,
646	0x0A, 0x3F, 0xF0, 0x58, 0x85,    0, 0x83,    0,  0x01, 0x1F, 0x04 },
647      { 0x6A, 0x62, 0x65, 0x90, 0x99, 0 },
648      { 0x4E, 0x49, 0x49 },
649      0x2264E5EC, 0,
650    },
651    { "720x480Over", 720, 480, TVTYPE_NTSC, 0, 0,
652      { 0x04,    0,    0,    0, 0x03,    0, 0x20, 0x28,  0x52, 0x08, 0x50,    0, 0x4E, 0x2F, 0x0F,    0,
653	   0,    0, 0x2D, 0x07, 0x28, 0x34,    0,    0,     0,    0, 0xEE,    0, 0x02,    0,    0, 0x11,
654	0x16, 0x08, 0xDF, 0x76, 0x04, 0x56, 0x31, 0x90,  0x51,    0,    0, 0xA3, 0x29, 0x5D, 0xC3,    0 },
655      {    0,    0,    0,    0, 0x08, 0x3A, 0x1F, 0xCF,  0x23, 0x0C, 0x02, 0x1F, 0xCE, 0x76, 0x23, 0x88,
656	0xC9, 0xEF, 0xFF, 0x05,    0,    0,    0,    0,     0, 0x1F, 0x03 },
657      { 0x6A, 0x62, 0x65, 0, 0, 0 },
658      { 0x4D, 0x49, 0x49 },
659      0x2466661D, 0x24665C1E,
660    },
661    { "720x576Over", 720, 576, TVTYPE_PAL, 0, 0,
662      { 0x04,    0,    0,    0,    0,    0, 0x20, 0x3F,  0x89, 0x35, 0x50,    0, 0x43, 0x2E, 0x0F,    0,
663	   0,    0, 0xE8, 0x23, 0x84, 0x20,    0,    0,     0,    0, 0xFF,    0, 0x02,    0,    0, 0x99,
664	0x17, 0x0C, 0x6F, 0x79, 0x48, 0x62, 0x34, 0x8E,  0x4F, 0x5B, 0x15, 0xA0, 0x22, 0x67, 0xFF,    0 },
665      {    0,    0,    0,    0,    0, 0x3A, 0x5F, 0xCF,  0x23, 0x70, 0x02, 0x5F, 0xBF, 0x7E, 0x23, 0x94,
666	0xD0, 0x27, 0x8F, 0x16,    0,    0, 0x04,    0,     0, 0x5F, 0x03 },
667      { 0x6A, 0x62, 0x65, 0x90, 0x99, 0 },
668      { 0x58, 0x48, 0x49 },
669      0x2A098ACB, 0,
670    },
671    { "720x576Noscale", 720, 576, TVTYPE_PAL, 0, 0,
672	{ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x78, 0x78, 0x38, 0x5a, 0x00, 0x49, 0x2e, 0x00, 0x80,
673	0x00, 0x00, 0x03, 0x0f, 0x16, 0x0c, 0x8d, 0x33, 0x89, 0x28, 0xee, 0x10, 0x02, 0x80, 0x00, 0x00,
674	0x13, 0x0c, 0x04, 0x7b, 0x48, 0x64, 0x30, 0x93, 0x49, 0x5f, 0x15, 0xa5, 0x23, 0x77, 0xff, 0x00,
675	},
676	{ 0x00, 0x00, 0x04, 0x00, 0x00, 0x45, 0x7f, 0xd0, 0x23, 0x70, 0x02, 0x7f, 0xd0, 0x83, 0x23, 0x9c,
677	0xdb, 0x08, 0xb7, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x03,   },
678
679       { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 },
680       { 0x58, 0x48, 0x49 },
681         0x2889338d, 0,
682	},
683
684    { "720x480Noscale", 720, 480, TVTYPE_NTSC, 0, 0,
685		{ 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x20, 0x78, 0x78, 0x06, 0x5a, 0x00, 0x49, 0x2f, 0x00, 0x80,
686		  0x00, 0x00, 0xed, 0x23, 0xde, 0x34, 0x97, 0xab, 0xca, 0x20, 0xee, 0x10, 0x02, 0x80, 0x00, 0x11,
687		  0x11, 0x08, 0x04, 0x76, 0x08, 0x5a, 0x31, 0x95, 0x51, 0x00, 0x00, 0xaa, 0x2b, 0x7a, 0xdb, 0x00,
688		},
689		{ 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x77, 0xd0, 0x23, 0x0c, 0x02, 0x77, 0xd0, 0x83, 0x23, 0x98,
690		  0xde, 0xe8, 0xc4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x03,   },
691		{ 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 },
692		{ 0x58, 0x48, 0x49 },
693	  0x20caab97, 0,
694    },
695
696    { "720x480pal", 720, 480, TVTYPE_PAL, 0, 0,
697      { 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x74,  0x8c, 0x06, 0x50, 0x00, 0x4e, 0x2f, 0x00, 0x07,
698        0x00, 0x00, 0xa9, 0x19, 0x6e, 0x24, 0xe3, 0x33,  0x89, 0x28, 0xee, 0x10, 0x02, 0x80, 0x00, 0x11,
699        0x11, 0x08, 0x04, 0x76, 0x08, 0x5a, 0x31, 0x95,  0x51, 0x00, 0x00, 0xaa, 0x2b, 0x7a, 0xdb, 0x00,
700        },
701      { 0x00, 0x00, 0x04, 0x00, 0x00, 0x40, 0x77, 0xd0,  0x23, 0x0c, 0x02, 0x77, 0xd0, 0xb0, 0x23, 0x88,
702        0xc9, 0x30, 0xd0, 0x16, 0x00, 0x00, 0x00, 0x00,  0x00, 0x77, 0x03 },
703      { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 },
704      { 0x58, 0x48, 0x49 },
705      0x288933e3, 0,
706    },
707    { NULL, 0, 0, 0, 0, 0,
708      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
709	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
710	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 },
711      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
712	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0 },
713      { 0, 0, 0, 0, 0, 0 },
714      { 0, 0, 0 },
715      0, 0,
716    }
717};
718
719/*
720 *
721 * VT1625 modetables
722 *
723 */
724
725static DisplayModeRec VT1625Modes[] = {
726/* all available modes are: */
727/*  { MODEPREFIX("640x480"), ... ,   MODESUFFIXNTSC },
728    { MODEPREFIX("800x600"), ... ,   MODESUFFIXNTSC },
729    { MODEPREFIX("1024x768"), ... ,   MODESUFFIXNTSC },
730
731    { MODEPREFIX("720x480"), ... ,   MODESUFFIX480P },
732
733    { MODEPREFIX("640x480"), ... ,   MODESUFFIX720P },
734    { MODEPREFIX("800x600"), ... ,   MODESUFFIX720P },
735    { MODEPREFIX("1024x768"), ... ,   MODESUFFIX720P },
736    { MODEPREFIX("720x480"), ... ,   MODESUFFIX720P },
737    { MODEPREFIX("720x576"), ... ,   MODESUFFIX720P },
738
739    { MODEPREFIX("640x480"), ... ,   MODESUFFIX1080I },
740    { MODEPREFIX("800x600"), ... ,   MODESUFFIX1080I },
741    { MODEPREFIX("1024x768"), ... ,   MODESUFFIX1080I },
742    { MODEPREFIX("720x480"), ... ,   MODESUFFIX1080I },
743    { MODEPREFIX("720x576"), ... ,   MODESUFFIX1080I },
744
745    { MODEPREFIX("640x480Over"), ... ,   MODESUFFIXNTSC },
746    { MODEPREFIX("800x600Over"), ... ,   MODESUFFIXNTSC },
747    { MODEPREFIX("1024x768Over"), ... ,   MODESUFFIXNTSC },
748    { MODEPREFIX("720x480Over"), ... ,   MODESUFFIXNTSC },
749
750    { MODEPREFIX("640x480Over"), ... ,   MODESUFFIXPAL },
751    { MODEPREFIX("800x600Over"), ... ,   MODESUFFIXPAL },
752    { MODEPREFIX("1024x768Over"), ... ,   MODESUFFIXPAL },
753    { MODEPREFIX("720x576Over"), ... ,   MODESUFFIXPAL },*/
754/*                                clock    HR   SH1   SH2   HFL       VR   SV1   SV2   VFL*/
755    { MODEPREFIX("640x480"),      30000,  640,  688,  744,  784, 0,  480,  488,  495,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL   },
756    { MODEPREFIX("800x600"),      34500,  800,  816,  880,  920, 0,  600,  604,  620,  750, 0, V_PHSYNC | V_PVSYNC, MODESUFFIXPAL   },
757    { MODEPREFIX("1024x768"),     57000, 1024, 1040, 1112, 1200, 0,  768,  829,  840,  950, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL   },
758    { MODEPREFIX("720x576"),      34500,  720,  760,  800, 1000, 0,  576,  577,  580,  690, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL   },
759    { MODEPREFIX("720x576Over"),  27000,  720,  768,  800,  864, 0,  576,  577,  579,  625, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL   },
760
761    { MODEPREFIX("1280x720"),     74250, 1280, 1320, 1376, 1650, 0,  720,  722,  728,  750, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX720P  },
762    { MODEPREFIX("1920x1080"),    74250, 1920, 1960, 2064, 2200, 0, 1080, 1083, 1087, 1125, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX1080I },
763
764    { MODEPREFIX("640x480"),      24696,  640,  656,  744,  784, 0,  480,  482,  483,  525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
765    { MODEPREFIX("720x480Under"), 34000,  720,  728,  744,  784, 0,  480,  490,  496,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
766    { MODEPREFIX("720x480Fit"),   28980,  720,  728,  776,  840, 0,  480,  484,  499,  575, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
767    { MODEPREFIX("720x480Over"),  27025,  720,  752,  792,  800, 0,  480,  482,  485,  525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXNTSC  },
768
769    { MODEPREFIX("720x480Under"), 28224,  720,  728,  744,  784, 0,  480,  490,  496,  600, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX480P  },
770    { MODEPREFIX("720x480Fit"),   28980,  720,  728,  776,  840, 0,  480,  484,  499,  575, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX480P  },
771    { MODEPREFIX("720x480Over"),  27027,  720,  784,  808,  858, 0,  480,  483,  486,  525, 0, V_NHSYNC | V_NVSYNC, MODESUFFIX480P  },
772};
773
774static struct VT162XTableRec
775VT1625Table[] = {
776    { "640x480", 640, 480, TVTYPE_NTSC, 0, 0,
777      /*  00                                                                                         0F */
778      { 0x03,    0, 0x10, 0x40, 0x10,    0,    0, 0x28,  0x47, 0x15, 0x7B,    0, 0x50, 0x57,    0, 0x9E,
779	   0, 0x80, 0xFA, 0x21, 0xE0, 0x68, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x41, 0x80,    0, 0x10,
780	0x1C, 0x2A, 0xCB, 0x77,    0,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
781      /*  4A                            4F    50                                                     59 */
782      { 0xC5,    0,    0, 0x01, 0x10, 0x4A, 0x0F, 0x83,  0x23, 0x57, 0x22, 0x59, 0x83, 0x7F, 0x23, 0x91,
783      /*  5A                            5F    60                       64 */
784	0xD2, 0x13, 0x7C, 0x16, 0x49,    0, 0x92, 0x20,     0, 0x7F, 0x03 },
785      /* RBG 65,66,67,27,2b,2c */
786      { 0x55, 0x37, 0x5C,    0,    0,    0 },
787      /* Y-Cb-Cr 65,66,67 */
788      { 0x55, 0x56, 0x55 },
789      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
790      0x21F07BD6, 0x21F087BE,
791    },
792    { "720x480Under", 720, 480, TVTYPE_NTSC, 0, 0,
793      /*  00                                                                                         0F */
794      { 0x03,    0, 0x10, 0x1F, 0x00,    0,    0, 0x2A,  0x41, 0x0A, 0x7B, 0x15, 0x50, 0x57,    0, 0xB7,
795	   0, 0x80, 0xAB, 0x27, 0x70, 0x2C, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x41, 0x80,    0, 0x10,
796	0x1C, 0x08, 0xCB, 0x77, 0x00,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
797       /*  4A                            4F    50                                                     59 */
798       { 0xC5, 0x0F, 0x00, 0x01, 0x10, 0x4A, 0x0F, 0xCF,  0x23, 0x57, 0x22, 0x59, 0x83, 0x7F, 0x23, 0x91,
799       /*  5A                            5F    60                       64 */
800	0xD2, 0x13, 0x7A, 0x16, 0x49, 0xF1, 0x92, 0xA8,  0xFF, 0x7F, 0x03 },
801       /* RBG 65,66,67,27,2b,2c */
802       { 0x55, 0x37, 0x5C,    0,    0,    0 },
803       /* Y-Cb-Cr 65,66,67 */
804       { 0x55, 0x54, 0x56 },
805       /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
806       0x21F07BD6, 0x21F04CC3,
807     },
808     { "720x480Fit", 720, 480, TVTYPE_NTSC, 0, 0,
809       /*  00                                                                                         0F */
810       { 0x03,    0, 0x10, 0x1F, 0x00,    0,    0, 0x41,  0x3B, 0x0B, 0x7B, 0x15, 0x50, 0x57,    0, 0xB7,
811            0, 0x80, 0xCD, 0x21, 0x73, 0x34, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x43, 0x80,    0, 0x10,
812         0x1C, 0x08, 0xCA, 0x77, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
813       /*  4A                            4F    50                                                     59 */
814       { 0xC5, 0x0F,    0, 0x01, 0x10, 0x4A, 0x47, 0xCF,  0x23, 0x3E, 0x22, 0x59, 0x8B, 0x7F, 0x23, 0x91,
815       /*  5A                            5F    60                       64 */
816         0xD2, 0x13, 0x7A, 0x16, 0x30, 0xD4, 0x8C, 0x28,  0xFF, 0x97, 0x03 },
817       /* RBG 65,66,67,27,2b,2c */
818       { 0x55, 0x37, 0x5C,    0,    0,    0 },
819       /* Y-Cb-Cr 65,66,67 */
820       { 0x55, 0x54, 0x56 },
821       /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
822       0x21F07BD6, 0x21F0EBE8,
823     },
824     { "720x480Over", 720, 480, TVTYPE_NTSC, 0, 0,
825       /*  00                                                                                         0F */
826       { 0x03,    0, 0x10, 0x1F, 0x00,    0,    0, 0x02,  0x10, 0x00, 0x7B, 0x15, 0x50, 0x57,    0, 0xB7,
827            0, 0x80, 0xAD, 0x21, 0x64, 0x34, 0xD6, 0x7B,  0xF0, 0x21, 0x00, 0x50, 0x00, 0x80,    0, 0x10,
828         0x1C, 0x08, 0xE5, 0x77, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
829       /*  4A                            4F    50                                                     59 */
830       { 0xC5, 0x0F,    0, 0x01, 0x10, 0x4A, 0x1F, 0xD2,  0x23, 0x0C, 0x22, 0x59, 0xC0, 0x7E, 0x23, 0x8C,
831       /*  5A                            5F    60                       64 */
832         0xD0, 0xF6, 0x7C, 0x06,    0, 0x34, 0x80, 0x28,  0xFF, 0x1F, 0x03 },
833       /* RBG 65,66,67,27,2b,2c */
834       { 0x55, 0x37, 0x5C,    0,    0,    0 },
835       /* Y-Cb-Cr 65,66,67 */
836       { 0x55, 0x54, 0x56 },
837       /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
838       0x21F07BD6, 0x21F05C1E,
839     },
840    { "720x480Under", 720, 480, TVTYPE_480P, 0, 0,
841      /*  00                                                                                         0F */
842      { 0x03,    0, 0x10, 0x40, 0x10,    0,    0, 0x2A,  0x41, 0x14, 0x7B,    0, 0x50, 0x57,    0, 0xB7,
843	   0, 0x80, 0xAB, 0x27, 0x70, 0x2C, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x41, 0x80,    0, 0x01,
844	0x2F, 0x08, 0xCB, 0x7E,    0,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
845      /*  4A                            4F    50                                                     59 */
846      { 0xC5, 0x0F,    0, 0x01,   0, 0x4A, 0x0F, 0xCF,  0x23, 0x57, 0x22, 0x59, 0x83, 0x7F, 0x23, 0x91,
847      /*  5A                            5F    60                       64 */
848	0xD2, 0x13, 0x7A, 0x16, 0x49, 0xF1, 0x92, 0xA8,     0, 0x7F, 0x03 },
849      /* RBG 65,66,67,27,2b,2c */
850      { 0x55, 0x37, 0x5C,    0,    0,    0 },
851      /* Y-Cb-Cr 65,66,67 */
852      { 0x55, 0x54, 0x56 },
853      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
854      0x21F07BD6, 0x21F087BE,
855    },
856    { "720x480Fit", 720, 480, TVTYPE_480P, 0, 0,
857      /*  00                                                                                         0F */
858      { 0x03,    0, 0x10, 0x40, 0x10,    0,    0, 0x41,  0x43, 0xFF, 0x7B,    0, 0x50, 0x57,    0, 0xB7,
859           0, 0x80, 0xCD, 0x21, 0x73, 0x34, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x43, 0x80,    0, 0x01,
860        0x2F, 0x08, 0xCA, 0x7E, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
861      /*  4A                            4F    50                                                     59 */
862      { 0xC5, 0x0F,    0, 0x01,    0, 0x4A, 0x47, 0xCF,  0x23, 0x3E, 0x22, 0x59, 0x8B, 0x7F, 0x23, 0x91,
863      /*  5A                            5F    60                       64 */
864        0xD2, 0x13, 0x7A, 0x16, 0x30, 0xD4, 0x8C, 0x28,     0, 0x97, 0x03 },
865      /* RBG 65,66,67,27,2b,2c */
866      { 0x55, 0x37, 0x5C,    0,    0,    0 },
867      /* Y-Cb-Cr 65,66,67 */
868      { 0x55, 0x54, 0x56 },
869      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
870      0x21F07BD6, 0x21F087BE,
871    },
872    { "720x480Over", 720, 480, TVTYPE_480P, 0, 0,
873      /*  00                                                                                         0F */
874      { 0x03,    0, 0x10, 0x40, 0x10,    0,    0, 0x01,  0x20,    0, 0x7B,    0, 0x50, 0x57,    0, 0x9E,
875           0, 0x80, 0x04, 0x08, 0x08, 0x10, 0xD6, 0x7B,  0xF0, 0x21, 0x02, 0x50, 0x00, 0x80,    0, 0x01,
876        0x2F, 0x08, 0xDC, 0x7E, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
877      /*  4A                            4F    50                                                     59 */
878      { 0xC5, 0x0F,    0, 0x01,    0, 0x4A, 0x59, 0xCF,  0x23, 0x0C, 0x22, 0x59, 0xCF, 0x7F, 0x23, 0x91,
879      /*  5A                            5F    60                       64 */
880        0xD2, 0xE1, 0x7D, 0x06,    0,    0, 0x80, 0x28,     0, 0x59, 0x03 },
881      /* RBG 65,66,67,27,2b,2c */
882      { 0x55, 0x37, 0x5C,    0,    0,    0 },
883      /* Y-Cb-Cr 65,66,67 */
884      { 0x55, 0x54, 0x56 },
885      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
886      0x21F07BD6, 0x21F087BE,
887    },
888
889    { "1280x720", 1280, 720, TVTYPE_720P, 0, 0,
890      /*  00                                                                                         0F */
891      { 0x83,    0, 0x10, 0x40, 0x94, 0x00,    0, 0xFF,  0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E,
892        0x00, 0x80, 0x89, 0x10, 0x63, 0x24, 0x00, 0x00,  0x00, 0x00,    0, 0x50, 0x40, 0x80, 0x00, 0x03,
893        0x25, 0x00, 0x00, 0x7E, 0x00,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
894/* hdtv - 4A 0x85, 4B 0x0A */
895      /*  4A                            4F    50                                                     59 */
896      { 0xC5, 0x0F,    0, 0x01,    0, 0x00, 0x71, 0xFF,  0x46, 0xED, 0x12, 0x71, 0xFF, 0x50, 0x46, 0x30,
897      /*  5A                            5F    60                       64 */
898        0x30, 0x1C, 0x47, 0x96, 0x00, 0x00, 0x80, 0x28,  0x00, 0x71, 0x36 },
899      /* RBG 65,66,67,27,2b,2c */
900      { 0x55, 0x39, 0x66,    0,    0,    0 },
901      /* Y-Cb-Cr 65,66,67 */
902      { 0x55, 0x56, 0x55 },
903      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
904      0x0, 0x0,
905    },
906
907    { "1920x1080", 1920, 1080, TVTYPE_1080I, 0, 0,
908      /*  00                                                                                         0F */
909      { 0x83,    0, 0x10, 0x4A, 0x86, 0x32,    0, 0x8B,  0x3D, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E,
910        0x00, 0x80, 0x4A, 0x08, 0x37, 0x14, 0x00, 0x00,  0x00, 0x00, 0x00, 0x50, 0x04, 0x80, 0x00, 0x03,
911        0x25, 0x00, 0x00, 0x7E, 0x00,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
912      /*  4A                            4F    50                                                     59 */
913      { 0xC5, 0x0F,    0, 0x01,    0, 0x00, 0x97, 0x7F,  0x78, 0x64, 0x14, 0x97, 0x7f, 0x59, 0x78, 0xb0,
914      /*  5A                            5F    60                       64 */
915        0x1a, 0xdc, 0x5d, 0x08, 0x00, 0x00, 0x80, 0x28,  0xFF, 0x97, 0x28 },
916      /* RBG 65,66,67,27,2b,2c */
917      { 0x55, 0x39, 0x66,    0,    0,    0 },
918      /* Y-Cb-Cr 65,66,67 */
919      { 0x55, 0x56, 0x55 },
920      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
921      0x0, 0x0,
922    },
923
924    { "640x480", 640, 480, TVTYPE_PAL, 0, 0,
925      /*  00                                                                                         0F */
926      { 0x03,    0, 0x10, 0x1F, 0x03,    0,    0, 0xF2,  0x42, 0x0A, 0x88, 0x00, 0x55, 0x5E,    0, 0xB0,
927           0, 0x80, 0x0A, 0x09, 0x19, 0x28, 0xCB, 0x8A,  0x09, 0x2A,    0, 0x50, 0x41, 0x80,    0, 0x10,
928        0x17, 0x1C, 0x35, 0x7D, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
929      /*  4A                            4F    50                                                     59 */
930      { 0xC5, 0x0F,    0, 0x01, 0x10, 0x51, 0xE7, 0x81,  0x23, 0x57, 0x22, 0x5F, 0x6F, 0x7F, 0x23, 0x94,
931      /*  5A                            5F    60                       64 */
932        0xD0, 0x1C, 0x8F, 0x16, 0xE1, 0x38, 0x7A, 0x28,  0xFF, 0xBF, 0x03 },
933      /* RBG 65,66,67,27,2b,2c */
934      { 0x6A, 0x62, 0x65, 0x8D, 0x96, 0x20 },
935      /* Y-Cb-Cr 65,66,67 */
936      { 0x42, 0x49, 0x49 },
937      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
938      0x2D66772D, 0,
939    },
940
941    { "720x576", 720, 576, TVTYPE_PAL, 0, 0,
942      /*  00                                                                                         0F */
943      { 0x03, 0x00, 0x10, 0x1f, 0x03, 0x00, 0x00, 0xc9,  0x4c, 0x10, 0x7c, 0x00, 0x56, 0x57, 0x07, 0xbf,
944        0x00, 0x80, 0x09, 0x08, 0x17, 0x24, 0xcb, 0x8a,  0x09, 0x2a, 0x06, 0x50, 0x00, 0x80, 0x00, 0x10,
945        0x14, 0x0c, 0x32, 0x7e, 0x00, 0x5f, 0x34, 0x8c,  0x4f, 0x5e, 0x15, 0xa2, 0x22, 0x80, 0xd3, 0x10
946      },
947      /*  4A                            4F    50                                                     59 */
948      { 0xc5, 0x0f, 0x00, 0x01, 0x00, 0x4b, 0xe7, 0xd2,  0x23, 0xb1, 0x22, 0x5f, 0x61, 0x7f, 0x23, 0x90,
949      /*  5A                            5F    60                       64 */
950	0xcd, 0x35, 0x83, 0x16, 0x4F, 0x76, 0x8d, 0xa9,  0xff, 0x4f, 0x04 },
951      /* RBG 65,66,67,27,2b,2c */
952      { 0x6A, 0x62, 0x65, 0x90, 0x99,    0 },
953      /* Y-Cb-Cr 65,66,67 */
954      { 0x58, 0x48, 0x49 },
955      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
956      0x2A098ACB, 0,
957    },
958
959    { "720x576Over", 720, 576, TVTYPE_PAL, 0, 0,
960      /*  00                                                                                         0F */
961      { 0x03,    0, 0x10, 0x1F, 0x03,    0,    0, 0x39,  0x19, 0x01, 0x88, 0x00, 0x55, 0x5E, 0x00, 0x9E,
962           0, 0x80, 0x04, 0x08, 0x08, 0x10, 0xCB, 0x8A,  0x09, 0x2A, 0x00, 0x50, 0x41, 0x80,    0, 0x10,
963        0x17, 0x0C, 0x32, 0x7D, 0x02,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
964      /*  4A                            4F    50                                                     59 */
965      { 0xC5, 0x0F,    0, 0x01, 0x10, 0x51, 0x5F, 0xCF,  0x23, 0x70, 0x22, 0x5F, 0xD0, 0x7F, 0x23, 0x92,
966      /*  5A                            5F    60                       64 */
967        0xCE, 0x0C, 0x8E, 0x16,    0,    0, 0x80, 0x20,  0xFF, 0x5F, 0x03 },
968      /* RBG 65,66,67,27,2b,2c */
969      { 0x6A, 0x62, 0x65, 0x90, 0x99,    0 },
970      /* Y-Cb-Cr 65,66,67 */
971      { 0x58, 0x48, 0x49 },
972      /* Subcarrier 19,18,17,16, DotCrawl Subcarrier (set bit 3 of reg 11 then subcarrier) */
973      0x2A098ACB, 0,
974    },
975
976/*
977    { "1920x1080", 1920, 540, TVTYPE_NTSC, 0, 0,
978      { 0x83,    0, 0x10, 0x4A, 0x86, 0x39,    0, 0x8B,  0x3D, 0x32,    0,    0,    0,    0,    0, 0x9E,
979	   0, 0x80, 0x4A, 0x08, 0x37, 0x14,    0,    0,     0,    0,    0, 0x50, 0x44, 0x80,    0, 0x03,
980	0x25,    0,    0, 0x7E,    0,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
981      { 0xC5, 0x0F,    0, 0x01,    0,    0, 0x97, 0x7F,  0x78, 0x64, 0x14, 0x97, 0x7F, 0x59, 0x78, 0xB0,
982	0x1A, 0xEC, 0xFA, 0x08,    0,    0, 0x80, 0x20,  0xFF, 0x97, 0x28 },
983      { 0x55, 0x56, 0x55, 0x91, 0x9C, 0 },
984      { 0x42, 0x49, 0x48 },
985      0x1E555518, 0x1E554CC3,
986    },
987    { "960x540", 960, 540, TVTYPE_NTSC, 0, 0,
988      { 0x83,    0, 0x10, 0x4A, 0x86, 0x39,    0, 0x8B,  0x3D, 0x32,    0,    0,    0,    0,    0, 0x9E,
989	   0, 0x80, 0x4A, 0x08, 0x37, 0x14,    0,    0,     0,    0,    0, 0x50, 0x44, 0x80,    0, 0x03,
990	0x25,    0,    0, 0x7E,    0,    0,    0,    0,     0,    0,    0,    0,    0,    0,    0,    0 },
991      { 0xC5, 0x0F,    0, 0x01,    0,    0, 0x97, 0x7F,  0x78, 0x64, 0x14, 0x97, 0x7F, 0x59, 0x78, 0xB0,
992	0x1A, 0xEC, 0xFA, 0x08,    0,    0, 0x80, 0x20,  0xFF, 0x97, 0x28 },
993      { 0x55, 0x56, 0x55, 0x91, 0x9C, 0 },
994      { 0x42, 0x49, 0x48 },
995      0x1E555518, 0x1E554CC3,
996    },
997*/
998    { NULL, 0, 0, 0, 0, 0,
999      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
1000	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
1001	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0 },
1002      { 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0,
1003	0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0 },
1004      { 0, 0, 0, 0, 0, 0 },
1005      { 0, 0, 0 },
1006      0, 0,
1007    }
1008};
1009
1010#endif /* _VIA_VT162X_H_ */
1011