ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / drivers / video / sis / 310vtbl.h
1 /* $XFree86$ */
2 /*
3  * Register settings for SiS 315/330 series
4  *
5  * Copyright (C) 2001-2004 by Thomas Winischhofer, Vienna, Austria
6  *
7  * If distributed as part of the Linux kernel, the following license terms
8  * apply:
9  *
10  * * This program is free software; you can redistribute it and/or modify
11  * * it under the terms of the GNU General Public License as published by
12  * * the Free Software Foundation; either version 2 of the named License,
13  * * or any later version.
14  * *
15  * * This program is distributed in the hope that it will be useful,
16  * * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * * GNU General Public License for more details.
19  * *
20  * * You should have received a copy of the GNU General Public License
21  * * along with this program; if not, write to the Free Software
22  * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
23  *
24  * Otherwise, the following license terms apply:
25  *
26  * * Redistribution and use in source and binary forms, with or without
27  * * modification, are permitted provided that the following conditions
28  * * are met:
29  * * 1) Redistributions of source code must retain the above copyright
30  * *    notice, this list of conditions and the following disclaimer.
31  * * 2) Redistributions in binary form must reproduce the above copyright
32  * *    notice, this list of conditions and the following disclaimer in the
33  * *    documentation and/or other materials provided with the distribution.
34  * * 3) All advertising materials mentioning features or use of this software
35  * *    must display the following acknowledgement: "This product includes
36  * *    software developed by Thomas Winischhofer, Vienna, Austria."
37  * * 4) The name of the author may not be used to endorse or promote products
38  * *    derived from this software without specific prior written permission.
39  * *
40  * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
41  * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
43  * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
44  * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45  * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
46  * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
47  * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
48  * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
49  * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50  *
51  * Author:      Thomas Winischhofer <thomas@winischhofer.net>
52  *
53  */
54
55 typedef struct _SiS310_StStruct
56 {
57         UCHAR St_ModeID;
58         USHORT St_ModeFlag;
59         UCHAR St_StTableIndex;
60         UCHAR St_CRT2CRTC;
61         UCHAR St_ResInfo;
62         UCHAR VB_StTVFlickerIndex;
63         UCHAR VB_StTVEdgeIndex;
64         UCHAR VB_StTVYFilterIndex;
65         UCHAR St_PDC;
66 } SiS310_StStruct;
67
68 static const SiS310_StStruct SiS310_SModeIDTable[]=
69 {
70         {0x01,0x9208,0x01,0x00,0x00,0x00,0x01,0x00, 0x40},
71         {0x01,0x1210,0x14,0x01,0x01,0x00,0x01,0x00, 0x40},
72         {0x01,0x1010,0x17,0x02,0x02,0x00,0x01,0x01, 0x40},
73         {0x03,0x8208,0x03,0x00,0x00,0x00,0x01,0x02, 0x40},
74         {0x03,0x0210,0x16,0x01,0x01,0x00,0x01,0x02, 0x40},
75         {0x03,0x0010,0x18,0x02,0x02,0x00,0x01,0x03, 0x40},
76         {0x05,0x9209,0x05,0x00,0x00,0x00,0x00,0x04, 0x40},
77         {0x06,0x8209,0x06,0x00,0x00,0x00,0x00,0x05, 0x40},
78         {0x07,0x0000,0x07,0x03,0x03,0x00,0x01,0x03, 0x40},
79         {0x07,0x0000,0x19,0x02,0x02,0x00,0x01,0x03, 0x40},
80         {0x0d,0x920a,0x0d,0x00,0x00,0x00,0x00,0x04, 0x40},
81         {0x0e,0x820a,0x0e,0x00,0x00,0x00,0x00,0x05, 0x40},
82         {0x0f,0x0202,0x11,0x01,0x01,0x00,0x00,0x05, 0x40},
83         {0x10,0x0212,0x12,0x01,0x01,0x00,0x00,0x05, 0x40},
84         {0x11,0x0212,0x1a,0x04,0x04,0x00,0x00,0x05, 0x40},
85         {0x12,0x0212,0x1b,0x04,0x04,0x00,0x00,0x05, 0x40},
86         {0x13,0x021b,0x1c,0x00,0x00,0x00,0x00,0x04, 0x40},
87         {0x12,0x0010,0x18,0x02,0x02,0x00,0x00,0x05, 0x40},
88         {0x12,0x0210,0x18,0x01,0x01,0x00,0x00,0x05, 0x40},
89         {0xff,0x0000,0x00,0x00,0x00,0x00,0x00,0x00, 0x40}
90 };
91
92 typedef struct _SiS310_ExtStruct
93 {
94         UCHAR  Ext_ModeID;
95         USHORT Ext_ModeFlag;
96         UCHAR  Ext_ModeOffset;
97         USHORT Ext_VESAID;
98         UCHAR  Ext_RESINFO;
99         UCHAR  VB_ExtTVFlickerIndex;
100         UCHAR  VB_ExtTVEdgeIndex;
101         UCHAR  VB_ExtTVYFilterIndex;
102         UCHAR  VB_ExtTVYFilterIndexROM661;
103         UCHAR  REFindex;
104 } SiS310_ExtStruct;
105
106 static const SiS310_ExtStruct  SiS310_EModeIDTable[]=
107 {
108         {0x6a,0x2212,0x04,0x0102,SIS_RI_800x600,  0x00,0x00,0x07,0x06,0x00}, /* 800x600x? */
109         {0x2e,0x0a1b,0x03,0x0101,SIS_RI_640x480,  0x00,0x00,0x05,0x05,0x08}, /* 640x480x8 */
110         {0x2f,0x0a1b,0x03,0x0100,SIS_RI_640x400,  0x00,0x00,0x05,0x05,0x10}, /* 640x400x8 */
111         {0x30,0x2a1b,0x04,0x0103,SIS_RI_800x600,  0x00,0x00,0x07,0x06,0x00}, /* 800x600x8 */
112         {0x31,0x0a1b,0x0a,0x0000,SIS_RI_720x480,  0x00,0x00,0x06,0x06,0x11}, /* 720x480x8 */
113         {0x32,0x0a1b,0x0a,0x0000,SIS_RI_720x576,  0x00,0x00,0x06,0x06,0x12}, /* 720x576x8 */
114         {0x33,0x0a1d,0x0a,0x0000,SIS_RI_720x480,  0x00,0x00,0x06,0x06,0x11}, /* 720x480x16 */
115         {0x34,0x2a1d,0x0a,0x0000,SIS_RI_720x576,  0x00,0x00,0x06,0x06,0x12}, /* 720x576x16 */
116         {0x35,0x0a1f,0x0a,0x0000,SIS_RI_720x480,  0x00,0x00,0x06,0x06,0x11}, /* 720x480x32 */
117         {0x36,0x2a1f,0x0a,0x0000,SIS_RI_720x576,  0x00,0x00,0x06,0x06,0x12}, /* 720x576x32 */
118         {0x37,0x0212,0x05,0x0104,SIS_RI_1024x768, 0x00,0x00,0x08,0x07,0x13}, /* 1024x768x? */
119         {0x38,0x0a1b,0x05,0x0105,SIS_RI_1024x768, 0x00,0x00,0x08,0x07,0x13}, /* 1024x768x8 */
120         {0x3a,0x0e3b,0x06,0x0107,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a}, /* 1280x1024x8 */
121         {0x3c,0x0e3b,0x07,0x0130,SIS_RI_1600x1200,0x00,0x00,0x00,0x00,0x1e}, /* 1600x1200x8 */
122         {0x3d,0x0e7d,0x07,0x0131,SIS_RI_1600x1200,0x00,0x00,0x00,0x00,0x1e}, /* 1600x1200x16 */
123         {0x40,0x9a1c,0x00,0x010d,SIS_RI_320x200,  0x00,0x00,0x04,0x04,0x25}, /* 320x200x15 */
124         {0x41,0x9a1d,0x00,0x010e,SIS_RI_320x200,  0x00,0x00,0x04,0x04,0x25}, /* 320x200x16 */
125         {0x43,0x0a1c,0x03,0x0110,SIS_RI_640x480,  0x00,0x00,0x05,0x05,0x08},
126         {0x44,0x0a1d,0x03,0x0111,SIS_RI_640x480,  0x00,0x00,0x05,0x05,0x08}, /* 640x480x16 */
127         {0x46,0x2a1c,0x04,0x0113,SIS_RI_800x600,  0x00,0x00,0x07,0x06,0x00},
128         {0x47,0x2a1d,0x04,0x0114,SIS_RI_800x600,  0x00,0x00,0x07,0x06,0x00}, /* 800x600x16 */
129         {0x49,0x0a3c,0x05,0x0116,SIS_RI_1024x768, 0x00,0x00,0x00,0x07,0x13},
130         {0x4a,0x0a3d,0x05,0x0117,SIS_RI_1024x768, 0x00,0x00,0x08,0x07,0x13}, /* 1024x768x16 */
131         {0x4c,0x0e7c,0x06,0x0119,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a},
132         {0x4d,0x0e7d,0x06,0x011a,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a}, /* 1280x1024x16 */
133         {0x50,0x9a1b,0x00,0x0132,SIS_RI_320x240,  0x00,0x00,0x04,0x04,0x26}, /* 320x240x8  */
134         {0x51,0xba1b,0x01,0x0133,SIS_RI_400x300,  0x00,0x00,0x07,0x07,0x27}, /* 400x300x8  */
135         {0x52,0xba1b,0x02,0x0134,SIS_RI_512x384,  0x00,0x00,0x00,0x00,0x28}, /* 512x384x8  */
136         {0x56,0x9a1d,0x00,0x0135,SIS_RI_320x240,  0x00,0x00,0x04,0x04,0x26}, /* 320x240x16 */
137         {0x57,0xba1d,0x01,0x0136,SIS_RI_400x300,  0x00,0x00,0x07,0x07,0x27}, /* 400x300x16 */
138         {0x58,0xba1d,0x02,0x0137,SIS_RI_512x384,  0x00,0x00,0x00,0x00,0x28}, /* 512x384x16 */
139         {0x59,0x9a1b,0x00,0x0138,SIS_RI_320x200,  0x00,0x00,0x04,0x04,0x25}, /* 320x200x8  */
140         {0x5a,0x021b,0x00,0x0138,SIS_RI_320x240,  0x00,0x00,0x00,0x00,0x3f}, /* 320x240x8  fstn */
141         {0x5b,0x0a1d,0x00,0x0135,SIS_RI_320x240,  0x00,0x00,0x00,0x00,0x3f}, /* 320x240x16 fstn */
142         {0x5c,0xba1f,0x02,0x0000,SIS_RI_512x384,  0x00,0x00,0x00,0x00,0x28}, /* 512x384x32 */
143         {0x5d,0x0a1d,0x03,0x0139,SIS_RI_640x400,  0x00,0x00,0x05,0x07,0x10},
144         {0x5e,0x0a1f,0x03,0x0000,SIS_RI_640x400,  0x00,0x00,0x05,0x07,0x10}, /* 640x400x32 */
145         {0x62,0x0a3f,0x03,0x013a,SIS_RI_640x480,  0x00,0x00,0x05,0x05,0x08}, /* 640x480x32 */
146         {0x63,0x2a3f,0x04,0x013b,SIS_RI_800x600,  0x00,0x00,0x07,0x06,0x00}, /* 800x600x32 */
147         {0x64,0x0a7f,0x05,0x013c,SIS_RI_1024x768, 0x00,0x00,0x08,0x07,0x13}, /* 1024x768x32 */
148         {0x65,0x0eff,0x06,0x013d,SIS_RI_1280x1024,0x00,0x00,0x00,0x00,0x1a}, /* 1280x1024x32 */
149         {0x66,0x0eff,0x07,0x013e,SIS_RI_1600x1200,0x00,0x00,0x00,0x00,0x1e}, /* 1600x1200x32 */
150         {0x68,0x067b,0x08,0x013f,SIS_RI_1920x1440,0x00,0x00,0x00,0x00,0x29}, /* 1920x1440x8 */
151         {0x69,0x06fd,0x08,0x0140,SIS_RI_1920x1440,0x00,0x00,0x00,0x00,0x29}, /* 1920x1440x16 */
152         {0x6b,0x07ff,0x08,0x0141,SIS_RI_1920x1440,0x00,0x00,0x00,0x00,0x29}, /* 1920x1440x32 */
153         {0x6c,0x067b,0x09,0x0000,SIS_RI_2048x1536,0x00,0x00,0x00,0x00,0x2f}, /* 2048x1536x8 */
154         {0x6d,0x06fd,0x09,0x0000,SIS_RI_2048x1536,0x00,0x00,0x00,0x00,0x2f}, /* 2048x1536x16 */
155         {0x6e,0x07ff,0x09,0x0000,SIS_RI_2048x1536,0x00,0x00,0x00,0x00,0x2f}, /* 2048x1536x32 */
156         {0x70,0x2a1b,0x04,0x0000,SIS_RI_800x480,  0x00,0x00,0x07,0x07,0x34}, /* 800x480x8 */
157         {0x71,0x0a1b,0x05,0x0000,SIS_RI_1024x576, 0x00,0x00,0x00,0x00,0x37}, /* 1024x576x8 */
158         {0x74,0x0a1d,0x05,0x0000,SIS_RI_1024x576, 0x00,0x00,0x00,0x00,0x37}, /* 1024x576x16 */
159         {0x75,0x0a3d,0x06,0x0000,SIS_RI_1280x720, 0x00,0x00,0x00,0x00,0x3a}, /* 1280x720x16 */
160         {0x76,0x2a1f,0x04,0x0000,SIS_RI_800x480,  0x00,0x00,0x07,0x07,0x34}, /* 800x480x32 */
161         {0x77,0x0a1f,0x05,0x0000,SIS_RI_1024x576, 0x00,0x00,0x00,0x00,0x37}, /* 1024x576x32 */
162         {0x78,0x0a3f,0x06,0x0000,SIS_RI_1280x720, 0x00,0x00,0x00,0x00,0x3a}, /* 1280x720x32 */
163         {0x79,0x0a3b,0x06,0x0000,SIS_RI_1280x720, 0x00,0x00,0x00,0x00,0x3a}, /* 1280x720x8 */
164         {0x7a,0x2a1d,0x04,0x0000,SIS_RI_800x480,  0x00,0x00,0x07,0x07,0x34}, /* 800x480x16 */
165         {0x7c,0x0e3b,0x06,0x0000,SIS_RI_1280x960, 0x00,0x00,0x00,0x00,0x3d}, /* 1280x960x8 */
166         {0x7d,0x0e7d,0x06,0x0000,SIS_RI_1280x960, 0x00,0x00,0x00,0x00,0x3d}, /* 1280x960x16 */
167         {0x7e,0x0eff,0x06,0x0000,SIS_RI_1280x960, 0x00,0x00,0x00,0x00,0x3d}, /* 1280x960x32 */
168         {0x23,0x0e3b,0x06,0x0000,SIS_RI_1280x768, 0x00,0x00,0x00,0x00,0x40}, /* 1280x768x8 */
169         {0x24,0x0e7d,0x06,0x0000,SIS_RI_1280x768, 0x00,0x00,0x00,0x00,0x40}, /* 1280x768x16 */
170         {0x25,0x0eff,0x06,0x0000,SIS_RI_1280x768, 0x00,0x00,0x00,0x00,0x40}, /* 1280x768x32 */
171         {0x26,0x0e3b,0x0c,0x0000,SIS_RI_1400x1050,0x00,0x00,0x00,0x00,0x41}, /* 1400x1050x8 */
172         {0x27,0x0e7d,0x0c,0x0000,SIS_RI_1400x1050,0x00,0x00,0x00,0x00,0x41}, /* 1400x1050x16 */
173         {0x28,0x0eff,0x0c,0x0000,SIS_RI_1400x1050,0x00,0x00,0x00,0x00,0x41}, /* 1400x1050x32*/
174         {0x29,0x0e1b,0x0d,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x43}, /* 1152x864 */
175         {0x2a,0x0e3d,0x0d,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x43},
176         {0x2b,0x0e7f,0x0d,0x0000,SIS_RI_1152x864, 0x00,0x00,0x00,0x00,0x43},
177         {0x39,0x2a1b,0x0b,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x45}, /* 848x480 */
178         {0x3b,0x2a3d,0x0b,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x45},
179         {0x3e,0x2a7f,0x0b,0x0000,SIS_RI_848x480,  0x00,0x00,0x00,0x00,0x45},
180         {0x3f,0x2a1b,0x0b,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x47}, /* 856x480 */
181         {0x42,0x2a3d,0x0b,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x47},
182         {0x45,0x2a7f,0x0b,0x0000,SIS_RI_856x480,  0x00,0x00,0x00,0x00,0x47},
183         {0x48,0x2a1b,0x0e,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x49}, /* 1360x768 */
184         {0x4b,0x2a3d,0x0e,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x49},
185         {0x4e,0x2a7f,0x0e,0x0000,SIS_RI_1360x768, 0x00,0x00,0x00,0x00,0x49},
186         {0x4f,0x9a1f,0x00,0x0000,SIS_RI_320x200,  0x00,0x00,0x04,0x04,0x25}, /* 320x200x32 */
187         {0x53,0x9a1f,0x00,0x0000,SIS_RI_320x240,  0x00,0x00,0x04,0x04,0x26}, /* 320x240x32 */
188         {0x54,0xba1f,0x01,0x0000,SIS_RI_400x300,  0x00,0x00,0x07,0x07,0x27}, /* 400x300x32 */
189         {0x5f,0x2a1b,0x0f,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4a}, /* 768x576x8 */
190         {0x60,0x2a1d,0x0f,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4a}, /* 768x576x16 */
191         {0x61,0x2a1f,0x0f,0x0000,SIS_RI_768x576,  0x00,0x00,0x06,0x06,0x4a}, /* 768x576x32 */
192         {0xff,0x0000,0x00,0x0000,0,               0x00,0x00,0x00,0x00,0x00}
193 };
194
195 typedef struct _SiS310_Ext2Struct
196 {
197         USHORT Ext_InfoFlag;
198         UCHAR  Ext_CRT1CRTC;
199         UCHAR  Ext_CRTVCLK;
200         UCHAR  Ext_CRT2CRTC;
201         UCHAR  ModeID;
202         USHORT XRes;
203         USHORT YRes;
204         UCHAR  Ext_PDC;
205 } SiS310_Ext2Struct;
206
207 static const SiS310_Ext2Struct SiS310_RefIndex[]=
208 {
209         {0x085f,0x0d,0x03,0x05,0x6a, 800, 600, 0x40}, /* 0x0 */
210         {0x0067,0x0e,0x04,0x05,0x6a, 800, 600, 0x40}, /* 0x1 */
211         {0x0067,0x0f,0x08,0x48,0x6a, 800, 600, 0x40}, /* 0x2 */
212         {0x0067,0x10,0x07,0x8b,0x6a, 800, 600, 0x40}, /* 0x3 */
213         {0x0047,0x11,0x0a,0x00,0x6a, 800, 600, 0x40}, /* 0x4 */
214         {0x0047,0x12,0x0d,0x00,0x6a, 800, 600, 0x40}, /* 0x5 */
215         {0x0047,0x13,0x13,0x00,0x6a, 800, 600, 0x20}, /* 0x6 */
216         {0x0107,0x14,0x1c,0x00,0x6a, 800, 600, 0x20}, /* 0x7 */
217         {0xc85f,0x05,0x00,0x04,0x2e, 640, 480, 0x40}, /* 0x8 */
218         {0xc067,0x06,0x02,0x04,0x2e, 640, 480, 0x40}, /* 0x9 */
219         {0xc067,0x07,0x02,0x47,0x2e, 640, 480, 0x40}, /* 0xa */
220         {0xc067,0x08,0x03,0x8a,0x2e, 640, 480, 0x40}, /* 0xb */
221         {0xc047,0x09,0x05,0x00,0x2e, 640, 480, 0x40}, /* 0xc */
222         {0xc047,0x0a,0x09,0x00,0x2e, 640, 480, 0x40}, /* 0xd */
223         {0xc047,0x0b,0x0e,0x00,0x2e, 640, 480, 0x40}, /* 0xe */
224         {0xc047,0x0c,0x15,0x00,0x2e, 640, 480, 0x40}, /* 0xf */
225         {0x487f,0x04,0x00,0x00,0x2f, 640, 400, 0x30}, /* 0x10 */
226         {0xc04f,0x3c,0x01,0x06,0x31, 720, 480, 0x30}, /* 0x11 */
227         {0x004f,0x3d,0x03,0x06,0x32, 720, 576, 0x30}, /* 0x12 */
228         {0x0087,0x15,0x06,0x00,0x37,1024, 768, 0x30}, /* 0x13 */
229         {0xc877,0x16,0x0b,0x06,0x37,1024, 768, 0x20}, /* 0x14 */
230         {0xc067,0x17,0x0f,0x49,0x37,1024, 768, 0x20}, /* 0x15 */
231         {0x0067,0x18,0x11,0x00,0x37,1024, 768, 0x20}, /* 0x16 */
232         {0x0047,0x19,0x16,0x8c,0x37,1024, 768, 0x20}, /* 0x17 */
233         {0x0107,0x1a,0x1b,0x00,0x37,1024, 768, 0x10}, /* 0x18 */
234         {0x0107,0x1b,0x1f,0x00,0x37,1024, 768, 0x10}, /* 0x19 */
235         {0x0087,0x1c,0x11,0x00,0x3a,1280,1024, 0x30}, /* 0x1a */
236         {0x0137,0x1d,0x19,0x07,0x3a,1280,1024, 0x00}, /* 0x1b */
237         {0x0107,0x1e,0x1e,0x00,0x3a,1280,1024, 0x00}, /* 0x1c */
238         {0x0207,0x1f,0x20,0x00,0x3a,1280,1024, 0x00}, /* 0x1d */
239         {0x0227,0x20,0x21,0x09,0x3c,1600,1200, 0x00}, /* 0x1e */
240         {0x0407,0x21,0x22,0x00,0x3c,1600,1200, 0x00}, /* 0x1f */
241         {0x0407,0x22,0x23,0x00,0x3c,1600,1200, 0x00}, /* 0x20 */
242         {0x0407,0x23,0x25,0x00,0x3c,1600,1200, 0x00}, /* 0x21 */
243         {0x0007,0x24,0x26,0x00,0x3c,1600,1200, 0x00}, /* 0x22 */
244         {0x0007,0x25,0x2c,0x00,0x3c,1600,1200, 0x00}, /* 0x23 */
245         {0x0007,0x26,0x34,0x00,0x3c,1600,1200, 0x00}, /* 0x24 */
246         {0x407f,0x00,0x00,0x00,0x40, 320, 200, 0x30}, /* 0x25 */
247         {0xc07f,0x01,0x00,0x04,0x50, 320, 240, 0x30}, /* 0x26 */
248         {0x007f,0x02,0x04,0x05,0x51, 400, 300, 0x30}, /* 0x27 */
249         {0xc077,0x03,0x0b,0x06,0x52, 512, 384, 0x30}, /* 0x28 */
250         {0x8007,0x27,0x27,0x00,0x68,1920,1440, 0x00}, /* 0x29 */
251         {0x4007,0x28,0x29,0x00,0x68,1920,1440, 0x00}, /* 0x2a */
252         {0x4007,0x29,0x2e,0x00,0x68,1920,1440, 0x00}, /* 0x2b */
253         {0x4007,0x2a,0x30,0x00,0x68,1920,1440, 0x00}, /* 0x2c */
254         {0x4007,0x2b,0x35,0x00,0x68,1920,1440, 0x00}, /* 0x2d */
255         {0x4005,0x2c,0x39,0x00,0x68,1920,1440, 0x00}, /* 0x2e */
256         {0x4007,0x2d,0x2b,0x00,0x6c,2048,1536, 0x00}, /* 0x2f */
257         {0x4007,0x2e,0x31,0x00,0x6c,2048,1536, 0x00}, /* 0x30 */
258         {0x4007,0x2f,0x33,0x00,0x6c,2048,1536, 0x00}, /* 0x31 */
259         {0x4007,0x30,0x37,0x00,0x6c,2048,1536, 0x00}, /* 0x32 */
260         {0x4005,0x31,0x38,0x00,0x6c,2048,1536, 0x00}, /* 0x33 */
261         {0x0057,0x32,0x40,0x08,0x70, 800, 480, 0x30}, /* 0x34 */
262         {0x0047,0x33,0x07,0x08,0x70, 800, 480, 0x30}, /* 0x35 */
263         {0x0047,0x34,0x0a,0x08,0x70, 800, 480, 0x30}, /* 0x36 */
264         {0x0057,0x35,0x0b,0x09,0x71,1024, 576, 0x30}, /* 0x37 */
265         {0x0047,0x36,0x11,0x09,0x71,1024, 576, 0x30}, /* 0x38 */
266         {0x0047,0x37,0x16,0x09,0x71,1024, 576, 0x30}, /* 0x39 */
267         {0x0117,0x38,0x19,0x0a,0x75,1280, 720, 0x30}, /* 0x3a */
268         {0x0107,0x39,0x1e,0x0a,0x75,1280, 720, 0x30}, /* 0x3b */
269         {0x0207,0x3a,0x20,0x0a,0x75,1280, 720, 0x30}, /* 0x3c */
270         {0x0127,0x3b,0x19,0x08,0x7c,1280, 960, 0x30}, /* 0x3d */
271         {0x0227,0x4c,0x59,0x08,0x7c,1280, 960, 0x20}, /* 0x3e */
272         {0xc07f,0x4e,0x00,0x06,0x5a, 320, 240, 0x30}, /* 0x3f */    /* FSTN 320x240 */
273         {0x0077,0x42,0x5b,0x08,0x23,1280, 768, 0x30}, /* 0x40 */    /* TW: 0x5b was 0x12 */
274         {0x0127,0x43,0x4d,0x08,0x26,1400,1050, 0x30}, /* 0x41 */
275         {0x0207,0x4b,0x5a,0x08,0x26,1400,1050, 0x30}, /* 0x42 Non-BIOS, new */
276         {0x0107,0x44,0x19,0x00,0x29,1152, 864, 0x30}, /* 0x43 Non-BIOS, new */
277         {0x0107,0x4a,0x1e,0x00,0x29,1152, 864, 0x30}, /* 0x44 Non-BIOS, new */
278         {0x0087,0x45,0x57,0x00,0x39, 848, 480, 0x30}, /* 0x45 848x480-38Hzi - Non-BIOS, new */
279         {0xc067,0x46,0x55,0x0b,0x39, 848, 480, 0x30}, /* 0x46 848x480-60Hz  - Non-BIOS, new */
280         {0x0087,0x47,0x57,0x00,0x3f, 856, 480, 0x30}, /* 0x47 856x480-38Hzi - Non-BIOS, new */
281         {0xc047,0x48,0x57,0x00,0x3f, 856, 480, 0x30}, /* 0x48 856x480-60Hz  - Non-BIOS, new */
282         {0x0067,0x49,0x58,0x0c,0x48,1360, 768, 0x30}, /* 0x49 1360x768-60Hz - Non-BIOS, new */
283         {0x004f,0x4d,0x03,0x06,0x5f, 768, 576, 0x30}, /* 0x4a 768x576 */
284         {0xffff,0x00,0x00,0x00,0x00,   0,   0, 0}
285 };
286
287 typedef struct _SiS310_CRT1TableStruct
288 {
289         UCHAR CR[17];
290 } SiS310_CRT1TableStruct;
291
292 static const SiS310_CRT1TableStruct SiS310_CRT1Table[]=
293 {
294  {{0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f,
295    0x9c,0x8e,0x8f,0x96,0xb9,0x30,0x00,0x00,
296    0x00}}, /* 0x0 */
297  {{0x2d,0x27,0x28,0x90,0x2c,0x80,0x0b,0x3e,
298    0xe9,0x8b,0xdf,0xe7,0x04,0x00,0x00,0x00,
299    0x00}}, /* 0x1 */
300  {{0x3d,0x31,0x31,0x81,0x37,0x1f,0x72,0xf0,
301    0x58,0x8c,0x57,0x57,0x73,0x20,0x00,0x05,
302    0x01}}, /* 0x2 */
303  {{0x4f,0x3f,0x3f,0x93,0x45,0x0d,0x24,0xf5,
304    0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x01,
305    0x01}}, /* 0x3 */
306  {{0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
307    0x9c,0x8e,0x8f,0x96,0xb9,0x30,0x00,0x05,
308    0x00}}, /* 0x4 */
309 #if 0
310  {{0x5f,0x4f,0x50,0x82,0x55,0x81,0x0b,0x3e,
311    0xe9,0x8b,0xdf,0xe7,0x04,0x00,0x00,0x05,
312    0x00}}, /* 0x5 */
313 #endif   
314  {{0x5f,0x4f,0x4f,0x83,0x55,0x81,0x0b,0x3e,    /* 0x05 - corrected 640x480-60 */
315    0xe9,0x8b,0xdf,0xe8,0x0c,0x00,0x00,0x05,
316    0x00}},
317 #if 0   
318  {{0x63,0x4f,0x50,0x86,0x56,0x9b,0x06,0x3e,
319    0xe8,0x8b,0xdf,0xe7,0xff,0x10,0x00,0x01,
320    0x00}}, /* 0x6 */
321 #endif
322  {{0x63,0x4f,0x4f,0x87,0x56,0x9b,0x06,0x3e,    /* 0x06 - corrected 640x480-72 */
323    0xe8,0x8a,0xdf,0xe7,0x07,0x00,0x00,0x01,
324    0x00}},
325  {{0x64,0x4f,0x4f,0x88,0x55,0x9d,0xf2,0x1f,
326    0xe0,0x83,0xdf,0xdf,0xf3,0x10,0x00,0x01,
327    0x00}}, /* 0x7 */
328  {{0x63,0x4f,0x4f,0x87,0x5a,0x81,0xfb,0x1f,
329    0xe0,0x83,0xdf,0xdf,0xfc,0x10,0x00,0x05,
330    0x00}}, /* 0x8 */
331  {{0x65,0x4f,0x4f,0x89,0x58,0x80,0xfb,0x1f,
332    0xe0,0x83,0xdf,0xdf,0xfc,0x10,0x00,0x05,  /* TW: Corrected VBE */
333    0x61}}, /* 0x9 */
334  {{0x65,0x4f,0x4f,0x89,0x58,0x80,0x01,0x3e,
335    0xe0,0x83,0xdf,0xdf,0x02,0x00,0x00,0x05,
336    0x61}}, /* 0xa */
337  {{0x67,0x4f,0x4f,0x8b,0x58,0x81,0x0d,0x3e,
338    0xe0,0x83,0xdf,0xdf,0x0e,0x00,0x00,0x05,  /* TW: Corrected VBE */
339    0x61}}, /* 0xb */
340  {{0x65,0x4f,0x4f,0x89,0x57,0x9f,0xfb,0x1f,
341    0xe6,0x8a,0xdf,0xdf,0xfc,0x10,0x00,0x01,  /* TW: Corrected VDE, VBE */
342    0x00}}, /* 0xc */
343  {{0x7b,0x63,0x63,0x9f,0x6a,0x93,0x6f,0xf0,
344    0x58,0x8a,0x57,0x57,0x70,0x20,0x00,0x05,
345    0x01}}, /* 0xd */
346  {{0x7f,0x63,0x63,0x83,0x6c,0x1c,0x72,0xf0,
347    0x58,0x8c,0x57,0x57,0x73,0x20,0x00,0x06,
348    0x01}}, /* 0xe */
349  {{0x7d,0x63,0x63,0x81,0x6e,0x1d,0x98,0xf0,
350    0x7c,0x82,0x57,0x57,0x99,0x00,0x00,0x06,
351    0x01}}, /* 0xf */
352  {{0x7f,0x63,0x63,0x83,0x69,0x13,0x6f,0xf0,
353    0x58,0x8b,0x57,0x57,0x70,0x20,0x00,0x06,
354    0x01}}, /* 0x10 */
355  {{0x7e,0x63,0x63,0x82,0x6b,0x13,0x75,0xf0,
356    0x58,0x8b,0x57,0x57,0x76,0x20,0x00,0x06,
357    0x01}}, /* 0x11 */
358  {{0x81,0x63,0x63,0x85,0x6d,0x18,0x7a,0xf0,
359    0x58,0x8b,0x57,0x57,0x7b,0x20,0x00,0x06,
360    0x61}}, /* 0x12 */
361  {{0x83,0x63,0x63,0x87,0x6e,0x19,0x81,0xf0,
362    0x58,0x8b,0x57,0x57,0x82,0x20,0x00,0x06,
363    0x61}}, /* 0x13 */
364  {{0x85,0x63,0x63,0x89,0x6f,0x1a,0x91,0xf0,
365    0x58,0x8b,0x57,0x57,0x92,0x20,0x00,0x06,
366    0x61}}, /* 0x14 */
367  {{0x99,0x7f,0x7f,0x9d,0x84,0x1a,0x96,0x1f,
368    0x7f,0x83,0x7f,0x7f,0x97,0x10,0x00,0x02,
369    0x00}}, /* 0x15 */
370  {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x24,0xf5,
371    0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x02,
372    0x01}}, /* 0x16 */
373  {{0xa1,0x7f,0x7f,0x85,0x86,0x97,0x24,0xf5,
374    0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x02,
375    0x01}}, /* 0x17 */
376  {{0x9f,0x7f,0x7f,0x83,0x85,0x91,0x1e,0xf5,
377    0x00,0x83,0xff,0xff,0x1f,0x10,0x00,0x02,
378    0x01}}, /* 0x18 */
379  {{0xa7,0x7f,0x7f,0x8b,0x89,0x95,0x26,0xf5,
380    0x00,0x83,0xff,0xff,0x27,0x10,0x00,0x02,
381    0x01}}, /* 0x19 */
382  {{0xa9,0x7f,0x7f,0x8d,0x8c,0x9a,0x2c,0xf5,
383    0x00,0x83,0xff,0xff,0x2d,0x14,0x00,0x02,
384    0x62}}, /* 0x1a */
385  {{0xab,0x7f,0x7f,0x8f,0x8d,0x9b,0x35,0xf5,
386    0x00,0x83,0xff,0xff,0x36,0x14,0x00,0x02,
387    0x62}}, /* 0x1b */
388  {{0xcf,0x9f,0x9f,0x93,0xb2,0x01,0x14,0xba,
389    0x00,0x83,0xff,0xff,0x15,0x00,0x00,0x03,
390    0x00}}, /* 0x1c */
391  {{0xce,0x9f,0x9f,0x92,0xa9,0x17,0x28,0x5a,
392    0x00,0x83,0xff,0xff,0x29,0x09,0x00,0x07,
393    0x01}}, /* 0x1d */
394  {{0xce,0x9f,0x9f,0x92,0xa5,0x17,0x28,0x5a,
395    0x00,0x83,0xff,0xff,0x29,0x09,0x00,0x07,
396    0x01}}, /* 0x1e */
397  {{0xd3,0x9f,0x9f,0x97,0xab,0x1f,0x2e,0x5a,
398    0x00,0x83,0xff,0xff,0x2f,0x09,0x00,0x07,
399    0x01}}, /* 0x1f */
400  {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10,
401    0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04,
402    0x00}}, /* 0x20 */
403  {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10,
404    0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04,
405    0x00}}, /* 0x21 @ 4084 */
406  {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10,
407    0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04,
408    0x00}}, /* 0x22 */
409  {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10,
410    0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04,
411    0x00}}, /* 0x23 */
412  {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10,
413    0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04,
414    0x00}}, /* 0x24 */
415  {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10,
416    0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04,
417    0x00}}, /* 0x25 */
418  {{0x09,0xc7,0xc7,0x8d,0xd3,0x0b,0xe0,0x10,
419    0xb0,0x83,0xaf,0xaf,0xe1,0x2f,0x01,0x04,
420    0x00}}, /* 0x26 */
421  {{0x40,0xef,0xef,0x84,0x03,0x1d,0xda,0x1f,
422    0xa0,0x83,0x9f,0x9f,0xdb,0x1f,0x41,0x01,
423    0x00}}, /* 0x27 */
424  {{0x43,0xef,0xef,0x87,0x06,0x00,0xd4,0x1f,
425    0xa0,0x83,0x9f,0x9f,0xd5,0x1f,0x41,0x05,
426    0x63}}, /* 0x28 */
427  {{0x45,0xef,0xef,0x89,0x07,0x01,0xd9,0x1f,
428    0xa0,0x83,0x9f,0x9f,0xda,0x1f,0x41,0x05,
429    0x63}}, /* 0x29 */
430  {{0x40,0xef,0xef,0x84,0x03,0x1d,0xda,0x1f,
431    0xa0,0x83,0x9f,0x9f,0xdb,0x1f,0x41,0x01,
432    0x00}}, /* 0x2a */
433  {{0x40,0xef,0xef,0x84,0x03,0x1d,0xda,0x1f,
434    0xa0,0x83,0x9f,0x9f,0xdb,0x1f,0x41,0x01,
435    0x00}}, /* 0x2b */
436  {{0x40,0xef,0xef,0x84,0x03,0x1d,0xda,0x1f,
437    0xa0,0x83,0x9f,0x9f,0xdb,0x1f,0x41,0x01,
438    0x00}}, /* 0x2c */
439  {{0x59,0xff,0xff,0x9d,0x17,0x13,0x33,0xba,
440    0x00,0x83,0xff,0xff,0x34,0x0f,0x41,0x05,
441    0x44}}, /* 0x2d */
442  {{0x5b,0xff,0xff,0x9f,0x18,0x14,0x38,0xba,
443    0x00,0x83,0xff,0xff,0x39,0x0f,0x41,0x05,
444    0x44}}, /* 0x2e */
445  {{0x5b,0xff,0xff,0x9f,0x18,0x14,0x3d,0xba,
446    0x00,0x83,0xff,0xff,0x3e,0x0f,0x41,0x05,
447    0x44}}, /* 0x2f */
448  {{0x5d,0xff,0xff,0x81,0x19,0x95,0x41,0xba,
449    0x00,0x84,0xff,0xff,0x42,0x0f,0x41,0x05,
450    0x44}}, /* 0x30 */
451  {{0x55,0xff,0xff,0x99,0x0d,0x0c,0x3e,0xba,
452    0x00,0x84,0xff,0xff,0x3f,0x0f,0x41,0x05,
453    0x00}}, /* 0x31 */
454  {{0x7f,0x63,0x63,0x83,0x6c,0x1c,0x72,0xba,
455    0x27,0x8b,0xdf,0xdf,0x73,0x00,0x00,0x06,
456    0x01}}, /* 0x32 */
457  {{0x7f,0x63,0x63,0x83,0x69,0x13,0x6f,0xba,
458    0x26,0x89,0xdf,0xdf,0x6f,0x00,0x00,0x06,
459    0x01}}, /* 0x33 */
460  {{0x7f,0x63,0x63,0x82,0x6b,0x13,0x75,0xba,
461    0x29,0x8c,0xdf,0xdf,0x75,0x00,0x00,0x06,
462    0x01}}, /* 0x34 */
463  {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x24,0xf1,
464    0xaf,0x85,0x3f,0x3f,0x25,0x30,0x00,0x02,
465    0x01}}, /* 0x35 */
466  {{0x9f,0x7f,0x7f,0x83,0x85,0x91,0x1e,0xf1,
467    0xad,0x81,0x3f,0x3f,0x1f,0x30,0x00,0x02,
468    0x01}}, /* 0x36 */
469  {{0xa7,0x7f,0x7f,0x88,0x89,0x95,0x26,0xf1,   /* TW: 95 was 15 - illegal HBE! */
470    0xb1,0x85,0x3f,0x3f,0x27,0x30,0x00,0x02,
471    0x01}}, /* 0x37 */
472  {{0xce,0x9f,0x9f,0x92,0xa9,0x17,0x28,0xc4,
473    0x7a,0x8e,0xcf,0xcf,0x29,0x21,0x00,0x07,
474    0x01}}, /* 0x38 */
475  {{0xce,0x9f,0x9f,0x92,0xa5,0x17,0x28,0xd4,
476    0x7a,0x8e,0xcf,0xcf,0x29,0x21,0x00,0x07,
477    0x01}}, /* 0x39 */
478  {{0xd3,0x9f,0x9f,0x97,0xab,0x1f,0x2e,0xd4,
479    0x7d,0x81,0xcf,0xcf,0x2f,0x21,0x00,0x07,
480    0x01}}, /* 0x3a */
481 #if 0   
482  {{0xdc,0x9f,0x9f,0x00,0xab,0x19,0xe6,0xef,     /* 1280x960 - invalid */
483    0xc0,0xc3,0xbf,0xbf,0xe7,0x10,0x00,0x07,
484    0x01}}, /* 0x3b */
485 #endif  
486  {{0xdc,0x9f,0x9f,0x80,0xaf,0x9d,0xe6,0xff,     /* 1280x960-60 - corrected */
487    0xc0,0x83,0xbf,0xbf,0xe7,0x10,0x00,0x07,
488    0x01}}, /* 0x3b */ 
489  {{0x6b,0x59,0x59,0x8f,0x5e,0x8c,0x0b,0x3e,
490    0xe9,0x8b,0xdf,0xe7,0x04,0x00,0x00,0x05,
491    0x00}}, /* 0x3c */
492  {{0x7b,0x59,0x63,0x9f,0x6a,0x93,0x6f,0xf0,
493    0x58,0x8a,0x3f,0x57,0x70,0x20,0x00,0x05,
494    0x01}}, /* 0x3d */
495  {{0x86,0x6a,0x6a,0x8a,0x74,0x06,0x8c,0x15,
496    0x4f,0x83,0xef,0xef,0x8d,0x30,0x00,0x02,
497    0x00}}, /* 0x3e */
498  {{0x81,0x6a,0x6a,0x85,0x70,0x00,0x0f,0x3e,
499    0xeb,0x8e,0xdf,0xdf,0x10,0x00,0x00,0x02,
500    0x00}}, /* 0x3f */
501  {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x1e,0xf1,   /* TW: The following from 650/LVDS BIOS */
502    0xae,0x85,0x57,0x57,0x1f,0x30,0x00,0x02,
503    0x01}},  /* 0x40 */
504  {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x24,0xf5,
505    0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x02,
506    0x01}},  /* 0x41 */
507  {{0xce,0x9f,0x9f,0x92,0xa9,0x17,0x20,0xf5,
508    0x03,0x88,0xff,0xff,0x21,0x10,0x00,0x07,
509    0x01}},  /* 0x42 */
510  {{0xe6,0xae,0xae,0x8a,0xbd,0x90,0x3d,0x10,
511    0x1a,0x8d,0x19,0x19,0x3e,0x2f,0x00,0x03,
512    0x00}},  /* 0x43 */
513  {{0xc3,0x8f,0x8f,0x87,0x9b,0x0b,0x82,0xef, /* New, 1152x864-75, not in BIOS */
514    0x60,0x83,0x5f,0x5f,0x83,0x10,0x00,0x07,
515    0x01}},  /* 0x44 */
516  {{0x86,0x69,0x69,0x8A,0x74,0x06,0x8C,0x15, /* New, 848x480-38i, not in BIOS */
517    0x4F,0x83,0xEF,0xEF,0x8D,0x30,0x00,0x02,
518    0x00}},  /* 0x45 */
519  {{0x83,0x69,0x69,0x87,0x6f,0x1d,0x03,0x3E, /* New, 848x480-60, not in BIOS */
520    0xE5,0x8d,0xDF,0xe4,0x04,0x00,0x00,0x06,
521    0x00}},  /* 0x46 */
522  {{0x86,0x6A,0x6A,0x8A,0x74,0x06,0x8C,0x15, /* New, 856x480-38i, not in BIOS */
523    0x4F,0x83,0xEF,0xEF,0x8D,0x30,0x00,0x02,
524    0x00}},  /* 0x47 */
525  {{0x81,0x6A,0x6A,0x85,0x70,0x00,0x0F,0x3E, /* New, 856x480-60, not in BIOS */
526    0xEB,0x8E,0xDF,0xDF,0x10,0x00,0x00,0x02,
527    0x00}},  /* 0x48 */
528  {{0xdd,0xa9,0xa9,0x81,0xb4,0x97,0x26,0xfd, /* New, 1360x768-60, not in BIOS */
529    0x01,0x8d,0xff,0x00,0x27,0x10,0x00,0x03,
530    0x01}},  /* 0x49 */
531  {{0xd9,0x8f,0x8f,0x9d,0xba,0x0a,0x8a,0xff, /* New, 1152x864-84, not in any BIOS   */
532    0x60,0x8b,0x5f,0x5f,0x8b,0x10,0x00,0x03,
533    0x01}},  /* 0x4a */
534  {{0xea,0xae,0xae,0x8e,0xba,0x82,0x40,0x10, /* New, 1400x1050-75, not in any BIOS  */
535    0x1b,0x87,0x19,0x1a,0x41,0x0f,0x00,0x03,
536    0x00}},  /* 0x4b */
537  {{0xd3,0x9f,0x9f,0x97,0xab,0x1f,0xf1,0xff, /* New, 1280x960-85, not in any BIOS */
538    0xc0,0x83,0xbf,0xbf,0xf2,0x10,0x00,0x07,
539    0x01}},  /* 0x4c */
540  {{0x7b,0x5f,0x63,0x9f,0x6a,0x93,0x6f,0xf0, /* 768x576 */
541    0x58,0x8a,0x3f,0x57,0x70,0x20,0x00,0x05,
542    0x01}},  /* 0x4d */
543  {{0x2d,0x27,0x28,0x90,0x2c,0x80,0x0b,0x3e, /* FSTN 320x480, TEMP - possibly invalid */
544    0xe9,0x8b,0xdf,0xe7,0x04,0x00,0x00,0x00,
545    0x00}}   /* 0x4e */
546 };
547
548 typedef struct _SiS310_MCLKDataStruct
549 {
550         UCHAR SR28,SR29,SR2A;
551         USHORT CLOCK;
552 } SiS310_MCLKDataStruct;
553
554 static const SiS310_MCLKDataStruct SiS310_MCLKData_0_315[] =
555 {
556         { 0x3b,0x22,0x01,143},
557         { 0x5c,0x23,0x01,166},
558         { 0x5c,0x23,0x01,166},
559         { 0x5c,0x23,0x01,166},
560         { 0x5c,0x23,0x01,166},
561         { 0x5c,0x23,0x01,166},
562         { 0x5c,0x23,0x01,166},
563         { 0x5c,0x23,0x01,166}
564 };
565
566 static const SiS310_MCLKDataStruct SiS310_MCLKData_0_650[] =
567 {
568         { 0x5a,0x64,0x82, 66},
569         { 0xb3,0x45,0x82, 83},
570         { 0x37,0x61,0x82,100},
571         { 0x37,0x22,0x82,133},
572         { 0x37,0x61,0x82,100},
573         { 0x37,0x22,0x82,133},
574         { 0x37,0x22,0x82,133},
575         { 0x37,0x22,0x82,133}
576 };
577
578 static const SiS310_MCLKDataStruct SiS310_MCLKData_0_330[] =
579 {
580         { 0x5c,0x23,0x01,166},
581         { 0x5c,0x23,0x01,166},
582         { 0x7c,0x08,0x01,200},
583         { 0x79,0x06,0x01,250},
584         { 0x7c,0x08,0x01,200},
585         { 0x7c,0x08,0x01,200},
586         { 0x7c,0x08,0x01,200},
587         { 0x79,0x06,0x01,250}
588 };
589
590 static const SiS310_MCLKDataStruct SiS310_MCLKData_0_660[] =  /* TODO */
591 {
592         { 0x5c,0x23,0x82,166},
593         { 0x5c,0x23,0x82,166},
594         { 0x37,0x21,0x82,200},
595         { 0x37,0x22,0x82,133},
596         { 0x29,0x21,0x82,150},
597         { 0x5c,0x23,0x82,166},
598         { 0x65,0x23,0x82,183},
599         { 0x37,0x21,0x82,200}
600 };
601
602 static const SiS310_MCLKDataStruct SiS310_MCLKData_1[] =
603 {
604         { 0x29,0x21,0x82,150},
605         { 0x5c,0x23,0x82,166},
606         { 0x65,0x23,0x82,183},
607         { 0x37,0x21,0x82,200},
608         { 0x37,0x22,0x82,133},
609         { 0x37,0x22,0x82,133},
610         { 0x37,0x22,0x82,133},
611         { 0x37,0x22,0x82,133}
612 };
613
614 typedef struct _SiS310_VCLKDataStruct
615 {
616         UCHAR SR2B,SR2C;
617         USHORT CLOCK;
618 } SiS310_VCLKDataStruct;
619
620 static const SiS310_VCLKDataStruct SiS310_VCLKData[]=
621 {
622         { 0x1b,0xe1, 25}, /* 0x00 */
623         { 0x4e,0xe4, 28}, /* 0x01 */
624         { 0x57,0xe4, 31}, /* 0x02 */
625         { 0xc3,0xc8, 36}, /* 0x03 */
626         { 0x42,0xe2, 40}, /* 0x04 */
627         { 0xfe,0xcd, 43}, /* 0x05 */
628         { 0x5d,0xc4, 44}, /* 0x06 */
629         { 0x52,0xe2, 49}, /* 0x07 */
630         { 0x53,0xe2, 50}, /* 0x08 */
631         { 0x74,0x67, 52}, /* 0x09 */
632         { 0x6d,0x66, 56}, /* 0x0a */
633         { 0x5a,0x64, 65}, /* 0x0b */  /* TW: was 6c c3 - WRONG */
634         { 0x46,0x44, 67}, /* 0x0c */
635         { 0xb1,0x46, 68}, /* 0x0d */
636         { 0xd3,0x4a, 72}, /* 0x0e */
637         { 0x29,0x61, 75}, /* 0x0f */
638         { 0x6e,0x46, 76}, /* 0x10 */
639         { 0x2b,0x61, 78}, /* 0x11 */
640         { 0x31,0x42, 79}, /* 0x12 */
641         { 0xab,0x44, 83}, /* 0x13 */
642         { 0x46,0x25, 84}, /* 0x14 */
643         { 0x78,0x29, 86}, /* 0x15 */
644         { 0x62,0x44, 94}, /* 0x16 */
645         { 0x2b,0x41,104}, /* 0x17 */
646         { 0x3a,0x23,105}, /* 0x18 */
647         { 0x70,0x44,108}, /* 0x19 */
648         { 0x3c,0x23,109}, /* 0x1a */
649         { 0x5e,0x43,113}, /* 0x1b */
650         { 0xbc,0x44,116}, /* 0x1c */
651         { 0xe0,0x46,132}, /* 0x1d */
652         { 0x54,0x42,135}, /* 0x1e */
653         { 0xea,0x2a,139}, /* 0x1f */
654         { 0x41,0x22,157}, /* 0x20 */
655         { 0x70,0x24,162}, /* 0x21 */
656         { 0x30,0x21,175}, /* 0x22 */
657         { 0x4e,0x22,189}, /* 0x23 */
658         { 0xde,0x26,194}, /* 0x24 */
659         { 0x62,0x06,202}, /* 0x25 */
660         { 0x3f,0x03,229}, /* 0x26 */
661         { 0xb8,0x06,234}, /* 0x27 */
662         { 0x34,0x02,253}, /* 0x28 */
663         { 0x58,0x04,255}, /* 0x29 */
664         { 0x24,0x01,265}, /* 0x2a */
665         { 0x9b,0x02,267}, /* 0x2b */
666         { 0x70,0x05,270}, /* 0x2c */
667         { 0x25,0x01,272}, /* 0x2d */
668         { 0x9c,0x02,277}, /* 0x2e */
669         { 0x27,0x01,286}, /* 0x2f */
670         { 0x3c,0x02,291}, /* 0x30 */
671         { 0xef,0x0a,292}, /* 0x31 */
672         { 0xf6,0x0a,310}, /* 0x32 */
673         { 0x95,0x01,315}, /* 0x33 */
674         { 0xf0,0x09,324}, /* 0x34 */
675         { 0xfe,0x0a,331}, /* 0x35 */
676         { 0xf3,0x09,332}, /* 0x36 */
677         { 0xea,0x08,340}, /* 0x37 */
678         { 0xe8,0x07,376}, /* 0x38 */
679         { 0xde,0x06,389}, /* 0x39 */
680         { 0x52,0x2a, 54}, /* 0x3a */  /* 301 TV */
681         { 0x52,0x6a, 27}, /* 0x3b */  /* 301 TV */
682         { 0x62,0x24, 70}, /* 0x3c */  /* 301 TV */
683         { 0x62,0x64, 70}, /* 0x3d */  /* 301 TV */
684         { 0xa8,0x4c, 30}, /* 0x3e */  /* 301 TV */
685         { 0x20,0x26, 33}, /* 0x3f */  /* 301 TV */
686         { 0x31,0xc2, 39}, /* 0x40 */
687         { 0x60,0x36, 30}, /* 0x41 */  /* Chrontel */
688         { 0x40,0x4a, 28}, /* 0x42 */  /* Chrontel */
689         { 0x9f,0x46, 44}, /* 0x43 */  /* Chrontel */
690         { 0x97,0x2c, 26}, /* 0x44 */
691         { 0x44,0xe4, 25}, /* 0x45 */  /* Chrontel */
692         { 0x7e,0x32, 47}, /* 0x46 */  /* Chrontel */
693         { 0x8a,0x24, 31}, /* 0x47 */  /* Chrontel */
694         { 0x97,0x2c, 26}, /* 0x48 */  /* Chrontel */
695         { 0xce,0x3c, 39}, /* 0x49 */
696         { 0x52,0x4a, 36}, /* 0x4a */  /* Chrontel */
697         { 0x34,0x61, 95}, /* 0x4b */
698         { 0x78,0x27,108}, /* 0x4c - was 102 */
699         { 0x66,0x43,123}, /* 0x4d */  /* Modes 0x26-0x28 (1400x1050) */
700         { 0x41,0x4e, 21}, /* 0x4e */
701         { 0xa1,0x4a, 29}, /* 0x4f */  /* Chrontel */
702         { 0x19,0x42, 42}, /* 0x50 */
703         { 0x54,0x46, 58}, /* 0x51 */  /* Chrontel */
704         { 0x25,0x42, 61}, /* 0x52 */
705         { 0x44,0x44, 66}, /* 0x53 */  /* Chrontel */
706         { 0x3a,0x62, 70}, /* 0x54 */  /* Chrontel */
707         { 0x62,0xc6, 34}, /* 0x55 - added for 848x480-60 (not in any BIOS) */
708         { 0x6a,0xc6, 37}, /* 0x56 - added for 848x480-75 (not in any BIOS)    - TEMP */
709         { 0xbf,0xc8, 35}, /* 0x57 - added for 856x480-38i,60 (not in any BIOS) */
710         { 0x30,0x23, 88}, /* 0x58 - added for 1360x768-62 (is 60Hz!) (not in any BIOS) */
711         { 0x52,0x07,149}, /* 0x59 - added for 1280x960-85 (Not in any BIOS) */
712         { 0x56,0x07,156}, /* 0x5a - added for 1400x1050-75 */
713         { 0x70,0x29, 81}  /* 0x5b - added for 1280x768 LCD */
714 };
715
716 typedef struct _SiS310_VBVCLKDataStruct
717 {
718         UCHAR Part4_A,Part4_B;
719         USHORT CLOCK;
720 } SiS310_VBVCLKDataStruct;
721
722 static const SiS310_VBVCLKDataStruct SiS310_VBVCLKData[]=
723 {
724         { 0x1b,0xe1, 25}, /* 0x00 */
725         { 0x4e,0xe4, 28}, /* 0x01 */
726         { 0x57,0xe4, 31}, /* 0x02 */
727         { 0xc3,0xc8, 36}, /* 0x03 */
728         { 0x42,0x47, 40}, /* 0x04 */
729         { 0xfe,0xcd, 43}, /* 0x05 */
730         { 0x5d,0xc4, 44}, /* 0x06 */
731         { 0x52,0x47, 49}, /* 0x07 */
732         { 0x53,0x47, 50}, /* 0x08 */
733         { 0x74,0x67, 52}, /* 0x09 */
734         { 0x6d,0x66, 56}, /* 0x0a */
735         { 0x35,0x62, 65}, /* 0x0b */  /* Was 0x5a,0x64 - 650/LVDS+301 bios: 35,62  */
736         { 0x46,0x44, 67}, /* 0x0c */
737         { 0xb1,0x46, 68}, /* 0x0d */
738         { 0xd3,0x4a, 72}, /* 0x0e */
739         { 0x29,0x61, 75}, /* 0x0f */
740         { 0x6d,0x46, 75}, /* 0x10 */
741         { 0x41,0x43, 78}, /* 0x11 */
742         { 0x31,0x42, 79}, /* 0x12 */
743         { 0xab,0x44, 83}, /* 0x13 */
744         { 0x46,0x25, 84}, /* 0x14 */
745         { 0x78,0x29, 86}, /* 0x15 */
746         { 0x62,0x44, 94}, /* 0x16 */
747         { 0x2b,0x22,104}, /* 0x17 */
748         { 0x49,0x24,105}, /* 0x18 */
749         { 0xf8,0x2f,108}, /* 0x19 */  /* 1400x1050 LCD */
750         { 0x3c,0x23,109}, /* 0x1a */
751         { 0x5e,0x43,113}, /* 0x1b */
752         { 0xbc,0x44,116}, /* 0x1c */
753         { 0xe0,0x46,132}, /* 0x1d */
754 #if 0
755         { 0xd4,0x28,135}, /* 0x1e */
756         { 0xea,0x2a,139}, /* 0x1f */
757         { 0x41,0x22,157}, /* 0x20 */
758         { 0x70,0x24,162}, /* 0x21 */
759 #endif
760         { 0xe2,0x46,135}, /* 0x1e */  /* 1280x1024-75, better clock for VGA2 */
761         { 0xe5,0x46,139}, /* 0x1f */  /* 1024x768-120, better clock for VGA2 */
762         { 0x15,0x01,157}, /* 0x20 */  /* 1280x1024-85, better clock for VGA2 */
763         { 0x70,0x09,162}, /* 0x21 */  /* 1600x1200-60, better clock for VGA2 */
764         { 0x30,0x21,175}, /* 0x22 */
765         { 0x4e,0x22,189}, /* 0x23 */
766         { 0xde,0x26,194}, /* 0x24 */
767         { 0x70,0x07,202}, /* 0x25 */
768         { 0x3f,0x03,229}, /* 0x26 */
769         { 0xb8,0x06,234}, /* 0x27 */
770         { 0x34,0x02,253}, /* 0x28 */
771         { 0x58,0x04,255}, /* 0x29 */
772         { 0x24,0x01,265}, /* 0x2a */
773         { 0x9b,0x02,267}, /* 0x2b */
774         { 0x70,0x05,270}, /* 0x2c */
775         { 0x25,0x01,272}, /* 0x2d */
776         { 0x9c,0x02,277}, /* 0x2e */
777         { 0x27,0x01,286}, /* 0x2f */
778         { 0x3c,0x02,291}, /* 0x30 */
779         { 0xef,0x0a,292}, /* 0x31 */
780         { 0xf6,0x0a,310}, /* 0x32 */
781         { 0x95,0x01,315}, /* 0x33 */
782         { 0xf0,0x09,324}, /* 0x34 */
783         { 0xfe,0x0a,331}, /* 0x35 */
784         { 0xf3,0x09,332}, /* 0x36 */
785         { 0xea,0x08,340}, /* 0x37 */
786         { 0xe8,0x07,376}, /* 0x38 */
787         { 0xde,0x06,389}, /* 0x39 */
788         { 0x52,0x2a, 54}, /* 0x3a */  /* 301 TV */
789         { 0x52,0x6a, 27}, /* 0x3b */  /* 301 TV */
790         { 0x62,0x24, 70}, /* 0x3c */  /* 301 TV */
791         { 0x62,0x64, 70}, /* 0x3d */  /* 301 TV */
792         { 0xa8,0x4c, 30}, /* 0x3e */  /* 301 TV */
793         { 0x20,0x26, 33}, /* 0x3f */  /* 301 TV */
794         { 0x31,0xc2, 39}, /* 0x40 */
795         { 0x2e,0x48, 25}, /* 0x41 */  /* Replacement for LCD on 315 for index 0 */
796         { 0x24,0x46, 25}, /* 0x42 */  /* Replacement for LCD on 315 for modes 0x01, 0x03, 0x0f, 0x10, 0x12 */
797         { 0x26,0x64, 28}, /* 0x43 */  /* Replacement for LCD on 315 for index 1 */
798         { 0x37,0x64, 40}, /* 0x44 */  /* Replacement for LCD on 315 for index 4 */
799         { 0xa1,0x42,108}, /* 0x45 */  /* 1280x960 LCD */
800         { 0x37,0x61,100}, /* 0x46 */  /* 1280x960 LCD */
801         { 0x78,0x27,108}, /* 0x47 */
802         { 0x97,0x2c, 26}, /* 0x48 */  /* UNUSED - Entries from here new, not in any BIOS */
803         { 0xce,0x3c, 39}, /* 0x49 */  /* UNUSED */
804         { 0x52,0x4a, 36}, /* 0x4a */  /* UNUSED */
805         { 0x34,0x61, 95}, /* 0x4b */  /* UNUSED */
806         { 0x78,0x27,108}, /* 0x4c */  /* UNUSED */
807         { 0x66,0x43,123}, /* 0x4d */  /* 1400x1050-60 */
808         { 0x41,0x4e, 21}, /* 0x4e */  /* UNUSED */
809         { 0xa1,0x4a, 29}, /* 0x4f */  /* UNUSED */
810         { 0x19,0x42, 42}, /* 0x50 */  /* UNUSED */
811         { 0x54,0x46, 58}, /* 0x51 */  /* UNUSED */
812         { 0x25,0x42, 61}, /* 0x52 */  /* UNUSED */
813         { 0x44,0x44, 66}, /* 0x53 */  /* UNUSED */
814         { 0x3a,0x62, 70}, /* 0x54 */  /* UNUSED */
815         { 0x62,0xc6, 34}, /* 0x55 */  /* 848x480-60 */
816         { 0x6a,0xc6, 37}, /* 0x56 */  /* 848x480-75 - TEMP, UNUSED */
817         { 0xbf,0xc8, 35}, /* 0x57 */  /* 856x480-38i,60  */
818         { 0x30,0x23, 88}, /* 0x58 */  /* 1360x768-62 (is 60Hz!) TEMP, UNUSED */
819         { 0x52,0x07,149}, /* 0x59 */  /* 1280x960-85  */
820         { 0x56,0x07,156}, /* 0x5a */  /* 1400x1050-75 */
821         { 0x70,0x29, 81}  /* 0x5b */  /* 1280x768 LCD */
822 };
823
824 static const UCHAR SiS310_ScreenOffset[] =
825 {
826         0x14,0x19,0x20,0x28,0x32,0x40,0x50,0x64,
827         0x78,0x80,0x2d,0x35,0x57,0x48,0x55,0x30,
828         0xff
829 };
830
831 static const DRAM4Type SiS310_SR15[8] = {
832         {0x00,0x04,0x60,0x60},
833         {0x0f,0x0f,0x0f,0x0f},
834         {0xba,0xba,0xba,0xba},
835         {0xa9,0xa9,0xac,0xac},
836         {0xa0,0xa0,0xa0,0xa8},
837         {0x00,0x00,0x02,0x02},
838         {0x30,0x30,0x40,0x40},
839         {0x00,0xa5,0xfb,0xf6}
840 };
841
842 #ifndef LINUX_XF86
843
844 static UCHAR SiS310_SR07 = 0x18;
845
846 static const DRAM4Type SiS310_CR40[5] = {
847         {0x77,0x77,0x33,0x33},
848         {0x77,0x77,0x33,0x33},
849         {0x00,0x00,0x00,0x00},
850         {0x5b,0x5b,0x03,0x03},
851         {0x00,0x00,0xf0,0xf8}
852 };
853
854 static UCHAR SiS310_CR49[] = {0xaa,0x88};
855 static UCHAR SiS310_SR1F = 0x00;
856 static UCHAR SiS310_SR21 = 0xa5;
857 static UCHAR SiS310_SR22 = 0xfb;
858 static UCHAR SiS310_SR23 = 0xf6;
859 static UCHAR SiS310_SR24 = 0x0d;
860 static UCHAR SiS310_SR25[] = {0x33,0x3};
861 static UCHAR SiS310_SR31 = 0x00;
862 static UCHAR SiS310_SR32 = 0x11;
863 static UCHAR SiS310_SR33 = 0x00;
864 static UCHAR SiS310_CRT2Data_1_2  = 0x00;
865 static UCHAR SiS310_CRT2Data_4_D  = 0x00;
866 static UCHAR SiS310_CRT2Data_4_E  = 0x00;
867 static UCHAR SiS310_CRT2Data_4_10 = 0x80;
868 static const USHORT SiS310_RGBSenseData    = 0xd1;
869 static const USHORT SiS310_VideoSenseData  = 0xb9;
870 static const USHORT SiS310_YCSenseData     = 0xb3;
871 static const USHORT SiS310_RGBSenseData2   = 0x0190; 
872 static const USHORT SiS310_VideoSenseData2 = 0x0174;
873 static const USHORT SiS310_YCSenseData2    = 0x016b;
874 #endif
875
876 typedef struct _SiS310_PanelDelayTblStruct
877 {
878         UCHAR timer[2];
879 } SiS310_PanelDelayTblStruct;
880
881 static const SiS310_PanelDelayTblStruct SiS310_PanelDelayTbl[]=
882 {
883         {{0x10,0x40}},
884         {{0x10,0x40}},
885         {{0x10,0x40}},
886         {{0x10,0x40}},
887         {{0x10,0x40}},
888         {{0x10,0x40}},
889         {{0x10,0x40}},
890         {{0x10,0x40}},
891         {{0x10,0x40}},
892         {{0x10,0x40}},
893         {{0x10,0x40}},
894         {{0x10,0x40}},
895         {{0x10,0x40}},
896         {{0x10,0x40}},
897         {{0x10,0x40}},
898         {{0x10,0x40}}
899 };
900
901 static const SiS310_PanelDelayTblStruct SiS310_PanelDelayTblLVDS[]=
902 {
903         {{0x28,0xc8}},
904         {{0x28,0xc8}},
905         {{0x28,0xc8}},
906         {{0x28,0xc8}},
907         {{0x28,0xc8}},
908         {{0x28,0xc8}},
909         {{0x28,0xc8}},
910         {{0x28,0xc8}},
911         {{0x28,0xc8}},
912         {{0x28,0xc8}},
913         {{0x28,0xc8}},
914         {{0x28,0xc8}},
915         {{0x28,0xc8}},
916         {{0x28,0xc8}},
917         {{0x28,0xc8}},
918         {{0x28,0xc8}}
919 };
920
921 /**************************************************************/
922 /* SIS VIDEO BRIDGE ----------------------------------------- */
923 /**************************************************************/
924
925 typedef struct _SiS310_LCDDataStruct
926 {
927         USHORT RVBHCMAX;
928         USHORT RVBHCFACT;
929         USHORT VGAHT;
930         USHORT VGAVT;
931         USHORT LCDHT;
932         USHORT LCDVT;
933 } SiS310_LCDDataStruct;
934
935 static const SiS310_LCDDataStruct  SiS310_StLCD1024x768Data[]=
936 {
937         {   62,  25, 800, 546,1344, 806},
938         {   32,  15, 930, 546,1344, 806},
939         {   32,  15, 930, 546,1344, 806},
940         {  104,  45, 945, 496,1344, 806},
941         {   62,  25, 800, 546,1344, 806},
942         {   31,  18,1008, 624,1344, 806},
943         {    1,   1,1344, 806,1344, 806}
944 };
945
946 static const SiS310_LCDDataStruct  SiS310_ExtLCD1024x768Data[] =   
947 {
948         {   42,  25,1536, 419,1344, 806},
949         {   48,  25,1536, 369,1344, 806},
950         {   42,  25,1536, 419,1344, 806},
951         {   48,  25,1536, 369,1344, 806},
952         {   12,   5, 896, 500,1344, 806},
953         {   42,  25,1024, 625,1344, 806},
954         {    1,   1,1344, 806,1344, 806},
955         {   12,   5, 896, 500,1344, 806},
956         {   42,  25,1024, 625,1344, 806},
957         {    1,   1,1344, 806,1344, 806},
958         {   12,   5, 896, 500,1344, 806},
959         {   42,  25,1024, 625,1344, 806},
960         {    1,   1,1344, 806,1344, 806}
961          
962 };
963
964 static const SiS310_LCDDataStruct  SiS310_St2LCD1024x768Data[] =  
965 {
966         {   62,  25, 800, 546,1344, 806},
967         {   32,  15, 930, 546,1344, 806},
968         {   62,  25, 800, 546,1344, 806},    
969         {  104,  45, 945, 496,1344, 806},
970         {   62,  25, 800, 546,1344, 806},
971         {   31,  18,1008, 624,1344, 806},
972         {    1,   1,1344, 806,1344, 806}
973 };
974
975 static const SiS310_LCDDataStruct  SiS310_StLCD1280x1024Data[] =
976 {
977         {   22,   5, 800, 510,1650,1088},
978         {   22,   5, 800, 510,1650,1088},
979         {  176,  45, 900, 510,1650,1088},
980         {  176,  45, 900, 510,1650,1088},
981         {   22,   5, 800, 510,1650,1088},
982         {   13,   5,1024, 675,1560,1152},
983         {   16,   9,1266, 804,1688,1072},
984         {    1,   1,1688,1066,1688,1066}
985 };
986
987 static const SiS310_LCDDataStruct  SiS310_ExtLCD1280x1024Data[] =
988 {
989         {  211,  60,1024, 501,1688,1066},
990         {  211,  60,1024, 508,1688,1066},
991         {  211,  60,1024, 501,1688,1066},
992         {  211,  60,1024, 508,1688,1066},
993         {  211,  60,1024, 500,1688,1066},
994         {  211,  75,1024, 625,1688,1066},
995         {  211, 120,1280, 798,1688,1066},
996         {    1,   1,1688,1066,1688,1066},
997         {    1,   1,1800,1000,1688,1066}  /* 1280x960 - does not work, use panel scaler instead */
998 };
999
1000 static const SiS310_LCDDataStruct  SiS310_St2LCD1280x1024Data[] =
1001 {
1002         {   22,   5, 800, 510,1650,1088},
1003         {   22,   5, 800, 510,1650,1088},
1004         {  176,  45, 900, 510,1650,1088},
1005         {  176,  45, 900, 510,1650,1088},
1006         {   22,   5, 800, 510,1650,1088},
1007         {   13,   5,1024, 675,1560,1152},
1008         {   16,   9,1266, 804,1688,1072},
1009         {    1,   1,1688,1066,1688,1066}
1010 };
1011
1012 static const SiS310_LCDDataStruct  SiS310_NoScaleData1024x768[] =  
1013 {
1014         {    1,   1,1344, 806,1344, 806},
1015         {    1,   1,1344, 806,1344, 806},
1016         {    1,   1,1344, 806,1344, 806},
1017         {    1,   1,1344, 806,1344, 806},  /* 640x400 - does not work */
1018         {    1,   1,1344, 806,1344, 806},  /* 640x480 - does not work */
1019         {    1,   1,1344, 806,1344, 806},
1020         {    1,   1,1344, 806,1344, 806},
1021         {    1,   1,1344, 806,1344, 806}
1022 };
1023
1024 static const SiS310_LCDDataStruct  SiS310_NoScaleData1280x1024[] =
1025 {
1026         {    1,   1,1688,1066,1688,1066},
1027         {    1,   1,1688,1066,1688,1066},
1028         {    1,   1,1688,1066,1688,1066},
1029         {    1,   1,1688,1066,1688,1066},
1030         {    1,   1,1688,1066,1688,1066},
1031         {    1,   1,1688,1066,1688,1066},
1032         {    1,   1,1688,1066,1688,1066},
1033         {    1,   1,1688,1066,1688,1066},
1034         {    1,   1,1688,1066,1688,1066}
1035 };
1036
1037 typedef struct _SiS310_Part2PortTblStruct
1038 {
1039         UCHAR CR[12];
1040 } SiS310_Part2PortTblStruct;
1041
1042 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1024x768_1[] =
1043 {
1044  {{0x25,0x12,0xc9,0xdc,0xb6,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1045  {{0x2c,0x12,0x9a,0xae,0x88,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1046  {{0x25,0x12,0xc9,0xdc,0xb6,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1047  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1048  {{0x38,0x13,0x16,0x0c,0xe6,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1049  {{0x38,0x18,0x16,0x00,0x00,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1050  {{0x36,0x13,0x13,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1051  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1052  {{0x25,0x12,0xc9,0xdc,0xb6,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}}
1053 };
1054
1055 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1024x768_2[] =
1056 {
1057  {{0x25,0x12,0x51,0x6e,0x48,0x99,0x35,0x89,0x47,0xc1,0x49,0x33}},
1058  {{0x2c,0x12,0x38,0x55,0x2f,0x99,0x35,0x89,0x47,0xc1,0x49,0x33}},
1059  {{0x25,0x12,0x51,0x6e,0x48,0x99,0x35,0x89,0x47,0xc1,0x49,0x33}},
1060  {{0x2c,0x12,0x38,0x55,0x2f,0xc1,0x35,0xb1,0x47,0xe9,0x71,0x33}},
1061  {{0x2d,0x12,0x79,0x96,0x70,0x99,0x35,0x89,0x47,0xc1,0x49,0x33}},
1062  {{0x29,0x12,0xb5,0xd2,0xac,0xe9,0x35,0xd9,0x47,0x11,0x99,0x33}},
1063  {{0x36,0x13,0x13,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},  /* others  */
1064 /* 0x36,0x13,0x02,0x25,0xff,0x03,0x45,0x09,0x07,0xf9,0x00,0x24        my      */
1065  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1066  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
1067 };
1068
1069 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1024x768_3[] =
1070 {
1071 #if 1   /* Data from 650/301LVx 1.10.6s and others */
1072  {{0x25,0x13,0xc9,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1073  {{0x2c,0x13,0x9a,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1074  {{0x25,0x13,0xc9,0x24,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1075  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1076  {{0x38,0x13,0x13,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1077  {{0x38,0x18,0x16,0x00,0x00,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1078  {{0x36,0x13,0x13,0x25,0xff,0x59,0x45,0x09,0x07,0xf9,0x09,0x24}},
1079  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1080  {{0x25,0x13,0xc9,0x25,0xff,0xf9,0x45,0x09,0x07,0xf9,0x09,0x24}}
1081 #endif
1082 #if 0    /* Data from my 301LV */
1083  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},   /* TEST */
1084  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},
1085  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},
1086  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},
1087  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},
1088  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},
1089  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},
1090  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}},
1091  {{0x36,0x13,0x02,0x25,0xff,0x21,0x45,0x09,0x07,0x88,0x09,0x24}}
1092 #endif
1093 };
1094
1095 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1280x1024_1[] =
1096 { /* Acer; BIOS data invalid, last row taken from _3 */
1097  {{0x25,0x12,0x51,0x6E,0x48,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
1098  {{0x2C,0x12,0x38,0x55,0x2F,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
1099  {{0x25,0x12,0x51,0x6E,0x48,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
1100  {{0x2C,0x12,0x38,0x55,0x2F,0xC1,0x35,0xB1,0x47,0xE9,0x71,0x33}},
1101  {{0x2D,0x12,0x79,0x96,0x70,0x99,0x35,0x89,0x47,0xC1,0x49,0x33}},
1102  {{0x29,0x12,0xB5,0xD2,0xAC,0xE9,0x35,0xD9,0x47,0x11,0x99,0x33}},
1103  {{0x36,0x13,0x02,0x25,0xFF,0x03,0x45,0x09,0x07,0xF9,0x00,0x24}},
1104  {{0x47,0x1C,0x14,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}}
1105 };
1106
1107 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1280x1024_2[] =
1108 { /* Acer */
1109  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
1110 };
1111
1112 /*   1     2    4    5    6   1c   1d   1f   20   21   23   25   */
1113 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1280x1024_3[] =
1114 { /* Acer */
1115  {{0x31,0x1B,0xC4,0xDA,0xB0,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
1116  {{0x34,0x1B,0x9F,0xC0,0x80,0xB8,0x23,0x0A,0x07,0x14,0x8A,0x12}},
1117  {{0x3E,0x1B,0xCF,0xF0,0xB0,0xB8,0x23,0x0A,0x07,0x14,0x8A,0x12}},
1118  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1119  {{0x48,0x1C,0x15,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
1120  {{0x48,0x1C,0x15,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
1121  {{0x48,0x1C,0x15,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}},
1122  {{0x47,0x1C,0x14,0x29,0xFF,0xBD,0x23,0x0A,0x07,0x23,0x8A,0x12}}
1123 };
1124
1125 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1400x1050_1[] =
1126 {
1127  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1128  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1129  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1130  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1131  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1132  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1133  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1134  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1135  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}}
1136 };
1137
1138 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1400x1050_2[] =
1139 {
1140  {{0x2b,0x12,0xd9,0xe5,0xd5,0x2c,0x23,0x98,0x27,0x3e,0x08,0x42}},
1141  {{0x22,0x12,0xc0,0xcc,0xbc,0x2c,0x23,0x98,0x27,0x3e,0x08,0x42}},
1142  {{0x2b,0x12,0xd9,0xe5,0xd5,0x2c,0x23,0x98,0x27,0x3e,0x08,0x42}},
1143  {{0x22,0x12,0xc0,0xcc,0xbc,0x2c,0x23,0x98,0x27,0x3e,0x08,0x42}},
1144  {{0x33,0x13,0x01,0x0d,0xfd,0x2c,0x23,0x98,0x27,0x3e,0x08,0x42}},
1145  {{0x3f,0x1b,0x3d,0x49,0x39,0x54,0x23,0xc0,0x27,0x66,0x30,0x42}},
1146  {{0x33,0x1b,0x91,0x9d,0x8d,0x8c,0x23,0xf8,0x27,0x9e,0x68,0x42}},
1147  {{0x43,0x24,0x11,0x1d,0x0d,0xcc,0x23,0x38,0x37,0xde,0xa8,0x42}},
1148  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}}
1149 };
1150
1151 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1400x1050_3[] =
1152 {
1153  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1154  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1155  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1156  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x42}},
1157  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1158  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1159  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1160  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}},
1161  {{0x43,0x24,0x21,0x29,0x19,0xea,0x23,0x0a,0x07,0x32,0xc6,0x32}}
1162 };
1163
1164 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1600x1200_1[] =
1165 {
1166  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1167  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1168  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1169  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1170  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1171  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1172  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1173  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1174  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1175  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}}
1176 };
1177
1178 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1600x1200_2[] =
1179 {
1180  {{0x32,0x1B,0x2C,0x52,0x20,0x80,0x20,0x52,0x30,0xA3,0x3A,0x02}},
1181  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1182  {{0x32,0x1B,0x2C,0x52,0x20,0x80,0x20,0x52,0x30,0xA3,0x3A,0x02}},
1183  {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}},
1184  {{0x3A,0x1B,0x54,0x7A,0x48,0x80,0x24,0x52,0x30,0xA3,0x3A,0x02}},
1185  {{0x36,0x1B,0x90,0xB6,0x84,0xA8,0x24,0x7A,0x30,0xCB,0x62,0x02}},
1186  {{0x3A,0x1C,0xE4,0x0A,0xD8,0xE0,0x24,0xB2,0x30,0x03,0x9A,0x02}},
1187  {{0x4A,0x24,0x64,0x8A,0x58,0x20,0x34,0xF2,0x30,0x43,0xDA,0x52}},
1188  {{0x47,0x24,0x71,0x97,0x65,0x3E,0x34,0x10,0x40,0x61,0xF8,0x02}},
1189  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}}
1190 };
1191
1192 static const SiS310_Part2PortTblStruct SiS310_CRT2Part2_1600x1200_3[] =
1193 {
1194  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1195  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1196  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1197  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1198  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1199  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1200  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1201  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1202  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}},
1203  {{0x4C,0x24,0xC8,0xE1,0xAF,0x70,0x34,0x0A,0x07,0xFC,0x2A,0x53}}
1204 };
1205
1206 /* CRT1 CRTC for LCDA */
1207
1208 typedef struct _SiS310_LCDACRT1DataStruct
1209 {
1210         UCHAR CR[17];
1211 }SiS310_LCDACRT1DataStruct;
1212
1213 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11024x768_1[]=
1214 {
1215  {{0x73,0x4f,0x4f,0x97,0x59,0x84,0xb4,0x1f,
1216    0x92,0x89,0x8f,0x8f,0xb5,0x30,0x00,0x05,
1217    0x00}},
1218  {{0x73,0x4f,0x4f,0x97,0x59,0x84,0x82,0x1f,
1219    0x60,0x87,0x5d,0x5d,0x83,0x10,0x00,0x05,
1220    0x00}},
1221  {{0x73,0x4f,0x4f,0x97,0x59,0x84,0xb4,0x1f,
1222    0x92,0x89,0x8f,0x8f,0xb5,0x30,0x00,0x05,
1223    0x00}},
1224  {{0x73,0x4f,0x4f,0x97,0x59,0x84,0x82,0x1f,
1225    0x60,0x87,0x5d,0x5d,0x83,0x10,0x00,0x05,
1226    0x00}},
1227  {{0x73,0x4f,0x4f,0x97,0x59,0x84,0x04,0x3e,
1228    0xE2,0x89,0xdf,0xdf,0x05,0x00,0x00,0x05,
1229    0x00}},
1230  {{0x87,0x63,0x63,0x8B,0x6D,0x18,0x7c,0xf0,
1231    0x5A,0x81,0x57,0x57,0x7D,0x00,0x00,0x06,
1232    0x01}},
1233  {{0xA3,0x7f,0x7f,0x87,0x89,0x94,0x24,0xf5,
1234    0x02,0x89,0xff,0xff,0x25,0x10,0x00,0x02,
1235    0x01}}
1236 };
1237
1238 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11024x768_1_H[]=
1239 {
1240  {{0x4b,0x27,0x27,0x8f,0x31,0x1c,0xb4,0x1f,
1241    0x92,0x89,0x8f,0x8f,0xb5,0x30,0x00,0x05,
1242    0x00}},
1243  {{0x4b,0x27,0x27,0x8f,0x31,0x1c,0x82,0x1f,
1244    0x60,0x87,0x5D,0x5D,0x83,0x10,0x00,0x05,
1245    0x00}},
1246  {{0x4b,0x27,0x27,0x8f,0x31,0x1c,0xb4,0x1f,
1247    0x92,0x89,0x8f,0x8f,0xb5,0x30,0x00,0x05,
1248    0x00}},
1249  {{0x4b,0x27,0x27,0x8f,0x31,0x1c,0x82,0x1f,
1250    0x60,0x87,0x5D,0x5D,0x83,0x10,0x00,0x05,
1251    0x00}},
1252  {{0x4b,0x27,0x27,0x8f,0x31,0x1c,0x04,0x3e,
1253    0xE2,0x89,0xDf,0xDf,0x05,0x00,0x00,0x05,
1254    0x00}},
1255  {{0x55,0x31,0x31,0x99,0x3b,0x06,0x7c,0xf0,
1256    0x5A,0x81,0x57,0x57,0x7D,0x00,0x00,0x01,
1257    0x01}},
1258  {{0x63,0x3F,0x3F,0x87,0x49,0x94,0x24,0xF5,
1259    0x02,0x89,0xFF,0xFF,0x25,0x10,0x00,0x01,
1260    0x01}}
1261 };
1262
1263 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11024x768_2[]=
1264 {
1265  {{0xa3,0x4f,0x4f,0x0f,0x6e,0x1f,0x24,0xbb,
1266    0x4a,0x81,0x8f,0xdb,0xda,0x20,0x00,0x06,
1267    0x00}},
1268  {{0xa3,0x4f,0x4f,0x0f,0x6e,0x1f,0x24,0xbb,
1269    0x31,0x88,0x5d,0xc2,0xc1,0x20,0x00,0x06,
1270    0x00}},
1271  {{0xa3,0x4f,0x4f,0x0f,0x6e,0x1f,0x24,0xbb,
1272    0x4a,0x81,0x8f,0xdb,0xda,0x20,0x00,0x06,
1273    0x00}},
1274  {{0xa3,0x4f,0x4f,0x0f,0x6e,0x1f,0x24,0xbb,
1275    0x31,0x88,0x5d,0xc2,0xc1,0x20,0x00,0x06,
1276    0x01}},
1277  {{0xa3,0x4f,0x4f,0x0f,0x6e,0x1f,0x24,0xb3,
1278    0x72,0x89,0xdf,0x03,0x02,0x30,0x00,0x06,
1279    0x01}},
1280  {{0xa3,0x63,0x63,0x98,0x78,0x19,0x24,0xf1,
1281    0xbb,0x82,0x57,0x57,0x25,0x10,0x00,0x02,
1282    0x01}},
1283  {{0xa3,0x7f,0x7f,0x87,0x89,0x94,0x24,0xf5,
1284    0x02,0x89,0xff,0xff,0x25,0x10,0x00,0x02,
1285    0x01}}
1286 };
1287
1288 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11024x768_2_H[]=
1289 {
1290  {{0x7b,0x27,0x27,0x0f,0x46,0x97,0x24,0xbb,
1291    0x4a,0x81,0x8f,0xdb,0xda,0x20,0x00,0x01,
1292    0x00 }},
1293  {{0x7b,0x27,0x27,0x0f,0x46,0x97,0x24,0xbb,
1294    0x31,0x88,0x5d,0xc2,0xc1,0x20,0x00,0x01,
1295    0x00 }},
1296  {{0x7b,0x27,0x27,0x0f,0x46,0x97,0x24,0xbb,
1297    0x4a,0x81,0x8f,0xdb,0xda,0x20,0x00,0x01,
1298    0x00 }},
1299  {{0x7b,0x27,0x27,0x0f,0x46,0x97,0x24,0xbb,
1300    0x31,0x88,0x5d,0xc2,0xc1,0x20,0x00,0x01,
1301    0x00 }},
1302  {{0x7b,0x27,0x27,0x0f,0x46,0x97,0x24,0xb3,
1303    0x72,0x89,0xdf,0x03,0x02,0x30,0x00,0x01,
1304    0x01 }},
1305  {{0x71,0x31,0x31,0x98,0x46,0x17,0x24,0xf1,
1306    0xbb,0x82,0x57,0x57,0x25,0x10,0x00,0x02,
1307    0x01 }},
1308  {{0x63,0x3f,0x3f,0x87,0x4c,0x97,0x24,0xf5,
1309    0x0f,0x86,0xff,0xff,0x25,0x30,0x00,0x01,
1310    0x01 }}
1311 };
1312
1313 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11280x1024_1[]=
1314 { /* Acer */
1315  {{0x7e,0x4f,0x4f,0x82,0x58,0x04,0xb8,0x1f,
1316    0x90,0x84,0x8f,0x8f,0xb9,0x30,0x00,0x06,
1317    0x00}},
1318  {{0x7e,0x4f,0x4f,0x82,0x58,0x04,0x86,0x1f,
1319    0x5e,0x82,0x5d,0x5d,0x87,0x10,0x00,0x06,
1320    0x00}},
1321  {{0x7e,0x4f,0x4f,0x82,0x58,0x04,0xb8,0x1f,
1322    0x90,0x84,0x8f,0x8f,0xb9,0x30,0x00,0x06,
1323    0x00}},
1324  {{0x7e,0x4f,0x4f,0x82,0x58,0x04,0x86,0x1f,
1325    0x5e,0x82,0x5d,0x5d,0x87,0x10,0x00,0x06,
1326    0x00}},
1327  {{0x7e,0x4f,0x4f,0x82,0x58,0x04,0x08,0x3e,
1328    0xe0,0x84,0xdf,0xdf,0x09,0x00,0x00,0x06,
1329    0x00}},
1330  {{0x92,0x63,0x63,0x96,0x6c,0x18,0x80,0xf0,
1331    0x58,0x8c,0x57,0x57,0x81,0x20,0x00,0x06,
1332    0x01}},
1333  {{0xae,0x7f,0x7f,0x92,0x88,0x94,0x28,0xf5,
1334    0x00,0x84,0xff,0xff,0x29,0x10,0x00,0x02,
1335    0x01}},
1336  {{0xce,0x9f,0x9f,0x92,0xa8,0x14,0x28,0x5a,
1337    0x00,0x84,0xff,0xff,0x29,0x01,0x00,0x07,
1338    0x01}}
1339 };
1340
1341 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11280x1024_1_H[]=
1342 {  /* Acer */
1343  {{0x56,0x27,0x27,0x9a,0x31,0x1c,0xb8,0x1f,
1344    0x90,0x84,0x8f,0x8f,0xb9,0x30,0x00,0x05,
1345    0x00}},
1346  {{0x56,0x27,0x27,0x9a,0x31,0x1c,0x86,0x1f,
1347    0x5e,0x82,0x5d,0x5d,0x87,0x10,0x00,0x05,
1348    0x00}},
1349  {{0x56,0x27,0x27,0x9a,0x31,0x1c,0xb8,0x1f,
1350    0x90,0x84,0x8f,0x8f,0xb9,0x30,0x00,0x05,
1351    0x00}},
1352  {{0x56,0x27,0x27,0x9a,0x31,0x1c,0x86,0x1f,
1353    0x5e,0x82,0x5d,0x5d,0x87,0x10,0x00,0x05,
1354    0x01}},
1355  {{0x56,0x27,0x27,0x9a,0x31,0x1c,0x08,0x3e,
1356    0xe0,0x84,0xdf,0xdf,0x09,0x00,0x00,0x05,
1357    0x00}},
1358  {{0x60,0x31,0x31,0x84,0x3a,0x86,0x80,0xf0,
1359    0x58,0x8c,0x57,0x57,0x81,0x20,0x00,0x01,
1360    0x01}},
1361  {{0x6e,0x3f,0x3f,0x92,0x48,0x94,0x28,0xf5,
1362    0x00,0x84,0xff,0xff,0x29,0x10,0x00,0x01,
1363    0x01}}
1364 };
1365
1366 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11280x1024_2[]=
1367 {  /* Illegal data in BIOS (Acer, Compaq) */
1368  {{0xa3,0x4f,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
1369    0x4a,0x80,0x8f,0x8f,0x25,0x30,0x00,0x06,
1370    0x00}},
1371  {{0xa3,0x4f,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
1372    0x31,0x87,0x5d,0x5d,0x25,0x30,0x00,0x06,
1373    0x00}},
1374  {{0xa3,0x4f,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
1375    0x4a,0x80,0x8f,0x8f,0x25,0x30,0x00,0x06,
1376    0x00}},
1377  {{0xa3,0x4f,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
1378    0x31,0x87,0x5d,0x5d,0x25,0x30,0x00,0x06,
1379    0x00}},
1380  {{0xa3,0x4f,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
1381    0x72,0x88,0xdf,0xdf,0x25,0x30,0x00,0x06,
1382    0x00}},
1383  {{0xa3,0x63,0x63,0x87,0x78,0x89,0x24,0xf1,
1384    0xae,0x84,0x57,0x57,0x25,0x30,0x00,0x02,
1385    0x01}},
1386  {{0xa3,0x7f,0x7f,0x87,0x86,0x97,0x24,0xf5,
1387    0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x02,
1388    0x01}}
1389 };
1390
1391 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11280x1024_2_H[]=
1392 {  /* Illegal data in BIOS (Acer, Compaq) */
1393  {{0x4f,0x27,0x27,0x93,0x39,0x81,0x24,0xbb,
1394    0x4a,0x80,0x8f,0x8f,0x25,0x30,0x00,0x01,
1395    0x00 }},
1396  {{0x4f,0x27,0x27,0x93,0x39,0x81,0x24,0xbb,
1397    0x31,0x87,0x5d,0x5d,0x25,0x30,0x00,0x01,
1398    0x00 }},
1399  {{0x4f,0x27,0x27,0x93,0x39,0x81,0x24,0xbb,
1400    0x4a,0x80,0x8f,0x8f,0x25,0x30,0x00,0x01,
1401    0x00 }},
1402  {{0x4f,0x27,0x27,0x93,0x39,0x81,0x24,0xbb,
1403    0x31,0x87,0x5d,0x5d,0x25,0x30,0x00,0x01,
1404    0x00 }},
1405  {{0x4f,0x27,0x27,0x93,0x39,0x81,0x24,0xbb,
1406    0x72,0x88,0xdf,0xdf,0x25,0x30,0x00,0x01,
1407    0x00 }},
1408  {{0x4f,0x31,0x31,0x93,0x3e,0x86,0x24,0xf1,
1409    0xae,0x84,0x57,0x57,0x25,0x30,0x00,0x01,
1410    0x01 }},
1411  {{0x4f,0x3f,0x3f,0x93,0x45,0x0d,0x24,0xf5,
1412    0x02,0x88,0xff,0xff,0x25,0x10,0x00,0x01,
1413    0x01 }}
1414 };
1415
1416 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11400x1050_1[]=
1417 {
1418  {{0x6f,0x4f,0x4f,0x93,0x54,0x82,0x9e,0x1f,
1419    0x93,0x86,0x8f,0x8f,0x9f,0x30,0x00,0x05,
1420    0x00}},
1421  {{0x6f,0x4f,0x4f,0x93,0x54,0x82,0x6c,0x1f,
1422    0x60,0x84,0x5d,0x5d,0x6d,0x10,0x00,0x05,
1423    0x00}},
1424  {{0x6f,0x4f,0x4f,0x93,0x54,0x82,0x9e,0x1f,
1425    0x93,0x86,0x8f,0x8f,0x9f,0x30,0x00,0x05,
1426    0x00}},
1427  {{0x6f,0x4f,0x4f,0x93,0x54,0x82,0x6c,0x1f,
1428    0x60,0x84,0x5d,0x5d,0x6d,0x10,0x00,0x05,
1429    0x00}},
1430  {{0x6f,0x4f,0x4f,0x93,0x54,0x82,0xee,0x1f,
1431    0xe2,0x86,0xdf,0xdf,0xef,0x10,0x00,0x05,
1432    0x00}},
1433  {{0x83,0x63,0x63,0x87,0x68,0x16,0x66,0xf0,
1434    0x5a,0x8e,0x57,0x57,0x67,0x20,0x00,0x06,
1435    0x01}},
1436  {{0x9f,0x7f,0x7f,0x83,0x84,0x92,0x0e,0xf5,
1437    0x02,0x86,0xff,0xff,0x0f,0x10,0x00,0x02,
1438    0x01}},
1439  {{0xbf,0x9f,0x9f,0x83,0xa4,0x12,0x0e,0x5a,
1440    0x02,0x86,0xff,0xff,0x0f,0x09,0x00,0x07,
1441    0x01}},
1442  {{0xce,0xae,0xae,0x92,0xb3,0x01,0x28,0x10,
1443    0x1a,0x80,0x19,0x19,0x29,0x0f,0x00,0x03,
1444    0x00}}
1445 };
1446
1447 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11400x1050_1_H[]=
1448 {
1449   {{0x47,0x27,0x27,0x8b,0x2c,0x1a,0x9e,0x1f,
1450     0x93,0x86,0x8f,0x8f,0x9f,0x30,0x00,0x05,
1451     0x00}},
1452   {{0x47,0x27,0x27,0x8b,0x2c,0x1a,0x6c,0x1f,
1453     0x60,0x84,0x5d,0x5d,0x6d,0x10,0x00,0x05,
1454     0x00}},
1455   {{0x47,0x27,0x27,0x8b,0x30,0x1e,0x9e,0x1f,
1456     0x92,0x86,0x8f,0x8f,0x9f,0x30,0x00,0x05,
1457     0x00}},
1458   {{0x47,0x27,0x27,0x8b,0x2c,0x1a,0x6c,0x1f,
1459     0x60,0x84,0x5d,0x5d,0x6d,0x10,0x00,0x05,
1460     0x00}},
1461   {{0x47,0x27,0x27,0x8b,0x2c,0x1a,0xee,0x1f,
1462     0xe2,0x86,0xdf,0xdf,0xef,0x10,0x00,0x05,
1463     0x00}},
1464   {{0x51,0x31,0x31,0x95,0x36,0x04,0x66,0xf0,
1465     0x5a,0x8e,0x57,0x57,0x67,0x20,0x00,0x01,
1466     0x01}},
1467   {{0x5f,0x3f,0x3f,0x83,0x44,0x92,0x0e,0xf5,
1468     0x02,0x86,0xff,0xff,0x0f,0x10,0x00,0x01,
1469     0x01}},
1470   {{0x6f,0x4f,0x4f,0x93,0x54,0x82,0x0e,0x5a,
1471     0x02,0x86,0xff,0xff,0x0f,0x09,0x00,0x05,
1472     0x01}},
1473   {{0x76,0x56,0x56,0x9a,0x5b,0x89,0x28,0x10,
1474     0x1c,0x80,0x19,0x19,0x29,0x0b,0x00,0x05,
1475     0x00}}
1476 };
1477
1478 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11400x1050_2[]=
1479 {
1480  {{0xce,0x4f,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
1481    0xdb,0x8f,0x8f,0x8f,0x29,0x21,0x00,0x03,
1482    0x00}},
1483  {{0xce,0x4f,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
1484    0xc2,0x86,0x5d,0x5d,0x29,0x01,0x00,0x03,
1485    0x01}},
1486  {{0xce,0x4f,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
1487    0xdb,0x8f,0x8f,0x8f,0x29,0x21,0x00,0x03,
1488    0x00}},
1489  {{0xce,0x4f,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
1490    0xc2,0x86,0x5d,0x5d,0x29,0x01,0x00,0x03,
1491    0x00}},
1492  {{0xce,0x4f,0x4f,0x92,0x8c,0x1a,0x28,0x9e,
1493    0x03,0x87,0xdf,0xdf,0x29,0x01,0x00,0x03,
1494    0x00}},
1495  {{0xce,0x63,0x63,0x92,0x96,0x04,0x28,0xd4,
1496    0x3f,0x83,0x57,0x57,0x29,0x01,0x00,0x07,
1497    0x01}},
1498  {{0xce,0x7f,0x7f,0x92,0xa4,0x12,0x28,0xd4,
1499    0x93,0x87,0xff,0xff,0x29,0x21,0x00,0x07,
1500    0x01}},
1501  {{0xce,0x9f,0x9f,0x92,0xb4,0x02,0x28,0x5a,
1502    0x13,0x87,0xff,0xff,0x29,0x29,0x00,0x03,
1503    0x01}},
1504  {{0xce,0xae,0xae,0x92,0xbc,0x0a,0x28,0x10,
1505    0x20,0x84,0x19,0x19,0x29,0x0f,0x00,0x03,
1506    0x00}}
1507 };
1508
1509 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11400x1050_2_H[]=
1510 {
1511  {{0xa6,0x27,0x27,0x8a,0x64,0x92,0x28,0x9a,
1512    0xdb,0x8f,0x8f,0x8f,0x29,0x21,0x00,0x06,
1513    0x00}},
1514  {{0xa6,0x27,0x27,0x8a,0x64,0x92,0x28,0x9a,
1515    0xc2,0x86,0x5d,0x5d,0x29,0x01,0x00,0x06,
1516    0x00}},
1517  {{0xa6,0x27,0x27,0x8a,0x64,0x92,0x28,0x9a,
1518    0xdb,0x8f,0x8f,0x8f,0x29,0x21,0x00,0x06,
1519    0x00}},
1520  {{0xa6,0x27,0x27,0x8a,0x64,0x92,0x28,0x9a,
1521    0xc2,0x86,0x5d,0x5d,0x29,0x01,0x00,0x06,
1522    0x00}},
1523  {{0xa6,0x27,0x27,0x8a,0x64,0x92,0x28,0x9e,
1524    0x03,0x87,0xdf,0xdf,0x29,0x01,0x00,0x06,
1525    0x00}},
1526  {{0x9c,0x31,0x31,0x80,0x64,0x92,0x28,0xd4,
1527    0x3f,0x83,0x57,0x57,0x29,0x01,0x00,0x06,
1528    0x01}},
1529  {{0x8e,0x3f,0x3f,0x92,0x64,0x12,0x28,0xd4,
1530    0x93,0x87,0xff,0xff,0x29,0x21,0x00,0x06,
1531    0x01}},
1532  {{0x7e,0x4f,0x4f,0x82,0x64,0x12,0x28,0x5a,
1533    0x13,0x87,0xff,0xff,0x29,0x29,0x00,0x06,
1534    0x01}},
1535  {{0x76,0x56,0x56,0x9a,0x64,0x92,0x28,0x10,
1536    0x20,0x84,0x19,0x19,0x29,0x0f,0x00,0x05,
1537    0x00}}
1538 };
1539
1540 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11600x1200_1[]=
1541 {
1542  {{0x83,0x4F,0x4F,0x87,0x51,0x09,0xC0,0x1F,
1543    0x90,0x84,0x8F,0x8F,0xC1,0x30,0x00,0x06,
1544    0x00}},
1545  {{0x83,0x4F,0x4F,0x87,0x51,0x09,0x8E,0x1F,
1546    0x5E,0x82,0x5D,0x5D,0x8F,0x10,0x00,0x06,
1547    0x00}},
1548  {{0x83,0x4F,0x4F,0x87,0x51,0x09,0xC0,0x1F,
1549    0x90,0x84,0x8F,0x8F,0xC1,0x30,0x00,0x06,
1550    0x00}},
1551  {{0x83,0x4F,0x4F,0x87,0x51,0x09,0x8E,0x1F,
1552    0x5E,0x82,0x5D,0x5D,0x8F,0x10,0x00,0x06,
1553    0x00}},
1554  {{0x83,0x4F,0x4F,0x87,0x51,0x09,0x10,0x3E,
1555    0xE0,0x84,0xDF,0xDF,0x11,0x00,0x00,0x06,
1556    0x00}},
1557  {{0x97,0x63,0x63,0x9B,0x65,0x1D,0x88,0xF0,
1558    0x58,0x8C,0x57,0x57,0x89,0x20,0x00,0x06,
1559    0x01}},
1560  {{0xB3,0x7F,0x7F,0x97,0x81,0x99,0x30,0xF5,
1561    0x00,0x84,0xFF,0xFF,0x31,0x10,0x00,0x02,
1562    0x01}},
1563  {{0xD3,0x9F,0x9F,0x97,0xA1,0x19,0x30,0x5A,
1564    0x00,0x84,0xFF,0xFF,0x31,0x09,0x00,0x07,
1565    0x01}},
1566  {{0xE2,0xAE,0xAE,0x86,0xB0,0x88,0x4A,0x10,
1567    0x1A,0x8E,0x19,0x19,0x4B,0x2F,0x00,0x03,
1568    0x00}},
1569  {{0xFB,0xC7,0xC7,0x9F,0xC9,0x81,0xE0,0x10,
1570    0xB0,0x84,0xAF,0xAF,0xE1,0x2F,0x00,0x07,
1571    0x00}}
1572 };
1573
1574 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11600x1200_1_H[]=
1575 {
1576  {{0x69,0x27,0x27,0x8D,0x30,0x88,0xC0,0x1F,
1577    0x90,0x84,0x8F,0x8F,0xC1,0x30,0x00,0x01,
1578    0x00}},
1579  {{0x69,0x27,0x27,0x8D,0x30,0x88,0x8E,0x1F,
1580    0x5E,0x82,0x5D,0x5D,0x87,0x10,0x00,0x01,
1581    0x00}},
1582  {{0x69,0x27,0x27,0x8D,0x30,0x88,0xC0,0x1F,
1583    0x90,0x84,0x8F,0x8F,0xC1,0x30,0x00,0x01,
1584    0x00}},
1585  {{0x69,0x27,0x27,0x8D,0x30,0x88,0x8E,0x1F,
1586    0x5E,0x82,0x5D,0x5D,0x87,0x10,0x00,0x01,
1587    0x00}},
1588  {{0x69,0x27,0x27,0x8D,0x30,0x88,0x10,0x3E,
1589    0xE0,0x84,0xDF,0xDF,0x11,0x00,0x00,0x01,
1590    0x00}},
1591  {{0x73,0x31,0x31,0x97,0x3A,0x92,0x88,0xF0,
1592    0x58,0x8C,0x57,0x57,0x89,0x20,0x00,0x01,
1593    0x01}},
1594  {{0x81,0x3F,0x3F,0x85,0x48,0x00,0x30,0xF5,
1595    0x00,0x84,0xFF,0xFF,0x31,0x10,0x00,0x06,
1596    0x01}},
1597  {{0x91,0x4F,0x4F,0x95,0x58,0x10,0x30,0x5A,
1598    0x00,0x84,0xFF,0xFF,0x31,0x09,0x00,0x06,
1599    0x01}},
1600  {{0xD4,0x9F,0x9F,0x98,0xA8,0x00,0x30,0x5A,
1601    0x00,0x84,0xFF,0xFF,0x31,0x09,0x00,0x03,
1602    0x01}},
1603  {{0xA5,0x63,0x63,0x89,0x6C,0x84,0xE0,0x10,
1604    0xB0,0x84,0xAF,0xAF,0xE1,0x2F,0x00,0x02,
1605    0x00}}
1606 };
1607
1608 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11600x1200_2[]=
1609 {
1610  {{0x09,0x4F,0x4F,0x8D,0xA3,0x1B,0xE0,0x9E,
1611    0x37,0x8B,0x8F,0x8F,0xE1,0x21,0x01,0x04,
1612    0x00}},
1613  {{0x09,0x4F,0x4F,0x8D,0xA3,0x1B,0xE0,0x9E,
1614    0x1E,0x82,0x5D,0x5D,0xE1,0x01,0x01,0x04,
1615    0x00}},
1616  {{0x09,0x4F,0x4F,0x8D,0xA3,0x1B,0xE0,0x9E,
1617    0x37,0x8B,0x8F,0x8F,0xE1,0x21,0x01,0x04,
1618    0x00}},
1619  {{0x09,0x4F,0x4F,0x8D,0xA3,0x1B,0xE0,0x9E,
1620    0x1E,0x82,0x5D,0x5D,0xE1,0x01,0x01,0x04,
1621    0x00}},
1622  {{0x09,0x4F,0x4F,0x8D,0xA3,0x1B,0xE0,0x9E,
1623    0x5F,0x83,0xDF,0xDF,0xE1,0x01,0x01,0x04,
1624    0x00}},
1625  {{0x09,0x63,0x63,0x8D,0xAD,0x05,0xE0,0xD4,
1626    0x9B,0x8F,0x57,0x57,0xE1,0x21,0x01,0x00,
1627    0x01}},
1628  {{0x09,0x7F,0x7F,0x8D,0xBB,0x13,0xE0,0xD4,
1629    0xEF,0x83,0xFF,0xFF,0xE1,0x21,0x01,0x00,
1630    0x01}},
1631  {{0x09,0x9F,0x9F,0x8D,0xCB,0x03,0xE0,0x5A,
1632    0x6F,0x83,0xFF,0xFF,0xE1,0x29,0x01,0x04,
1633    0x01}},
1634  {{0xD4,0x9F,0x9F,0x98,0xA8,0x00,0x30,0x5A,
1635    0x00,0x84,0xFF,0xFF,0x31,0x09,0x00,0x03,
1636    0x01}},
1637  {{0x09,0xC7,0xC7,0x8D,0xDF,0x17,0xE0,0x10,
1638    0xC7,0x8B,0xAF,0xAF,0xE1,0x0F,0x01,0x04,
1639    0x00}}
1640 };
1641
1642 static const SiS310_LCDACRT1DataStruct  SiS310_LCDACRT11600x1200_2_H[]=
1643 {
1644  {{0xE1,0x27,0x27,0x85,0x7B,0x93,0xE0,0x9E,
1645    0x37,0x8B,0x8F,0x8F,0xE1,0x21,0x00,0x03,
1646    0x00}},
1647  {{0xE1,0x27,0x27,0x85,0x7B,0x93,0xE0,0x9E,
1648    0x1E,0x82,0x5D,0x5D,0xE1,0x01,0x00,0x03,
1649    0x00}},
1650  {{0xE1,0x27,0x27,0x85,0x7B,0x93,0xE0,0x9E,
1651    0x37,0x8B,0x8F,0x8F,0xE1,0x21,0x00,0x03,
1652    0x00}},
1653  {{0xE1,0x27,0x27,0x85,0x7B,0x93,0xE0,0x9E,
1654    0x1E,0x82,0x5D,0x5D,0xE1,0x01,0x00,0x03,
1655    0x00}},
1656  {{0xE1,0x27,0x27,0x85,0x7B,0x93,0xE0,0x9E,
1657    0x5F,0x83,0xDF,0xDF,0xE1,0x01,0x00,0x03,
1658    0x00}},
1659  {{0xD7,0x31,0x31,0x9B,0x7B,0x13,0xE0,0xD4,
1660    0x9B,0x8F,0x57,0x57,0xE1,0x21,0x00,0x03,
1661    0x01}},
1662  {{0xC9,0x3F,0x3F,0x8D,0x7B,0x13,0xE0,0xD4,
1663    0xEF,0x83,0xFF,0xFF,0xE1,0x21,0x00,0x03,
1664    0x01}},
1665  {{0xB9,0x4F,0x4F,0x9D,0x7B,0x93,0xE0,0x5A,
1666    0x6F,0x83,0xFF,0xFF,0xE1,0x29,0x00,0x02,
1667    0x01}},
1668  {{0xD4,0x9F,0x9F,0x98,0xA8,0x00,0x30,0x5A,
1669    0x00,0x84,0xFF,0xFF,0x31,0x09,0x00,0x03,
1670    0x01}},
1671  {{0xA5,0x63,0x63,0x89,0x7B,0x93,0xE0,0x10,
1672    0xC7,0x8B,0xAF,0xAF,0xE1,0x0F,0x00,0x02,
1673    0x00}}
1674 };
1675
1676
1677 /**************************************************************/
1678 /* LVDS, CHRONTEL ------------------------------------------- */
1679 /**************************************************************/
1680
1681 typedef struct _SiS310_LVDSDataStruct
1682 {
1683         USHORT VGAHT;
1684         USHORT VGAVT;
1685         USHORT LCDHT;
1686         USHORT LCDVT;
1687 } SiS310_LVDSDataStruct;
1688
1689 static const SiS310_LVDSDataStruct  SiS310_CHTVUPALData[]=
1690 {
1691         {1008, 625,1008, 625},
1692         {1008, 625,1008, 625},
1693         {1008, 625,1008, 625},
1694         {1008, 625,1008, 625},
1695         { 840, 625, 840, 625},
1696         { 960, 750, 960, 750},
1697         {1400,1000,1400,1000}
1698 };
1699
1700 static const SiS310_LVDSDataStruct  SiS310_CHTVOPALData[]=
1701 {
1702         {1008, 625,1008, 625},
1703         {1008, 625,1008, 625},
1704         {1008, 625,1008, 625},
1705         {1008, 625,1008, 625},
1706         { 840, 625, 840, 625},
1707         { 944, 625, 944, 625},
1708         {1400, 875,1400, 875}
1709 };
1710
1711 static const SiS310_LVDSDataStruct  SiS310_CHTVUPALMData[]=
1712 {
1713         { 840, 600, 840, 600},
1714         { 840, 600, 840, 600},
1715         { 840, 600, 840, 600},
1716         { 840, 600, 840, 600},
1717         { 784, 600, 784, 600},
1718         {1064, 750,1064, 750},
1719         {1160, 945,1160, 945}
1720 };
1721
1722 static const SiS310_LVDSDataStruct  SiS310_CHTVOPALMData[]=
1723 {
1724         { 840, 525, 840, 525},
1725         { 840, 525, 840, 525},
1726         { 840, 525, 840, 525},
1727         { 840, 525, 840, 525},
1728         { 784, 525, 784, 525},
1729         {1040, 700,1040, 700},
1730         {1160, 840,1160, 840}
1731 };
1732
1733 static const SiS310_LVDSDataStruct  SiS310_CHTVUPALNData[]=
1734 {
1735         {1008, 625,1008, 625},
1736         {1008, 625,1008, 625},
1737         {1008, 625,1008, 625},
1738         {1008, 625,1008, 625},
1739         { 840, 625, 840, 625},
1740         { 960, 750, 960, 750},
1741         {1400,1000,1400,1000}
1742 };
1743
1744 static const SiS310_LVDSDataStruct  SiS310_CHTVOPALNData[]=
1745 {
1746         {1008, 625,1008, 625},
1747         {1008, 625,1008, 625},
1748         {1008, 625,1008, 625},
1749         {1008, 625,1008, 625},
1750         { 840, 625, 840, 625},
1751         { 944, 625, 944, 625},
1752         {1400, 875,1400, 875}
1753 };
1754
1755 static const SiS310_LVDSDataStruct  SiS310_CHTVSOPALData[]=   /* TW: (super overscan - no effect on 7019) */
1756 {
1757         {1008, 625,1008, 625},
1758         {1008, 625,1008, 625},
1759         {1008, 625,1008, 625},
1760         {1008, 625,1008, 625},
1761         { 840, 625, 840, 625},
1762         { 944, 625, 944, 625},
1763         {1400, 875,1400, 875}
1764 };
1765
1766 typedef struct _SiS310_LVDSDesStruct
1767 {
1768         USHORT LCDHDES;
1769         USHORT LCDVDES;
1770 } SiS310_LVDSDesStruct;
1771
1772 static const SiS310_LVDSDesStruct  SiS310_PanelType00_1[]=  /* 800x600 */
1773 {
1774         { 0, 0},
1775         { 0, 0},
1776         { 0, 0},
1777         { 0, 0},
1778         { 0, 0},
1779         { 0, 0},
1780         { 0, 0},
1781         { 0, 0},
1782         { 0, 0}
1783 };
1784
1785 static const SiS310_LVDSDesStruct  SiS310_PanelType01_1[]=  /* 1024x768 */
1786 {
1787         { 0, 0},
1788         { 0, 0},
1789         { 0, 0},
1790         { 0, 0},
1791         { 0, 0},
1792         { 0, 0},
1793         { 0, 805},
1794         { 0, 0},
1795         { 0, 0}
1796 };
1797
1798 static const SiS310_LVDSDesStruct  SiS310_PanelType02_1[]=  /* 1280x1024 */
1799 {
1800         { 0, 0},
1801         { 0, 0},
1802         { 0, 0},
1803         { 0, 0},
1804         { 0, 0},
1805         { 0, 0},
1806         { 0, 0},
1807         { 0, 1065},
1808         { 0, 0},
1809         { 0, 0}
1810 };
1811
1812
1813 static const SiS310_LVDSDesStruct  SiS310_PanelType03_1[]=
1814 {
1815         { 0, 0},
1816         { 0, 0},
1817         { 0, 0},
1818         { 0, 0},
1819         { 0, 0},
1820         { 0, 0},
1821         { 0, 0},
1822         { 0, 0},
1823         { 0, 0}
1824 };
1825
1826 static const SiS310_LVDSDesStruct  SiS310_PanelType04_1[]=
1827 {
1828         {1343, 798},
1829         {1343, 794},
1830         {1343, 798},
1831         {1343, 794},
1832         {1343,   0},
1833         {1343,   0},
1834         { 0, 805},
1835         { 0, 794},
1836         { 0,   0}
1837 };
1838
1839 static const SiS310_LVDSDesStruct  SiS310_PanelType05_1[]=
1840 {
1841         {1343, 798},
1842         {1343, 794},
1843         {1343, 798},
1844         {1343, 794},
1845         {1343,   0},
1846         {1343,   0},
1847         { 0, 805},
1848         { 0, 794},
1849         { 0,   0}
1850 };
1851
1852 static const SiS310_LVDSDesStruct  SiS310_PanelType06_1[]=
1853 {
1854         {1343, 798},
1855         {1343, 794},
1856         {1343, 798},
1857         {1343, 794},
1858         {1343,   0},
1859         {1343,   0},
1860         { 0, 805},
1861         { 0, 794},
1862         { 0,   0}
1863 };
1864
1865 static const SiS310_LVDSDesStruct  SiS310_PanelType07_1[]=
1866 {
1867         {1343, 798},
1868         {1343, 794},
1869         {1343, 798},
1870         {1343, 794},
1871         {1343,   0},
1872         {1343,   0},
1873         { 0, 805},
1874         { 0, 794},
1875         { 0,   0}
1876 };
1877
1878 static const SiS310_LVDSDesStruct  SiS310_PanelType08_1[]=   /* 1400x1050 */
1879 {
1880         { 0, 0},
1881         { 0, 0},
1882         { 0, 0},
1883         { 0, 0},
1884         { 0, 0},
1885         { 0, 0},
1886         { 0, 0},
1887         { 0, 0},
1888         { 0, 0},
1889         { 0, 0},
1890         { 0, 0}
1891 };
1892
1893 static const SiS310_LVDSDesStruct  SiS310_PanelType09_1[]=   /* 1280x768 */
1894 {
1895         { 0, 0},
1896         { 0, 0},
1897         { 0, 0},
1898         { 0, 0},
1899         { 0, 0},
1900         { 0, 0},
1901         { 0, 0},
1902         { 0, 0},
1903         { 0, 0},
1904         { 0, 0},
1905         { 0, 0}
1906 };
1907
1908 static const SiS310_LVDSDesStruct  SiS310_PanelType0a_1[]=  /* 1600x1200 */
1909 {
1910         { 0, 0},
1911         { 0, 0},
1912         { 0, 0},
1913         { 0, 0},
1914         { 0, 0},
1915         { 0, 0},
1916         { 0, 0},
1917         { 0, 0},
1918         { 0, 0},
1919         { 0, 0},
1920         { 0, 0}
1921 };
1922
1923 static const SiS310_LVDSDesStruct  SiS310_PanelType0b_1[]=  /* 640x480_2 */
1924 {
1925         { 0, 524},
1926         { 0, 524},
1927         { 0, 524},
1928         { 0, 524},
1929         { 0, 524},
1930         { 0, 524},
1931         { 8, 524},
1932         { 0, 524}
1933 };
1934
1935 static const SiS310_LVDSDesStruct  SiS310_PanelType0c_1[]=  /* 640x480_3 */
1936 {
1937         { 0, 524},
1938         { 0, 524},
1939         { 0, 524},
1940         { 0, 524},
1941         { 0, 524},
1942         { 0, 524},
1943         { 8, 524},
1944         { 0, 524}
1945 };
1946
1947 static const SiS310_LVDSDesStruct  SiS310_PanelType0d_1[]=
1948 {
1949         {1343, 798},
1950         {1343, 794},
1951         {1343, 798},
1952         {1343, 794},
1953         {1343,   0},
1954         {1343,   0},
1955         { 0, 805},
1956         { 0, 794},
1957         { 0,   0}
1958 };
1959
1960 static const SiS310_LVDSDesStruct  SiS310_PanelType0e_1[]=
1961 {
1962         {1343, 798},
1963         {1343, 794},
1964         {1343, 798},
1965         {1343, 794},
1966         {1343,   0},
1967         {1343,   0},
1968         { 0, 805},
1969         { 0, 794},
1970         { 0,   0}
1971 };
1972
1973 static const SiS310_LVDSDesStruct  SiS310_PanelType0f_1[]=
1974 {
1975         {1343, 798},
1976         {1343, 794},
1977         {1343, 798},
1978         {1343, 794},
1979         {1343,   0},
1980         {1343,   0},
1981         { 0, 805},
1982         { 0, 794},
1983         { 0,   0}
1984 };
1985
1986 static const SiS310_LVDSDesStruct  SiS310_PanelType00_2[]=
1987 {
1988         {980, 528},
1989         {980, 503},
1990         {980, 528},
1991         {980, 503},
1992         {980, 568},
1993         { 0, 628},
1994         { 0,   0},
1995         { 0,   0},
1996         { 0,   0}
1997 };
1998
1999 static const SiS310_LVDSDesStruct  SiS310_PanelType01_2[]= 
2000 {
2001         {1152, 622},
2002         {1152, 597},
2003         {1152, 622},
2004         {1152, 597},
2005         {1152, 662},
2006         {1232, 722},
2007         { 0, 806},
2008         { 0,   0},
2009         { 0,   0}
2010 };
2011
2012 static const SiS310_LVDSDesStruct  SiS310_PanelType02_2[]= 
2013 {
2014         {1368, 754},
2015         {1368, 729},
2016         {1368, 754},
2017         {1368, 729},
2018         {1368, 794},
2019         {1448, 854},
2020         {1560, 938},
2021         {   0,1066},
2022         { 0,   0},
2023         { 0,   0},
2024         { 0,   0}
2025 };
2026
2027 static const SiS310_LVDSDesStruct  SiS310_PanelType03_2[]=  
2028 {
2029         { 0,   0},
2030         { 0,   0},
2031         { 0,   0},
2032         { 0,   0},
2033         { 0,   0},
2034         { 0,   0},
2035         { 0,   0}
2036 };
2037
2038 static const SiS310_LVDSDesStruct  SiS310_PanelType04_2[]=  
2039 {
2040         { 0,   0},
2041         { 0,   0},
2042         { 0,   0},
2043         { 0,   0},
2044         { 0,   0},
2045         { 0,   0},
2046         { 0,   0},
2047         { 0,   0},
2048         { 0,   0}
2049 };
2050
2051 static const SiS310_LVDSDesStruct  SiS310_PanelType05_2[]=  
2052 {
2053         {1152, 622},
2054         {1152, 597},
2055         {1152, 622},
2056         {1152, 597},
2057         {1152, 662},
2058         {1232, 722},
2059         { 0, 805},
2060         { 0, 794},
2061         { 0,   0}
2062 };
2063
2064 static const SiS310_LVDSDesStruct  SiS310_PanelType06_2[]=  
2065 {
2066         {1152, 622},
2067         {1152, 597},
2068         {1152, 622},
2069         {1152, 597},
2070         {1152, 662},
2071         {1232, 722},
2072         { 0, 805},
2073         { 0, 794},
2074         { 0,   0}
2075 };
2076
2077 static const SiS310_LVDSDesStruct  SiS310_PanelType07_2[]=  
2078 {
2079         {1152, 622},
2080         {1152, 597},
2081         {1152, 622},
2082         {1152, 597},
2083         {1152, 662},
2084         {1232, 722},
2085         { 0, 805},
2086         { 0, 794},
2087         { 0,   0}
2088 };
2089
2090 static const SiS310_LVDSDesStruct  SiS310_PanelType08_2[]=  /* 1400x1050 */
2091 {
2092         {1308, 741},
2093         {1308, 716},
2094         {1308, 741},
2095         {1308, 716},
2096         {1308, 781},
2097         {1388, 841},
2098         {1500, 925},
2099         {1628,1053},
2100         {   0,1065},
2101         {   0,   0},
2102         {   0,   0}
2103 };
2104
2105 static const SiS310_LVDSDesStruct  SiS310_PanelType09_2[]= /* 1280x768 */
2106 {
2107         {1083, 622},
2108         {1083, 597},
2109         {1083, 622},
2110         {1083, 597},
2111         {1083, 662},
2112         {1163, 722},
2113         {1286, 805},
2114         {   0, 794},
2115         {   0,   0}
2116 };
2117
2118 static const SiS310_LVDSDesStruct  SiS310_PanelType0a_2[]=  /* 1600x1200 */
2119 {
2120         {1568, 920},
2121         {1568, 895},
2122         {1568, 920},
2123         {1568, 895},
2124         {1568, 960},
2125         {1648,1020},
2126         {1760,1104},
2127         {1888,1232},
2128         {1948,1245},
2129         {   0,   0}
2130 #if 0
2131         {1568, 850},
2132         {1568, 825},
2133         {1568, 850},
2134         {1568, 825},
2135         {1568, 890},
2136         {1648, 950},
2137         {1760,1034},
2138         {1888,1162},
2139         {1948,1175},
2140         {   0,   0}
2141 #endif
2142 };
2143
2144 static const SiS310_LVDSDesStruct  SiS310_PanelType0b_2[]=  /* 640x480_2 */
2145 {
2146         {1152, 622},
2147         {1152, 597},
2148         {1152, 622},
2149         {1152, 597},
2150         {1152, 662},
2151         {1232, 722},
2152         { 0, 805},
2153         { 0, 794},
2154         { 0,   0}
2155 };
2156
2157 static const SiS310_LVDSDesStruct  SiS310_PanelType0c_2[]=  /* 640x480_3 */
2158 {
2159         {1152, 622},
2160         {1152, 597},
2161         {1152, 622},
2162         {1152, 597},
2163         {1152, 662},
2164         {1232, 722},
2165         { 0, 805},
2166         { 0, 794},
2167         { 0,   0}
2168 };
2169
2170 static const SiS310_LVDSDesStruct  SiS310_PanelType0d_2[]=  
2171 {
2172         {1152, 622},
2173         {1152, 597},
2174         {1152, 622},
2175         {1152, 597},
2176         {1152, 662},
2177         {1232, 722},
2178         { 0, 805},
2179         { 0, 794},
2180         { 0,   0}
2181 };
2182
2183 static const SiS310_LVDSDesStruct  SiS310_PanelType0e_2[]=
2184 {
2185         {1152, 622},
2186         {1152, 597},
2187         {1152, 622},
2188         {1152, 597},
2189         {1152, 662},
2190         {1232, 722},
2191         { 0, 805},
2192         { 0, 794},
2193         { 0,   0}
2194 };
2195
2196 static const SiS310_LVDSDesStruct  SiS310_PanelType0f_2[] =
2197 {
2198         {1152, 622},
2199         {1152, 597},
2200         {1152, 622},
2201         {1152, 597},
2202         {1152, 662},
2203         {1232, 722},
2204         { 0, 805},
2205         { 0, 794},
2206         { 0,   0}
2207 };
2208
2209 /* CRT1 CRTC for SlaveModes and LCDA */
2210
2211 typedef struct _SiS310_LVDSCRT1DataStruct
2212 {
2213         UCHAR CR[15];
2214 } SiS310_LVDSCRT1DataStruct;
2215
2216 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT1800x600_1[] =
2217 {
2218  {{0x6b,0x4f,0x8f,0x55,0x85,0xaa,0x1f,
2219    0x90,0x85,0x8f,0xab,0x30,0x00,0x05,
2220    0x00 }},
2221  {{0x6b,0x4f,0x8f,0x55,0x85,0x78,0x1f,
2222    0x5e,0x83,0x5d,0x79,0x10,0x00,0x05,
2223    0x00 }},
2224  {{0x6b,0x4f,0x8f,0x55,0x85,0xaa,0x1f,
2225    0x90,0x85,0x8f,0xab,0x30,0x00,0x05,
2226    0x00 }},
2227  {{0x6b,0x4f,0x8f,0x55,0x85,0x78,0x1f,
2228    0x5e,0x83,0x5d,0x79,0x10,0x00,0x05,
2229    0x00 }},
2230  {{0x6b,0x4f,0x8f,0x55,0x85,0xfa,0x1f,
2231    0xe0,0x85,0xdf,0xfb,0x10,0x00,0x05,
2232    0x00 }},
2233  {{0x7f,0x63,0x83,0x69,0x19,0x72,0xf0,
2234    0x58,0x8c,0x57,0x73,0x20,0x00,0x06,
2235    0x01 }}
2236 };
2237
2238 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT1800x600_1_H[] =
2239 {
2240  {{0x43,0x27,0x87,0x2d,0x1d,0xaa,0x1f,
2241    0x90,0x85,0x8f,0xab,0x30,0x00,0x05,
2242    0x00 }},
2243  {{0x43,0x27,0x87,0x2d,0x1d,0x78,0x1f,
2244    0x5e,0x83,0x5d,0x79,0x10,0x00,0x05,
2245    0x00 }},
2246  {{0x43,0x27,0x87,0x2d,0x1d,0xfa,0x1f,
2247    0xe0,0x85,0xdf,0xfb,0x10,0x00,0x05,
2248    0x00 }},
2249  {{0x43,0x27,0x87,0x2d,0x1d,0x78,0x1f,
2250    0x5e,0x83,0x5d,0x79,0x10,0x00,0x05,
2251    0x00 }},
2252  {{0x43,0x27,0x87,0x2d,0x1d,0xfa,0x1f,
2253    0xe0,0x85,0xdf,0xfb,0x10,0x00,0x05,
2254    0x00 }},
2255  {{0x4d,0x31,0x91,0x37,0x07,0x72,0xf0,
2256    0x58,0x8d,0x57,0x73,0x20,0x00,0x01,
2257    0x01 }}
2258 };
2259
2260 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT1800x600_2[]=
2261 {
2262  {{0x7f,0x4f,0x83,0x62,0x12,0x72,0x3e,
2263    0xff,0x84,0x8f,0x73,0x00,0x00,0x06,
2264    0x00 }},
2265  {{0x7f,0x4f,0x83,0x62,0x12,0x72,0x3e,
2266    0xe6,0x8b,0x5d,0x73,0x00,0x00,0x06,
2267    0x00 }},
2268  {{0x7f,0x4f,0x83,0x62,0x12,0x72,0x3e,
2269    0xff,0x84,0x8f,0x73,0x00,0x00,0x06,
2270    0x00 }},
2271  {{0x7f,0x4f,0x83,0x62,0x12,0x72,0x3e,
2272    0xe6,0x8b,0x5d,0x73,0x00,0x00,0x06,
2273    0x00 }},
2274  {{0x7f,0x4f,0x83,0x62,0x12,0x72,0xba,
2275    0x27,0x8c,0xdf,0x73,0x00,0x00,0x06,
2276    0x00 }},
2277  {{0x7f,0x63,0x83,0x69,0x19,0x72,0xf0,
2278    0x58,0x8d,0x57,0x73,0x20,0x00,0x06,
2279    0x01 }}
2280 };
2281
2282 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT1800x600_2_H[] =
2283 {
2284  {{0x57,0x27,0x9b,0x3a,0x0a,0x72,0x3e,
2285    0xff,0x84,0x8f,0x73,0x00,0x00,0x01,
2286    0x00 }},
2287  {{0x57,0x27,0x9b,0x3a,0x0a,0x72,0x3e,
2288    0xd6,0x8b,0x5d,0x73,0x00,0x00,0x01,
2289    0x00 }},
2290  {{0x57,0x27,0x9b,0x3a,0x0a,0x72,0x3e,
2291    0xff,0x84,0x8f,0x73,0x00,0x00,0x01,
2292    0x00 }},
2293  {{0x57,0x27,0x9b,0x3a,0x0a,0x72,0x3e,
2294    0xd6,0x8b,0x5d,0x73,0x00,0x00,0x01,
2295    0x00 }},
2296  {{0x57,0x27,0x9b,0x3a,0x0a,0x72,0xba,
2297    0x27,0x8c,0xdf,0x73,0x00,0x00,0x01,
2298    0x00 }},
2299  {{0x4d,0x31,0x91,0x3a,0x0a,0x72,0xf0,
2300    0x63,0x88,0x57,0x73,0x00,0x00,0x01,
2301    0x01 }}
2302 };
2303
2304 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11024x768_1[] =
2305 {
2306  {{0x73,0x4f,0x97,0x53,0x84,0xb4,0x1f,
2307    0x92,0x89,0x8f,0xb5,0x30,0x00,0x05,
2308    0x00}},
2309  {{0x73,0x4f,0x97,0x53,0x84,0x82,0x1f,
2310    0x60,0x87,0x5d,0x83,0x10,0x00,0x05,
2311    0x00}},
2312  {{0x73,0x4f,0x97,0x53,0x84,0xb4,0x1f,
2313    0x92,0x89,0x8f,0xb5,0x30,0x00,0x05,
2314    0x00}},
2315  {{0x73,0x4f,0x97,0x53,0x84,0x82,0x1f,
2316    0x60,0x87,0x5d,0x83,0x10,0x00,0x05,
2317    0x00}},
2318  {{0x73,0x4f,0x97,0x53,0x84,0x04,0x3e,
2319    0xE2,0x89,0xDf,0x05,0x00,0x00,0x05,
2320    0x00}},
2321  {{0x87,0x63,0x8B,0x67,0x18,0x7c,0xf0,
2322    0x5A,0x81,0x57,0x7D,0x00,0x00,0x06,
2323    0x01}},
2324  {{0xA3,0x7f,0x87,0x83,0x94,0x24,0xf5,
2325    0x02,0x89,0xFf,0x25,0x10,0x00,0x02,
2326    0x01}}
2327 };
2328
2329 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11024x768_1_H[] =
2330 {
2331  {{0x4b,0x27,0x8f,0x2b,0x1c,0xb4,0x1f,
2332    0x92,0x89,0x8f,0xb5,0x30,0x00,0x05,
2333    0x00 }},
2334  {{0x4b,0x27,0x8f,0x2b,0x1c,0x82,0x1f,
2335    0x60,0x87,0x5D,0x83,0x01,0x00,0x05,
2336    0x00}},
2337  {{0x4b,0x27,0x8f,0x2b,0x1c,0xb4,0x1f,
2338    0x92,0x89,0x8f,0xb5,0x30,0x00,0x05,
2339    0x00}},
2340  {{0x4b,0x27,0x8f,0x2b,0x1c,0x82,0x1f,
2341    0x60,0x87,0x5D,0x83,0x01,0x00,0x05,
2342    0x00}},
2343  {{0x4b,0x27,0x8f,0x2b,0x1c,0x04,0x3e,
2344    0xE2,0x89,0xDf,0x05,0x00,0x00,0x05,
2345    0x00}},
2346  {{0x55,0x31,0x99,0x35,0x06,0x7c,0xf0,
2347    0x5A,0x81,0x57,0x7D,0x00,0x00,0x01,
2348    0x01}},
2349  {{0x63,0x3F,0x87,0x43,0x94,0x24,0xf5,
2350    0x02,0x89,0xFf,0x25,0x10,0x00,0x01,
2351    0x01 }}
2352 };
2353
2354 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11024x768_2[] =
2355 {
2356  {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
2357    0x57,0x8e,0x8f,0x25,0x30,0x00,0x06,
2358    0x00 }},
2359  {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
2360    0x3e,0x85,0x5d,0x25,0x10,0x00,0x06,
2361    0x00 }},
2362  {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
2363    0x57,0x8e,0x8f,0x25,0x30,0x00,0x06,
2364    0x00 }},
2365  {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
2366    0x3e,0x85,0x5d,0x25,0x10,0x00,0x06,
2367    0x01 }},
2368  {{0xa3,0x4f,0x87,0x6e,0x9f,0x24,0xbb,
2369    0x7f,0x86,0xdf,0x25,0x10,0x00,0x06,
2370    0x00 }},
2371  {{0xa3,0x63,0x87,0x78,0x89,0x24,0xf1,
2372    0xbb,0x82,0x57,0x25,0x10,0x00,0x02,
2373    0x01 }},
2374  {{0xa3,0x7f,0x87,0x83,0x94,0x24,0xf5,
2375    0x02,0x89,0xff,0x25,0x10,0x00,0x02,
2376    0x01 }}
2377 };
2378
2379 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11024x768_2_H[] =
2380 {
2381  {{0x7b,0x27,0x9f,0x46,0x97,0x24,0xbb,
2382    0x57,0x8e,0x8f,0x25,0x30,0x00,0x01,
2383    0x00 }},
2384  {{0x7b,0x27,0x9f,0x46,0x97,0x24,0xbb,
2385    0x3e,0x85,0x5d,0x25,0x10,0x00,0x01,
2386    0x00 }},
2387  {{0x7b,0x27,0x9f,0x46,0x97,0x24,0xbb,
2388    0x57,0x8e,0x8f,0x25,0x30,0x00,0x01,
2389    0x00 }},
2390  {{0x7b,0x27,0x9f,0x46,0x97,0x24,0xbb,
2391    0x3e,0x85,0x5d,0x25,0x10,0x00,0x01,
2392    0x00 }},
2393  {{0x7b,0x27,0x9f,0x46,0x97,0x24,0xbb,
2394    0x7f,0x86,0xdf,0x25,0x10,0x00,0x01,
2395    0x00 }},
2396  {{0x71,0x31,0x95,0x46,0x97,0x24,0xf1,
2397    0xbb,0x82,0x57,0x25,0x10,0x00,0x01,
2398    0x01 }},
2399  {{0x63,0x3f,0x87,0x46,0x97,0x24,0xf5,
2400    0x0f,0x86,0xff,0x25,0x30,0x00,0x01,
2401    0x01 }}
2402 };
2403
2404 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11280x1024_1[] =
2405 {
2406  {{0x7e,0x4f,0x82,0x58,0x04,0xb8,0x1f,
2407    0x90,0x84,0x8f,0xb9,0x30,0x00,0x06,
2408    0x00}},
2409  {{0x7e,0x4f,0x82,0x58,0x04,0x86,0x1f,
2410    0x5e,0x82,0x5d,0x87,0x10,0x00,0x06,
2411    0x00}},
2412  {{0x7e,0x4f,0x82,0x58,0x04,0xb8,0x1f,
2413    0x90,0x84,0x8f,0xb9,0x30,0x00,0x06,
2414    0x00}},
2415  {{0x7e,0x4f,0x82,0x58,0x04,0x86,0x1f,
2416    0x5e,0x82,0x5d,0x87,0x10,0x00,0x06,
2417    0x00}},
2418  {{0x7e,0x4f,0x82,0x58,0x04,0x08,0x3e,
2419    0xe0,0x84,0xdf,0x09,0x00,0x00,0x06,
2420    0x00}},
2421  {{0x92,0x63,0x96,0x6c,0x18,0x80,0xf0,
2422    0x58,0x8c,0x57,0x81,0x20,0x00,0x06,
2423    0x01}},
2424  {{0xae,0x7f,0x92,0x88,0x94,0x28,0xf5,
2425    0x00,0x84,0xff,0x29,0x10,0x00,0x02,
2426    0x01}},
2427  {{0xce,0x9f,0x92,0xa8,0x14,0x28,0x5a,
2428    0x00,0x84,0xff,0x29,0x09,0x00,0x07,
2429    0x01}}
2430 };
2431
2432 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11280x1024_1_H[] =
2433 {
2434  {{0x56,0x27,0x9a,0x31,0x1c,0xb8,0x1f,
2435    0x90,0x84,0x8f,0xb9,0x30,0x00,0x05,
2436    0x00}},
2437  {{0x56,0x27,0x9a,0x31,0x1c,0x86,0x1f,
2438    0x5e,0x82,0x5d,0x87,0x10,0x00,0x05,
2439    0x00}},
2440  {{0x56,0x27,0x9a,0x31,0x1c,0xb8,0x1f,
2441    0x90,0x84,0x8f,0xb9,0x30,0x00,0x05,
2442    0x00}},
2443  {{0x56,0x27,0x9a,0x31,0x1c,0x86,0x1f,
2444    0x5e,0x82,0x5d,0x87,0x10,0x00,0x05,
2445    0x01}},
2446  {{0x56,0x27,0x9a,0x31,0x1c,0x08,0x3e,
2447    0xe0,0x84,0xdf,0x09,0x00,0x00,0x05,
2448    0x00}},
2449  {{0x60,0x31,0x84,0x3a,0x86,0x80,0xf0,
2450    0x58,0x8c,0x57,0x81,0x20,0x00,0x01,
2451    0x01}},
2452  {{0x6e,0x3f,0x92,0x48,0x94,0x28,0xf5,
2453    0x00,0x84,0xff,0x29,0x10,0x00,0x01,
2454    0x01}}
2455 };
2456
2457 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11280x1024_2[] =  
2458 {
2459  {{0xce,0x72,0x91,0x81,0x8f,0x28,0x92,
2460    0xc8,0x8c,0x5d,0x5c,0x01,0x00,0x02,
2461    0x01}},
2462  {{0xce,0x72,0x91,0x81,0x8f,0x28,0x92,
2463    0xaf,0x83,0x44,0x43,0x21,0x00,0x02,
2464    0x01}},
2465  {{0xce,0x72,0x91,0x81,0x8f,0x28,0x92,
2466    0xc8,0x8c,0x5d,0x5c,0x01,0x00,0x02,
2467    0x01}},
2468  {{0xce,0x72,0x91,0x81,0x8f,0x28,0x92,
2469    0xaf,0x83,0x44,0x43,0x21,0x00,0x02,
2470    0x01}},
2471  {{0xce,0x72,0x91,0x81,0x8f,0x28,0x92,
2472    0xf0,0x84,0x85,0x84,0x11,0x00,0x02,
2473    0x01}},
2474  {{0xce,0x63,0x92,0x8b,0x19,0x28,0xd4,
2475    0x3f,0x83,0x57,0x29,0x01,0x00,0x03,
2476    0x01}},
2477  {{0xce,0x7f,0x92,0x99,0x07,0x28,0xd4,
2478    0x93,0x87,0xff,0x29,0x21,0x00,0x07,
2479    0x01}},
2480  {{0xce,0x9f,0x92,0xa8,0x14,0x28,0x5a,
2481    0x00,0x84,0xff,0x29,0x09,0x00,0x07,
2482    0x01}}
2483 };
2484
2485 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11280x1024_2_H[] = 
2486 {
2487  {{0xa6,0x4a,0x89,0x59,0x07,0x28,0x92,
2488    0xc8,0x8c,0x5d,0x5c,0x01,0x00,0x06,
2489    0x01}},
2490  {{0xa6,0x4a,0x89,0x59,0x07,0x28,0x92,
2491    0xaf,0x83,0x44,0x43,0x21,0x00,0x06,
2492    0x01}},
2493  {{0xa6,0x4a,0x89,0x59,0x07,0x28,0x92,
2494    0xc8,0x8c,0x5d,0x5c,0x01,0x00,0x06,
2495    0x01}},
2496  {{0xa6,0x4a,0x89,0x59,0x07,0x28,0x92,
2497    0xfa,0x83,0x44,0x43,0x31,0x00,0x06,
2498    0x01}},
2499  {{0xa6,0x4a,0x89,0x59,0x07,0x28,0x92,
2500    0xf0,0x84,0x85,0x84,0x11,0x00,0x06,
2501    0x01}},
2502  {{0x9c,0x31,0x80,0x59,0x87,0x28,0xd4,
2503    0x3f,0x83,0x57,0x29,0x01,0x00,0x06,
2504    0x01}},
2505  {{0x8e,0x3f,0x92,0x59,0x07,0x28,0xd4,
2506    0x93,0x87,0xff,0x29,0x21,0x00,0x06,
2507    0x01}}
2508 };
2509
2510 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11400x1050_1[] =
2511 {
2512   {{0x6f,0x4f,0x93,0x54,0x82,0x9e,0x1f,
2513     0x8f,0x81,0x8f,0x9f,0x30,0x00,0x05,
2514     0x00}},
2515   {{0x6f,0x4f,0x93,0x54,0x82,0x6c,0x1f,
2516     0x5e,0x81,0x5d,0x6d,0x10,0x00,0x05,
2517     0x00}},
2518   {{0x6f,0x4f,0x93,0x54,0x82,0x9e,0x1f,
2519     0x90,0x83,0x8f,0x9f,0x30,0x00,0x05,
2520     0x00}},
2521   {{0x6f,0x4f,0x93,0x54,0x82,0x6c,0x1f,
2522     0x60,0x84,0x5d,0x6d,0x10,0x00,0x05,
2523     0x00}},
2524   {{0x6f,0x4f,0x93,0x54,0x82,0xee,0x1f,
2525     0xdf,0x82,0xdf,0xef,0x10,0x00,0x05,
2526     0x00}},
2527   {{0x83,0x63,0x87,0x68,0x16,0x66,0xf0,
2528     0x57,0x8e,0x57,0x67,0x20,0x00,0x06,
2529     0x01}},
2530   {{0x9f,0x7f,0x83,0x84,0x92,0x0e,0xf1,
2531     0xff,0x86,0xff,0x0f,0x10,0x00,0x02,
2532     0x01,}},
2533   {{0xbf,0x9f,0x83,0xa4,0x12,0x0e,0xde,
2534     0xff,0x86,0xff,0x0f,0x01,0x00,0x07,
2535     0x01}},
2536   {{0xce,0xae,0x92,0xb3,0x01,0x28,0x10,
2537     0x19,0x80,0x19,0x29,0x0f,0x00,0x03,
2538     0x00}}
2539 #if 0
2540  {{0x6f,0x4f,0x93,0x54,0x82,0x9e,0x1f,
2541    0x93,0x86,0x8f,0x9f,0x30,0x00,0x05,
2542    0x00}},
2543  {{0x6f,0x4f,0x93,0x54,0x82,0x6c,0x1f,
2544    0x60,0x84,0x5d,0x6d,0x10,0x00,0x05,
2545    0x00}},
2546  {{0x6f,0x4f,0x93,0x54,0x82,0x9e,0x1f,
2547    0x93,0x86,0x8f,0x9f,0x30,0x00,0x05,
2548    0x00}},
2549  {{0x6f,0x4f,0x93,0x54,0x82,0x6c,0x1f,
2550    0x60,0x84,0x5d,0x6d,0x10,0x00,0x05,
2551    0x00}},
2552  {{0x6f,0x4f,0x93,0x54,0x82,0xee,0x1f,
2553    0xe2,0x86,0xdf,0xef,0x10,0x00,0x05,
2554    0x00}},
2555  {{0x83,0x63,0x87,0x68,0x16,0x66,0xf0,
2556    0x5a,0x8e,0x57,0x67,0x20,0x00,0x06,
2557    0x01}},
2558  {{0x9f,0x7f,0x83,0x84,0x92,0x0e,0xf5,
2559    0x02,0x86,0xff,0x0f,0x10,0x00,0x02,
2560    0x01}},
2561  {{0xbf,0x9f,0x83,0xa4,0x12,0x0e,0x5a,
2562    0x02,0x86,0xff,0x0f,0x09,0x00,0x07,
2563    0x01}},
2564  {{0xce,0xae,0x92,0xb3,0x01,0x28,0x10,
2565    0x1a,0x80,0x19,0x29,0x0f,0x00,0x03,
2566    0x00}}
2567 #endif   
2568 };
2569
2570 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11400x1050_1_H[] = 
2571 {
2572  {{0x47,0x27,0x8b,0x2c,0x1a,0x9e,0x1f,
2573    0x8f,0x81,0x8f,0x9f,0x30,0x00,0x05,
2574   0x00}},
2575  {{0x47,0x27,0x8b,0x2c,0x1a,0x6c,0x1f,
2576    0x60,0x84,0x5d,0x6d,0x10,0x00,0x05,
2577    0x00}},
2578  {{0x47,0x27,0x8b,0x30,0x1e,0x9e,0x1f,
2579    0x90,0x83,0x8f,0x9f,0x30,0x00,0x05,
2580    0x00}},
2581  {{0x47,0x27,0x8b,0x2c,0x1a,0x6c,0x1f,
2582    0x60,0x84,0x5d,0x6d,0x10,0x00,0x05,
2583    0x00}},
2584  {{0x47,0x27,0x8b,0x2c,0x1a,0xee,0x1f,
2585    0xdf,0x86,0xdf,0xef,0x10,0x00,0x05,
2586    0x00}},
2587  {{0x51,0x31,0x95,0x36,0x04,0x66,0xf0,
2588    0x57,0x8e,0x57,0x67,0x20,0x00,0x01,
2589    0x01}},
2590  {{0x5f,0x3f,0x83,0x44,0x92,0x0e,0xf1,
2591    0xff,0x86,0xff,0x0f,0x10,0x00,0x01,
2592    0x01}},
2593  {{0x6f,0x4f,0x93,0x54,0x82,0x0e,0x5a,
2594    0x02,0x86,0xff,0x0f,0x09,0x00,0x05,
2595    0x01}},
2596  {{0x76,0x56,0x9a,0x5b,0x89,0x28,0x10,
2597    0x1c,0x80,0x19,0x29,0x0b,0x00,0x05,
2598    0x00}}
2599 #if 0
2600  {{0x47,0x27,0x8b,0x2c,0x1a,0x9e,0x1f,
2601    0x93,0x86,0x8f,0x9f,0x30,0x00,0x05,
2602    0x00}},
2603  {{0x47,0x27,0x8b,0x2c,0x1a,0x6c,0x1f,
2604    0x60,0x84,0x5d,0x6d,0x10,0x00,0x05,
2605    0x00}},
2606  {{0x47,0x27,0x8b,0x30,0x1e,0x9e,0x1f,
2607    0x92,0x86,0x8f,0x9f,0x30,0x00,0x05,
2608    0x00}},
2609  {{0x47,0x27,0x8b,0x2c,0x1a,0x6c,0x1f,
2610    0x60,0x84,0x5d,0x6d,0x10,0x00,0x05,
2611    0x00}},
2612  {{0x47,0x27,0x8b,0x2c,0x1a,0xee,0x1f,
2613    0xe2,0x86,0xdf,0xef,0x10,0x00,0x05,
2614    0x00}},
2615  {{0x51,0x31,0x95,0x36,0x04,0x66,0xf0,
2616    0x5a,0x8e,0x57,0x67,0x20,0x00,0x01,
2617    0x01}},
2618  {{0x5f,0x3f,0x83,0x44,0x92,0x0e,0xf5,
2619    0x02,0x86,0xff,0x0f,0x10,0x00,0x01,
2620    0x01}},
2621  {{0x6f,0x4f,0x93,0x54,0x82,0x0e,0x5a,
2622    0x02,0x86,0xff,0x0f,0x09,0x00,0x05,
2623    0x01}},
2624  {{0x76,0x56,0x9a,0x5b,0x89,0x28,0x10,
2625    0x1c,0x80,0x19,0x29,0x0b,0x00,0x05,
2626    0x00}}
2627 #endif   
2628 };
2629
2630 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11400x1050_2[] =  
2631 {
2632  {{0xce,0x72,0x91,0x84,0x92,0x28,0x92,
2633    0xd7,0x8b,0x5d,0x5c,0x21,0x00,0x02,
2634    0x01}},
2635  {{0xce,0x72,0x91,0x84,0x92,0x28,0x92,
2636    0xbe,0x82,0x44,0x43,0x01,0x00,0x02,
2637    0x01}},
2638  {{0xce,0x72,0x91,0x84,0x92,0x28,0x92,
2639    0xd7,0x8b,0x5d,0x5c,0x21,0x00,0x02,
2640    0x01}},
2641  {{0xce,0x72,0x91,0x84,0x92,0x28,0x92,
2642    0xbe,0x82,0x44,0x43,0x01,0x00,0x02,
2643    0x01}},
2644  {{0xce,0x72,0x91,0x84,0x92,0x28,0x92,
2645    0xff,0x83,0x85,0x84,0x11,0x00,0x02,
2646    0x01}},
2647  {{0xce,0x63,0x92,0x8e,0x1c,0x28,0xd4,
2648    0x3f,0x83,0x57,0x29,0x01,0x00,0x03,
2649    0x01}},
2650  {{0xce,0x7f,0x92,0x9c,0x0a,0x28,0xd4,
2651    0x93,0x87,0xff,0x29,0x21,0x00,0x07,
2652    0x01}},
2653  {{0xce,0x9f,0x92,0xac,0x1a,0x28,0x5a,
2654    0x13,0x87,0xff,0x29,0x29,0x00,0x07,
2655    0x01}},
2656  {{0xce,0xae,0x92,0xbc,0x0a,0x28,0x10,
2657    0x20,0x84,0x19,0x29,0x0f,0x00,0x03,
2658    0x00}}
2659 #if 0
2660  {{0xce,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
2661    0xdb,0x8f,0x8f,0x29,0x21,0x00,0x03,
2662    0x00}},
2663  {{0xce,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
2664    0xc2,0x86,0x5d,0x29,0x01,0x00,0x03,
2665    0x01}},
2666  {{0xce,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
2667    0xdb,0x8f,0x8f,0x29,0x21,0x00,0x03,
2668    0x00}},
2669  {{0xce,0x4f,0x92,0x8c,0x1a,0x28,0x9a,
2670    0xc2,0x86,0x5d,0x29,0x01,0x00,0x03,
2671    0x00}},
2672  {{0xce,0x4f,0x92,0x8c,0x1a,0x28,0x9e,
2673    0x03,0x87,0xdf,0x29,0x01,0x00,0x03,
2674    0x00}},
2675  {{0xce,0x63,0x92,0x96,0x04,0x28,0xd4,
2676    0x3f,0x83,0x57,0x29,0x01,0x00,0x07,
2677    0x01}},
2678  {{0xce,0x7f,0x92,0xa4,0x12,0x28,0xd4,
2679    0x93,0x87,0xff,0x29,0x21,0x00,0x07,
2680    0x01}},
2681  {{0xce,0x9f,0x92,0xb4,0x02,0x28,0x5a,
2682    0x13,0x87,0xff,0x29,0x29,0x00,0x03,
2683    0x01}},
2684  {{0xce,0xae,0x92,0xbc,0x0a,0x28,0x10,
2685    0x20,0x84,0x19,0x29,0x0f,0x00,0x03,
2686    0x00}}
2687 #endif   
2688 };
2689
2690 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11400x1050_2_H[] =  
2691 {
2692  {{0xa6,0x4a,0x89,0x5c,0x0a,0x28,0x92,
2693    0xd7,0x8b,0x5d,0x5c,0x21,0x00,0x06,
2694    0x01}},
2695  {{0xa6,0x4a,0x89,0x5c,0x0a,0x28,0x92,
2696    0xbe,0x82,0x44,0x43,0x01,0x00,0x06,
2697    0x01}},
2698  {{0xa6,0x4a,0x89,0x5c,0x0a,0x28,0x92,
2699    0xd7,0x8b,0x5d,0x5c,0x21,0x00,0x06,
2700    0x01}},
2701  {{0xa6,0x4a,0x89,0x5c,0x0a,0x28,0x92,
2702    0xbe,0x82,0x44,0x43,0x01,0x00,0x06,
2703    0x01}},
2704  {{0xa6,0x4a,0x89,0x5c,0x0a,0x28,0x92,
2705    0xff,0x83,0x85,0x84,0x11,0x00,0x06,
2706    0x01}},
2707  {{0x9c,0x31,0x80,0x5c,0x8a,0x28,0xd4,
2708    0x3f,0x83,0x57,0x29,0x01,0x00,0x06,
2709    0x01}},
2710  {{0x8e,0x3f,0x92,0x5c,0x0a,0x28,0xd4,
2711    0x93,0x87,0xff,0x29,0x21,0x00,0x06,
2712    0x01}},
2713  {{0x7e,0x4f,0x82,0x5c,0x0a,0x28,0x5a,
2714    0x13,0x87,0xff,0x29,0x29,0x00,0x06,
2715    0x01}},
2716  {{0x76,0x56,0x9a,0x64,0x92,0x28,0x10,
2717    0x20,0x84,0x19,0x29,0x0f,0x00,0x05,
2718    0x00}}
2719 #if 0
2720  {{0xa6,0x27,0x8a,0x64,0x92,0x28,0x9a,
2721    0xdb,0x8f,0x8f,0x29,0x21,0x00,0x06,
2722    0x00}},
2723  {{0xa6,0x27,0x8a,0x64,0x92,0x28,0x9a,
2724    0xc2,0x86,0x5d,0x29,0x01,0x00,0x06,
2725    0x00}},
2726  {{0xa6,0x27,0x8a,0x64,0x92,0x28,0x9a,
2727    0xdb,0x8f,0x8f,0x29,0x21,0x00,0x06,
2728    0x00}},
2729  {{0xa6,0x27,0x8a,0x64,0x92,0x28,0x9a,
2730    0xc2,0x86,0x5d,0x29,0x01,0x00,0x06,
2731    0x00}},
2732  {{0xa6,0x27,0x8a,0x64,0x92,0x28,0x9e,
2733    0x03,0x87,0xdf,0x29,0x01,0x00,0x06,
2734    0x00}},
2735  {{0x9c,0x31,0x80,0x64,0x92,0x28,0xd4,
2736    0x3f,0x83,0x57,0x29,0x01,0x00,0x06,
2737    0x01}},
2738  {{0x8e,0x3f,0x92,0x64,0x12,0x28,0xd4,
2739    0x93,0x87,0xff,0x29,0x21,0x00,0x06,
2740    0x01}},
2741  {{0x7e,0x4f,0x82,0x64,0x12,0x28,0x5a,
2742    0x13,0x87,0xff,0x29,0x29,0x00,0x06,
2743    0x01}},
2744  {{0x76,0x56,0x9a,0x64,0x92,0x28,0x10,
2745    0x20,0x84,0x19,0x29,0x0f,0x00,0x05,
2746    0x00}}
2747 #endif   
2748 };
2749
2750 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11600x1200_1[] =
2751 {
2752  {{0x83,0x4F,0x87,0x5B,0x13,0x06,0x3E,
2753    0xB3,0x86,0x8F,0x07,0x20,0x00,0x06,
2754    0x00}},
2755  {{0x83,0x4F,0x87,0x5B,0x13,0xD4,0x1F,
2756    0x81,0x84,0x5D,0xD5,0x10,0x00,0x06,
2757    0x00}},
2758  {{0x83,0x4F,0x87,0x5B,0x13,0x06,0x3E,
2759    0xB3,0x86,0x8F,0x07,0x20,0x00,0x06,
2760    0x00}},
2761  {{0x83,0x4F,0x87,0x5B,0x13,0xD4,0x1F,
2762    0x81,0x84,0x5D,0xD5,0x10,0x00,0x06,
2763    0x00}},
2764  {{0x83,0x4F,0x87,0x5B,0x13,0x56,0xBA,
2765    0x03,0x86,0xDF,0x57,0x00,0x00,0x06,
2766    0x00}},
2767  {{0x97,0x63,0x9B,0x6F,0x07,0xCE,0xF0,
2768    0x7B,0x8E,0x57,0xCF,0x20,0x00,0x02,
2769    0x01}},
2770  {{0xB3,0x7F,0x97,0x8B,0x83,0x76,0xF5,
2771    0x23,0x86,0xFF,0x77,0x10,0x00,0x06,
2772    0x01}},
2773  {{0xD3,0x9F,0x97,0xAB,0x03,0x76,0x5A,
2774    0x23,0x86,0xFF,0x77,0x09,0x00,0x03,
2775    0x01}},
2776  {{0xE2,0xAE,0x86,0xBA,0x92,0x90,0x10,
2777    0x3D,0x80,0x19,0x91,0x0F,0x00,0x03,
2778    0x00}},
2779  {{0xFB,0xC7,0x9F,0xD3,0x8B,0x26,0x11,
2780    0xD3,0x86,0xAF,0x27,0x3F,0x00,0x07,
2781    0x00}}
2782 #if 0
2783  {{0x83,0x4f,0x87,0x51,0x09,0xc0,0x1f,
2784    0x90,0x84,0x8f,0xc1,0x30,0x00,0x06,
2785    0x00}},
2786  {{0x83,0x4f,0x87,0x51,0x09,0x8e,0x1f,
2787    0x5e,0x82,0x5d,0x8f,0x10,0x00,0x06,
2788    0x00}},
2789  {{0x83,0x4f,0x87,0x51,0x09,0xc0,0x1f,
2790    0x90,0x84,0x8f,0xc1,0x30,0x00,0x06,
2791    0x00}},
2792  {{0x83,0x4f,0x87,0x51,0x09,0x8e,0x1f,
2793    0x5e,0x82,0x5d,0x8f,0x10,0x00,0x06,
2794    0x00}},
2795  {{0x83,0x4f,0x87,0x51,0x09,0x10,0x3e,
2796    0xe0,0x84,0xdf,0x11,0x00,0x00,0x06,
2797    0x00}},
2798  {{0x97,0x63,0x9b,0x65,0x1d,0x88,0xf0,
2799    0x58,0x8c,0x57,0x89,0x20,0x00,0x06,
2800    0x01}},
2801  {{0xb3,0x7f,0x97,0x81,0x99,0x30,0xf5,
2802    0x00,0x84,0xff,0x31,0x10,0x00,0x02,
2803    0x01}},
2804  {{0xd3,0x9f,0x97,0xa1,0x19,0x30,0x5a,
2805    0x00,0x84,0xff,0x31,0x09,0x00,0x07,
2806    0x01}},
2807  {{0xe2,0xae,0x86,0xb0,0x88,0x4a,0x10,
2808    0x1a,0x8e,0x19,0x4b,0x2f,0x00,0x03,
2809    0x00}},
2810  {{0xfb,0xc7,0x9f,0xc9,0x81,0xe0,0x10,
2811    0xb0,0x84,0xaf,0xe1,0x2f,0x00,0x07,
2812    0x00}}
2813 #endif
2814 };
2815
2816 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11600x1200_1_H[] =
2817 {
2818  {{0x5B,0x27,0x9F,0x33,0x0B,0x06,0x2E,
2819    0xB3,0x86,0x8F,0x07,0x20,0x00,0x01,
2820    0x00}},
2821  {{0x5B,0x27,0x9F,0x29,0x01,0x8E,0x1F,
2822    0x81,0x84,0x5D,0xD5,0x10,0x00,0x06,
2823    0x00}},
2824  {{0x5B,0x27,0x9F,0x33,0x0B,0x06,0x2E,
2825    0xB3,0x86,0x8F,0x07,0x20,0x00,0x01,
2826    0x00}},
2827  {{0x83,0x4F,0x87,0x5B,0x13,0xD4,0x1F,
2828    0x81,0x84,0x5D,0xD5,0x10,0x00,0x06,
2829    0x00}},
2830  {{0x5B,0x27,0x9F,0x33,0x0B,0x56,0xBA,
2831    0x03,0x86,0xDF,0x57,0x00,0x00,0x01,
2832    0x00}},
2833  {{0x65,0x31,0x89,0x3D,0x95,0xCE,0xF0,
2834    0x7B,0x8E,0x57,0xCF,0x20,0x00,0x01,
2835    0x01}},
2836  {{0x73,0x3F,0x97,0x4B,0x83,0x76,0xF5,
2837    0x23,0x86,0xFF,0x77,0x10,0x00,0x05,
2838    0x01}},
2839  {{0xD3,0x9F,0x97,0xAB,0x03,0x76,0x5A,
2840    0x23,0x86,0xFF,0x77,0x09,0x00,0x03,
2841    0x01}},
2842  {{0xE2,0xAE,0x86,0xBA,0x92,0x90,0x10,
2843    0x3D,0x80,0x19,0x91,0x0F,0x00,0x03,
2844    0x00}},
2845  {{0x97,0x63,0x9B,0x6F,0x07,0xE0,0x10,
2846    0xB0,0x84,0xAF,0xE1,0x2F,0x00,0x06,
2847    0x00}}
2848 #if 0
2849  {{0x5b,0x27,0x9f,0x29,0x01,0xc0,0x1f,
2850    0x90,0x84,0x8f,0xc1,0x30,0x00,0x01,
2851    0x00}},
2852  {{0x5b,0x27,0x9f,0x29,0x01,0x8e,0x1f,
2853    0x5e,0x82,0x5d,0x8f,0x10,0x00,0x01,
2854    0x00}},
2855  {{0x5b,0x27,0x9f,0x29,0x01,0xc0,0x1f,
2856    0x90,0x84,0x8f,0xc1,0x30,0x00,0x01,
2857    0x00}},
2858  {{0x5b,0x27,0x9f,0x29,0x01,0x8e,0x1f,
2859    0x5e,0x82,0x5d,0x8f,0x10,0x00,0x01,
2860    0x00}},
2861  {{0x5b,0x27,0x9f,0x29,0x01,0x10,0x3e,
2862    0xe0,0x84,0xdf,0x11,0x00,0x00,0x01,
2863    0x00}},
2864  {{0x65,0x31,0x89,0x33,0x8b,0x88,0xf0,
2865    0x58,0x8c,0x57,0x89,0x20,0x00,0x01,
2866    0x01}},
2867  {{0x73,0x3f,0x97,0x41,0x99,0x30,0xf5,
2868    0x00,0x84,0xff,0x31,0x10,0x00,0x01,
2869    0x01}},
2870  {{0x83,0x4f,0x87,0x51,0x09,0x30,0x5a,
2871    0x00,0x84,0xff,0x31,0x09,0x00,0x06,
2872    0x01}},
2873  {{0x8a,0x56,0x8e,0x58,0x10,0x4a,0x10,
2874    0x1a,0x8e,0x19,0x4b,0x2f,0x00,0x06,
2875    0x00}},
2876  {{0x97,0x63,0x9b,0x65,0x1d,0xe0,0x10,
2877    0xb0,0x84,0xaf,0xe1,0x2f,0x00,0x06,
2878    0x00}}
2879 #endif
2880 };
2881
2882 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11600x1200_2[] =
2883 {
2884  {{0xFB,0x87,0x86,0x97,0x0F,0x26,0x97,
2885    0x43,0x86,0xDB,0xDA,0x11,0x00,0x07,
2886    0x01}},
2887  {{0xFB,0x87,0x86,0x97,0x0F,0x26,0x97,
2888    0x2A,0x8D,0xC2,0xC1,0x11,0x00,0x07,
2889    0x01}},
2890  {{0xFB,0x87,0x86,0x97,0x0F,0x26,0x97,
2891    0x43,0x86,0xDB,0xDA,0x11,0x00,0x07,
2892    0x01}},
2893  {{0xFB,0x87,0x86,0x97,0x0F,0x26,0x97,
2894    0x2A,0x8D,0xC2,0xC1,0x11,0x00,0x07,
2895    0x01}},
2896  {{0xFB,0x87,0x86,0x97,0x0F,0x26,0x9F,
2897    0x6B,0x8E,0x03,0x02,0x01,0x00,0x07,
2898    0x01}},
2899  {{0xFB,0x63,0x9F,0xA1,0x99,0x26,0xD5,
2900    0xA7,0x8A,0xBF,0xBE,0x01,0x00,0x07,
2901    0x01}},
2902  {{0xFB,0x7F,0x9F,0xAF,0x87,0x26,0xDD,
2903    0xFB,0x8E,0x13,0x12,0x31,0x00,0x03,
2904    0x01}},
2905  {{0xFB,0x9F,0x9F,0xBF,0x97,0x26,0x5B,
2906    0x7B,0x8E,0xFF,0x27,0x39,0x00,0x03,
2907    0x01}},
2908  {{0xFB,0xAE,0x9F,0xC6,0x9E,0x26,0x11,
2909    0x88,0x8B,0x19,0x27,0x1F,0x00,0x03,
2910    0x00}},
2911  {{0xFB,0xC7,0x9F,0xD3,0x8B,0x26,0x11,
2912    0xD3,0x86,0xAF,0x27,0x3F,0x00,0x07,
2913    0x00}}
2914 #if 0
2915  {{0xfb,0x88,0x87,0x90,0x08,0xe0,0x96,
2916    0x20,0x84,0xb9,0xb8,0x01,0x00,0x07,
2917    0x01}},
2918  {{0xfb,0x88,0x87,0x90,0x08,0xe0,0x96,
2919    0x07,0x8b,0xa0,0x9f,0x01,0x00,0x07,
2920    0x01}},
2921  {{0xfb,0x88,0x87,0x90,0x08,0xe0,0x96,
2922    0x20,0x84,0xb9,0xb8,0x01,0x00,0x07,
2923    0x01}},
2924  {{0xfb,0x88,0x87,0x90,0x08,0xe0,0x96,
2925    0x07,0x8b,0xa0,0x9f,0x01,0x00,0x07,
2926    0x01}},
2927  {{0xfb,0x88,0x87,0x90,0x08,0xe0,0x96,
2928    0x48,0x8c,0xe1,0xe0,0x11,0x00,0x07,
2929    0x01}},
2930  {{0xfb,0x63,0x9f,0x9a,0x92,0xe0,0xd4,
2931    0x9b,0x8f,0x9d,0x9c,0x21,0x00,0x07,
2932    0x01}},
2933  {{0xfb,0x7f,0x9f,0xa8,0x80,0xe0,0xd4,
2934    0xef,0x83,0xff,0xe1,0x21,0x00,0x03,
2935    0x01}},
2936  {{0xfb,0x9f,0x9f,0xb8,0x90,0xe0,0x5a,
2937    0x6f,0x83,0xff,0xe1,0x29,0x00,0x03,
2938    0x01}},
2939  {{0xfb,0xae,0x9f,0xbf,0x97,0xe0,0x10,
2940    0x7c,0x80,0x19,0xe1,0x0f,0x00,0x03,
2941    0x00}},
2942  {{0xfb,0xc7,0x9f,0xc9,0x84,0xe0,0x10,
2943    0xc7,0x8b,0xaf,0xe1,0x0f,0x00,0x07,
2944    0x00}}
2945 #endif
2946 };
2947
2948 static const SiS310_LVDSCRT1DataStruct  SiS310_LVDSCRT11600x1200_2_H[] = 
2949 {
2950  {{0xD3,0x5F,0x9E,0x6F,0x07,0x26,0x97,
2951    0x43,0x86,0xDB,0xDA,0x11,0x00,0x02,
2952    0x01}},
2953  {{0xD3,0x27,0x97,0x6F,0x07,0x26,0x97,
2954    0x6B,0x8E,0x83,0x82,0x01,0x00,0x03,
2955    0x01}},
2956  {{0xD3,0x5F,0x9E,0x6F,0x07,0x26,0x97,
2957    0x43,0x86,0xDB,0xDA,0x11,0x00,0x02,
2958    0x01}},
2959  {{0xD3,0x27,0x97,0x6F,0x07,0x26,0x97,
2960    0x07,0x8B,0xA0,0x9F,0x01,0x00,0x02,
2961    0x01}},
2962  {{0xD3,0x27,0x97,0x6F,0x07,0x26,0x97,
2963    0x6B,0x8E,0x83,0x82,0x01,0x00,0x03,
2964    0x01}},
2965  {{0xC9,0x31,0x8D,0x6F,0x07,0x26,0xD5,
2966    0xA7,0x8A,0xBF,0xBE,0x01,0x00,0x03,
2967    0x01}},
2968  {{0xBB,0x3F,0x9F,0x6F,0x87,0x26,0xDD,
2969    0xFB,0x8E,0x13,0x12,0x31,0x00,0x02,
2970    0x01}},
2971  {{0xAB,0x4F,0x8F,0x68,0x80,0xE0,0x5A,
2972    0x6F,0x83,0xFF,0xE1,0x29,0x00,0x02,
2973    0x01}},
2974  {{0xA3,0x56,0x87,0x67,0x9F,0xE0,0x10,
2975    0x7C,0x80,0x19,0xE1,0x0F,0x00,0x06,
2976    0x00}},
2977  {{0x97,0x63,0x9B,0x68,0x00,0xE0,0x10,
2978    0xC7,0x8B,0xAF,0xE1,0x0F,0x00,0x02,
2979    0x00}}
2980 #if 0
2981  {{0xd3,0x60,0x9f,0x68,0x00,0xe0,0x96,
2982    0x20,0x84,0xb9,0xb8,0x01,0x00,0x02,
2983    0x01}},
2984  {{0xd3,0x60,0x9f,0x68,0x00,0xe0,0x96,
2985    0x07,0x8b,0xa0,0x9f,0x01,0x00,0x02,
2986    0x01}},
2987  {{0xd3,0x60,0x9f,0x68,0x00,0xe0,0x96,
2988    0x20,0x84,0xb9,0xb8,0x01,0x00,0x02,
2989    0x01}},
2990  {{0xd3,0x60,0x9f,0x68,0x00,0xe0,0x96,
2991    0x07,0x8b,0xa0,0x9f,0x01,0x00,0x02,
2992    0x01}},
2993  {{0xd3,0x60,0x9f,0x68,0x00,0xe0,0x96,
2994    0x48,0x8c,0xe1,0xe0,0x11,0x00,0x02,
2995    0x01}},
2996  {{0xc9,0x31,0x8d,0x68,0x00,0xe0,0xd4,
2997    0x9b,0x8f,0x9d,0x9c,0x21,0x00,0x03,
2998    0x01}},
2999  {{0xbb,0x3f,0x9f,0x68,0x80,0xe0,0xd4,
3000    0xef,0x83,0xff,0xe1,0x21,0x00,0x02,
3001    0x01}},
3002  {{0xab,0x4f,0x8f,0x68,0x80,0xe0,0x5a,
3003    0x6f,0x83,0xff,0xe1,0x29,0x00,0x02,
3004    0x01}},
3005  {{0xa3,0x56,0x87,0x67,0x9f,0xe0,0x10,
3006    0x7c,0x80,0x19,0xe1,0x0f,0x00,0x06,
3007    0x00}},
3008  {{0x97,0x63,0x9b,0x68,0x00,0xe0,0x10,
3009    0xc7,0x8b,0xaf,0xe1,0x0f,0x00,0x02,
3010    0x00}}
3011 #endif
3012 };
3013
3014 /* CRT1 CRTC for Chrontel TV slave modes */
3015
3016 static const SiS310_LVDSCRT1DataStruct  SiS310_CHTVCRT1UNTSC[] =  
3017
3018  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
3019    0xe8,0x84,0x8f,0x57,0x20,0x00,0x01,
3020    0x00 }},
3021  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
3022    0xd0,0x82,0x5d,0x57,0x00,0x00,0x01,
3023    0x00 }},
3024  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
3025    0xe8,0x84,0x8f,0x57,0x20,0x00,0x01,
3026    0x00 }},
3027  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
3028    0xd0,0x82,0x5d,0x57,0x00,0x00,0x01,
3029    0x00 }},
3030  {{0x5d,0x4f,0x81,0x56,0x99,0x56,0xba,
3031    0x0a,0x84,0xdf,0x57,0x00,0x00,0x01,
3032    0x00 }},
3033  {{0x80,0x63,0x84,0x6d,0x0f,0xec,0xf0,
3034    0x7a,0x8f,0x57,0xed,0x20,0x00,0x06,
3035    0x01 }},
3036  {{0x8c,0x7f,0x90,0x86,0x09,0xaf,0xf5,
3037    0x36,0x88,0xff,0xb0,0x10,0x00,0x02,
3038    0x01}}
3039 };
3040
3041 static const SiS310_LVDSCRT1DataStruct  SiS310_CHTVCRT1ONTSC[] =
3042 {
3043  {{0x63,0x4f,0x87,0x5a,0x9f,0x0b,0x3e,
3044    0xc0,0x84,0x8f,0x0c,0x20,0x00,0x01,
3045    0x00 }},
3046  {{0x63,0x4f,0x87,0x5a,0x9f,0x0b,0x3e,
3047    0xb0,0x8d,0x5d,0x0c,0x00,0x00,0x01,
3048    0x00 }},
3049  {{0x63,0x4f,0x87,0x5a,0x9f,0x0b,0x3e,
3050    0xc0,0x84,0x8f,0x0c,0x20,0x00,0x01,
3051    0x00 }},
3052  {{0x63,0x4f,0x87,0x5a,0x9f,0x0b,0x3e,
3053    0xb0,0x8d,0x5d,0x0c,0x00,0x00,0x01,
3054    0x00 }},
3055  {{0x5d,0x4f,0x81,0x58,0x9d,0x0b,0x3e,
3056    0xe8,0x84,0xdf,0x0c,0x00,0x00,0x01,
3057    0x00 }},
3058  {{0x7d,0x63,0x81,0x68,0x0e,0xba,0xf0,
3059    0x78,0x8a,0x57,0xbb,0x20,0x00,0x06,
3060    0x01 }},
3061  {{0x8c,0x7f,0x90,0x82,0x06,0x46,0xf5,
3062    0x15,0x88,0xff,0x47,0x70,0x00,0x02,
3063    0x01 }}
3064 };
3065
3066 static const SiS310_LVDSCRT1DataStruct  SiS310_CHTVCRT1UPAL[] =    
3067
3068  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3069    0xf8,0x83,0x8f,0x70,0x20,0x00,0x05,
3070    0x00 }},
3071  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3072    0xde,0x81,0x5d,0x70,0x00,0x00,0x05,
3073    0x00 }},
3074  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3075    0xf8,0x83,0x8f,0x70,0x20,0x00,0x05,
3076    0x00 }},
3077  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3078    0xde,0x81,0x5d,0x70,0x00,0x00,0x05,
3079    0x00 }},
3080  {{0x64,0x4f,0x88,0x5a,0x9f,0x6f,0xba,
3081    0x15,0x83,0xdf,0x70,0x00,0x00,0x01,
3082    0x00 }},
3083  {{0x73,0x63,0x97,0x69,0x8b,0xec,0xf0,
3084    0x90,0x8c,0x57,0xed,0x20,0x00,0x05,
3085    0x01 }},
3086  {{0xaa,0x7f,0x8e,0x8e,0x96,0xe6,0xf5,
3087    0x50,0x88,0xff,0xe7,0x10,0x00,0x02,
3088    0x01}}
3089 };
3090
3091 static const SiS310_LVDSCRT1DataStruct  SiS310_CHTVCRT1OPAL[] =
3092 {
3093  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3094    0xf0,0x83,0x8f,0x70,0x20,0x00,0x05,
3095    0x00 }},
3096  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3097    0xde,0x81,0x5d,0x70,0x00,0x00,0x05,
3098    0x00 }},
3099  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3100    0xf0,0x83,0x8f,0x70,0x20,0x00,0x05,
3101    0x00 }},
3102  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
3103    0xde,0x81,0x5d,0x70,0x00,0x00,0x05,
3104    0x00 }},
3105  {{0x64,0x4f,0x88,0x58,0x9d,0x6f,0xba,
3106    0x15,0x83,0xdf,0x70,0x00,0x00,0x01,
3107    0x00 }},
3108  {{0x71,0x63,0x95,0x69,0x8c,0x6f,0xf0,
3109    0x5a,0x8b,0x57,0x70,0x20,0x00,0x05,
3110    0x01 }},
3111  {{0xaa,0x7f,0x8e,0x8f,0x96,0x69,0xf5,
3112    0x28,0x88,0xff,0x6a,0x10,0x00,0x02,
3113    0x01 }}
3114 };
3115
3116 typedef struct _SiS310_CHTVRegDataStruct
3117 {
3118         UCHAR Reg[16];
3119 } SiS310_CHTVRegDataStruct;
3120
3121 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_UNTSC[] =
3122 {
3123  {{0x4a,0x77,0xbb,0x94,0x84,0x48,0xfe,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3124  {{0x4a,0x77,0xbb,0x94,0x84,0x48,0xfe,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3125  {{0x4a,0x77,0xbb,0x94,0x84,0x48,0xfe,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3126  {{0x4a,0x77,0xbb,0x94,0x84,0x48,0xfe,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3127  {{0x6a,0x77,0xbb,0x6e,0x84,0x2e,0x02,0x5a,0x04,0x00,0x80,0x20,0x7e,0x80,0x98,0x00}},
3128  {{0xcf,0x77,0xb7,0xc8,0x84,0x3b,0x02,0x5a,0x04,0x00,0x80,0x19,0x88,0x30,0x7f,0x00}},
3129  {{0xee,0x77,0xbb,0x66,0x87,0x32,0x01,0x5a,0x04,0x00,0x80,0x1b,0xd3,0xf2,0x36,0x00}}
3130 }; /* WRONG: 0x02: should be 0xfx, because if CIVEnable is clear, this should be set;
3131              0x07: Blacklevel: NTSC/PAL-M: Should be 131 (0x83), and not 0x50/0x5a
3132                                PAL/PAL-N:  110 (0x6e)
3133                                NTSC-J:     102 (0x66)
3134              0x0c-0x0f: CIV is not default as in datasheet
3135       MISSING: 0x21: Should set D1 to ZERO (for NTSC, PAL-M) or ONE (PAL, NTSC-J)
3136       Most of this is wrong in all NTSC and PAL register arrays. But I won't correct
3137       it as long as it works. For NTSC-J, the blacklevel is corrected in init301.c;
3138       for PAL-M and PAL-N all above is corrected.
3139     */
3140
3141 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_ONTSC[] =
3142 {
3143  {{0x49,0x77,0xbb,0x7b,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3144  {{0x49,0x77,0xbb,0x7b,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3145  {{0x49,0x77,0xbb,0x7b,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3146  {{0x49,0x77,0xbb,0x7b,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3147  {{0x69,0x77,0xbb,0x6e,0x84,0x1e,0x00,0x5a,0x04,0x00,0x80,0x25,0x1a,0x43,0x04,0x00}},
3148  {{0xce,0x77,0xb7,0xb6,0x83,0x2c,0x02,0x5a,0x04,0x00,0x80,0x1c,0x00,0x82,0x97,0x00}},
3149  {{0xed,0x77,0xbb,0x66,0x8c,0x21,0x02,0x5a,0x04,0x00,0x80,0x1f,0x9f,0xc1,0x0c,0x00}}
3150 };
3151
3152 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_UPAL[] =
3153 {
3154  {{0x41,0x7f,0xb7,0x34,0xad,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3155  {{0x41,0x7f,0xb7,0x80,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3156  {{0x41,0x7f,0xb7,0x34,0xad,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3157  {{0x41,0x7f,0xb7,0x12,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3158  {{0x61,0x7f,0xb7,0x99,0x84,0x35,0x04,0x5a,0x05,0x00,0x80,0x26,0x2a,0x55,0x5d,0x00}},
3159  {{0xc3,0x7f,0xb7,0x7a,0x84,0x40,0x02,0x5a,0x05,0x00,0x80,0x1f,0x84,0x3d,0x28,0x00}},
3160  {{0xe5,0x7f,0xb7,0x1d,0xa7,0x3e,0x04,0x5a,0x05,0x00,0x80,0x20,0x3e,0xe4,0x22,0x00}}
3161 };
3162
3163 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_OPAL[] =
3164 {
3165  {{0x41,0x7f,0xb7,0x36,0xad,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3166  {{0x41,0x7f,0xb7,0x86,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3167  {{0x41,0x7f,0xb7,0x36,0xad,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3168  {{0x41,0x7f,0xb7,0x86,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3169  {{0x61,0x7f,0xb7,0x99,0x84,0x35,0x04,0x5a,0x05,0x00,0x80,0x26,0x2a,0x55,0x5d,0x00}},
3170  {{0xc1,0x7f,0xb7,0x4d,0x8c,0x1e,0x31,0x5a,0x05,0x00,0x80,0x26,0x78,0x19,0x34,0x00}},
3171  {{0xe4,0x7f,0xb7,0x1e,0xaf,0x29,0x37,0x5a,0x05,0x00,0x80,0x25,0x8c,0xb2,0x2a,0x00}}
3172 };
3173
3174 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_UPALM[] =
3175 {
3176  {{0x52,0x77,0xbb,0x94,0x84,0x48,0xfe,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3177  {{0x52,0x77,0xbb,0x94,0x84,0x48,0xfe,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3178  {{0x52,0x77,0xbb,0x94,0x84,0x48,0xfe,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3179  {{0x52,0x77,0xbb,0x94,0x84,0x48,0xfe,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3180  {{0x72,0x77,0xfb,0x6e,0x84,0x2e,0x02,0x83,0x04,0x00,0x80,0x20,0x76,0xdb,0x6e,0x00}},
3181  {{0xd7,0x77,0xf7,0xc8,0x84,0x3b,0x02,0x83,0x04,0x00,0x80,0x19,0x84,0x0a,0xc7,0x00}},
3182  {{0xf6,0x77,0xfb,0x66,0x87,0x32,0x01,0x83,0x04,0x00,0x80,0x1b,0xdc,0xb0,0x8d,0x00}}
3183 #if 0 /* Correct blacklevel and CFRB */
3184  {{0x72,0x77,0xbb,0x6e,0x84,0x2e,0x02,0x5a,0x04,0x00,0x80,0x20,0x76,0xdb,0x6e,0x00}},
3185  {{0xd7,0x77,0xb7,0xc8,0x84,0x3b,0x02,0x5a,0x04,0x00,0x80,0x19,0x84,0x0a,0xc7,0x00}},
3186  {{0xf6,0x77,0xbb,0x66,0x87,0x32,0x01,0x5a,0x04,0x00,0x80,0x1b,0xdc,0xb0,0x8d,0x00}}
3187 #endif
3188 };
3189
3190 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_OPALM[] =
3191 {
3192  {{0x51,0x77,0xbb,0x7b,0x84,0x34,0x00,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3193  {{0x51,0x77,0xbb,0x7b,0x84,0x34,0x00,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3194  {{0x51,0x77,0xbb,0x7b,0x84,0x34,0x00,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3195  {{0x51,0x77,0xbb,0x7b,0x84,0x34,0x00,0x83,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01}},
3196  {{0x71,0x77,0xfb,0x6e,0x84,0x1e,0x00,0x83,0x04,0x00,0x80,0x25,0x1a,0x1f,0x59,0x00}},
3197  {{0xd6,0x77,0xf7,0xb6,0x83,0x2c,0x02,0x83,0x04,0x00,0x80,0x1b,0xf8,0x1f,0x82,0x00}},
3198  {{0xf5,0x77,0xfb,0x66,0x8c,0x21,0x02,0x83,0x04,0x00,0x80,0x1f,0x58,0x46,0x9f,0x00}}
3199 #if 0 /* Correct blacklevel and CFRB */
3200  {{0x71,0x77,0xbb,0x6e,0x84,0x1e,0x00,0x5a,0x04,0x00,0x80,0x25,0x1a,0x1f,0x59,0x00}},
3201  {{0xd6,0x77,0xb7,0xb6,0x83,0x2c,0x02,0x5a,0x04,0x00,0x80,0x1b,0xf8,0x1f,0x82,0x00}},
3202  {{0xf5,0x77,0xbb,0x66,0x8c,0x21,0x02,0x5a,0x04,0x00,0x80,0x1f,0x58,0x46,0x9f,0x00}}
3203 #endif
3204 };
3205
3206 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_UPALN[] =
3207 {
3208  {{0x41,0x7f,0xb7,0x34,0xad,0x50,0x34,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3209  {{0x41,0x7f,0xb7,0x80,0x85,0x50,0x00,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3210  {{0x41,0x7f,0xb7,0x34,0xad,0x50,0x34,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3211  {{0x41,0x7f,0xb7,0x12,0x85,0x50,0x00,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3212  {{0x61,0x7f,0xb7,0x99,0x84,0x35,0x04,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3213  {{0xc3,0x7f,0xb7,0x7a,0x84,0x40,0x02,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3214  {{0xe5,0x7f,0xb7,0x1d,0xa7,0x3e,0x04,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}}
3215 #if 0 /* Correct blacklevel, CIV and CFRB */
3216  {{0x61,0x7f,0xb7,0x99,0x84,0x35,0x04,0x5a,0x05,0x00,0x80,0x1f,0x0d,0x54,0x5e,0x00}},
3217  {{0xc3,0x7f,0xb7,0x7a,0x84,0x40,0x02,0x5a,0x05,0x00,0x80,0x19,0x78,0xef,0x35,0x00}},
3218  {{0xe5,0x7f,0xb7,0x1d,0xa7,0x3e,0x04,0x5a,0x05,0x00,0x80,0x1a,0x33,0x3f,0x2f,0x00}}
3219 #endif
3220 };
3221
3222 static const SiS310_CHTVRegDataStruct SiS310_CHTVReg_OPALN[] =
3223 {
3224  {{0x41,0x7f,0xb7,0x36,0xad,0x50,0x34,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3225  {{0x41,0x7f,0xb7,0x86,0x85,0x50,0x00,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3226  {{0x41,0x7f,0xb7,0x36,0xad,0x50,0x34,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3227  {{0x41,0x7f,0xb7,0x86,0x85,0x50,0x00,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3228  {{0x61,0x7f,0xb7,0x99,0x84,0x35,0x04,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3229  {{0xc1,0x7f,0xb7,0x4d,0x8c,0x1e,0x31,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}},
3230  {{0xe4,0x7f,0xb7,0x1e,0xaf,0x29,0x37,0x6e,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x03}}
3231 #if 0 /* Correct blacklevel, CIV and CFRB */
3232  {{0x61,0x7f,0xb7,0x99,0x84,0x35,0x04,0x5a,0x05,0x00,0x80,0x1f,0x0d,0x54,0x5e,0x00}},
3233  {{0xc1,0x7f,0xb7,0x4d,0x8c,0x1e,0x31,0x5a,0x05,0x00,0x80,0x1f,0x15,0xc0,0x1e,0x00}},
3234  {{0xe4,0x7f,0xb7,0x1e,0xaf,0x29,0x37,0x5a,0x05,0x00,0x80,0x1d,0xf1,0x6c,0xcb,0x00}}
3235 #endif
3236 };
3237
3238 static const UCHAR SiS310_CHTVVCLKUNTSC[] = {0x41,0x41,0x41,0x41,0x42,0x46,0x53};
3239 static const UCHAR SiS310_CHTVVCLKONTSC[] = {0x48,0x48,0x48,0x48,0x45,0x43,0x51};
3240
3241 static const UCHAR SiS310_CHTVVCLKUPAL[]  = {0x47,0x47,0x47,0x47,0x48,0x4a,0x54};
3242 static const UCHAR SiS310_CHTVVCLKOPAL[]  = {0x47,0x47,0x47,0x47,0x48,0x4f,0x52};
3243
3244 static const UCHAR SiS310_CHTVVCLKUPALM[] = {0x41,0x41,0x41,0x41,0x42,0x46,0x53};
3245 static const UCHAR SiS310_CHTVVCLKOPALM[] = {0x48,0x48,0x48,0x48,0x45,0x43,0x51};
3246
3247 static const UCHAR SiS310_CHTVVCLKUPALN[] = {0x47,0x47,0x47,0x47,0x48,0x4a,0x54};
3248 static const UCHAR SiS310_CHTVVCLKOPALN[] = {0x47,0x47,0x47,0x47,0x48,0x4f,0x52};
3249
3250