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