staging: xgifb: XGI_GetLcdPtr: use real pointers for data tables
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / staging / xgifb / vb_table.h
1 #ifndef _VB_TABLE_
2 #define _VB_TABLE_
3 static struct SiS_MCLKData XGI340New_MCLKData[] = {
4         {0x16, 0x01, 0x01, 166},
5         {0x19, 0x02, 0x01, 124},
6         {0x7C, 0x08, 0x01, 200},
7         {0x79, 0x06, 0x01, 250},
8         {0x29, 0x01, 0x81, 301},
9         {0x5c, 0x23, 0x01, 166},
10         {0x5c, 0x23, 0x01, 166},
11         {0x5c, 0x23, 0x01, 166}
12 };
13
14 static struct SiS_MCLKData XGI27New_MCLKData[] = {
15         {0x5c, 0x23, 0x01, 166},
16         {0x19, 0x02, 0x01, 124},
17         {0x7C, 0x08, 0x80, 200},
18         {0x79, 0x06, 0x80, 250},
19         {0x29, 0x01, 0x81, 300},
20         {0x5c, 0x23, 0x01, 166},
21         {0x5c, 0x23, 0x01, 166},
22         {0x5c, 0x23, 0x01, 166}
23 };
24
25 static struct XGI_ECLKDataStruct XGI340_ECLKData[] = {
26         {0x5c, 0x23, 0x01, 166},
27         {0x55, 0x84, 0x01, 123},
28         {0x7C, 0x08, 0x01, 200},
29         {0x79, 0x06, 0x01, 250},
30         {0x29, 0x01, 0x81, 301},
31         {0x5c, 0x23, 0x01, 166},
32         {0x5c, 0x23, 0x01, 166},
33         {0x5c, 0x23, 0x01, 166}
34 };
35
36 static unsigned char XG27_SR13[4][8] = {
37         {0x35, 0x45, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR13 */
38         {0x41, 0x51, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR14 */
39         {0x32, 0x32, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR18 */
40         {0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}  /* SR1B */
41 };
42
43 static unsigned char XGI340_SR13[4][8] = {
44         {0x35, 0x45, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR13 */
45         {0x41, 0x51, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR14 */
46         {0x31, 0x42, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00}, /* SR18 */
47         {0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}  /* SR1B */
48 };
49
50 static unsigned char XGI340_cr41[24][8] = {
51         {0x20, 0x50, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 0 CR41 */
52         {0xc4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 1 CR8A */
53         {0xc4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 2 CR8B */
54         {0xb5, 0xa4, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00},
55         {0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00},
56         {0x90, 0x90, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 5 CR68 */
57         {0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 6 CR69 */
58         {0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 7 CR6A */
59         {0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 8 CR6D */
60         {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 9 CR80 */
61         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 10 CR81 */
62         {0x88, 0xa8, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 11 CR82 */
63         {0x44, 0x44, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 12 CR85 */
64         {0x48, 0x48, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 13 CR86 */
65         {0x54, 0x54, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 14 CR90 */
66         {0x54, 0x54, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 15 CR91 */
67         {0x0a, 0x0a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 16 CR92 */
68         {0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 17 CR93 */
69         {0x10, 0x10, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 18 CR94 */
70         {0x11, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 19 CR95 */
71         {0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 20 CR96 */
72         {0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 21 CRC3 */
73         {0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 22 CRC4 */
74         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}  /* 23 CRC5 */
75 };
76
77 static unsigned char XGI27_cr41[24][8] = {
78         {0x20, 0x40, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 0 CR41 */
79         {0xC4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 1 CR8A */
80         {0xC4, 0x40, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 2 CR8B */
81         {0xB3, 0x13, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 3 CR40[7],
82                                                                CR99[2:0],
83                                                                CR45[3:0]*/
84         {0xf0, 0xf5, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 4 CR59 */
85         {0x90, 0x90, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 5 CR68 */
86         {0x77, 0x67, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 6 CR69 */
87         {0x77, 0x77, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 7 CR6A */
88         {0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 8 CR6D */
89         {0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 9 CR80 */
90         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 10 CR81 */
91         {0x88, 0xcc, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 11 CR82 */
92         {0x44, 0x88, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 12 CR85 */
93         {0x48, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 13 CR86 */
94         {0x54, 0x32, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 14 CR90 */
95         {0x54, 0x33, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 15 CR91 */
96         {0x0a, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 16 CR92 */
97         {0x44, 0x63, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 17 CR93 */
98         {0x10, 0x14, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 18 CR94 */
99         {0x11, 0x0B, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 19 CR95 */
100         {0x05, 0x22, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 20 CR96 */
101         {0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 21 CRC3 */
102         {0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00}, /* 22 CRC4 */
103         {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}  /* 23 CRC5 */
104 };
105
106 static unsigned char XGI340_CR6B[8][4] = {
107         {0xaa, 0xaa, 0xaa, 0xaa},
108         {0xaa, 0xaa, 0xaa, 0xaa},
109         {0xaa, 0xaa, 0xaa, 0xaa},
110         {0x00, 0x00, 0x00, 0x00},
111         {0x00, 0x00, 0x00, 0x00},
112         {0x00, 0x00, 0x00, 0x00},
113         {0x00, 0x00, 0x00, 0x00},
114         {0x00, 0x00, 0x00, 0x00}
115 };
116
117 static unsigned char XGI340_CR6E[8][4];
118
119 static unsigned char XGI340_CR6F[8][32];
120
121 static unsigned char XGI340_CR89[8][2];
122
123 /* CR47,CR48,CR49,CR4A,CR4B,CR4C,CR70,CR71,CR74,CR75,CR76,CR77 */
124 static unsigned char XGI340_AGPReg[12] = {
125         0x28, 0x23, 0x00, 0x20, 0x00, 0x20,
126         0x00, 0x05, 0xd0, 0x10, 0x10, 0x00
127 };
128
129 static unsigned char XGI340_SR16[4] = {0x03, 0x83, 0x03, 0x83};
130
131 static struct XGI_ExtStruct XGI330_EModeIDTable[] = {
132         {0x2e, 0x0a1b, 0x0306, 0x06, 0x05, 0x06},
133         {0x2f, 0x0a1b, 0x0305, 0x05, 0x05, 0x05},
134         {0x30, 0x2a1b, 0x0407, 0x07, 0x07, 0x0e},
135         {0x31, 0x0a1b, 0x030d, 0x0d, 0x06, 0x3d},
136         {0x32, 0x0a1b, 0x0a0e, 0x0e, 0x06, 0x3e},
137         {0x33, 0x0a1d, 0x0a0d, 0x0d, 0x06, 0x3d},
138         {0x34, 0x2a1d, 0x0a0e, 0x0e, 0x06, 0x3e},
139         {0x35, 0x0a1f, 0x0a0d, 0x0d, 0x06, 0x3d},
140         {0x36, 0x2a1f, 0x0a0e, 0x0e, 0x06, 0x3e},
141         {0x38, 0x0a1b, 0x0508, 0x08, 0x00, 0x16},
142         {0x3a, 0x0e3b, 0x0609, 0x09, 0x00, 0x1e},
143         {0x3c, 0x0e3b, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200
144                                                    add CRT2MODE [2003/10/07] */
145         {0x3d, 0x0e7d, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200
146                                                    add CRT2MODE */
147         {0x40, 0x9a1c, 0x0000, 0x00, 0x04, 0x00},
148         {0x41, 0x9a1d, 0x0000, 0x00, 0x04, 0x00},
149         {0x43, 0x0a1c, 0x0306, 0x06, 0x05, 0x06},
150         {0x44, 0x0a1d, 0x0306, 0x06, 0x05, 0x06},
151         {0x46, 0x2a1c, 0x0407, 0x07, 0x07, 0x0e},
152         {0x47, 0x2a1d, 0x0407, 0x07, 0x07, 0x0e},
153         {0x49, 0x0a3c, 0x0508, 0x08, 0x00, 0x16},
154         {0x4a, 0x0a3d, 0x0508, 0x08, 0x00, 0x16},
155         {0x4c, 0x0e7c, 0x0609, 0x09, 0x00, 0x1e},
156         {0x4d, 0x0e7d, 0x0609, 0x09, 0x00, 0x1e},
157         {0x50, 0x9a1b, 0x0001, 0x01, 0x04, 0x02},
158         {0x51, 0xba1b, 0x0103, 0x03, 0x07, 0x03},
159         {0x52, 0x9a1b, 0x0204, 0x04, 0x00, 0x04},
160         {0x56, 0x9a1d, 0x0001, 0x01, 0x04, 0x02},
161         {0x57, 0xba1d, 0x0103, 0x03, 0x07, 0x03},
162         {0x58, 0x9a1d, 0x0204, 0x04, 0x00, 0x04},
163         {0x59, 0x9a1b, 0x0000, 0x00, 0x04, 0x00},
164         {0x5A, 0x021b, 0x0014, 0x01, 0x04, 0x3f},
165         {0x5B, 0x0a1d, 0x0014, 0x01, 0x04, 0x3f},
166         {0x5d, 0x0a1d, 0x0305, 0x05, 0x07, 0x05},
167         {0x62, 0x0a3f, 0x0306, 0x06, 0x05, 0x06},
168         {0x63, 0x2a3f, 0x0407, 0x07, 0x07, 0x0e},
169         {0x64, 0x0a7f, 0x0508, 0x08, 0x00, 0x16},
170         {0x65, 0x0eff, 0x0609, 0x09, 0x00, 0x1e},
171         {0x66, 0x0eff, 0x070a, 0x0a, 0x00, 0x22}, /* mode 1600x1200
172                                                    add CRT2MODE */
173         {0x68, 0x067b, 0x080b, 0x0b, 0x00, 0x29},
174         {0x69, 0x06fd, 0x080b, 0x0b, 0x00, 0x29},
175         {0x6b, 0x07ff, 0x080b, 0x0b, 0x00, 0x29},
176         {0x6c, 0x067b, 0x090c, 0x0c, 0x00, 0x2f},
177         {0x6d, 0x06fd, 0x090c, 0x0c, 0x00, 0x2f},
178         {0x6e, 0x07ff, 0x090c, 0x0c, 0x00, 0x2f},
179         {0x70, 0x2a1b, 0x0410, 0x10, 0x07, 0x34},
180         {0x71, 0x0a1b, 0x0511, 0x11, 0x00, 0x37},
181         {0x74, 0x0a1d, 0x0511, 0x11, 0x00, 0x37},
182         {0x75, 0x0a3d, 0x0612, 0x12, 0x00, 0x3a},
183         {0x76, 0x2a1f, 0x0410, 0x10, 0x07, 0x34},
184         {0x77, 0x0a1f, 0x0511, 0x11, 0x00, 0x37},
185         {0x78, 0x0a3f, 0x0612, 0x12, 0x00, 0x3a},
186         {0x79, 0x0a3b, 0x0612, 0x12, 0x00, 0x3a},
187         {0x7a, 0x2a1d, 0x0410, 0x10, 0x07, 0x34},
188         {0x7b, 0x0e3b, 0x060f, 0x0f, 0x00, 0x1d},
189         {0x7c, 0x0e7d, 0x060f, 0x0f, 0x00, 0x1d},
190         {0x7d, 0x0eff, 0x060f, 0x0f, 0x00, 0x1d},
191         {0x20, 0x0e3b, 0x0D16, 0x16, 0x00, 0x43},
192         {0x21, 0x0e7d, 0x0D16, 0x16, 0x00, 0x43},
193         {0x22, 0x0eff, 0x0D16, 0x16, 0x00, 0x43},
194         {0x23, 0x0e3b, 0x0614, 0x14, 0x00, 0x41},
195         {0x24, 0x0e7d, 0x0614, 0x14, 0x00, 0x41},
196         {0x25, 0x0eff, 0x0614, 0x14, 0x00, 0x41},
197         {0x26, 0x063b, 0x0c15, 0x15, 0x00, 0x42},
198         {0x27, 0x067d, 0x0c15, 0x15, 0x00, 0x42},
199         {0x28, 0x06ff, 0x0c15, 0x15, 0x00, 0x42},
200         {0xff, 0x0000, 0x0000, 0x00, 0x00, 0x00}
201 };
202
203 static struct SiS_StandTable_S XGI330_StandTable = {
204 /* ExtVGATable */
205         0x00, 0x00, 0x00, 0x0000,
206         {0x01, 0x0f, 0x00, 0x0e},
207          0x23,
208         {0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
209          0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210          0xea, 0x8c, 0xdf, 0x28, 0x40, 0xe7, 0x04, 0xa3,
211          0xff},
212         {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
213          0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
214          0x01, 0x00, 0x00, 0x00},
215         {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f,
216          0xff}
217 };
218
219 static struct XGI_TimingHStruct XGI_TimingH[1];
220
221 static struct XGI_TimingVStruct XGI_TimingV[1];
222
223 static struct XGI_XG21CRT1Struct XGI_UpdateCRT1Table[] = {
224         {0x01, 0x27, 0x91, 0x8f, 0xc0}, /* 00 */
225         {0x03, 0x4f, 0x83, 0x8f, 0xc0}, /* 01 */
226         {0x05, 0x27, 0x91, 0x8f, 0xc0}, /* 02 */
227         {0x06, 0x4f, 0x83, 0x8f, 0xc0}, /* 03 */
228         {0x07, 0x4f, 0x83, 0x8f, 0xc0}, /* 04 */
229         {0x0d, 0x27, 0x91, 0x8f, 0xc0}, /* 05 */
230         {0x0e, 0x4f, 0x83, 0x8f, 0xc0}, /* 06 */
231         {0x0f, 0x4f, 0x83, 0x5d, 0xc0}, /* 07 */
232         {0x10, 0x4f, 0x83, 0x5d, 0xc0}, /* 08 */
233         {0x11, 0x4f, 0x83, 0xdf, 0x0c}, /* 09 */
234         {0x12, 0x4f, 0x83, 0xdf, 0x0c}, /* 10 */
235         {0x13, 0x4f, 0x83, 0x8f, 0xc0}, /* 11 */
236         {0x2e, 0x4f, 0x83, 0xdf, 0x0c}, /* 12 */
237         {0x2e, 0x4f, 0x87, 0xdf, 0xc0}, /* 13 */
238         {0x2f, 0x4f, 0x83, 0x8f, 0xc0}, /* 14 */
239         {0x50, 0x27, 0x91, 0xdf, 0x0c}, /* 15 */
240         {0x59, 0x27, 0x91, 0x8f, 0xc0}  /* 16 */
241 };
242
243 static struct XGI_CRT1TableStruct XGI_CRT1Table[] = {
244         { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
245           0xbf, 0x1f, 0x9c, 0x8e, 0x96, 0xb9, 0x30} }, /* 0x0 */
246         { {0x2d, 0x28, 0x90, 0x2c, 0x90, 0x00, 0x04, 0x00,
247           0x0b, 0x3e, 0xe9, 0x8b, 0xe7, 0x04, 0x00} }, /* 0x1 */
248         { {0x3D, 0x31, 0x81, 0x37, 0x1F, 0x00, 0x05, 0x00,
249           0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} }, /* 0x2 */
250         { {0x4F, 0x3F, 0x93, 0x45, 0x0D, 0x00, 0x01, 0x00,
251           0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x3 */
252         { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
253           0xBF, 0x1F, 0x9C, 0x8E, 0x96, 0xB9, 0x30} }, /* 0x4 */
254         { {0x5F, 0x50, 0x82, 0x55, 0x81, 0x00, 0x05, 0x00,
255           0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x5 */
256         { {0x63, 0x50, 0x86, 0x56, 0x9B, 0x00, 0x01, 0x00,
257           0x06, 0x3E, 0xE8, 0x8B, 0xE7, 0xFF, 0x10} }, /* 0x6 */
258         { {0x64, 0x4F, 0x88, 0x55, 0x9D, 0x00, 0x01, 0x00,
259           0xF2, 0x1F, 0xE0, 0x83, 0xDF, 0xF3, 0x10} }, /* 0x7 */
260         { {0x63, 0x4F, 0x87, 0x5A, 0x81, 0x00, 0x05, 0x00,
261           0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x10} }, /* 0x8 */
262         { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
263           0xFB, 0x1F, 0xE0, 0x83, 0xDF, 0xFC, 0x80} }, /* 0x9 */
264         { {0x65, 0x4F, 0x89, 0x58, 0x80, 0x00, 0x05, 0x60,
265           0x01, 0x3E, 0xE0, 0x83, 0xDF, 0x02, 0x80} }, /* 0xa */
266         { {0x67, 0x4F, 0x8B, 0x58, 0x81, 0x00, 0x05, 0x60,
267           0x0D, 0x3E, 0xE0, 0x83, 0xDF, 0x0E, 0x90} }, /* 0xb */
268         { {0x65, 0x4F, 0x89, 0x57, 0x9F, 0x00, 0x01, 0x00,
269           0xFB, 0x1F, 0xE6, 0x8A, 0xDF, 0xFC, 0x10} }, /* 0xc */
270         { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00, /* ;
271                                                 0D (800x600,56Hz) */
272           0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} },     /* ;
273                                                 (VCLK 36.0MHz) */
274         { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00, /* ;
275                                                 0E (800x600,60Hz) */
276           0x72, 0xF0, 0x58, 0x8C, 0x57, 0x73, 0xA0} },     /* ;
277                                                 (VCLK 40.0MHz) */
278         { {0x7D, 0x63, 0x81, 0x6E, 0x1D, 0x00, 0x06, 0x00, /* ;
279                                                 0F (800x600,72Hz) */
280           0x98, 0xF0, 0x7C, 0x82, 0x57, 0x99, 0x80} },     /* ;
281                                                 (VCLK 50.0MHz) */
282         { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00, /* ;
283                                                 10 (800x600,75Hz) */
284           0x6F, 0xF0, 0x58, 0x8B, 0x57, 0x70, 0xA0} },     /* ;
285                                                 (VCLK 49.5MHz) */
286         { {0x7E, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00, /* ;
287                                                 11 (800x600,85Hz) */
288           0x75, 0xF0, 0x58, 0x8B, 0x57, 0x76, 0xA0} },     /* ;
289                                                 (VCLK 56.25MHz) */
290         { {0x81, 0x63, 0x85, 0x6D, 0x18, 0x00, 0x06, 0x60, /* ;
291                                                 12 (800x600,100Hz) */
292           0x7A, 0xF0, 0x58, 0x8B, 0x57, 0x7B, 0xA0} },     /* ;
293                                                 (VCLK 75.8MHz) */
294         { {0x83, 0x63, 0x87, 0x6E, 0x19, 0x00, 0x06, 0x60, /* ;
295                                                 13 (800x600,120Hz) */
296           0x81, 0xF0, 0x58, 0x8B, 0x57, 0x82, 0xA0} },     /* ;
297                                                 (VCLK 79.411MHz) */
298         { {0x85, 0x63, 0x89, 0x6F, 0x1A, 0x00, 0x06, 0x60, /* ;
299                                                 14 (800x600,160Hz) */
300           0x91, 0xF0, 0x58, 0x8B, 0x57, 0x92, 0xA0} },     /* ;
301                                                 (VCLK 105.822MHz) */
302         { {0x99, 0x7F, 0x9D, 0x84, 0x1A, 0x00, 0x02, 0x00,
303           0x96, 0x1F, 0x7F, 0x83, 0x7F, 0x97, 0x10} }, /* 0x15 */
304         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
305           0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x16 */
306         { {0xA1, 0x7F, 0x85, 0x86, 0x97, 0x00, 0x02, 0x00,
307           0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }, /* 0x17 */
308         { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
309           0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} }, /* 0x18 */
310         { {0xA7, 0x7F, 0x8B, 0x89, 0x95, 0x00, 0x02, 0x00,
311           0x26, 0xF5, 0x00, 0x83, 0xFF, 0x27, 0x90} }, /* 0x19 */
312         { {0xA9, 0x7F, 0x8D, 0x8C, 0x9A, 0x00, 0x02, 0x62,
313           0x2C, 0xF5, 0x00, 0x83, 0xFF, 0x2D, 0x14} }, /* 0x1a */
314         { {0xAB, 0x7F, 0x8F, 0x8D, 0x9B, 0x00, 0x02, 0x62,
315           0x35, 0xF5, 0x00, 0x83, 0xFF, 0x36, 0x14} }, /* 0x1b */
316         { {0xCF, 0x9F, 0x93, 0xB2, 0x01, 0x00, 0x03, 0x00,
317           0x14, 0xBA, 0x00, 0x83, 0xFF, 0x15, 0x00} }, /* 0x1c */
318         { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
319           0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1d */
320         { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
321           0x28, 0x5A, 0x00, 0x83, 0xFF, 0x29, 0x89} }, /* 0x1e */
322         { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
323           0x2E, 0x5A, 0x00, 0x83, 0xFF, 0x2F, 0x89} }, /* 0x1f */
324         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
325           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x20 */
326         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
327           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x21 */
328         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
329           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x22 */
330         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
331           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x23 */
332         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
333           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x24 */
334         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
335           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x25 */
336         { {0x09, 0xC7, 0x8D, 0xD3, 0x0B, 0x01, 0x04, 0x00,
337           0xE0, 0x10, 0xB0, 0x83, 0xAF, 0xE1, 0x2F} }, /* 0x26 */
338         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
339           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x27 */
340         { {0x43, 0xEF, 0x87, 0x06, 0x00, 0x41, 0x05, 0x62,
341           0xD4, 0x1F, 0xA0, 0x83, 0x9F, 0xD5, 0x9F} }, /* 0x28 */
342         { {0x45, 0xEF, 0x89, 0x07, 0x01, 0x41, 0x05, 0x62,
343           0xD9, 0x1F, 0xA0, 0x83, 0x9F, 0xDA, 0x9F} }, /* 0x29 */
344         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
345           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2a */
346         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
347           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2b */
348         { {0x40, 0xEF, 0x84, 0x03, 0x1D, 0x41, 0x01, 0x00,
349           0xDA, 0x1F, 0xA0, 0x83, 0x9F, 0xDB, 0x1F} }, /* 0x2c */
350         { {0x59, 0xFF, 0x9D, 0x17, 0x13, 0x41, 0x05, 0x44,
351           0x33, 0xBA, 0x00, 0x83, 0xFF, 0x34, 0x0F} }, /* 0x2d */
352         { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
353           0x38, 0xBA, 0x00, 0x83, 0xFF, 0x39, 0x0F} }, /* 0x2e */
354         { {0x5B, 0xFF, 0x9F, 0x18, 0x14, 0x41, 0x05, 0x44,
355           0x3D, 0xBA, 0x00, 0x83, 0xFF, 0x3E, 0x0F} }, /* 0x2f */
356         { {0x5D, 0xFF, 0x81, 0x19, 0x95, 0x41, 0x05, 0x44,
357           0x41, 0xBA, 0x00, 0x84, 0xFF, 0x42, 0x0F} }, /* 0x30 */
358         { {0x55, 0xFF, 0x99, 0x0D, 0x0C, 0x41, 0x05, 0x00,
359           0x3E, 0xBA, 0x00, 0x84, 0xFF, 0x3F, 0x0F} }, /* 0x31 */
360         { {0x7F, 0x63, 0x83, 0x6C, 0x1C, 0x00, 0x06, 0x00,
361           0x72, 0xBA, 0x27, 0x8B, 0xDF, 0x73, 0x80} }, /* 0x32 */
362         { {0x7F, 0x63, 0x83, 0x69, 0x13, 0x00, 0x06, 0x00,
363           0x6F, 0xBA, 0x26, 0x89, 0xDF, 0x6F, 0x80} }, /* 0x33 */
364         { {0x7F, 0x63, 0x82, 0x6B, 0x13, 0x00, 0x06, 0x00,
365           0x75, 0xBA, 0x29, 0x8C, 0xDF, 0x75, 0x80} }, /* 0x34 */
366         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00,
367           0x24, 0xF1, 0xAF, 0x85, 0x3F, 0x25, 0xB0} }, /* 0x35 */
368         { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00,
369           0x1E, 0xF1, 0xAD, 0x81, 0x3F, 0x1F, 0xB0} }, /* 0x36 */
370         { {0xA7, 0x7F, 0x88, 0x89, 0x15, 0x00, 0x02, 0x00,
371           0x26, 0xF1, 0xB1, 0x85, 0x3F, 0x27, 0xB0} }, /* 0x37 */
372         { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
373           0x28, 0xC4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x38 */
374         { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00,
375           0x28, 0xD4, 0x7A, 0x8E, 0xCF, 0x29, 0xA1} }, /* 0x39 */
376         { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x00,
377           0x2E, 0xD4, 0x7D, 0x81, 0xCF, 0x2F, 0xA1} }, /* 0x3a */
378         { {0xDC, 0x9F, 0x00, 0xAB, 0x19, 0x00, 0x07, 0x00,
379           0xE6, 0xEF, 0xC0, 0xC3, 0xBF, 0xE7, 0x90} }, /* 0x3b */
380         { {0x6B, 0x59, 0x8F, 0x5E, 0x8C, 0x00, 0x05, 0x00,
381           0x0B, 0x3E, 0xE9, 0x8B, 0xE7, 0x04, 0x00} }, /* 0x3c */
382         { {0x7B, 0x63, 0x9F, 0x6A, 0x93, 0x00, 0x05, 0x00,
383           0x6F, 0xF0, 0x58, 0x8A, 0x57, 0x70, 0xA0} }, /* 0x3d */
384         { {0x86, 0x6A, 0x8a, 0x74, 0x06, 0x00, 0x02, 0x00,
385           0x8c, 0x15, 0x4f, 0x83, 0xef, 0x8d, 0x30} }, /* 0x3e */
386         { {0x81, 0x6A, 0x85, 0x70, 0x00, 0x00, 0x02, 0x00,
387           0x0f, 0x3e, 0xeb, 0x8e, 0xdf, 0x10, 0x00} }, /* 0x3f */
388         { {0xCE, 0x9F, 0x92, 0xA9, 0x17, 0x00, 0x07, 0x00,
389           0x20, 0xF5, 0x03, 0x88, 0xFF, 0x21, 0x90} }, /* 0x40 */
390         { {0xE6, 0xAE, 0x8A, 0xBD, 0x90, 0x00, 0x03, 0x00,
391           0x3D, 0x10, 0x1A, 0x8D, 0x19, 0x3E, 0x2F} }, /* 0x41 */
392         { {0xB9, 0x8F, 0x9D, 0x9B, 0x8A, 0x00, 0x06, 0x00,
393           0x7D, 0xFF, 0x60, 0x83, 0x5F, 0x7E, 0x90} }, /* 0x42 */
394         { {0xC3, 0x8F, 0x87, 0x9B, 0x0B, 0x00, 0x07, 0x00,
395           0x82, 0xFF, 0x60, 0x83, 0x5F, 0x83, 0x90} },  /* 0x43 */
396         { {0xAD, 0x7F, 0x91, 0x8E, 0x9C, 0x00, 0x02, 0x82,
397           0x49, 0xF5, 0x00, 0x83, 0xFF, 0x4A, 0x90} },  /* 0x44 */
398         { {0xCD, 0x9F, 0x91, 0xA7, 0x19, 0x00, 0x07, 0x60,
399           0xE6, 0xFF, 0xC0, 0x83, 0xBF, 0xE7, 0x90} },  /* 0x45 */
400         { {0xD3, 0x9F, 0x97, 0xAB, 0x1F, 0x00, 0x07, 0x60,
401           0xF1, 0xFF, 0xC0, 0x83, 0xBF, 0xF2, 0x90} },  /* 0x46 */
402         { {0xD7, 0x9F, 0x9B, 0xAC, 0x1E, 0x00, 0x07, 0x00,
403           0x03, 0xDE, 0xC0, 0x84, 0xBF, 0x04, 0x90} }  /* 0x47 */
404 };
405
406 /*add for new UNIVGABIOS*/
407 static struct SiS_LCDData  XGI_StLCD1024x768Data[] = {
408         {62,  25, 800,  546, 1344, 806},
409         {32,  15, 930,  546, 1344, 806},
410         {62,  25, 800,  546, 1344, 806}, /*chiawenfordot9->dot8*/
411         {104, 45, 945,  496, 1344, 806},
412         {62,  25, 800,  546, 1344, 806},
413         {31,  18, 1008, 624, 1344, 806},
414         {1,   1,  1344, 806, 1344, 806}
415 };
416
417 static struct SiS_LCDData  XGI_ExtLCD1024x768Data[] = {
418         {42, 25, 1536, 419, 1344, 806},
419         {48, 25, 1536, 369, 1344, 806},
420         {42, 25, 1536, 419, 1344, 806},
421         {48, 25, 1536, 369, 1344, 806},
422         {12, 5,  896,  500, 1344, 806},
423         {42, 25, 1024, 625, 1344, 806},
424         {1,  1,  1344, 806, 1344, 806},
425         {12, 5,  896,  500, 1344, 806},
426         {42, 25, 1024, 625, 1344, 806},
427         {1,  1,  1344, 806, 1344, 806},
428         {12, 5,  896,  500, 1344, 806},
429         {42, 25, 1024, 625, 1344, 806},
430         {1,  1,  1344, 806, 1344, 806}
431 };
432
433 static struct SiS_LCDData  XGI_CetLCD1024x768Data[] = {
434         {1, 1, 1344, 806, 1344, 806}, /* ; 00 (320x200,320x400,
435                                                640x200,640x400) */
436         {1, 1, 1344, 806, 1344, 806}, /* 01 (320x350,640x350) */
437         {1, 1, 1344, 806, 1344, 806}, /* 02 (360x400,720x400) */
438         {1, 1, 1344, 806, 1344, 806}, /* 03 (720x350) */
439         {1, 1, 1344, 806, 1344, 806}, /* 04 (640x480x60Hz) */
440         {1, 1, 1344, 806, 1344, 806}, /* 05 (800x600x60Hz) */
441         {1, 1, 1344, 806, 1344, 806}  /* 06 (1024x768x60Hz) */
442 };
443
444 static struct SiS_LCDData  XGI_StLCD1280x1024Data[] = {
445         {22,  5,  800,  510,  1650, 1088},
446         {22,  5,  800,  510,  1650, 1088},
447         {176, 45, 900,  510,  1650, 1088},
448         {176, 45, 900,  510,  1650, 1088},
449         {22,  5,  800,  510,  1650, 1088},
450         {13,  5,  1024, 675,  1560, 1152},
451         {16,  9,  1266, 804,  1688, 1072},
452         {1,   1,  1688, 1066, 1688, 1066}
453 };
454
455 static struct SiS_LCDData  XGI_ExtLCD1280x1024Data[] = {
456         {211, 60,  1024, 501,  1688, 1066},
457         {211, 60,  1024, 508,  1688, 1066},
458         {211, 60,  1024, 501,  1688, 1066},
459         {211, 60,  1024, 508,  1688, 1066},
460         {211, 60,  1024, 500,  1688, 1066},
461         {211, 75,  1024, 625,  1688, 1066},
462         {211, 120, 1280, 798,  1688, 1066},
463         {1,   1,   1688, 1066, 1688, 1066}
464 };
465
466 static struct SiS_LCDData  XGI_CetLCD1280x1024Data[] = {
467         {1, 1, 1688, 1066, 1688, 1066}, /* 00 (320x200,320x400,
468                                                640x200,640x400) */
469         {1, 1, 1688, 1066, 1688, 1066}, /* 01 (320x350,640x350) */
470         {1, 1, 1688, 1066, 1688, 1066}, /* 02 (360x400,720x400) */
471         {1, 1, 1688, 1066, 1688, 1066}, /* 03 (720x350) */
472         {1, 1, 1688, 1066, 1688, 1066}, /* 04 (640x480x60Hz) */
473         {1, 1, 1688, 1066, 1688, 1066}, /* 05 (800x600x60Hz) */
474         {1, 1, 1688, 1066, 1688, 1066}, /* 06 (1024x768x60Hz) */
475         {1, 1, 1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
476         {1, 1, 1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
477 };
478
479 static struct SiS_LCDData xgifb_lcd_1400x1050[] = {
480         {211, 100, 2100, 408,  1688, 1066}, /* 00 (320x200,320x400,
481                                                    640x200,640x400) */
482         {211, 64,  1536, 358,  1688, 1066}, /* 01 (320x350,640x350) */
483         {211, 100, 2100, 408,  1688, 1066}, /* 02 (360x400,720x400) */
484         {211, 64,  1536, 358,  1688, 1066}, /* 03 (720x350) */
485         {211, 48,  840,  488,  1688, 1066}, /* 04 (640x480x60Hz) */
486         {211, 72,  1008, 609,  1688, 1066}, /* 05 (800x600x60Hz) */
487         {211, 128, 1400, 776,  1688, 1066}, /* 06 (1024x768x60Hz) */
488         {1,   1,   1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz
489                                                   w/o Scaling) */
490         {1,   1,   1688, 1066, 1688, 1066}  /* 08 (1400x1050x60Hz) */
491 };
492
493 static struct SiS_LCDData  XGI_ExtLCD1600x1200Data[] = {
494         {4,  1,  1620, 420,  2160, 1250}, /* 00 (320x200,320x400,
495                                                  640x200,640x400)*/
496         {27, 7,  1920, 375,  2160, 1250}, /* 01 (320x350,640x350) */
497         {4,  1,  1620, 420,  2160, 1250}, /* 02 (360x400,720x400)*/
498         {27, 7,  1920, 375,  2160, 1250}, /* 03 (720x350) */
499         {27, 4,  800,  500,  2160, 1250}, /* 04 (640x480x60Hz) */
500         {4,  1,  1080, 625,  2160, 1250}, /* 05 (800x600x60Hz) */
501         {5,  2,  1350, 800,  2160, 1250}, /* 06 (1024x768x60Hz) */
502         {27, 16, 1500, 1064, 2160, 1250}, /* 07 (1280x1024x60Hz) */
503         {9,  7,  1920, 1106, 2160, 1250}, /* 08 (1400x1050x60Hz) */
504         {1,  1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200x60Hz) ;302lv */
505 };
506
507 static struct SiS_LCDData  XGI_StLCD1600x1200Data[] = {
508         {27,  4,  800,  500,  2160, 1250}, /* 00 (320x200,320x400,
509                                                   640x200,640x400) */
510         {27,  4,  800,  500,  2160, 1250}, /* 01 (320x350,640x350) */
511         {27,  4,  800,  500,  2160, 1250}, /* 02 (360x400,720x400) */
512         {27,  4,  800,  500,  2160, 1250}, /* 03 (720x350) */
513         {27,  4,  800,  500,  2160, 1250}, /* 04 (320x240,640x480) */
514         {4,   1,  1080, 625,  2160, 1250}, /* 05 (400x300,800x600) */
515         {5,   2,  1350, 800,  2160, 1250}, /* 06 (512x384,1024x768) */
516         {135, 88, 1600, 1100, 2160, 1250}, /* 07 (1280x1024) */
517         {1,   1,  1800, 1500, 2160, 1250}, /* 08 (1400x1050) */
518         {1,   1,  2160, 1250, 2160, 1250}  /* 09 (1600x1200) */
519 };
520
521 #define XGI_CetLCD1400x1050Data XGI_CetLCD1280x1024Data
522
523 static struct SiS_LCDData  XGI_NoScalingData[] = {
524         {1, 1, 800,  449,  800,  449},
525         {1, 1, 800,  449,  800,  449},
526         {1, 1, 900,  449,  900,  449},
527         {1, 1, 900,  449,  900,  449},
528         {1, 1, 800,  525,  800,  525},
529         {1, 1, 1056, 628,  1056, 628},
530         {1, 1, 1344, 806,  1344, 806},
531         {1, 1, 1688, 1066, 1688, 1066}
532 };
533
534 static struct SiS_LCDData  XGI_ExtLCD1024x768x75Data[] = {
535         {42, 25, 1536, 419, 1344, 806}, /* ; 00 (320x200,320x400,
536                                                  640x200,640x400) */
537         {48, 25, 1536, 369, 1344, 806}, /* ; 01 (320x350,640x350) */
538         {42, 25, 1536, 419, 1344, 806}, /* ; 02 (360x400,720x400) */
539         {48, 25, 1536, 369, 1344, 806}, /* ; 03 (720x350) */
540         {8,  5,  1312, 500, 1312, 800}, /* ; 04 (640x480x75Hz) */
541         {41, 25, 1024, 625, 1312, 800}, /* ; 05 (800x600x75Hz) */
542         {1,  1,  1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
543 };
544
545 static struct SiS_LCDData  XGI_CetLCD1024x768x75Data[] = {
546         {1, 1, 1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,
547                                                640x200,640x400) */
548         {1, 1, 1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
549         {1, 1, 1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
550         {1, 1, 1312, 800, 1312, 800}, /* ; 03 (720x350) */
551         {1, 1, 1312, 800, 1312, 800}, /* ; 04 (640x480x75Hz) */
552         {1, 1, 1312, 800, 1312, 800}, /* ; 05 (800x600x75Hz) */
553         {1, 1, 1312, 800, 1312, 800}  /* ; 06 (1024x768x75Hz) */
554 };
555
556 static struct SiS_LCDData xgifb_lcd_1280x1024x75[] = {
557         {211, 60,  1024, 501,  1688, 1066}, /* ; 00 (320x200,320x400,
558                                                      640x200,640x400) */
559         {211, 60,  1024, 508,  1688, 1066}, /* ; 01 (320x350,640x350) */
560         {211, 60,  1024, 501,  1688, 1066}, /* ; 02 (360x400,720x400) */
561         {211, 60,  1024, 508,  1688, 1066}, /* ; 03 (720x350) */
562         {211, 45,  768,  498,  1688, 1066}, /* ; 04 (640x480x75Hz) */
563         {211, 75,  1024, 625,  1688, 1066}, /* ; 05 (800x600x75Hz) */
564         {211, 120, 1280, 798,  1688, 1066}, /* ; 06 (1024x768x75Hz) */
565         {1,   1,   1688, 1066, 1688, 1066}  /* ; 07 (1280x1024x75Hz) */
566 };
567
568 #define XGI_CetLCD1280x1024x75Data XGI_CetLCD1280x1024Data
569
570 static struct SiS_LCDData  XGI_NoScalingDatax75[] = {
571         {1, 1, 800,  449,  800,  449},  /* ; 00 (320x200, 320x400,
572                                                  640x200, 640x400) */
573         {1, 1, 800,  449,  800,  449},  /* ; 01 (320x350, 640x350) */
574         {1, 1, 900,  449,  900,  449},  /* ; 02 (360x400, 720x400) */
575         {1, 1, 900,  449,  900,  449},  /* ; 03 (720x350) */
576         {1, 1, 840,  500,  840,  500},  /* ; 04 (640x480x75Hz) */
577         {1, 1, 1056, 625,  1056, 625},  /* ; 05 (800x600x75Hz) */
578         {1, 1, 1312, 800,  1312, 800},  /* ; 06 (1024x768x75Hz) */
579         {1, 1, 1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
580         {1, 1, 1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)*/
581         {1, 1, 2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
582         {1, 1, 1688, 806,  1688, 806}   /* ; 0A (1280x768x75Hz) */
583 };
584
585 static struct XGI_LCDDesStruct XGI_ExtLCDDes1024x768Data[] = {
586         {9, 1057, 0,   771}, /* ; 00 (320x200,320x400,640x200,640x400) */
587         {9, 1057, 0,   771}, /* ; 01 (320x350,640x350) */
588         {9, 1057, 0,   771}, /* ; 02 (360x400,720x400) */
589         {9, 1057, 0,   771}, /* ; 03 (720x350) */
590         {9, 1057, 0,   771}, /* ; 04 (640x480x60Hz) */
591         {9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
592         {9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
593 };
594
595 static struct XGI_LCDDesStruct XGI_StLCDDes1024x768Data[] = {
596         {9, 1057, 737, 703}, /* ; 00 (320x200,320x400,640x200,640x400) */
597         {9, 1057, 686, 651}, /* ; 01 (320x350,640x350) */
598         {9, 1057, 737, 703}, /* ; 02 (360x400,720x400) */
599         {9, 1057, 686, 651}, /* ; 03 (720x350) */
600         {9, 1057, 776, 741}, /* ; 04 (640x480x60Hz) */
601         {9, 1057, 0,   771}, /* ; 05 (800x600x60Hz) */
602         {9, 1057, 805, 770}  /* ; 06 (1024x768x60Hz) */
603 };
604
605 static struct XGI_LCDDesStruct XGI_CetLCDDes1024x768Data[] = {
606         {1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
607         {1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
608         {1152, 856,  622, 587}, /* ; 02 (360x400,720x400) */
609         {1152, 856,  597, 562}, /* ; 03 (720x350) */
610         {1152, 856,  662, 627}, /* ; 04 (640x480x60Hz) */
611         {1232, 936,  722, 687}, /* ; 05 (800x600x60Hz) */
612         {0,    1048, 805, 770}  /* ; 06 (1024x768x60Hz) */
613 };
614
615 static struct XGI_LCDDesStruct XGI_ExtLCDDLDes1280x1024Data[] = {
616         {18, 1346, 981,  940},  /* 00 (320x200,320x400,640x200,640x400) */
617         {18, 1346, 926,  865},  /* 01 (320x350,640x350) */
618         {18, 1346, 981,  940},  /* 02 (360x400,720x400) */
619         {18, 1346, 926,  865},  /* 03 (720x350) */
620         {18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
621         {18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
622         {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
623         {18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
624 };
625
626 static struct XGI_LCDDesStruct XGI_StLCDDLDes1280x1024Data[] = {
627         {18, 1346, 970,  907},  /* 00 (320x200,320x400,640x200,640x400) */
628         {18, 1346, 917,  854},  /* 01 (320x350,640x350) */
629         {18, 1346, 970,  907},  /* 02 (360x400,720x400) */
630         {18, 1346, 917,  854},  /* 03 (720x350) */
631         {18, 1346, 0,    1025}, /* 04 (640x480x60Hz) */
632         {18, 1346, 0,    1025}, /* 05 (800x600x60Hz) */
633         {18, 1346, 1065, 1024}, /* 06 (1024x768x60Hz) */
634         {18, 1346, 1065, 1024}  /* 07 (1280x1024x60Hz) */
635 };
636
637 static struct XGI_LCDDesStruct XGI_CetLCDDLDes1280x1024Data[] = {
638         {1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
639         {1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
640         {1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
641         {1368, 1008, 729,  688}, /* 03 (720x350) */
642         {1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
643         {1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
644         {1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
645         {18,   1346, 1065, 1024} /* 07 (1280x1024x60Hz) */
646 };
647
648 static struct XGI_LCDDesStruct XGI_ExtLCDDes1280x1024Data[] = {
649         {9, 1337, 981,  940},  /* ; 00 (320x200,320x400,640x200,640x400) */
650         {9, 1337, 926,  884},  /* ; 01 (320x350,640x350) alan, 2003/09/30 */
651         {9, 1337, 981,  940},  /* ; 02 (360x400,720x400) */
652         {9, 1337, 926,  884},  /* ; 03 (720x350) alan, 2003/09/30 */
653         {9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
654         {9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
655         {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
656         {9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
657 };
658
659 static struct XGI_LCDDesStruct XGI_StLCDDes1280x1024Data[] = {
660         {9, 1337, 970,  907},  /* ; 00 (320x200,320x400,640x200,640x400) */
661         {9, 1337, 917,  854},  /* ; 01 (320x350,640x350) */
662         {9, 1337, 970,  907},  /* ; 02 (360x400,720x400) */
663         {9, 1337, 917,  854},  /* ; 03 (720x350) */
664         {9, 1337, 0,    1025}, /* ; 04 (640x480x60Hz) */
665         {9, 1337, 0,    1025}, /* ; 05 (800x600x60Hz) */
666         {9, 1337, 1065, 1024}, /* ; 06 (1024x768x60Hz) */
667         {9, 1337, 1065, 1024}  /* ; 07 (1280x1024x60Hz) */
668 };
669
670 static struct XGI_LCDDesStruct XGI_CetLCDDes1280x1024Data[] = {
671         {1368, 1008, 752,  711}, /* 00 (320x200,320x400,640x200,640x400) */
672         {1368, 1008, 729,  688}, /* 01 (320x350,640x350) */
673         {1368, 1008, 752,  711}, /* 02 (360x400,720x400) */
674         {1368, 1008, 729,  688}, /* 03 (720x350) */
675         {1368, 1008, 794,  753}, /* 04 (640x480x60Hz) */
676         {1448, 1068, 854,  813}, /* 05 (800x600x60Hz) */
677         {1560, 1200, 938,  897}, /* 06 (1024x768x60Hz) */
678         {9,    1337, 1065, 1024} /* 07 (1280x1024x60Hz) */
679 };
680
681 static struct XGI_LCDDesStruct xgifb_lcddldes_1400x1050[] = {
682         {18,   1464, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
683         {18,   1464, 0,    1051}, /* 01 (320x350,640x350) */
684         {18,   1464, 0,    1051}, /* 02 (360x400,720x400) */
685         {18,   1464, 0,    1051}, /* 03 (720x350) */
686         {18,   1464, 0,    1051}, /* 04 (640x480x60Hz) */
687         {18,   1464, 0,    1051}, /* 05 (800x600x60Hz) */
688         {18,   1464, 0,    1051}, /* 06 (1024x768x60Hz) */
689         {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
690         {18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
691 };
692
693 static struct XGI_LCDDesStruct xgifb_lcddes_1400x1050[] = {
694         {9,    1455, 0,    1051}, /* 00 (320x200,320x400,640x200,640x400) */
695         {9,    1455, 0,    1051}, /* 01 (320x350,640x350) */
696         {9,    1455, 0,    1051}, /* 02 (360x400,720x400) */
697         {9,    1455, 0,    1051}, /* 03 (720x350) */
698         {9,    1455, 0,    1051}, /* 04 (640x480x60Hz) */
699         {9,    1455, 0,    1051}, /* 05 (800x600x60Hz) */
700         {9,    1455, 0,    1051}, /* 06 (1024x768x60Hz) */
701         {1637, 1397, 1053, 1038}, /* 07 (1280x1024x60Hz) */
702         {9,    1455, 0,    1051}  /* 08 (1400x1050x60Hz) */
703 };
704
705 static struct XGI_LCDDesStruct XGI_CetLCDDes1400x1050Data[] = {
706         {1308, 1068, 781,  766},  /* 00 (320x200,320x400,640x200,640x400) */
707         {1308, 1068, 781,  766},  /* 01 (320x350,640x350) */
708         {1308, 1068, 781,  766},  /* 02 (360x400,720x400) */
709         {1308, 1068, 781,  766},  /* 03 (720x350) */
710         {1308, 1068, 781,  766},  /* 04 (640x480x60Hz) */
711         {1388, 1148, 841,  826},  /* 05 (800x600x60Hz) */
712         {1490, 1250, 925,  910},  /* 06 (1024x768x60Hz) */
713         {1646, 1406, 1053, 1038}, /* 07 (1280x1024x60Hz) */
714         {18,   1464, 0,    1051}  /* 08 (1400x1050x60Hz) */
715 };
716
717 static struct XGI_LCDDesStruct XGI_CetLCDDes1400x1050Data2[] = {
718         {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
719         {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
720         {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
721         {0, 1448, 0, 1051}, /* 03 (720x350) */
722         {0, 1448, 0, 1051}  /* 04 (640x480x60Hz) */
723 };
724
725 static struct XGI_LCDDesStruct XGI_ExtLCDDLDes1600x1200Data[] = {
726         {18, 1682, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
727         {18, 1682, 0, 1201}, /* 01 (320x350,640x350) */
728         {18, 1682, 0, 1201}, /* 02 (360x400,720x400) */
729         {18, 1682, 0, 1201}, /* 03 (720x350) */
730         {18, 1682, 0, 1201}, /* 04 (640x480x60Hz) */
731         {18, 1682, 0, 1201}, /* 05 (800x600x60Hz) */
732         {18, 1682, 0, 1201}, /* 06 (1024x768x60Hz) */
733         {18, 1682, 0, 1201}, /* 07 (1280x1024x60Hz) */
734         {18, 1682, 0, 1201}, /* 08 (1400x1050x60Hz) */
735         {18, 1682, 0, 1201}  /* 09 (1600x1200x60Hz) */
736 };
737
738 static struct XGI_LCDDesStruct XGI_StLCDDLDes1600x1200Data[] = {
739         {18, 1682, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
740         {18, 1682, 1083, 1034}, /* 01 (320x350,640x350) */
741         {18, 1682, 1150, 1101}, /* 02 (360x400,720x400) */
742         {18, 1682, 1083, 1034}, /* 03 (720x350) */
743         {18, 1682, 0,    1201}, /* 04 (640x480x60Hz) */
744         {18, 1682, 0,    1201}, /* 05 (800x600x60Hz) */
745         {18, 1682, 0,    1201}, /* 06 (1024x768x60Hz) */
746         {18, 1682, 1232, 1183}, /* 07 (1280x1024x60Hz) */
747         {18, 1682, 0,    1201}, /* 08 (1400x1050x60Hz) */
748         {18, 1682, 0,    1201} /* 09 (1600x1200x60Hz) */
749 };
750
751 static struct XGI_LCDDesStruct XGI_ExtLCDDes1600x1200Data[] = {
752         {9, 1673, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
753         {9, 1673, 0, 1201}, /* 01 (320x350,640x350) */
754         {9, 1673, 0, 1201}, /* 02 (360x400,720x400) */
755         {9, 1673, 0, 1201}, /* 03 (720x350) */
756         {9, 1673, 0, 1201}, /* 04 (640x480x60Hz) */
757         {9, 1673, 0, 1201}, /* 05 (800x600x60Hz) */
758         {9, 1673, 0, 1201}, /* 06 (1024x768x60Hz) */
759         {9, 1673, 0, 1201}, /* 07 (1280x1024x60Hz) */
760         {9, 1673, 0, 1201}, /* 08 (1400x1050x60Hz) */
761         {9, 1673, 0, 1201}  /* 09 (1600x1200x60Hz) */
762 };
763
764 static struct XGI_LCDDesStruct XGI_StLCDDes1600x1200Data[] = {
765         {9, 1673, 1150, 1101}, /* 00 (320x200,320x400,640x200,640x400) */
766         {9, 1673, 1083, 1034}, /* 01 (320x350,640x350) */
767         {9, 1673, 1150, 1101}, /* 02 (360x400,720x400) */
768         {9, 1673, 1083, 1034}, /* 03 (720x350) */
769         {9, 1673, 0,    1201}, /* 04 (640x480x60Hz) */
770         {9, 1673, 0,    1201}, /* 05 (800x600x60Hz) */
771         {9, 1673, 0,    1201}, /* 06 (1024x768x60Hz) */
772         {9, 1673, 1232, 1183}, /* 07 (1280x1024x60Hz) */
773         {9, 1673, 0,    1201}, /* 08 (1400x1050x60Hz) */
774         {9, 1673, 0,    1201}  /* 09 (1600x1200x60Hz) */
775 };
776
777 static struct XGI330_LCDDataDesStruct2  XGI_NoScalingDesData[] = {
778         {9, 657,  448, 405,  96,   2}, /* 00 (320x200,320x400,
779                                               640x200,640x400) */
780         {9, 657,  448, 355,  96,   2}, /* 01 (320x350,640x350) */
781         {9, 657,  448, 405,  96,   2}, /* 02 (360x400,720x400) */
782         {9, 657,  448, 355,  96,   2}, /* 03 (720x350) */
783         {9, 657,  1,   483,  96,   2}, /* 04 (640x480x60Hz) */
784         {9, 849,  627, 600,  128,  4}, /* 05 (800x600x60Hz) */
785         {9, 1057, 805, 770,  0136, 6}, /* 06 (1024x768x60Hz) */
786         {9, 1337, 0,   1025, 112,  3}, /* 07 (1280x1024x60Hz) */
787         {9, 1457, 0,   1051, 112,  3}, /* 08 (1400x1050x60Hz)*/
788         {9, 1673, 0,   1201, 192,  3}, /* 09 (1600x1200x60Hz) */
789         {9, 1337, 0,   771,  112,  6}  /* 0A (1280x768x60Hz) */
790 };
791
792 /* ;;1024x768x75Hz */
793 static struct XGI_LCDDesStruct xgifb_lcddes_1024x768x75[] = {
794         {9, 1049, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
795         {9, 1049, 0, 769}, /* ; 01 (320x350,640x350) */
796         {9, 1049, 0, 769}, /* ; 02 (360x400,720x400) */
797         {9, 1049, 0, 769}, /* ; 03 (720x350) */
798         {9, 1049, 0, 769}, /* ; 04 (640x480x75Hz) */
799         {9, 1049, 0, 769}, /* ; 05 (800x600x75Hz) */
800         {9, 1049, 0, 769}  /* ; 06 (1024x768x75Hz) */
801 };
802
803 /* ;;1024x768x75Hz */
804 static struct XGI_LCDDesStruct XGI_CetLCDDes1024x768x75Data[] = {
805         {1152, 856,  622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
806         {1152, 856,  597, 562}, /* ; 01 (320x350,640x350) */
807         {1192, 896,  622, 587}, /* ; 02 (360x400,720x400) */
808         {1192, 896,  597, 562}, /* ; 03 (720x350) */
809         {1129, 857,  656, 625}, /* ; 04 (640x480x75Hz) */
810         {1209, 937,  716, 685}, /* ; 05 (800x600x75Hz) */
811         {9,    1049, 0,   769}  /* ; 06 (1024x768x75Hz) */
812 };
813
814 /* ;;1280x1024x75Hz */
815 static struct XGI_LCDDesStruct xgifb_lcddldes_1280x1024x75[] = {
816         {18, 1314, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
817         {18, 1314, 0, 1025}, /* ; 01 (320x350,640x350) */
818         {18, 1314, 0, 1025}, /* ; 02 (360x400,720x400) */
819         {18, 1314, 0, 1025}, /* ; 03 (720x350) */
820         {18, 1314, 0, 1025}, /* ; 04 (640x480x60Hz) */
821         {18, 1314, 0, 1025}, /* ; 05 (800x600x60Hz) */
822         {18, 1314, 0, 1025}, /* ; 06 (1024x768x60Hz) */
823         {18, 1314, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
824 };
825
826 /* 1280x1024x75Hz */
827 static struct XGI_LCDDesStruct XGI_CetLCDDLDes1280x1024x75Data[] = {
828         {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
829         {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
830         {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
831         {1408, 1048, 729, 688}, /* ; 03 (720x350) */
832         {1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
833         {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
834         {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
835         {18,   1314, 0,   1025} /* ; 07 (1280x1024x75Hz) */
836 };
837
838 /* ;;1280x1024x75Hz */
839 static struct XGI_LCDDesStruct xgifb_lcddes_1280x1024x75[] = {
840         {9, 1305, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
841         {9, 1305, 0, 1025}, /* ; 01 (320x350,640x350) */
842         {9, 1305, 0, 1025}, /* ; 02 (360x400,720x400) */
843         {9, 1305, 0, 1025}, /* ; 03 (720x350) */
844         {9, 1305, 0, 1025}, /* ; 04 (640x480x60Hz) */
845         {9, 1305, 0, 1025}, /* ; 05 (800x600x60Hz) */
846         {9, 1305, 0, 1025}, /* ; 06 (1024x768x60Hz) */
847         {9, 1305, 0, 1025}  /* ; 07 (1280x1024x60Hz) */
848 };
849
850 /* 1280x1024x75Hz */
851 static struct XGI_LCDDesStruct XGI_CetLCDDes1280x1024x75Data[] = {
852         {1368, 1008, 752, 711}, /* ; 00 (320x200,320x400,640x200,640x400) */
853         {1368, 1008, 729, 688}, /* ; 01 (320x350,640x350) */
854         {1408, 1048, 752, 711}, /* ; 02 (360x400,720x400) */
855         {1408, 1048, 729, 688}, /* ; 03 (720x350) */
856         {1377, 985,  794, 753}, /* ; 04 (640x480x75Hz) */
857         {1457, 1065, 854, 813}, /* ; 05 (800x600x75Hz) */
858         {1569, 1177, 938, 897}, /* ; 06 (1024x768x75Hz) */
859         {9,    1305, 0,   1025} /* ; 07 (1280x1024x75Hz) */
860 };
861
862 /* Scaling LCD 75Hz */
863 static struct XGI330_LCDDataDesStruct2 XGI_NoScalingDesDatax75[] =  {
864         {9, 657,  448, 405,  96,  2}, /* ; 00 (320x200,320x400,
865                                                640x200,640x400) */
866         {9, 657,  448, 355,  96,  2}, /* ; 01 (320x350,640x350) */
867         {9, 738,  448, 405,  108, 2}, /* ; 02 (360x400,720x400) */
868         {9, 738,  448, 355,  108, 2}, /* ; 03 (720x350) */
869         {9, 665,  0,   481,  64,  3}, /* ; 04 (640x480x75Hz) */
870         {9, 825,  0,   601,  80,  3}, /* ; 05 (800x600x75Hz) */
871         {9, 1049, 0,   769,  96,  3}, /* ; 06 (1024x768x75Hz) */
872         {9, 1305, 0,   1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
873         {9, 1457, 0,   1051, 112, 3}, /* ; 08 (1400x1050x60Hz)*/
874         {9, 1673, 0,   1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
875         {9, 1337, 0,   771,  112, 6}  /* ; 0A (1280x768x60Hz) */
876 };
877
878 static const struct SiS_TVData XGI_StPALData[] = {
879         {1, 1, 864, 525, 1270, 400, 100, 0, 760},
880         {1, 1, 864, 525, 1270, 350, 100, 0, 760},
881         {1, 1, 864, 525, 1270, 400,   0, 0, 720},
882         {1, 1, 864, 525, 1270, 350,   0, 0, 720},
883         {1, 1, 864, 525, 1270, 480,  50, 0, 760},
884         {1, 1, 864, 525, 1270, 600,  50, 0,   0}
885 };
886
887 static const struct SiS_TVData XGI_ExtPALData[] = {
888         {2,  1, 1080, 463, 1270, 500,  50, 0,  50},
889         {15, 7, 1152, 413, 1270, 500,  50, 0,  50},
890         {2,  1, 1080, 463, 1270, 500,  50, 0,  50},
891         {15, 7, 1152, 413, 1270, 500,  50, 0,  50},
892         {2,  1,  900, 543, 1270, 500,   0, 0,  50},
893         {4,  3, 1080, 663, 1270, 500, 438, 0, 438},
894         {1,  1, 1125, 831, 1270, 500, 686, 0, 686}, /*301b*/
895         {3,  2, 1080, 619, 1270, 540, 438, 0, 438}
896 };
897
898 static const struct SiS_TVData XGI_StNTSCData[] = {
899         {1, 1, 858, 525, 1270, 400, 50, 0, 760},
900         {1, 1, 858, 525, 1270, 350, 50, 0, 640},
901         {1, 1, 858, 525, 1270, 400,  0, 0, 720},
902         {1, 1, 858, 525, 1270, 350,  0, 0, 720},
903         {1, 1, 858, 525, 1270, 480,  0, 0, 760}
904 };
905
906 static const struct SiS_TVData XGI_ExtNTSCData[] = {
907         {9,     5, 1001, 453, 1270, 420, 171, 0, 171},
908         {12,    5,  858, 403, 1270, 420, 171, 0, 171},
909         {9,     5, 1001, 453, 1270, 420, 171, 0, 171},
910         {12,    5,  858, 403, 1270, 420, 171, 0, 171},
911         {143,  80,  836, 523, 1270, 420, 224, 0,   0},
912         {143, 120, 1008, 643, 1270, 420,   0, 1,   0},
913         {1,     1, 1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
914         {2,     1,  858, 503, 1584, 480,   0, 1,   0},
915         {3,     2, 1001, 533, 1270, 420,   0, 0,   0}
916 };
917
918 static const struct SiS_TVData XGI_St1HiTVData[] = {
919         {1, 1, 892,  563, 690,  800, 0,     0, 0}, /* 00 (320x200,320x400,
920                                                           640x200,640x400) */
921         {1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
922         {1, 1, 1000, 563, 785,  800, 0,     0, 0}, /* 02 (360x400,720x400) */
923         {1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
924         {1, 1, 892,  563, 690,  960, 0,     0, 0}, /* 04 (320x240,640x480) */
925         {8, 5, 1050, 683, 1648, 960, 0x150, 1, 0}  /* 05 (400x300,800x600) */
926 };
927
928 static const struct SiS_TVData XGI_St2HiTVData[] = {
929         {3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 00 (320x200,320x400,
930                                                           640x200,640x400) */
931         {1, 1, 892,  563, 690,  700, 0,     0, 0}, /* 01 (320x350,640x350) */
932         {3, 1, 840,  483, 1648, 960, 0x032, 0, 0}, /* 02 (360x400,720x400) */
933         {1, 1, 1000, 563, 785,  700, 0,     0, 0}, /* 03 (720x350) */
934         {5, 2, 840,  563, 1648, 960, 0x08D, 1, 0}, /* 04 (320x240,640x480) */
935         {8, 5, 1050, 683, 1648, 960, 0x17C, 1, 0}  /* 05 (400x300,800x600) */
936 };
937
938 static const struct SiS_TVData XGI_ExtHiTVData[] = {
939         {6,  1,  840,  563,  1632, 960, 0,     0, 0}, /* 00 (320x200,320x400,
940                                                              640x200,640x400) */
941         {3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 01 (320x350,640x350) */
942         {3,  1,  840,  483,  1632, 960, 0,     0, 0}, /* 02 (360x400,720x400) */
943         {3,  1,  960,  563,  1632, 960, 0,     0, 0}, /* 03 (720x350) */
944         {5,  1,  840,  563,  1648, 960, 0x166, 1, 0}, /* 04 (320x240,640x480) */
945         {16, 5,  1050, 683,  1648, 960, 0x143, 1, 0}, /* 05 (400x300,800x600) */
946         {25, 12, 1260, 851,  1648, 960, 0x032, 0, 0}, /* 06 (512x384,1024x768)*/
947         {5,  4,  1575, 1124, 1648, 960, 0x128, 0, 0}, /* 07 (1280x1024) */
948         {4,  1,  1050, 563,  1548, 960, 0x143, 1, 0}, /* 08 (800x480) */
949         {5,  2,  1400, 659,  1648, 960, 0x032, 0, 0}, /* 09 (1024x576) */
950         {8,  5,  1750, 803,  1648, 960, 0x128, 0, 0}  /* 0A (1280x720) */
951 };
952
953 static const struct SiS_TVData XGI_ExtYPbPr525iData[] = {
954         {  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
955         { 12,  5,   858, 403, 1270, 420, 171,   0, 171},
956         {  9,  5,  1001, 453, 1270, 420, 171,   0, 171},
957         { 12,  5,   858, 403, 1270, 420, 171,   0, 171},
958         {143,  80,  836, 523, 1250, 420, 224,   0,   0},
959         {143, 120, 1008, 643, 1250, 420,   0,   1,   0},
960         { 1,    1, 1120, 821, 1516, 420,   0,   1,   0}, /*301b*/
961         {  2,   1,  858, 503, 1584, 480,   0,   1,   0},
962         {  3,   2, 1001, 533, 1250, 420,   0,   0,   0}
963 };
964
965 static const struct SiS_TVData XGI_StYPbPr525iData[] = {
966         {1, 1, 858, 525, 1270, 400, 50, 0, 760},
967         {1, 1, 858, 525, 1270, 350, 50, 0, 640},
968         {1, 1, 858, 525, 1270, 400,  0, 0, 720},
969         {1, 1, 858, 525, 1270, 350,  0, 0, 720},
970         {1, 1, 858, 525, 1270, 480,  0, 0, 760},
971 };
972
973 static const struct SiS_TVData XGI_ExtYPbPr525pData[] = {
974         {  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
975         { 12,   5,   858, 403, 1270, 420, 171, 0, 171},
976         {  9,   5,  1001, 453, 1270, 420, 171, 0, 171},
977         { 12,   5,   858, 403, 1270, 420, 171, 0, 171},
978         {143,  80,   836, 523, 1270, 420, 224, 0,   0},
979         {143, 120,  1008, 643, 1270, 420,   0, 1,   0},
980         { 1,    1,  1120, 821, 1516, 420,   0, 1,   0}, /*301b*/
981         {  2,   1,   858, 503, 1584, 480,   0, 1,   0},
982         {  3,   2,  1001, 533, 1270, 420,   0, 0,   0}
983 };
984
985 static const struct SiS_TVData XGI_StYPbPr525pData[] = {
986         {1, 1, 1716, 525, 1270, 400, 50, 0, 760},
987         {1, 1, 1716, 525, 1270, 350, 50, 0, 640},
988         {1, 1, 1716, 525, 1270, 400,  0, 0, 720},
989         {1, 1, 1716, 525, 1270, 350,  0, 0, 720},
990         {1, 1, 1716, 525, 1270, 480,  0, 0, 760},
991 };
992
993 static const struct SiS_TVData XGI_ExtYPbPr750pData[] = {
994         { 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 00 (320x200,320x400,
995                                                          640x200,640x400) */
996         {24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 01 (320x350,640x350) */
997         { 3, 1,  935, 470, 1130, 680,  50, 0, 0}, /* 02 (360x400,720x400) */
998         {24, 7,  935, 420, 1130, 680,  50, 0, 0}, /* 03 (720x350) */
999         { 2, 1, 1100, 590, 1130, 640,  50, 0, 0}, /* 04 (320x240,640x480) */
1000         { 3, 2, 1210, 690, 1130, 660,  50, 0, 0}, /* 05 (400x300,800x600) */
1001         { 1, 1, 1375, 878, 1130, 640, 638, 0, 0}, /* 06 (1024x768) */
1002         { 2, 1,  858, 503, 1130, 480,   0, 1, 0}, /* 07 (720x480) */
1003         { 5, 4, 1815, 570, 1130, 660,  50, 0, 0},
1004         { 5, 3, 1100, 686, 1130, 640,  50, 1, 0},
1005         {10, 9, 1320, 830, 1130, 640,  50, 0, 0}
1006 };
1007
1008 static const struct SiS_TVData XGI_StYPbPr750pData[] = {
1009         {1, 1, 1650, 750, 1280, 400, 50, 0, 760},
1010         {1, 1, 1650, 750, 1280, 350, 50, 0, 640},
1011         {1, 1, 1650, 750, 1280, 400,  0, 0, 720},
1012         {1, 1, 1650, 750, 1280, 350,  0, 0, 720},
1013         {1, 1, 1650, 750, 1280, 480,  0, 0, 760},
1014 };
1015
1016 static const unsigned char XGI330_NTSCTiming[] = {
1017         0x17, 0x1d, 0x03, 0x09, 0x05, 0x06, 0x0c, 0x0c,
1018         0x94, 0x49, 0x01, 0x0a, 0x06, 0x0d, 0x04, 0x0a,
1019         0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x1b,
1020         0x0c, 0x50, 0x00, 0x97, 0x00, 0xda, 0x4a, 0x17,
1021         0x7d, 0x05, 0x4b, 0x00, 0x00, 0xe2, 0x00, 0x02,
1022         0x03, 0x0a, 0x65, 0x9d, 0x08, 0x92, 0x8f, 0x40,
1023         0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x50,
1024         0x00, 0x40, 0x44, 0x00, 0xdb, 0x02, 0x3b, 0x00
1025 };
1026
1027 static const unsigned char XGI330_PALTiming[] = {
1028         0x21, 0x5A, 0x35, 0x6e, 0x04, 0x38, 0x3d, 0x70,
1029         0x94, 0x49, 0x01, 0x12, 0x06, 0x3e, 0x35, 0x6d,
1030         0x06, 0x14, 0x3e, 0x35, 0x6d, 0x00, 0x45, 0x2b,
1031         0x70, 0x50, 0x00, 0x9b, 0x00, 0xd9, 0x5d, 0x17,
1032         0x7d, 0x05, 0x45, 0x00, 0x00, 0xe8, 0x00, 0x02,
1033         0x0d, 0x00, 0x68, 0xb0, 0x0b, 0x92, 0x8f, 0x40,
1034         0x60, 0x80, 0x14, 0x90, 0x8c, 0x60, 0x14, 0x63,
1035         0x00, 0x40, 0x3e, 0x00, 0xe1, 0x02, 0x28, 0x00
1036 };
1037
1038 static const unsigned char XGI330_HiTVExtTiming[] = {
1039         0x2D, 0x60, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1040         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1041         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1042         0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1043         0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1044         0x8E, 0x8E, 0x82, 0x07, 0x0B,
1045         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1046         0x60, 0x14, 0x3D, 0x63, 0x4F,
1047         0x27, 0x00, 0xfc, 0xff, 0x6a, 0x00
1048 };
1049
1050 static const unsigned char XGI330_HiTVSt1Timing[] = {
1051         0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1052         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1053         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1054         0x65, 0x90, 0x7B, 0xA8, 0x03, 0xF0, 0x87, 0x03,
1055         0x11, 0x15, 0x11, 0xCF, 0x10, 0x11, 0xCF, 0x10,
1056         0x35, 0x35, 0x3B, 0x69, 0x1D,
1057         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1058         0x60, 0x04, 0x86, 0xAF, 0x5D,
1059         0x0E, 0x00, 0xfc, 0xff, 0x2d, 0x00
1060 };
1061
1062 static const unsigned char XGI330_HiTVSt2Timing[] = {
1063         0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x64,
1064         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1065         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1066         0x64, 0x90, 0x33, 0x8C, 0x18, 0x36, 0x3E, 0x13,
1067         0x2A, 0xDE, 0x2A, 0x44, 0x40, 0x2A, 0x44, 0x40,
1068         0x8E, 0x8E, 0x82, 0x07, 0x0B,
1069         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1070         0x60, 0x14, 0x3D, 0x63, 0x4F,
1071         0x27, 0x00, 0xFC, 0xff, 0x6a, 0x00
1072 };
1073
1074 static const unsigned char XGI330_HiTVTextTiming[] = {
1075         0x32, 0x65, 0x2C, 0x5F, 0x08, 0x31, 0x3A, 0x65,
1076         0x28, 0x02, 0x01, 0x3D, 0x06, 0x3E, 0x35, 0x6D,
1077         0x06, 0x14, 0x3E, 0x35, 0x6D, 0x00, 0xC5, 0x3F,
1078         0x65, 0x90, 0xE7, 0xBC, 0x03, 0x0C, 0x97, 0x03,
1079         0x14, 0x78, 0x14, 0x08, 0x20, 0x14, 0x08, 0x20,
1080         0xC8, 0xC8, 0x3B, 0xD2, 0x26,
1081         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1082         0x60, 0x04, 0x96, 0x72, 0x5C,
1083         0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1084 };
1085
1086 static const unsigned char XGI330_YPbPr750pTiming[] = {
1087         0x30, 0x1d, 0xe8, 0x09, 0x09, 0xed, 0x0c, 0x0c,
1088         0x98, 0x0a, 0x01, 0x0c, 0x06, 0x0d, 0x04, 0x0a,
1089         0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1090         0xed, 0x50, 0x70, 0x9f, 0x16, 0x59, 0x60, 0x13,
1091         0x27, 0x0b, 0x27, 0xfc, 0x30, 0x27, 0x1c, 0xb0,
1092         0x4b, 0x4b, 0x6f, 0x2f, 0x63,
1093         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1094         0x60, 0x14, 0x73, 0x00, 0x40,
1095         0x11, 0x00, 0xfc, 0xff, 0x32, 0x00
1096 };
1097
1098 static const unsigned char XGI330_YPbPr525pTiming[] = {
1099         0x3E, 0x11, 0x06, 0x09, 0x0b, 0x0c, 0x0c, 0x0c,
1100         0x98, 0x0a, 0x01, 0x0d, 0x06, 0x0d, 0x04, 0x0a,
1101         0x06, 0x14, 0x0d, 0x04, 0x0a, 0x00, 0x85, 0x3f,
1102         0x0c, 0x50, 0xb2, 0x9f, 0x16, 0x59, 0x4f, 0x13,
1103         0xad, 0x11, 0xad, 0x1d, 0x40, 0x8a, 0x3d, 0xb8,
1104         0x51, 0x5e, 0x60, 0x49, 0x7d,
1105         0x92, 0x0F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1106         0x60, 0x14, 0x4B, 0x43, 0x41,
1107         0x11, 0x00, 0xFC, 0xFF, 0x32, 0x00
1108 };
1109
1110 static const unsigned char XGI330_YPbPr525iTiming[] = {
1111         0x1B, 0x21, 0x03, 0x09, 0x05, 0x06, 0x0C, 0x0C,
1112         0x94, 0x49, 0x01, 0x0A, 0x06, 0x0D, 0x04, 0x0A,
1113         0x06, 0x14, 0x0D, 0x04, 0x0A, 0x00, 0x85, 0x1B,
1114         0x0C, 0x50, 0x00, 0x97, 0x00, 0xDA, 0x4A, 0x17,
1115         0x7D, 0x05, 0x4B, 0x00, 0x00, 0xE2, 0x00, 0x02,
1116         0x03, 0x0A, 0x65, 0x9D, 0x08,
1117         0x92, 0x8F, 0x40, 0x60, 0x80, 0x14, 0x90, 0x8C,
1118         0x60, 0x14, 0x4B, 0x00, 0x40,
1119         0x44, 0x00, 0xDB, 0x02, 0x3B, 0x00
1120 };
1121
1122 static const unsigned char XGI330_HiTVGroup3Data[] = {
1123         0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x5F,
1124         0x05, 0x21, 0xB2, 0xB2, 0x55, 0x77, 0x2A, 0xA6,
1125         0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1126         0x8C, 0x6E, 0x60, 0x2E, 0x58, 0x48, 0x72, 0x44,
1127         0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1128         0x4F, 0x7F, 0x03, 0xA8, 0x7D, 0x20, 0x1A, 0xA9,
1129         0x14, 0x05, 0x03, 0x7E, 0x64, 0x31, 0x14, 0x75,
1130         0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1131 };
1132
1133 static const unsigned char XGI330_HiTVGroup3Simu[] = {
1134         0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0x95,
1135         0xDB, 0x20, 0xB8, 0xB8, 0x55, 0x47, 0x2A, 0xA6,
1136         0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1137         0x8C, 0x6E, 0x60, 0x15, 0x26, 0xD3, 0xE4, 0x11,
1138         0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1139         0x67, 0x36, 0x01, 0x47, 0x0E, 0x10, 0xBE, 0xB4,
1140         0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
1141         0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1142 };
1143
1144 static const unsigned char XGI330_HiTVGroup3Text[] = {
1145         0x00, 0x1A, 0x22, 0x63, 0x62, 0x22, 0x08, 0xA7,
1146         0xF5, 0x20, 0xCE, 0xCE, 0x55, 0x47, 0x2A, 0xA6,
1147         0x25, 0x2F, 0x47, 0xFA, 0xC8, 0xFF, 0x8E, 0x20,
1148         0x8C, 0x6E, 0x60, 0x18, 0x2C, 0x0C, 0x20, 0x22,
1149         0x56, 0x36, 0x4F, 0x6E, 0x3F, 0x80, 0x00, 0x80,
1150         0x93, 0x3C, 0x01, 0x50, 0x2F, 0x10, 0xF4, 0xCA,
1151         0x01, 0x05, 0x03, 0x7E, 0x65, 0x31, 0x14, 0x75,
1152         0x18, 0x05, 0x18, 0x05, 0x4C, 0xA8, 0x01
1153 };
1154
1155 static const unsigned char XGI330_Ren525pGroup3[] = {
1156         0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x13,
1157         0xB1, 0x41, 0x62, 0x62, 0xFF, 0xF4, 0x45, 0xa6,
1158         0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
1159         0xAC, 0xDA, 0x60, 0xFe, 0x6A, 0x9A, 0x06, 0x10,
1160         0xd1, 0x04, 0x18, 0x0a, 0xFF, 0x80, 0x00, 0x80,
1161         0x3c, 0x77, 0x00, 0xEF, 0xE0, 0x10, 0xB0, 0xE0,
1162         0x10, 0x4F, 0x0F, 0x0F, 0x05, 0x0F, 0x08, 0x6E,
1163         0x1a, 0x1F, 0x25, 0x2a, 0x4C, 0xAA, 0x01
1164 };
1165
1166 static const unsigned char XGI330_Ren750pGroup3[] = {
1167         0x00, 0x14, 0x15, 0x25, 0x55, 0x15, 0x0b, 0x7a,
1168         0x54, 0x41, 0xE7, 0xE7, 0xFF, 0xF4, 0x45, 0xa6,
1169         0x25, 0x2F, 0x67, 0xF6, 0xbf, 0xFF, 0x8E, 0x20,
1170         0xAC, 0x6A, 0x60, 0x2b, 0x52, 0xCD, 0x61, 0x10,
1171         0x51, 0x04, 0x18, 0x0a, 0x1F, 0x80, 0x00, 0x80,
1172         0xFF, 0xA4, 0x04, 0x2B, 0x94, 0x21, 0x72, 0x94,
1173         0x26, 0x05, 0x01, 0x0F, 0xed, 0x0F, 0x0A, 0x64,
1174         0x18, 0x1D, 0x23, 0x28, 0x4C, 0xAA, 0x01
1175 };
1176
1177 static struct SiS_LVDSData  XGI_LVDS1024x768Data_1[] = {
1178         { 960, 438, 1344, 806}, /* 00 (320x200,320x400,640x200,640x400) */
1179         { 960, 388, 1344, 806}, /* 01 (320x350,640x350) */
1180         {1040, 438, 1344, 806}, /* 02 (360x400,720x400) */
1181         {1040, 388, 1344, 806}, /* 03 (720x350) */
1182         { 960, 518, 1344, 806}, /* 04 (320x240,640x480) */
1183         {1120, 638, 1344, 806}, /* 05 (400x300,800x600) */
1184         {1344, 806, 1344, 806}  /* 06 (512x384,1024x768) */
1185 };
1186
1187
1188 static struct SiS_LVDSData  XGI_LVDS1024x768Data_2[] = {
1189         {1344, 806, 1344, 806},
1190         {1344, 806, 1344, 806},
1191         {1344, 806, 1344, 806},
1192         {1344, 806, 1344, 806},
1193         {1344, 806, 1344, 806},
1194         {1344, 806, 1344, 806},
1195         {1344, 806, 1344, 806},
1196         {800,  449, 1280, 801},
1197         {800,  525, 1280, 813}
1198 };
1199
1200 static struct SiS_LVDSData  XGI_LVDS1280x1024Data_1[] = {
1201         {1048, 442,  1688, 1066},
1202         {1048, 392,  1688, 1066},
1203         {1048, 442,  1688, 1066},
1204         {1048, 392,  1688, 1066},
1205         {1048, 522,  1688, 1066},
1206         {1208, 642,  1688, 1066},
1207         {1432, 810,  1688, 1066},
1208         {1688, 1066, 1688, 1066}
1209 };
1210
1211 #define XGI_LVDS1280x1024Data_2 XGI_LVDS1024x768Data_2
1212
1213 static struct SiS_LVDSData  XGI_LVDS1400x1050Data_1[] = {
1214         {928,   416, 1688, 1066},
1215         {928,   366, 1688, 1066},
1216         {928,   416, 1688, 1066},
1217         {928,   366, 1688, 1066},
1218         {928,   496, 1688, 1066},
1219         {1088,  616, 1688, 1066},
1220         {1312,  784, 1688, 1066},
1221         {1568, 1040, 1688, 1066},
1222         {1688, 1066, 1688, 1066}
1223 };
1224
1225 static struct SiS_LVDSData  XGI_LVDS1400x1050Data_2[] = {
1226         {1688, 1066, 1688, 1066},
1227         {1688, 1066, 1688, 1066},
1228         {1688, 1066, 1688, 1066},
1229         {1688, 1066, 1688, 1066},
1230         {1688, 1066, 1688, 1066},
1231         {1688, 1066, 1688, 1066},
1232         {1688, 1066, 1688, 1066},
1233         {1688, 1066, 1688, 1066},
1234         {1688, 1066, 1688, 1066}
1235 };
1236
1237 /* ;;[ycchen] 12/05/02 LCDHTxLCDVT=2048x1320 */
1238 static struct SiS_LVDSData XGI_LVDS1600x1200Data_1[] = {
1239         {1088, 520,  2048, 1320}, /* 00 (320x200,320x400,640x200,640x400) */
1240         {1088, 470,  2048, 1320}, /* 01 (320x350,640x350) */
1241         {1088, 520,  2048, 1320}, /* 02 (360x400,720x400) */
1242         {1088, 470,  2048, 1320}, /* 03 (720x350) */
1243         {1088, 600,  2048, 1320}, /* 04 (320x240,640x480) */
1244         {1248, 720,  2048, 1320}, /* 05 (400x300,800x600) */
1245         {1472, 888,  2048, 1320}, /* 06 (512x384,1024x768) */
1246         {1728, 1144, 2048, 1320}, /* 07 (640x512,1280x1024) */
1247         {1848, 1170, 2048, 1320}, /* 08 (1400x1050) */
1248         {2048, 1320, 2048, 1320}  /* 09 (1600x1200) */
1249 };
1250
1251 static struct SiS_LVDSData XGI_LVDSNoScalingData[] = {
1252         { 800,  449,  800,  449}, /* 00 (320x200,320x400,640x200,640x400) */
1253         { 800,  449,  800,  449}, /* 01 (320x350,640x350) */
1254         { 800,  449,  800,  449}, /* 02 (360x400,720x400) */
1255         { 800,  449,  800,  449}, /* 03 (720x350) */
1256         { 800,  525,  800,  525}, /* 04 (640x480x60Hz) */
1257         {1056,  628, 1056,  628}, /* 05 (800x600x60Hz) */
1258         {1344,  806, 1344,  806}, /* 06 (1024x768x60Hz) */
1259         {1688, 1066, 1688, 1066}, /* 07 (1280x1024x60Hz) */
1260         {1688, 1066, 1688, 1066}, /* 08 (1400x1050x60Hz) */
1261         {2160, 1250, 2160, 1250}, /* 09 (1600x1200x60Hz) */
1262         {1688,  806, 1688,  806}  /* 0A (1280x768x60Hz) */
1263 };
1264
1265 static struct SiS_LVDSData XGI_LVDS1024x768Data_1x75[] = {
1266         { 960, 438, 1312, 800}, /* 00 (320x200,320x400,640x200,640x400) */
1267         { 960, 388, 1312, 800}, /* 01 (320x350,640x350) */
1268         {1040, 438, 1312, 800}, /* 02 (360x400,720x400) */
1269         {1040, 388, 1312, 800}, /* 03 (720x350) */
1270         { 928, 512, 1312, 800}, /* 04 (320x240,640x480) */
1271         {1088, 632, 1312, 800}, /* 05 (400x300,800x600) */
1272         {1312, 800, 1312, 800}, /* 06 (512x384,1024x768) */
1273 };
1274
1275
1276 static struct SiS_LVDSData XGI_LVDS1024x768Data_2x75[] = {
1277         {1312, 800, 1312, 800}, /* ; 00 (320x200,320x400,640x200,640x400) */
1278         {1312, 800, 1312, 800}, /* ; 01 (320x350,640x350) */
1279         {1312, 800, 1312, 800}, /* ; 02 (360x400,720x400) */
1280         {1312, 800, 1312, 800}, /* ; 03 (720x350) */
1281         {1312, 800, 1312, 800}, /* ; 04 (320x240,640x480) */
1282         {1312, 800, 1312, 800}, /* ; 05 (400x300,800x600) */
1283         {1312, 800, 1312, 800}, /* ; 06 (512x384,1024x768) */
1284 };
1285
1286 static struct SiS_LVDSData XGI_LVDS1280x1024Data_1x75[] = {
1287         {1048,  442, 1688, 1066  }, /* ; 00 (320x200,320x400,640x200,640x400) */
1288         {1048,  392, 1688, 1066  }, /* ; 01 (320x350,640x350) */
1289         {1128,  442, 1688, 1066  }, /* ; 02 (360x400,720x400) */
1290         {1128,  392, 1688, 1066  }, /* ; 03 (720x350) */
1291         {1048,  522, 1688, 1066  }, /* ; 04 (320x240,640x480) */
1292         {1208,  642, 1688, 1066  }, /* ; 05 (400x300,800x600) */
1293         {1432,  810, 1688, 1066  }, /* ; 06 (512x384,1024x768) */
1294         {1688, 1066, 1688, 1066 },  /* ; 06; 07 (640x512,1280x1024) */
1295 };
1296
1297 static struct SiS_LVDSData XGI_LVDS1280x1024Data_2x75[] = {
1298         {1688, 1066, 1688, 1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */
1299         {1688, 1066, 1688, 1066 }, /* ; 01 (320x350,640x350) */
1300         {1688, 1066, 1688, 1066 }, /* ; 02 (360x400,720x400) */
1301         {1688, 1066, 1688, 1066 }, /* ; 03 (720x350) */
1302         {1688, 1066, 1688, 1066 }, /* ; 04 (320x240,640x480) */
1303         {1688, 1066, 1688, 1066 }, /* ; 05 (400x300,800x600) */
1304         {1688, 1066, 1688, 1066 }, /* ; 06 (512x384,1024x768) */
1305         {1688, 1066, 1688, 1066 }, /* ; 06; 07 (640x512,1280x1024) */
1306 };
1307
1308 static struct SiS_LVDSData XGI_LVDSNoScalingDatax75[] = {
1309         { 800,  449,  800, 449},  /* ; 00 (320x200,320x400,640x200,640x400) */
1310         { 800,  449,  800, 449},  /* ; 01 (320x350,640x350) */
1311         { 900,  449,  900, 449},  /* ; 02 (360x400,720x400) */
1312         { 900,  449,  900, 449},  /* ; 03 (720x350) */
1313         { 800,  500,  800, 500},  /* ; 04 (640x480x75Hz) */
1314         {1056,  625, 1056, 625},  /* ; 05 (800x600x75Hz) */
1315         {1312,  800, 1312, 800},  /* ; 06 (1024x768x75Hz) */
1316         {1688, 1066, 1688, 1066}, /* ; 07 (1280x1024x75Hz) */
1317         {1688, 1066, 1688, 1066}, /* ; 08 (1400x1050x75Hz)
1318                                      ;;[ycchen] 12/19/02 */
1319         {2160, 1250, 2160, 1250}, /* ; 09 (1600x1200x75Hz) */
1320         {1688,  806, 1688, 806},  /* ; 0A (1280x768x75Hz) */
1321 };
1322
1323 static struct SiS_LVDSData XGI_LVDS1024x768Des_1[] = {
1324         {0, 1048,   0, 771}, /* 00 (320x200,320x400,640x200,640x400) */
1325         {0, 1048,   0, 771}, /* 01 (320x350,640x350) */
1326         {0, 1048,   0, 771}, /* 02 (360x400,720x400) */
1327         {0, 1048,   0, 771}, /* 03 (720x350) */
1328         {0, 1048,   0, 771}, /* 04 (640x480x60Hz) */
1329         {0, 1048,   0, 771}, /* 05 (800x600x60Hz) */
1330         {0, 1048, 805, 770}  /* 06 (1024x768x60Hz) */
1331 } ;
1332
1333 static struct SiS_LVDSData XGI_LVDS1024x768Des_2[] = {
1334         {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1335         {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
1336         {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
1337         {1142,  856, 597, 562}, /* 03 (720x350) */
1338         {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
1339         {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
1340         {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
1341 };
1342
1343 static struct SiS_LVDSData XGI_LVDS1024x768Des_3[] = {
1344         {320, 24, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1345         {320, 24, 597, 562}, /* 01 (320x350,640x350) */
1346         {320, 24, 622, 587}, /* 02 (360x400,720x400) */
1347         {320, 24, 597, 562}, /* 03 (720x350) */
1348         {320, 24, 722, 687}  /* 04 (640x480x60Hz) */
1349 };
1350
1351 static struct SiS_LVDSData XGI_LVDS1280x1024Des_1[] = {
1352         {0, 1328,    0, 1025}, /* 00 (320x200,320x400,640x200,640x400) */
1353         {0, 1328,    0, 1025}, /* 01 (320x350,640x350) */
1354         {0, 1328,    0, 1025}, /* 02 (360x400,720x400) */
1355         {0, 1328,    0, 1025}, /* 03 (720x350) */
1356         {0, 1328,    0, 1025}, /* 04 (640x480x60Hz) */
1357         {0, 1328,    0, 1025}, /* 05 (800x600x60Hz) */
1358         {0, 1328,    0, 1025}, /* 06 (1024x768x60Hz) */
1359         {0, 1328, 1065, 1024}  /* 07 (1280x1024x60Hz) */
1360 };
1361
1362  /* The Display setting for DE Mode Panel */
1363 static struct SiS_LVDSData XGI_LVDS1280x1024Des_2[] = {
1364         {1368, 1008, 752, 711}, /* 00 (320x200,320x400,640x200,640x400) */
1365         {1368, 1008, 729, 688}, /* 01 (320x350,640x350) */
1366         {1408, 1048, 752, 711}, /* 02 (360x400,720x400) */
1367         {1408, 1048, 729, 688}, /* 03 (720x350) */
1368         {1368, 1008, 794, 753}, /* 04 (640x480x60Hz) */
1369         {1448, 1068, 854, 813}, /* 05 (800x600x60Hz) */
1370         {1560, 1200, 938, 897}, /* 06 (1024x768x60Hz) */
1371         {0000, 1328,   0, 1025} /* 07 (1280x1024x60Hz) */
1372 };
1373
1374 static struct SiS_LVDSData XGI_LVDS1400x1050Des_1[] = {
1375         {0, 1448, 0, 1051}, /* 00 (320x200,320x400,640x200,640x400) */
1376         {0, 1448, 0, 1051}, /* 01 (320x350,640x350) */
1377         {0, 1448, 0, 1051}, /* 02 (360x400,720x400) */
1378         {0, 1448, 0, 1051}, /* 03 (720x350) */
1379         {0, 1448, 0, 1051}, /* 04 (640x480x60Hz) */
1380         {0, 1448, 0, 1051}, /* 05 (800x600x60Hz) */
1381         {0, 1448, 0, 1051}, /* 06 (1024x768x60Hz) */
1382         {0, 1448, 0, 1051}, /* 07 (1280x1024x60Hz) */
1383         {0, 1448, 0, 1051}  /* 08 (1400x1050x60Hz) */
1384 };
1385
1386 static struct SiS_LVDSData XGI_LVDS1400x1050Des_2[] = {
1387         {1308, 1068,  781,  766}, /* 00 (320x200,320x400,640x200,640x400) */
1388         {1308, 1068,  781,  766}, /* 01 (320x350,640x350) */
1389         {1308, 1068,  781,  766}, /* 02 (360x400,720x400) */
1390         {1308, 1068,  781,  766}, /* 03 (720x350) */
1391         {1308, 1068,  781,  766}, /* 04 (640x480x60Hz) */
1392         {1388, 1148,  841,  826}, /* 05 (800x600x60Hz) */
1393         {1490, 1250,  925,  910}, /* 06 (1024x768x60Hz) */
1394         {1608, 1368, 1053, 1038}, /* 07 (1280x1024x60Hz) */
1395         {   0, 1448,    0, 1051}  /* 08 (1400x1050x60Hz) */
1396 };
1397
1398 static struct SiS_LVDSData XGI_LVDS1600x1200Des_1[] = {
1399         {0, 1664, 0, 1201}, /* 00 (320x200,320x400,640x200,640x400) */
1400         {0, 1664, 0, 1201}, /* 01 (320x350,640x350) */
1401         {0, 1664, 0, 1201}, /* 02 (360x400,720x400) */
1402         {0, 1664, 0, 1201}, /* 03 (720x350) */
1403         {0, 1664, 0, 1201}, /* 04 (640x480x60Hz) */
1404         {0, 1664, 0, 1201}, /* 05 (800x600x60Hz) */
1405         {0, 1664, 0, 1201}, /* 06 (1024x768x60Hz) */
1406         {0, 1664, 0, 1201}, /* 07 (1280x1024x60Hz) */
1407         {0, 1664, 0, 1201}, /* 08 (1400x1050x60Hz) */
1408         {0, 1664, 0, 1201}  /* 09 (1600x1200x60Hz) */
1409 };
1410
1411 static struct XGI330_LCDDataDesStruct2  XGI_LVDSNoScalingDesData[] = {
1412         {0,  648,  448,  405,  96, 2}, /* 00 (320x200,320x400,
1413                                               640x200,640x400) */
1414         {0,  648,  448,  355,  96, 2}, /* 01 (320x350,640x350) */
1415         {0,  648,  448,  405,  96, 2}, /* 02 (360x400,720x400) */
1416         {0,  648,  448,  355,  96, 2}, /* 03 (720x350) */
1417         {0,  648,    1,  483,  96, 2}, /* 04 (640x480x60Hz) */
1418         {0,  840,  627,  600, 128, 4}, /* 05 (800x600x60Hz) */
1419         {0, 1048,  805,  770, 136, 6}, /* 06 (1024x768x60Hz) */
1420         {0, 1328,    0, 1025, 112, 3}, /* 07 (1280x1024x60Hz) */
1421         {0, 1438,    0, 1051, 112, 3}, /* 08 (1400x1050x60Hz)*/
1422         {0, 1664,    0, 1201, 192, 3}, /* 09 (1600x1200x60Hz) */
1423         {0, 1328,    0, 0771, 112, 6}  /* 0A (1280x768x60Hz) */
1424 };
1425
1426 /* ; 1024x768 Full-screen */
1427 static struct SiS_LVDSData XGI_LVDS1024x768Des_1x75[] = {
1428         {0, 1040, 0, 769}, /* ; 00 (320x200,320x400,640x200,640x400) */
1429         {0, 1040, 0, 769}, /* ; 01 (320x350,640x350) */
1430         {0, 1040, 0, 769}, /* ; 02 (360x400,720x400) */
1431         {0, 1040, 0, 769}, /* ; 03 (720x350) */
1432         {0, 1040, 0, 769}, /* ; 04 (640x480x75Hz) */
1433         {0, 1040, 0, 769}, /* ; 05 (800x600x75Hz) */
1434         {0, 1040, 0, 769}  /* ; 06 (1024x768x75Hz) */
1435 };
1436
1437 /* ; 1024x768 center-screen (Enh. Mode) */
1438 static struct SiS_LVDSData XGI_LVDS1024x768Des_2x75[] = {
1439         {1142,  856, 622, 587}, /* 00 (320x200,320x400,640x200,640x400) */
1440         {1142,  856, 597, 562}, /* 01 (320x350,640x350) */
1441         {1142,  856, 622, 587}, /* 02 (360x400,720x400) */
1442         {1142,  856, 597, 562}, /* 03 (720x350) */
1443         {1142, 1048, 722, 687}, /* 04 (640x480x60Hz) */
1444         {1232,  936, 722, 687}, /* 05 (800x600x60Hz) */
1445         {   0, 1048, 805, 771}  /* 06 (1024x768x60Hz) */
1446 };
1447
1448 /* ; 1024x768 center-screen (St.Mode) */
1449 static struct SiS_LVDSData XGI_LVDS1024x768Des_3x75[] =  {
1450         {320, 24, 622, 587}, /* ; 00 (320x200,320x400,640x200,640x400) */
1451         {320, 24, 597, 562}, /* ; 01 (320x350,640x350) */
1452         {320, 24, 622, 587}, /* ; 02 (360x400,720x400) */
1453         {320, 24, 597, 562}, /* ; 03 (720x350) */
1454         {320, 24, 722, 687}  /* ; 04 (640x480x60Hz) */
1455 };
1456
1457 static struct SiS_LVDSData XGI_LVDS1280x1024Des_1x75[] = {
1458         {0, 1296, 0, 1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
1459         {0, 1296, 0, 1025}, /* ; 01 (320x350,640x350) */
1460         {0, 1296, 0, 1025}, /* ; 02 (360x400,720x400) */
1461         {0, 1296, 0, 1025}, /* ; 03 (720x350) */
1462         {0, 1296, 0, 1025}, /* ; 04 (640x480x75Hz) */
1463         {0, 1296, 0, 1025}, /* ; 05 (800x600x75Hz) */
1464         {0, 1296, 0, 1025}, /* ; 06 (1024x768x75Hz) */
1465         {0, 1296, 0, 1025}  /* ; 07 (1280x1024x75Hz) */
1466 };
1467
1468 /* The Display setting for DE Mode Panel */
1469 /* Set DE as default */
1470 static struct SiS_LVDSData XGI_LVDS1280x1024Des_2x75[] = {
1471         {1368,  976, 752,  711}, /* ; 00 (320x200,320x400,640x200,640x400) */
1472         {1368,  976, 729,  688}, /* ; 01 (320x350,640x350) */
1473         {1408,  976, 752,  711}, /* ; 02 (360x400,720x400) */
1474         {1408,  976, 729,  688}, /* ; 03 (720x350) */
1475         {1368,  976, 794,  753}, /* ; 04 (640x480x75Hz) */
1476         {1448, 1036, 854,  813}, /* ; 05 (800x600x75Hz) */
1477         {1560, 1168, 938,  897}, /* ; 06 (1024x768x75Hz) */
1478         {   0, 1296,   0, 1025}  /* ; 07 (1280x1024x75Hz) */
1479 };
1480
1481 /* Scaling LCD 75Hz */
1482 static struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesDatax75[] = {
1483         {0,  648, 448,  405,  96, 2}, /* ; 00 (320x200,320x400,
1484                                                640x200,640x400) */
1485         {0,  648, 448,  355,  96, 2}, /* ; 01 (320x350,640x350) */
1486         {0,  729, 448,  405, 108, 2}, /* ; 02 (360x400,720x400) */
1487         {0,  729, 448,  355, 108, 2}, /* ; 03 (720x350) */
1488         {0,  656,   0,  481,  64, 3}, /* ; 04 (640x480x75Hz) */
1489         {0,  816,   0,  601,  80, 3}, /* ; 05 (800x600x75Hz) */
1490         {0, 1040,   0,  769,  96, 3}, /* ; 06 (1024x768x75Hz) */
1491         {0, 1296,   0, 1025, 144, 3}, /* ; 07 (1280x1024x75Hz) */
1492         {0, 1448,   0, 1051, 112, 3}, /* ; 08 (1400x1050x75Hz) */
1493         {0, 1664,   0, 1201, 192, 3}, /* ; 09 (1600x1200x75Hz) */
1494         {0, 1328,   0,  771, 112, 6}  /* ; 0A (1280x768x75Hz) */
1495 };
1496
1497 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1498 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_1_H[] = {
1499         { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} }, /* 00 (320x) */
1500         { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} }, /* 01 (360x) */
1501         { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} }, /* 02 (400x) */
1502         { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1503         { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 04 (640x) */
1504         { {0x73, 0x4F, 0x97, 0x55, 0x86, 0x00, 0x05, 0x00} }, /* 05 (720x) */
1505         { {0x87, 0x63, 0x8B, 0x69, 0x1A, 0x00, 0x26, 0x00} }, /* 06 (800x) */
1506         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
1507 };
1508
1509 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1510 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_1_H[] = {
1511         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 00 (320x) */
1512         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00 } }, /* 01 (360x) */
1513         { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00 } }, /* 02 (400x) */
1514         { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00 } }, /* 03 (512x) */
1515         { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 04 (640x) */
1516         { {0x7E, 0x4F, 0x82, 0x58, 0x06, 0x00, 0x06, 0x00 } }, /* 05 (720x) */
1517         { {0x92, 0x63, 0x96, 0x6C, 0x1A, 0x00, 0x06, 0x00 } }, /* 06 (800x) */
1518         { {0xAE, 0x7F, 0x92, 0x88, 0x96, 0x00, 0x02, 0x00 } }, /* 07 (1024x) */
1519         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00 } }  /* 08 (1280x) */
1520 };
1521
1522 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1523 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_2_H[] = {
1524         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1525         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1526         { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1527         { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1528         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 04 (640x) */
1529         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} }, /* 05 (720x) */
1530         { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} }, /* 06 (800x) */
1531         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} }  /* 07 (1024x) */
1532 };
1533
1534 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1535 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_2_H[] = {
1536         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1537         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1538         { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1539         { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1540         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
1541         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
1542         { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} }, /* 06 (800x) */
1543         { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
1544         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} }  /* 08 (1280x) */
1545 };
1546
1547 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1548 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_1_H[] = {
1549         { {0x47, 0x27, 0x8B, 0x2C, 0x1A, 0x00, 0x05, 0x00} }, /* 00 (320x) */
1550         { {0x47, 0x27, 0x8B, 0x30, 0x1E, 0x00, 0x05, 0x00} }, /* 01 (360x) */
1551         { {0x51, 0x31, 0x95, 0x36, 0x04, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1552         { {0x5F, 0x3F, 0x83, 0x44, 0x92, 0x00, 0x01, 0x00} }, /* 03 (512x) */
1553         { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 04 (640x) */
1554         { {0x6F, 0x4F, 0x93, 0x54, 0x82, 0x00, 0x05, 0x00} }, /* 05 (720x) */
1555         { {0x83, 0x63, 0x87, 0x68, 0x16, 0x00, 0x06, 0x00} }, /* 06 (800x) */
1556         { {0x9F, 0x7F, 0x83, 0x84, 0x92, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
1557         { {0xBF, 0x9F, 0x83, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
1558         { {0xCE, 0xAE, 0x92, 0xB3, 0x01, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
1559 };
1560
1561 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1562 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_2_H[] = {
1563         { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 00 (320x) */
1564         { {0x76, 0x3F, 0x83, 0x45, 0x8C, 0x00, 0x41, 0x00} }, /* 01 (360x) */
1565         { {0x76, 0x31, 0x9A, 0x48, 0x9F, 0x00, 0x41, 0x00} }, /* 02 (400x) */
1566         { {0x76, 0x3F, 0x9A, 0x4F, 0x96, 0x00, 0x41, 0x00} }, /* 03 (512x) */
1567         { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 04 (640x) */
1568         { {0xCE, 0x7E, 0x82, 0x87, 0x9E, 0x00, 0x02, 0x00} }, /* 05 (720x) */
1569         { {0xCE, 0x63, 0x92, 0x96, 0x04, 0x00, 0x07, 0x00} }, /* 06 (800x) */
1570         { {0xCE, 0x7F, 0x92, 0xA4, 0x12, 0x00, 0x07, 0x00} }, /* 07 (1024x) */
1571         { {0xCE, 0x9F, 0x92, 0xB4, 0x02, 0x00, 0x03, 0x00} }, /* 08 (1280x) */
1572         { {0xCE, 0xAE, 0x92, 0xBC, 0x0A, 0x00, 0x03, 0x00} }  /* 09 (1400x) */
1573 };
1574
1575 /* ;302lv channelA [ycchen] 12/05/02 LCDHT=2048 */
1576 /* ; CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1577 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11600x1200_1_H[] = {
1578         { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 00 (320x) */
1579         { {0x5B, 0x27, 0x9F, 0x32, 0x0A, 0x00, 0x01, 0x00} }, /* 01 (360x) */
1580         { {0x65, 0x31, 0x89, 0x3C, 0x94, 0x00, 0x01, 0x00} }, /* 02 (400x) */
1581         { {0x73, 0x3F, 0x97, 0x4A, 0x82, 0x00, 0x05, 0x00} }, /* 03 (512x) */
1582         { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 04 (640x) */
1583         { {0x83, 0x4F, 0x87, 0x51, 0x09, 0x00, 0x06, 0x00} }, /* 05 (720x) */
1584         { {0x97, 0x63, 0x9B, 0x65, 0x1D, 0x00, 0x06, 0xF0} }, /* 06 (800x) */
1585         { {0xB3, 0x7F, 0x97, 0x81, 0x99, 0x00, 0x02, 0x00} }, /* 07 (1024x) */
1586         { {0xD3, 0x9F, 0x97, 0xA1, 0x19, 0x00, 0x07, 0x00} }, /* 08 (1280x) */
1587         { {0xE2, 0xAE, 0x86, 0xB9, 0x91, 0x00, 0x03, 0x00} }, /* 09 (1400x) */
1588         { {0xFB, 0xC7, 0x9F, 0xC9, 0x81, 0x00, 0x07, 0x00} }  /* 0A (1600x) */
1589 };
1590
1591 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1592 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_V[] = {
1593         { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} }, /* 00 (x350) */
1594         { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} }, /* 01 (x400) */
1595         { {0x04, 0x3E, 0xE2, 0x89, 0xDF, 0x05, 0x00} }, /* 02 (x480) */
1596         { {0x7C, 0xF0, 0x5A, 0x8F, 0x57, 0x7D, 0xA0} }, /* 03 (x600) */
1597         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
1598 };
1599
1600 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1601 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_V[] = {
1602         { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} }, /* 00 (x350) */
1603         { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} }, /* 01 (x400) */
1604         { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} }, /* 02 (x480) */
1605         { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} }, /* 03 (x600) */
1606         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} }  /* 04 (x768) */
1607 };
1608
1609 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1610 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_V[] = {
1611         { {0x86, 0x1F, 0x5E, 0x82, 0x5D, 0x87, 0x00} }, /* 00 (x350) */
1612         { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} }, /* 01 (x400) */
1613         { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} }, /* 02 (x480) */
1614         { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} }, /* 03 (x600) */
1615         { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} }, /* 04 (x768) */
1616         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
1617 };
1618
1619 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1620 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_V[] = {
1621         { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} }, /* 00 (x350) */
1622         { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} }, /* 01 (x400) */
1623         { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} }, /* 02 (x480) */
1624         { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} }, /* 03 (x600) */
1625         { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} }, /* 04 (x768) */
1626         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} }  /* 05 (x1024) */
1627 };
1628
1629 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1630 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_1_V[] = {
1631         { {0x6C, 0x1F, 0x60, 0x84, 0x5D, 0x6D, 0x10} }, /* 00 (x350) */
1632         { {0x9E, 0x1F, 0x93, 0x86, 0x8F, 0x9F, 0x30} }, /* 01 (x400) */
1633         { {0xEE, 0x1F, 0xE2, 0x86, 0xDF, 0xEF, 0x10} }, /* 02 (x480) */
1634         { {0x66, 0xF0, 0x5A, 0x8e, 0x57, 0x67, 0xA0} }, /* 03 (x600) */
1635         { {0x0E, 0xF5, 0x02, 0x86, 0xFF, 0x0F, 0x90} }, /* 04 (x768) */
1636         { {0x0E, 0x5A, 0x02, 0x86, 0xFF, 0x0F, 0x89} }, /* 05 (x1024) */
1637         { {0x28, 0x10, 0x1A, 0x80, 0x19, 0x29, 0x0F} }  /* 06 (x1050) */
1638 };
1639
1640 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1641 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_2_V[] = {
1642         { {0x28, 0x92, 0xB6, 0x83, 0xB5, 0xCF, 0x81} }, /* 00 (x350) */
1643         { {0x28, 0x92, 0xD5, 0x82, 0xD4, 0xEE, 0x81} }, /* 01 (x400) */
1644         { {0x28, 0x92, 0xFD, 0x8A, 0xFC, 0x16, 0xB1} }, /* 02 (x480) */
1645         { {0x28, 0xD4, 0x39, 0x86, 0x57, 0x29, 0x81} }, /* 03 (x600) */
1646         { {0x28, 0xD4, 0x8D, 0x9A, 0xFF, 0x29, 0xA1} }, /* 04 (x768) */
1647         { {0x28, 0x5A, 0x0D, 0x9A, 0xFF, 0x29, 0xA9} }, /* 05 (x1024) */
1648         { {0x28, 0x10, 0x1A, 0x87, 0x19, 0x29, 0x8F} }  /* 06 (x1050) */
1649 };
1650
1651 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1652 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11600x1200_1_V[] = {
1653         { {0xd4, 0x1F, 0x81, 0x84, 0x5D, 0xd5, 0x10} }, /* 00 (x350) */
1654         { {0x06, 0x3e, 0xb3, 0x86, 0x8F, 0x07, 0x20} }, /* 01 (x400) */
1655         { {0x56, 0xba, 0x03, 0x86, 0xDF, 0x57, 0x00} }, /* 02 (x480) */
1656         { {0xce, 0xF0, 0x7b, 0x8e, 0x57, 0xcf, 0xa0} }, /* 03 (x600) */
1657         { {0x76, 0xF5, 0x23, 0x86, 0xFF, 0x77, 0x90} }, /* 04 (x768) */
1658         { {0x76, 0x5A, 0x23, 0x86, 0xFF, 0x77, 0x89} }, /* 05 (x1024) */
1659         { {0x90, 0x10, 0x1A, 0x8E, 0x19, 0x91, 0x2F} }, /* 06 (x1050) */
1660         { {0x26, 0x11, 0xd3, 0x86, 0xaF, 0x27, 0x3f} }  /* 07 (x1200) */
1661 };
1662
1663 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1664 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_Hx75[] = {
1665         { {0x4B, 0x27, 0x8F, 0x32, 0x1B, 0x00, 0x45, 0x00} },/* ; 00 (320x) */
1666         { {0x4B, 0x27, 0x8F, 0x2B, 0x03, 0x00, 0x44, 0x00} },/* ; 01 (360x) */
1667         { {0x55, 0x31, 0x99, 0x46, 0x1D, 0x00, 0x55, 0x00} },/* ; 02 (400x) */
1668         { {0x63, 0x3F, 0x87, 0x4A, 0x93, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1669         { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 04 (640x) */
1670         { {0x6F, 0x4F, 0x93, 0x54, 0x80, 0x00, 0x05, 0x00} },/* ; 05 (720x) */
1671         { {0x83, 0x63, 0x87, 0x68, 0x14, 0x00, 0x26, 0x00} },/* ; 06 (800x) */
1672         { {0x9F, 0x7F, 0x83, 0x85, 0x91, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
1673 };
1674
1675 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
1676 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_Vx75[] = {
1677         { {0x97, 0x1F, 0x60, 0x87, 0x5D, 0x83, 0x10} },/* ; 00 (x350) */
1678         { {0xB4, 0x1F, 0x92, 0x89, 0x8F, 0xB5, 0x30} },/* ; 01 (x400) */
1679         { {0xFE, 0x1F, 0xE0, 0x84, 0xDF, 0xFF, 0x10} },/* ; 02 (x480) */
1680         { {0x76, 0xF0, 0x58, 0x8C, 0x57, 0x77, 0xA0} },/* ; 03 (x600) */
1681         { {0x1E, 0xF5, 0x00, 0x83, 0xFF, 0x1F, 0x90} } /* ; 04 (x768) */
1682 };
1683
1684 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1685 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_Hx75[] = {
1686         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
1687         { {0x63, 0x27, 0x87, 0x3B, 0x8C, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
1688         { {0x63, 0x31, 0x87, 0x3D, 0x8E, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1689         { {0x63, 0x3F, 0x87, 0x45, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1690         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
1691         { {0xA3, 0x4F, 0x87, 0x6E, 0x9F, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
1692         { {0xA3, 0x63, 0x87, 0x78, 0x89, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
1693         { {0xA3, 0x7F, 0x87, 0x86, 0x97, 0x00, 0x02, 0x00} } /* ; 07 (1024x) */
1694 };
1695
1696 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1697 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_Vx75[] = {
1698         { {0x24, 0xBB, 0x31, 0x87, 0x5D, 0x25, 0x30} },/* ; 00 (x350) */
1699         { {0x24, 0xBB, 0x4A, 0x80, 0x8F, 0x25, 0x30} },/* ; 01 (x400) */
1700         { {0x24, 0xBB, 0x72, 0x88, 0xDF, 0x25, 0x30} },/* ; 02 (x480) */
1701         { {0x24, 0xF1, 0xAE, 0x84, 0x57, 0x25, 0xB0} },/* ; 03 (x600) */
1702         { {0x24, 0xF5, 0x02, 0x88, 0xFF, 0x25, 0x90} } /* ; 04 (x768) */
1703 };
1704
1705 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1706 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_Hx75[] = {
1707         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 00 (320x) */
1708         { {0x56, 0x27, 0x9A, 0x30, 0x1E, 0x00, 0x05, 0x00} },/* ; 01 (360x) */
1709         { {0x60, 0x31, 0x84, 0x3A, 0x88, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1710         { {0x6E, 0x3F, 0x92, 0x48, 0x96, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1711         { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 04 (640x) */
1712         { {0x7E, 0x4F, 0x82, 0x54, 0x06, 0x00, 0x06, 0x00} },/* ; 05 (720x) */
1713         { {0x92, 0x63, 0x96, 0x68, 0x1A, 0x00, 0x06, 0x00} },/* ; 06 (800x) */
1714         { {0xAE, 0x7F, 0x92, 0x84, 0x96, 0x00, 0x02, 0x00} },/* ; 07 (1024x) */
1715         { {0xCE, 0x9F, 0x92, 0xA5, 0x17, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
1716 };
1717
1718 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1719 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_Vx75[] = {
1720         { {0x86, 0xD1, 0xBC, 0x80, 0xBB, 0xE5, 0x00} },/* ; 00 (x350) */
1721         { {0xB8, 0x1F, 0x90, 0x84, 0x8F, 0xB9, 0x30} },/* ; 01 (x400) */
1722         { {0x08, 0x3E, 0xE0, 0x84, 0xDF, 0x09, 0x00} },/* ; 02 (x480) */
1723         { {0x80, 0xF0, 0x58, 0x8C, 0x57, 0x81, 0xA0} },/* ; 03 (x600) */
1724         { {0x28, 0xF5, 0x00, 0x84, 0xFF, 0x29, 0x90} },/* ; 04 (x768) */
1725         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
1726 };
1727 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
1728 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_Hx75[] = {
1729         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 00 (320x) */
1730         { {0x7E, 0x3B, 0x9A, 0x44, 0x12, 0x00, 0x01, 0x00} },/* ; 01 (360x) */
1731         { {0x7E, 0x40, 0x84, 0x49, 0x91, 0x00, 0x01, 0x00} },/* ; 02 (400x) */
1732         { {0x7E, 0x47, 0x93, 0x50, 0x9E, 0x00, 0x01, 0x00} },/* ; 03 (512x) */
1733         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 04 (640x) */
1734         { {0xCE, 0x77, 0x8A, 0x80, 0x8E, 0x00, 0x02, 0x00} },/* ; 05 (720x) */
1735         { {0xCE, 0x81, 0x94, 0x8A, 0x98, 0x00, 0x02, 0x00} },/* ; 06 (800x) */
1736         { {0xCE, 0x8F, 0x82, 0x98, 0x06, 0x00, 0x07, 0x00} },/* ; 07 (1024x) */
1737         { {0xCE, 0x9F, 0x92, 0xA8, 0x16, 0x00, 0x07, 0x00} } /* ; 08 (1280x) */
1738 };
1739
1740 /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
1741 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] = {
1742         { {0x28, 0xD2, 0xAF, 0x83, 0xAE, 0xD8, 0xA1} },/* ; 00 (x350) */
1743         { {0x28, 0xD2, 0xC8, 0x8C, 0xC7, 0xF2, 0x81} },/* ; 01 (x400) */
1744         { {0x28, 0xD2, 0xF0, 0x84, 0xEF, 0x1A, 0xB1} },/* ; 02 (x480) */
1745         { {0x28, 0xDE, 0x2C, 0x8F, 0x2B, 0x56, 0x91} },/* ; 03 (x600) */
1746         { {0x28, 0xDE, 0x80, 0x83, 0x7F, 0xAA, 0x91} },/* ; 04 (x768) */
1747         { {0x28, 0x5A, 0x13, 0x87, 0xFF, 0x29, 0xA9} } /* ; 05 (x1024) */
1748 };
1749
1750 /*add for new UNIVGABIOS*/
1751 static struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] = {
1752         {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCD1024x768Data },
1753         {Panel_1024x768, 0x0019, 0x0000, XGI_StLCD1024x768Data },
1754         {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCD1024x768Data },
1755         {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCD1280x1024Data },
1756         {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCD1280x1024Data },
1757         {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCD1280x1024Data },
1758         {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcd_1400x1050 },
1759         {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcd_1400x1050 },
1760         {Panel_1400x1050, 0x0018, 0x0010, XGI_CetLCD1400x1050Data },
1761         {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCD1600x1200Data },
1762         {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCD1600x1200Data },
1763         {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingData },
1764         {Panel_1024x768x75, 0x0019, 0x0001, XGI_ExtLCD1024x768x75Data },
1765         {Panel_1024x768x75, 0x0019, 0x0000, XGI_ExtLCD1024x768x75Data },
1766         {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCD1024x768x75Data },
1767         {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcd_1280x1024x75 },
1768         {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcd_1280x1024x75 },
1769         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCD1280x1024x75Data },
1770         {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDatax75 },
1771         {0xFF, 0x0000, 0x0000, NULL } /* End of table */
1772 };
1773
1774 static struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] = {
1775         {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
1776         {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
1777         {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
1778         {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDes1280x1024Data },
1779         {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDes1280x1024Data },
1780         {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDes1280x1024Data },
1781         {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddes_1400x1050 },
1782         {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddes_1400x1050 },
1783         {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
1784         {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
1785         {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDes1600x1200Data },
1786         {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDes1600x1200Data },
1787         {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
1788         {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
1789         {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
1790         {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
1791         {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddes_1280x1024x75 },
1792         {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddes_1280x1024x75 },
1793         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDes1280x1024x75Data },
1794         {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
1795         {0xFF, 0x0000, 0x0000, NULL }
1796 };
1797
1798 static struct XGI330_LCDDataTablStruct xgifb_lcddldes[] = {
1799         {Panel_1024x768, 0x0019, 0x0001, XGI_ExtLCDDes1024x768Data },
1800         {Panel_1024x768, 0x0019, 0x0000, XGI_StLCDDes1024x768Data },
1801         {Panel_1024x768, 0x0018, 0x0010, XGI_CetLCDDes1024x768Data },
1802         {Panel_1280x1024, 0x0019, 0x0001, XGI_ExtLCDDLDes1280x1024Data },
1803         {Panel_1280x1024, 0x0019, 0x0000, XGI_StLCDDLDes1280x1024Data },
1804         {Panel_1280x1024, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024Data },
1805         {Panel_1400x1050, 0x0019, 0x0001, xgifb_lcddldes_1400x1050 },
1806         {Panel_1400x1050, 0x0019, 0x0000, xgifb_lcddldes_1400x1050 },
1807         {Panel_1400x1050, 0x0418, 0x0010, XGI_CetLCDDes1400x1050Data },
1808         {Panel_1400x1050, 0x0418, 0x0410, XGI_CetLCDDes1400x1050Data2 },
1809         {Panel_1600x1200, 0x0019, 0x0001, XGI_ExtLCDDLDes1600x1200Data },
1810         {Panel_1600x1200, 0x0019, 0x0000, XGI_StLCDDLDes1600x1200Data },
1811         {PanelRef60Hz, 0x0008, 0x0008, XGI_NoScalingDesData },
1812         {Panel_1024x768x75, 0x0019, 0x0001, xgifb_lcddes_1024x768x75 },
1813         {Panel_1024x768x75, 0x0019, 0x0000, xgifb_lcddes_1024x768x75 },
1814         {Panel_1024x768x75, 0x0018, 0x0010, XGI_CetLCDDes1024x768x75Data },
1815         {Panel_1280x1024x75, 0x0019, 0x0001, xgifb_lcddldes_1280x1024x75 },
1816         {Panel_1280x1024x75, 0x0019, 0x0000, xgifb_lcddldes_1280x1024x75 },
1817         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_CetLCDDLDes1280x1024x75Data },
1818         {PanelRef75Hz, 0x0008, 0x0008, XGI_NoScalingDesDatax75 },
1819         {0xFF, 0x0000, 0x0000, NULL }
1820 };
1821
1822 static struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_h[] = {
1823         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_H },
1824         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_H },
1825         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_H },
1826         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_H },
1827         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_H },
1828         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_H },
1829         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_H },
1830         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Hx75 },
1831         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Hx75 },
1832         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Hx75 },
1833         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Hx75 },
1834         {0xFF, 0x0000, 0x0000, NULL }
1835 };
1836
1837 static struct XGI330_LCDDataTablStruct xgifb_epllcd_crt1_v[] = {
1838         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_V },
1839         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_V },
1840         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_V },
1841         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_V },
1842         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDSCRT11400x1050_1_V },
1843         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDSCRT11400x1050_2_V },
1844         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDSCRT11600x1200_1_V },
1845         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDSCRT11024x768_1_Vx75 },
1846         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDSCRT11024x768_2_Vx75 },
1847         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDSCRT11280x1024_1_Vx75 },
1848         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDSCRT11280x1024_2_Vx75 },
1849         {0xFF, 0x0000, 0x0000, NULL }
1850 };
1851
1852 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] = {
1853         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Data_1 },
1854         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Data_2 },
1855         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1 },
1856         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2 },
1857         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Data_1 },
1858         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Data_2 },
1859         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Data_1 },
1860         {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingData },
1861         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Data_1x75 },
1862         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Data_2x75 },
1863         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Data_1x75 },
1864         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Data_2x75 },
1865         {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDatax75 },
1866         {0xFF, 0x0000, 0x0000, NULL }
1867 };
1868
1869 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] = {
1870         {Panel_1024x768, 0x0018, 0x0000, XGI_LVDS1024x768Des_1 },
1871         {Panel_1024x768, 0x0618, 0x0410, XGI_LVDS1024x768Des_3 },
1872         {Panel_1024x768, 0x0018, 0x0010, XGI_LVDS1024x768Des_2 },
1873         {Panel_1280x1024, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1 },
1874         {Panel_1280x1024, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2 },
1875         {Panel_1400x1050, 0x0018, 0x0000, XGI_LVDS1400x1050Des_1 },
1876         {Panel_1400x1050, 0x0018, 0x0010, XGI_LVDS1400x1050Des_2 },
1877         {Panel_1600x1200, 0x0018, 0x0000, XGI_LVDS1600x1200Des_1 },
1878         {PanelRef60Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesData },
1879         {Panel_1024x768x75, 0x0018, 0x0000, XGI_LVDS1024x768Des_1x75 },
1880         {Panel_1024x768x75, 0x0618, 0x0410, XGI_LVDS1024x768Des_3x75 },
1881         {Panel_1024x768x75, 0x0018, 0x0010, XGI_LVDS1024x768Des_2x75 },
1882         {Panel_1280x1024x75, 0x0018, 0x0000, XGI_LVDS1280x1024Des_1x75 },
1883         {Panel_1280x1024x75, 0x0018, 0x0010, XGI_LVDS1280x1024Des_2x75 },
1884         {PanelRef75Hz, 0x0008, 0x0008, XGI_LVDSNoScalingDesDatax75 },
1885         {0xFF, 0x0000, 0x0000, NULL }
1886 };
1887
1888 static const struct XGI330_TVDataTablStruct XGI_TVDataTable[] = {
1889         {0x09E1, 0x0001, XGI_ExtPALData},
1890         {0x09E1, 0x0000, XGI_ExtNTSCData},
1891         {0x09E1, 0x0801, XGI_StPALData},
1892         {0x09E1, 0x0800, XGI_StNTSCData},
1893         {0x49E0, 0x0100, XGI_ExtHiTVData},
1894         {0x49E0, 0x4100, XGI_St2HiTVData},
1895         {0x49E0, 0x4900, XGI_St1HiTVData},
1896         {0x09E0, 0x0020, XGI_ExtYPbPr525iData},
1897         {0x09E0, 0x0040, XGI_ExtYPbPr525pData},
1898         {0x09E0, 0x0080, XGI_ExtYPbPr750pData},
1899         {0x09E0, 0x0820, XGI_StYPbPr525iData},
1900         {0x09E0, 0x0840, XGI_StYPbPr525pData},
1901         {0x09E0, 0x0880, XGI_StYPbPr750pData},
1902         {0xffff, 0x0000, XGI_ExtNTSCData},
1903 };
1904
1905 /* Dual link only */
1906 static struct XGI330_LCDCapStruct  XGI_LCDDLCapList[] = {
1907 /* LCDCap1024x768 */
1908         {Panel_1024x768, DefaultLCDCap, 0, 0x88, 0x06, VCLK65_315,
1909         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
1910         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
1911 /* LCDCap1280x1024 */
1912         {Panel_1280x1024, XGI_LCDDualLink+DefaultLCDCap, StLCDBToA,
1913         0x70, 0x03, VCLK108_2_315,
1914         0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
1915         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1916 /* LCDCap1400x1050 */
1917         {Panel_1400x1050, XGI_LCDDualLink+DefaultLCDCap, StLCDBToA,
1918         0x70, 0x03, VCLK108_2_315,
1919          0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
1920          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1921 /* LCDCap1600x1200 */
1922         {Panel_1600x1200, XGI_LCDDualLink+DefaultLCDCap, LCDToFull,
1923         0xC0, 0x03, VCLK162,
1924          0x43, 0x22, 0x70, 0x24, 0x02, 0x14, 0x0A, 0x02, 0x00,
1925          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1926 /* LCDCap1024x768x75 */
1927         {Panel_1024x768x75, DefaultLCDCap, 0, 0x60, 0, VCLK78_75,
1928          0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
1929          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
1930 /* LCDCap1280x1024x75 */
1931         {Panel_1280x1024x75, XGI_LCDDualLink+DefaultLCDCap, StLCDBToA,
1932          0x90, 0x03, VCLK135_5,
1933          0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
1934          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1935 /* LCDCapDefault */
1936         {0xFF, DefaultLCDCap, 0, 0x88, 0x06, VCLK65_315,
1937         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
1938         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
1939 };
1940
1941 static struct XGI330_LCDCapStruct  XGI_LCDCapList[] = {
1942 /* LCDCap1024x768 */
1943         {Panel_1024x768, DefaultLCDCap, 0, 0x88, 0x06, VCLK65_315,
1944         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
1945         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
1946 /* LCDCap1280x1024 */
1947         {Panel_1280x1024, DefaultLCDCap, StLCDBToA,
1948         0x70, 0x03, VCLK108_2_315,
1949         0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
1950         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1951 /* LCDCap1400x1050 */
1952         {Panel_1400x1050, DefaultLCDCap, StLCDBToA,
1953          0x70, 0x03, VCLK108_2_315,
1954          0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
1955          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1956 /* LCDCap1600x1200 */
1957         {Panel_1600x1200, DefaultLCDCap, LCDToFull,
1958          0xC0, 0x03, VCLK162,
1959          0x5A, 0x23, 0x5A, 0x23, 0x02, 0x14, 0x0A, 0x02, 0x00,
1960          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1961 /* LCDCap1024x768x75 */
1962         {Panel_1024x768x75, DefaultLCDCap, 0, 0x60, 0, VCLK78_75,
1963          0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
1964          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
1965 /* LCDCap1280x1024x75 */
1966         {Panel_1280x1024x75, DefaultLCDCap, StLCDBToA,
1967          0x90, 0x03, VCLK135_5,
1968          0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
1969          0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
1970 /* LCDCapDefault */
1971         {0xFF, DefaultLCDCap, 0, 0x88, 0x06, VCLK65_315,
1972         0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
1973         0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
1974 };
1975
1976 static struct XGI_Ext2Struct XGI330_RefIndex[] = {
1977         {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
1978         0x00, 0x10, 0x59, 320, 200},/* 00 */
1979         {Mode32Bpp + SupportAllCRT2 + SyncPN, RES320x200, VCLK25_175,
1980         0x00, 0x10, 0x00, 320, 400},/* 01 */
1981         {Mode32Bpp + SupportAllCRT2 + SyncNN, RES320x240, VCLK25_175,
1982         0x04, 0x20, 0x50, 320, 240},/* 02 */
1983         {Mode32Bpp + SupportAllCRT2 + SyncPP, RES400x300, VCLK40,
1984         0x05, 0x32, 0x51, 400, 300},/* 03 */
1985         {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES512x384,
1986         VCLK65_315, 0x06, 0x43, 0x52, 512, 384},/* 04 */
1987         {Mode32Bpp + SupportAllCRT2 + SyncPN, RES640x400, VCLK25_175,
1988         0x00, 0x14, 0x2f, 640, 400},/* 05 */
1989         {Mode32Bpp + SupportAllCRT2 + SyncNN, RES640x480x60, VCLK25_175,
1990         0x04, 0x24, 0x2e, 640, 480},/* 06 640x480x60Hz (LCD 640x480x60z) */
1991         {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x72, VCLK31_5,
1992         0x04, 0x24, 0x2e, 640, 480},/* 07 640x480x72Hz (LCD 640x480x70Hz) */
1993         {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES640x480x75, VCLK31_5,
1994         0x47, 0x24, 0x2e, 640, 480},/* 08 640x480x75Hz (LCD 640x480x75Hz) */
1995         {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x85, VCLK36,
1996         0x8A, 0x24, 0x2e, 640, 480},/* 09 640x480x85Hz */
1997         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x100, VCLK43_163,
1998         0x00, 0x24, 0x2e, 640, 480},/* 0a 640x480x100Hz */
1999         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x120, VCLK52_406,
2000         0x00, 0x24, 0x2e, 640, 480},/* 0b 640x480x120Hz */
2001         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES640x480x160, VCLK72_852,
2002         0x00, 0x24, 0x2e, 640, 480},/* 0c 640x480x160Hz */
2003         {Mode32Bpp + SupportRAMDAC2 + SyncNN, RES640x480x200, VCLK86_6,
2004         0x00, 0x24, 0x2e, 640, 480},/* 0d 640x480x200Hz */
2005         {Mode32Bpp + NoSupportLCD + SyncPP, RES800x600x56, VCLK36,
2006         0x05, 0x36, 0x6a, 800, 600},/* 0e 800x600x56Hz */
2007         {Mode32Bpp + NoSupportTV + SyncPP, RES800x600x60, VCLK40,
2008         0x05, 0x36, 0x6a, 800, 600},/* 0f 800x600x60Hz (LCD 800x600x60Hz) */
2009         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x72, VCLK50,
2010         0x48, 0x36, 0x6a, 800, 600},/* 10 800x600x72Hz (LCD 800x600x70Hz) */
2011         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES800x600x75, VCLK49_5,
2012         0x8B, 0x36, 0x6a, 800, 600},/* 11 800x600x75Hz (LCD 800x600x75Hz) */
2013         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x600x85, VCLK56_25,
2014         0x00, 0x36, 0x6a, 800, 600},/* 12 800x600x85Hz */
2015         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x100, VCLK68_179,
2016         0x00, 0x36, 0x6a, 800, 600},/* 13 800x600x100Hz */
2017         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x120, VCLK83_95,
2018         0x00, 0x36, 0x6a, 800, 600},/* 14 800x600x120Hz */
2019         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES800x600x160, VCLK116_406,
2020         0x00, 0x36, 0x6a, 800, 600},/* 15 800x600x160Hz */
2021         {Mode32Bpp + InterlaceMode + SyncPP, RES1024x768x43, VCLK44_9,
2022         0x00, 0x47, 0x37, 1024, 768},/* 16 1024x768x43Hz */
2023         /* 17 1024x768x60Hz (LCD 1024x768x60Hz) */
2024         {Mode32Bpp + NoSupportTV + SyncNN + SupportTV1024, RES1024x768x60,
2025         VCLK65_315, 0x06, 0x47, 0x37, 1024, 768},
2026         {Mode32Bpp + NoSupportHiVisionTV + SyncNN, RES1024x768x70, VCLK75,
2027         0x49, 0x47, 0x37, 1024, 768},/* 18 1024x768x70Hz (LCD 1024x768x70Hz) */
2028         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1024x768x75, VCLK78_75,
2029         0x00, 0x47, 0x37, 1024, 768},/* 19 1024x768x75Hz (LCD 1024x768x75Hz) */
2030         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x768x85, VCLK94_5,
2031         0x8C, 0x47, 0x37, 1024, 768},/* 1a 1024x768x85Hz */
2032         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x100, VCLK113_309,
2033         0x00, 0x47, 0x37, 1024, 768},/* 1b 1024x768x100Hz */
2034         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x120, VCLK139_054,
2035         0x00, 0x47, 0x37, 1024, 768},/* 1c 1024x768x120Hz */
2036         {Mode32Bpp + SupportLCD + SyncPP, RES1280x960x60, VCLK108_2_315,
2037         0x08, 0x58, 0x7b, 1280, 960},/* 1d 1280x960x60Hz */
2038         {Mode32Bpp + InterlaceMode + SyncPP, RES1280x1024x43, VCLK78_75,
2039         0x00, 0x58, 0x3a, 1280, 1024},/* 1e 1280x1024x43Hz */
2040         {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x60, VCLK108_2_315,
2041         0x07, 0x58, 0x3a, 1280, 1024},/*1f 1280x1024x60Hz (LCD 1280x1024x60Hz)*/
2042         {Mode32Bpp + NoSupportTV + SyncPP, RES1280x1024x75, VCLK135_5,
2043         0x00, 0x58, 0x3a, 1280, 1024},/*20 1280x1024x75Hz (LCD 1280x1024x75Hz)*/
2044         {Mode32Bpp + SyncPP, RES1280x1024x85, VCLK157_5,
2045         0x00, 0x58, 0x3a, 1280, 1024},/* 21 1280x1024x85Hz */
2046         /* 22 1600x1200x60Hz */
2047         {Mode32Bpp + SupportLCD + SyncPP + SupportCRT2in301C,
2048         RES1600x1200x60, VCLK162, 0x09, 0x7A, 0x3c, 1600, 1200},
2049         {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x65, VCLK175,
2050         0x00, 0x69, 0x3c, 1600, 1200},/* 23 1600x1200x65Hz */
2051         {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x70, VCLK189,
2052         0x00, 0x69, 0x3c, 1600, 1200},/* 24 1600x1200x70Hz */
2053         {Mode32Bpp + SyncPP + SupportCRT2in301C, RES1600x1200x75, VCLK202_5,
2054         0x00, 0x69, 0x3c, 1600, 1200},/* 25 1600x1200x75Hz */
2055         {Mode32Bpp + SyncPP, RES1600x1200x85, VCLK229_5,
2056         0x00, 0x69, 0x3c, 1600, 1200},/* 26 1600x1200x85Hz */
2057         {Mode32Bpp + SyncPP, RES1600x1200x100, VCLK269_655,
2058         0x00, 0x69, 0x3c, 1600, 1200},/* 27 1600x1200x100Hz */
2059         {Mode32Bpp + SyncPP, RES1600x1200x120, VCLK323_586,
2060         0x00, 0x69, 0x3c, 1600, 1200},/* 28 1600x1200x120Hz */
2061         {Mode32Bpp + SupportLCD + SyncNP, RES1920x1440x60, VCLK234,
2062         0x00, 0x00, 0x68, 1920, 1440},/* 29 1920x1440x60Hz */
2063         {Mode32Bpp + SyncPN, RES1920x1440x65, VCLK254_817,
2064         0x00, 0x00, 0x68, 1920, 1440},/* 2a 1920x1440x65Hz */
2065         {Mode32Bpp + SyncPN, RES1920x1440x70, VCLK277_015,
2066         0x00, 0x00, 0x68, 1920, 1440},/* 2b 1920x1440x70Hz */
2067         {Mode32Bpp + SyncPN, RES1920x1440x75, VCLK291_132,
2068         0x00, 0x00, 0x68, 1920, 1440},/* 2c 1920x1440x75Hz */
2069         {Mode32Bpp + SyncPN, RES1920x1440x85, VCLK330_615,
2070         0x00, 0x00, 0x68, 1920, 1440},/* 2d 1920x1440x85Hz */
2071         {Mode16Bpp + SyncPN, RES1920x1440x100, VCLK388_631,
2072         0x00, 0x00, 0x68, 1920, 1440},/* 2e 1920x1440x100Hz */
2073         {Mode32Bpp + SupportLCD + SyncPN, RES2048x1536x60, VCLK266_952,
2074         0x00, 0x00, 0x6c, 2048, 1536},/* 2f 2048x1536x60Hz */
2075         {Mode32Bpp + SyncPN, RES2048x1536x65, VCLK291_766,
2076         0x00, 0x00, 0x6c, 2048, 1536},/* 30 2048x1536x65Hz */
2077         {Mode32Bpp + SyncPN, RES2048x1536x70, VCLK315_195,
2078         0x00, 0x00, 0x6c, 2048, 1536},/* 31 2048x1536x70Hz */
2079         {Mode32Bpp + SyncPN, RES2048x1536x75, VCLK340_477,
2080         0x00, 0x00, 0x6c, 2048, 1536},/* 32 2048x1536x75Hz */
2081         {Mode16Bpp + SyncPN, RES2048x1536x85, VCLK375_847,
2082         0x00, 0x00, 0x6c, 2048, 1536},/* 33 2048x1536x85Hz */
2083         {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2084          SyncPP + SupportYPbPr750p, RES800x480x60, VCLK39_77,
2085          0x08, 0x00, 0x70, 800, 480},/* 34 800x480x60Hz */
2086         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x75, VCLK49_5,
2087         0x08, 0x00, 0x70, 800, 480},/* 35 800x480x75Hz */
2088         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES800x480x85, VCLK56_25,
2089         0x08, 0x00, 0x70, 800, 480},/* 36 800x480x85Hz */
2090         {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2091          SyncPP + SupportYPbPr750p, RES1024x576x60, VCLK65_315,
2092          0x09, 0x00, 0x71, 1024, 576},/* 37 1024x576x60Hz */
2093         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x75, VCLK78_75,
2094         0x09, 0x00, 0x71, 1024, 576},/* 38 1024x576x75Hz */
2095         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1024x576x85, VCLK94_5,
2096         0x09, 0x00, 0x71, 1024, 576},/* 39 1024x576x85Hz */
2097         {Mode32Bpp + SupportHiVision + SupportRAMDAC2 +
2098         SyncPP + SupportYPbPr750p, RES1280x720x60, VCLK108_2_315,
2099         0x0A, 0x00, 0x75, 1280, 720},/* 3a 1280x720x60Hz*/
2100         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x75, VCLK135_5,
2101         0x0A, 0x00, 0x75, 1280, 720},/* 3b 1280x720x75Hz */
2102         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1280x720x85, VCLK157_5,
2103         0x0A, 0x00, 0x75, 1280, 720},/* 3c 1280x720x85Hz */
2104         {Mode32Bpp + SupportTV + SyncNN, RES720x480x60, VCLK28_322,
2105         0x06, 0x00, 0x31,  720, 480},/* 3d 720x480x60Hz */
2106         {Mode32Bpp + SupportTV + SyncPP, RES720x576x56, VCLK36,
2107         0x06, 0x00, 0x32, 720, 576},/* 3e 720x576x56Hz */
2108         {Mode32Bpp + InterlaceMode + NoSupportLCD + SyncPP, RES856x480x79I,
2109         VCLK35_2, 0x00, 0x00, 0x00,  856, 480},/* 3f 856x480x79I */
2110         {Mode32Bpp + NoSupportLCD + SyncNN, RES856x480x60, VCLK35_2,
2111         0x00, 0x00, 0x00,  856, 480},/* 40 856x480x60Hz */
2112         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1280x768x60,
2113         VCLK79_411, 0x08, 0x48, 0x23, 1280, 768},/* 41 1280x768x60Hz */
2114         {Mode32Bpp + NoSupportHiVisionTV + SyncPP, RES1400x1050x60,
2115         VCLK122_61, 0x08, 0x69, 0x26, 1400, 1050},/* 42 1400x1050x60Hz */
2116         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x60, VCLK80_350,
2117         0x37, 0x00, 0x20, 1152, 864},/* 43 1152x864x60Hz */
2118         {Mode32Bpp + SupportRAMDAC2 + SyncPP, RES1152x864x75, VCLK107_385,
2119         0x37, 0x00, 0x20, 1152, 864},/* 44 1152x864x75Hz */
2120         {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x75,
2121         VCLK125_999, 0x3A, 0x88, 0x7b, 1280, 960},/* 45 1280x960x75Hz */
2122         {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x85,
2123         VCLK148_5, 0x0A, 0x88, 0x7b, 1280, 960},/* 46 1280x960x85Hz */
2124         {Mode32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP, RES1280x960x120,
2125         VCLK217_325, 0x3A, 0x88, 0x7b, 1280, 960},/* 47 1280x960x120Hz */
2126         {Mode32Bpp + SupportRAMDAC2 + SyncPN, RES1024x768x160, VCLK139_054,
2127         0x30, 0x47, 0x37, 1024, 768},/* 48 1024x768x160Hz */
2128 };
2129
2130 static unsigned char XGI330_ScreenOffset[] = {
2131         0x14, 0x19, 0x20, 0x28, 0x32, 0x40,
2132         0x50, 0x64, 0x78, 0x80, 0x2d, 0x35,
2133         0x57, 0x48
2134 };
2135
2136 static struct SiS_StResInfo_S XGI330_StResInfo[] = {
2137         {640, 400},
2138         {640, 350},
2139         {720, 400},
2140         {720, 350},
2141         {640, 480}
2142 };
2143
2144 static struct SiS_ModeResInfo_S XGI330_ModeResInfo[] = {
2145         { 320,  200, 8,  8},
2146         { 320,  240, 8,  8},
2147         { 320,  400, 8,  8},
2148         { 400,  300, 8,  8},
2149         { 512,  384, 8,  8},
2150         { 640,  400, 8, 16},
2151         { 640,  480, 8, 16},
2152         { 800,  600, 8, 16},
2153         {1024,  768, 8, 16},
2154         {1280, 1024, 8, 16},
2155         {1600, 1200, 8, 16},
2156         {1920, 1440, 8, 16},
2157         {2048, 1536, 8, 16},
2158         { 720,  480, 8, 16},
2159         { 720,  576, 8, 16},
2160         {1280,  960, 8, 16},
2161         { 800,  480, 8, 16},
2162         {1024,  576, 8, 16},
2163         {1280,  720, 8, 16},
2164         { 856,  480, 8, 16},
2165         {1280,  768, 8, 16},
2166         {1400, 1050, 8, 16},
2167         {1152,  864, 8, 16}
2168 };
2169
2170 static struct SiS_VCLKData XGI_VCLKData[] = {
2171         /* SR2B,SR2C,SR2D */
2172         {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2173         {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2174         {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2175         {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2176         {0x42, 0xE2,  40}, /* 04 (40.000MHz) */
2177         {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2178         {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2179         {0x52, 0xE2,  49}, /* 07 (49.500MHz) */
2180         {0x53, 0xE2,  50}, /* 08 (50.000MHz) */
2181         {0x74, 0x67,  52}, /* 09 (52.406MHz) */
2182         {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2183         {0x6C, 0xC3,  65}, /* 0B (65.000MHz) */
2184         {0x46, 0x44,  67}, /* 0C (67.765MHz) */
2185         {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2186         {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2187         {0x29, 0x61,  75}, /* 0F (75.000MHz) */
2188         {0x6E, 0x46,  76}, /* 10 (75.800MHz) */
2189         {0x2B, 0x61,  78}, /* 11 (78.750MHz) */
2190         {0x31, 0x42,  79}, /* 12 (79.411MHz) */
2191         {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2192         {0x46, 0x25,  84}, /* 14 (84.800MHz) */
2193         {0x78, 0x29,  86}, /* 15 (86.600MHz) */
2194         {0x62, 0x44,  94}, /* 16 (94.500MHz) */
2195         {0x2B, 0x41, 104}, /* 17 (104.998MHz) */
2196         {0x3A, 0x23, 105}, /* 18 (105.882MHz) */
2197         {0x70, 0x44, 108}, /* 19 (107.862MHz) */
2198         {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2199         {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2200         {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2201         {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2202         {0x54, 0x42, 135}, /* 1E (135.500MHz) */
2203         {0x9C, 0x22, 139}, /* 1F (139.275MHz) */
2204         {0x41, 0x22, 157}, /* 20 (157.500MHz) */
2205         {0x70, 0x24, 162}, /* 21 (161.793MHz) */
2206         {0x30, 0x21, 175}, /* 22 (175.000MHz) */
2207         {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2208         {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2209         {0x62, 0x06, 202}, /* 25 (202.500MHz) */
2210         {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2211         {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2212         {0x34, 0x02, 253}, /* 28 (252.699MHz) */
2213         {0x58, 0x04, 255}, /* 29 (254.817MHz) */
2214         {0x24, 0x01, 265}, /* 2A (265.728MHz) */
2215         {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2216         {0x70, 0x05, 270}, /* 2C (269.65567MHz) */
2217         {0x25, 0x01, 272}, /* 2D (272.04199MHz) */
2218         {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2219         {0x27, 0x01, 286}, /* 2F (286.359985MHz) */
2220         {0xB3, 0x04, 291}, /* 30 (291.13266MHz) */
2221         {0xBC, 0x05, 292}, /* 31 (291.766MHz) */
2222         {0xF6, 0x0A, 310}, /* 32 (309.789459MHz) */
2223         {0x95, 0x01, 315}, /* 33 (315.195MHz) */
2224         {0xF0, 0x09, 324}, /* 34 (323.586792MHz) */
2225         {0xFE, 0x0A, 331}, /* 35 (330.615631MHz) */
2226         {0xF3, 0x09, 332}, /* 36 (332.177612MHz) */
2227         {0x5E, 0x03, 340}, /* 37 (340.477MHz) */
2228         {0xE8, 0x07, 376}, /* 38 (375.847504MHz) */
2229         {0xDE, 0x06, 389}, /* 39 (388.631439MHz) */
2230         {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2231         {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2232         {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2233         {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2234         {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2235         {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2236         {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2237         {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2238         {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2239         {0x24, 0x46,  25}, /* 43 (25.175MHz) */
2240         {0x26, 0x64,  28}, /* 44 (28.322MHz) */
2241         {0x37, 0x64,  40}, /* 45 (40.000MHz) */
2242         {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2243         {0x37, 0x61, 100}, /* 47 (100.00MHz) */
2244         {0x78, 0x27, 108}, /* 48 (108.200MHz) */
2245         {0xBF, 0xC8,  35}, /* 49 (35.2MHz) */
2246         {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2247         {0x2C, 0x61,  80}, /* 4B (80.350Mhz) */
2248         {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2249         {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2250         {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2251         {0x28, 0x26, 322}, /* 4F (322.273MHz) */
2252         {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2253         {0x57, 0x24, 126}, /* 51 (125.999MHz) */
2254         {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2255         {0x42, 0x61, 120}, /* 53 (120.839MHz) */
2256         {0x62, 0x61, 178}, /* 54 (178.992MHz) */
2257         {0x59, 0x22, 217}, /* 55 (217.325MHz) */
2258         {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2259         {0x52, 0x63,  74}, /* 57 (74.25MHz) */
2260         {0xFF, 0x00,   0}  /* End mark */
2261 };
2262
2263 static struct SiS_VBVCLKData XGI_VBVCLKData[] = {
2264         {0x1B, 0xE1,  25}, /* 00 (25.175MHz) */
2265         {0x4E, 0xE4,  28}, /* 01 (28.322MHz) */
2266         {0x57, 0xE4,  31}, /* 02 (31.500MHz) */
2267         {0xC3, 0xC8,  36}, /* 03 (36.000MHz) */
2268         {0x42, 0x47,  40}, /* 04 (40.000MHz) */
2269         {0xFE, 0xCD,  43}, /* 05 (43.163MHz) */
2270         {0x5D, 0xC4,  44}, /* 06 (44.900MHz) */
2271         {0x52, 0x47,  49}, /* 07 (49.500MHz) */
2272         {0x53, 0x47,  50}, /* 08 (50.000MHz) */
2273         {0x74, 0x67,  52}, /* 09 (52.406MHz) */
2274         {0x6D, 0x66,  56}, /* 0A (56.250MHz) */
2275         {0x35, 0x62,  65}, /* 0B (65.000MHz) */
2276         {0x46, 0x44,  67}, /* 0C (67.765MHz) */
2277         {0xB1, 0x46,  68}, /* 0D (68.179MHz) */
2278         {0xD3, 0x4A,  72}, /* 0E (72.852MHz) */
2279         {0x29, 0x61,  75}, /* 0F (75.000MHz) */
2280         {0x6D, 0x46,  75}, /* 10 (75.800MHz) */
2281         {0x41, 0x43,  78}, /* 11 (78.750MHz) */
2282         {0x31, 0x42,  79}, /* 12 (79.411MHz) */
2283         {0xAB, 0x44,  83}, /* 13 (83.950MHz) */
2284         {0x46, 0x25,  84}, /* 14 (84.800MHz) */
2285         {0x78, 0x29,  86}, /* 15 (86.600MHz) */
2286         {0x62, 0x44,  94}, /* 16 (94.500MHz) */
2287         {0x2B, 0x22, 104}, /* 17 (104.998MHz) */
2288         {0x49, 0x24, 105}, /* 18 (105.882MHz) */
2289         {0xF8, 0x2F, 108}, /* 19 (108.279MHz) */
2290         {0x3C, 0x23, 109}, /* 1A (109.175MHz) */
2291         {0x5E, 0x43, 113}, /* 1B (113.309MHz) */
2292         {0xBC, 0x44, 116}, /* 1C (116.406MHz) */
2293         {0xE0, 0x46, 132}, /* 1D (132.258MHz) */
2294         {0xD4, 0x28, 135}, /* 1E (135.220MHz) */
2295         {0xEA, 0x2A, 139}, /* 1F (139.275MHz) */
2296         {0x41, 0x22, 157}, /* 20 (157.500MHz) */
2297         {0x70, 0x24, 162}, /* 21 (161.793MHz) */
2298         {0x30, 0x21, 175}, /* 22 (175.000MHz) */
2299         {0x4E, 0x22, 189}, /* 23 (188.520MHz) */
2300         {0xDE, 0x26, 194}, /* 24 (194.400MHz) */
2301         {0x70, 0x07, 202}, /* 25 (202.500MHz) */
2302         {0x3F, 0x03, 229}, /* 26 (229.500MHz) */
2303         {0xB8, 0x06, 234}, /* 27 (233.178MHz) */
2304         {0x34, 0x02, 253}, /* 28 (252.699997 MHz) */
2305         {0x58, 0x04, 255}, /* 29 (254.817MHz) */
2306         {0x24, 0x01, 265}, /* 2A (265.728MHz) */
2307         {0x9B, 0x02, 267}, /* 2B (266.952MHz) */
2308         {0x70, 0x05, 270}, /* 2C (269.65567 MHz) */
2309         {0x25, 0x01, 272}, /* 2D (272.041992 MHz) */
2310         {0x9C, 0x02, 277}, /* 2E (277.015MHz) */
2311         {0x27, 0x01, 286}, /* 2F (286.359985 MHz) */
2312         {0x3C, 0x02, 291}, /* 30 (291.132660 MHz) */
2313         {0xEF, 0x0A, 292}, /* 31 (291.766MHz) */
2314         {0xF6, 0x0A, 310}, /* 32 (309.789459 MHz) */
2315         {0x95, 0x01, 315}, /* 33 (315.195MHz) */
2316         {0xF0, 0x09, 324}, /* 34 (323.586792 MHz) */
2317         {0xFE, 0x0A, 331}, /* 35 (330.615631 MHz) */
2318         {0xF3, 0x09, 332}, /* 36 (332.177612 MHz) */
2319         {0xEA, 0x08, 340}, /* 37 (340.477MHz) */
2320         {0xE8, 0x07, 376}, /* 38 (375.847504 MHz) */
2321         {0xDE, 0x06, 389}, /* 39 (388.631439 MHz) */
2322         {0x52, 0x2A,  54}, /* 3A (54.000MHz) */
2323         {0x52, 0x6A,  27}, /* 3B (27.000MHz) */
2324         {0x62, 0x24,  70}, /* 3C (70.874991MHz) */
2325         {0x62, 0x64,  70}, /* 3D (70.1048912MHz) */
2326         {0xA8, 0x4C,  30}, /* 3E (30.1048912MHz) */
2327         {0x20, 0x26,  33}, /* 3F (33.7499957MHz) */
2328         {0x31, 0xc2,  39}, /* 40 (39.77MHz) */
2329         {0x11, 0x21,  30}, /* 41 (30MHz) }// NTSC 1024X768 */
2330         {0x2E, 0x48,  25}, /* 42 (25.175MHz) }// ScaleLCD */
2331         {0x24, 0x46,  25}, /* 43 (25.175MHz) */
2332         {0x26, 0x64,  28}, /* 44 (28.322MHz) */
2333         {0x37, 0x64,  40}, /* 45 (40.000MHz) */
2334         {0xA1, 0x42, 108}, /* 46 (95.000MHz) }// QVGA */
2335         {0x37, 0x61, 100}, /* 47 (100.00MHz) */
2336         {0x78, 0x27, 108}, /* 48 (108.200MHz) */
2337         {0xBF, 0xC8, 35 }, /* 49 (35.2MHz) */
2338         {0x66, 0x43, 123}, /* 4A (122.61Mhz) */
2339         {0x2C, 0x61, 80 }, /* 4B (80.350Mhz) */
2340         {0x3B, 0x61, 108}, /* 4C (107.385Mhz) */
2341         {0x69, 0x61, 191}, /* 4D (190.96MHz ) */
2342         {0x4F, 0x22, 192}, /* 4E (192.069MHz) */
2343         {0x28, 0x26, 322}, /* 4F (322.273MHz) */
2344         {0x5C, 0x6B,  27}, /* 50 (27.74HMz) */
2345         {0x57, 0x24, 126}, /* 51 (125.999MHz) */
2346         {0x5C, 0x42, 148}, /* 52 (148.5MHz) */
2347         {0x42, 0x61, 120}, /* 53 (120.839MHz) */
2348         {0x62, 0x61, 178}, /* 54 (178.992MHz) */
2349         {0x59, 0x22, 217}, /* 55 (217.325MHz) */
2350         {0x29, 0x01, 300}, /* 56 (299.505Mhz) */
2351         {0x52, 0x63,  74}, /* 57 (74.25MHz) */
2352         {0xFF, 0x00,   0}  /* End mark */
2353 };
2354
2355 #define XGI301TVDelay 0x22
2356 #define XGI301LCDDelay 0x12
2357
2358 static unsigned char TVAntiFlickList[] = {/* NTSCAntiFlicker */
2359         0x04, /* ; 0 Adaptive */
2360         0x00, /* ; 1 new anti-flicker ? */
2361
2362         0x04, /* ; 0 Adaptive */
2363         0x08, /* ; 1 new anti-flicker ? */
2364
2365         0x04, /* ; 0 ? */
2366         0x00  /* ; 1 new anti-flicker ? */
2367 };
2368
2369
2370 static unsigned char TVEdgeList[] = {
2371         0x00, /* ; 0 NTSC No Edge enhance */
2372         0x04, /* ; 1 NTSC Adaptive Edge enhance */
2373         0x00, /* ; 0 PAL No Edge enhance */
2374         0x04, /* ; 1 PAL Adaptive Edge enhance */
2375         0x00, /* ; 0 HiTV */
2376         0x00  /* ; 1 HiTV */
2377 };
2378
2379 static unsigned long TVPhaseList[] = {
2380         0x08BAED21, /* ; 0 NTSC phase */
2381         0x00E3052A, /* ; 1 PAL phase */
2382         0x9B2EE421, /* ; 2 PAL-M phase */
2383         0xBA3EF421, /* ; 3 PAL-N phase */
2384         0xA7A28B1E, /* ; 4 NTSC 1024x768 */
2385         0xE00A831E, /* ; 5 PAL-M 1024x768 */
2386         0x00000000, /* ; 6 reserved */
2387         0x00000000, /* ; 7 reserved */
2388         0xD67BF021, /* ; 8 NTSC phase */
2389         0xE986092A, /* ; 9 PAL phase */
2390         0xA4EFE621, /* ; A PAL-M phase */
2391         0x4694F621, /* ; B PAL-N phase */
2392         0x8BDE711C, /* ; C NTSC 1024x768 */
2393         0xE00A831E  /* ; D PAL-M 1024x768 */
2394 };
2395
2396 static unsigned char NTSCYFilter1[] = {
2397         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2398         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2399         0xEB, 0x04, 0x25, 0x18, /* 2 : 640x text mode */
2400         0xF1, 0x04, 0x1F, 0x18, /* 3 : 720x text mode */
2401         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2402         0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
2403         0xEB, 0x15, 0x25, 0xF6  /* 6 : 800x gra. mode */
2404 };
2405
2406 static unsigned char PALYFilter1[] = {
2407         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2408         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2409         0xF1, 0xF7, 0x1F, 0x32, /* 2 : 640x text mode */
2410         0xF3, 0x00, 0x1D, 0x20, /* 3 : 720x text mode */
2411         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2412         0xF1, 0xF7, 0x1F, 0x32, /* 5 : 640x gra. mode */
2413         0xFC, 0xFB, 0x14, 0x2A  /* 6 : 800x gra. mode */
2414 };
2415
2416 static unsigned char xgifb_palmn_yfilter1[] = {
2417         0x00, 0xF4, 0x10, 0x38, /* 0 : 320x text mode */
2418         0x00, 0xF4, 0x10, 0x38, /* 1 : 360x text mode */
2419         0xEB, 0x04, 0x10, 0x18, /* 2 : 640x text mode */
2420         0xF7, 0x06, 0x19, 0x14, /* 3 : 720x text mode */
2421         0x00, 0xF4, 0x10, 0x38, /* 4 : 320x gra. mode */
2422         0xEB, 0x04, 0x25, 0x18, /* 5 : 640x gra. mode */
2423         0xEB, 0x15, 0x25, 0xF6, /* 6 : 800x gra. mode */
2424         0xFF, 0xFF, 0xFF, 0xFF  /* End of Table */
2425 };
2426
2427 static unsigned char xgifb_yfilter2[] = {
2428         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 0 : 320x text mode */
2429         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 1 : 360x text mode */
2430         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 2 : 640x text mode */
2431         0x01, 0x02, 0xFE, 0xF7, 0x03, 0x27, 0x3C, /* 3 : 720x text mode */
2432         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 4 : 320x gra. mode */
2433         0xFF, 0x03, 0x02, 0xF6, 0xFC, 0x27, 0x46, /* 5 : 640x gra. mode */
2434         0x01, 0x01, 0xFC, 0xF8, 0x08, 0x26, 0x38, /* 6 : 800x gra. mode */
2435         0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x22, 0x28  /* 7 : 1024xgra. mode */
2436 };
2437
2438 static unsigned char XGI_NTSC1024AdjTime[] = {
2439         0xa7, 0x07, 0xf2, 0x6e, 0x17, 0x8b, 0x73, 0x53,
2440         0x13, 0x40, 0x34, 0xF4, 0x63, 0xBB, 0xCC, 0x7A,
2441         0x58, 0xe4, 0x73, 0xd0, 0x13
2442 };
2443
2444 static struct XGI301C_Tap4TimingStruct xgifb_tap4_timing[] = {
2445         {0, {
2446         0x00, 0x20, 0x00, 0x00, 0x7F, 0x20, 0x02, 0x7F, /* ; C0-C7 */
2447         0x7D, 0x20, 0x04, 0x7F, 0x7D, 0x1F, 0x06, 0x7E, /* ; C8-CF */
2448         0x7C, 0x1D, 0x09, 0x7E, 0x7C, 0x1B, 0x0B, 0x7E, /* ; D0-D7 */
2449         0x7C, 0x19, 0x0E, 0x7D, 0x7C, 0x17, 0x11, 0x7C, /* ; D8-DF */
2450         0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x11, 0x17, 0x7C, /* ; E0-E7 */
2451         0x7D, 0x0E, 0x19, 0x7C, 0x7E, 0x0B, 0x1B, 0x7C, /* ; EA-EF */
2452         0x7E, 0x09, 0x1D, 0x7C, 0x7F, 0x06, 0x1F, 0x7C, /* ; F0-F7 */
2453         0x7F, 0x04, 0x20, 0x7D, 0x00, 0x02, 0x20, 0x7E  /* ; F8-FF */
2454         }
2455         }
2456 };
2457
2458 static struct XGI301C_Tap4TimingStruct PALTap4Timing[] = {
2459         {600,   {
2460                 0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
2461                 0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
2462                 0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
2463                 0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
2464                 0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
2465                 0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
2466                 0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
2467                 0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04  /* ; F8-FF */
2468                 }
2469         },
2470         {768,   {
2471                 0x08, 0x12, 0x08, 0x7E, 0x07, 0x12, 0x09, 0x7E, /* ; C0-C7 */
2472                 0x06, 0x12, 0x0A, 0x7E, 0x05, 0x11, 0x0B, 0x7F, /* ; C8-CF */
2473                 0x04, 0x11, 0x0C, 0x7F, 0x03, 0x11, 0x0C, 0x00, /* ; D0-D7 */
2474                 0x03, 0x10, 0x0D, 0x00, 0x02, 0x0F, 0x0E, 0x01, /* ; D8-DF */
2475                 0x01, 0x0F, 0x0F, 0x01, 0x01, 0x0E, 0x0F, 0x02, /* ; E0-E7 */
2476                 0x00, 0x0D, 0x10, 0x03, 0x7F, 0x0C, 0x11, 0x04, /* ; EA-EF */
2477                 0x7F, 0x0C, 0x11, 0x04, 0x7F, 0x0B, 0x11, 0x05, /* ; F0-F7 */
2478                 0x7E, 0x0A, 0x12, 0x06, 0x7E, 0x09, 0x12, 0x07  /* ; F8-FF */
2479                 }
2480         },
2481         {0xFFFF, {
2482                  0x04, 0x1A, 0x04, 0x7E, 0x02, 0x1B, 0x05, 0x7E, /* ; C0-C7 */
2483                  0x01, 0x1A, 0x07, 0x7E, 0x00, 0x1A, 0x09, 0x7D, /* ; C8-CF */
2484                  0x7F, 0x19, 0x0B, 0x7D, 0x7E, 0x18, 0x0D, 0x7D, /* ; D0-D7 */
2485                  0x7D, 0x17, 0x10, 0x7C, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
2486                  0x7C, 0x14, 0x14, 0x7C, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
2487                  0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0D, 0x18, 0x7F, /* ; EA-EF */
2488                  0x7D, 0x0B, 0x19, 0x7F, 0x7D, 0x09, 0x1A, 0x00, /* ; F0-F7 */
2489                  0x7D, 0x07, 0x1A, 0x02, 0x7E, 0x05, 0x1B, 0x02  /* ; F8-FF */
2490                  }
2491         }
2492 };
2493
2494 static struct XGI301C_Tap4TimingStruct xgifb_ntsc_525_tap4_timing[] = {
2495         {480,   {
2496                 0x04, 0x1A, 0x04, 0x7E, 0x03, 0x1A, 0x06, 0x7D, /* ; C0-C7 */
2497                 0x01, 0x1A, 0x08, 0x7D, 0x00, 0x19, 0x0A, 0x7D, /* ; C8-CF */
2498                 0x7F, 0x19, 0x0C, 0x7C, 0x7E, 0x18, 0x0E, 0x7C, /* ; D0-D7 */
2499                 0x7E, 0x17, 0x10, 0x7B, 0x7D, 0x15, 0x12, 0x7C, /* ; D8-DF */
2500                 0x7D, 0x13, 0x13, 0x7D, 0x7C, 0x12, 0x15, 0x7D, /* ; E0-E7 */
2501                 0x7C, 0x10, 0x17, 0x7D, 0x7C, 0x0E, 0x18, 0x7E, /* ; EA-EF */
2502                 0x7D, 0x0C, 0x19, 0x7E, 0x7D, 0x0A, 0x19, 0x00, /* ; F0-F7 */
2503                 0x7D, 0x08, 0x1A, 0x01, 0x7E, 0x06, 0x1A, 0x02  /* ; F8-FF */
2504                 }
2505         },
2506         {600,   {
2507                 0x07, 0x14, 0x07, 0x7E, 0x06, 0x14, 0x09, 0x7D, /* ; C0-C7 */
2508                 0x05, 0x14, 0x0A, 0x7D, 0x04, 0x13, 0x0B, 0x7E, /* ; C8-CF */
2509                 0x03, 0x13, 0x0C, 0x7E, 0x02, 0x12, 0x0D, 0x7F, /* ; D0-D7 */
2510                 0x01, 0x12, 0x0E, 0x7F, 0x01, 0x11, 0x0F, 0x7F, /* ; D8-DF */
2511                 0x01, 0x10, 0x10, 0x00, 0x7F, 0x0F, 0x11, 0x01, /* ; E0-E7 */
2512                 0x7F, 0x0E, 0x12, 0x01, 0x7E, 0x0D, 0x12, 0x03, /* ; EA-EF */
2513                 0x7E, 0x0C, 0x13, 0x03, 0x7E, 0x0B, 0x13, 0x04, /* ; F0-F7 */
2514                 0x7E, 0x0A, 0x14, 0x04, 0x7D, 0x09, 0x14, 0x06  /* ; F8-FF */
2515                 }
2516         },
2517         {0xFFFF, {
2518                  0x09, 0x0F, 0x09, 0x7F, 0x08, 0x0F, 0x09, 0x00, /* ; C0-C7 */
2519                  0x07, 0x0F, 0x0A, 0x00, 0x06, 0x0F, 0x0A, 0x01, /* ; C8-CF */
2520                  0x06, 0x0E, 0x0B, 0x01, 0x05, 0x0E, 0x0B, 0x02, /* ; D0-D7 */
2521                  0x04, 0x0E, 0x0C, 0x02, 0x04, 0x0D, 0x0C, 0x03, /* ; D8-DF */
2522                  0x03, 0x0D, 0x0D, 0x03, 0x02, 0x0C, 0x0D, 0x05, /* ; E0-E7 */
2523                  0x02, 0x0C, 0x0E, 0x04, 0x01, 0x0B, 0x0E, 0x06, /* ; EA-EF */
2524                  0x01, 0x0B, 0x0E, 0x06, 0x00, 0x0A, 0x0F, 0x07, /* ; F0-F7 */
2525                  0x00, 0x0A, 0x0F, 0x07, 0x00, 0x09, 0x0F, 0x08  /* ; F8-FF */
2526                  }
2527         }
2528 };
2529
2530 static struct XGI301C_Tap4TimingStruct YPbPr750pTap4Timing[] = {
2531         {0xFFFF, {
2532                  0x05, 0x19, 0x05, 0x7D, 0x03, 0x19, 0x06, 0x7E, /* ; C0-C7 */
2533                  0x02, 0x19, 0x08, 0x7D, 0x01, 0x18, 0x0A, 0x7D, /* ; C8-CF */
2534                  0x00, 0x18, 0x0C, 0x7C, 0x7F, 0x17, 0x0E, 0x7C, /* ; D0-D7 */
2535                  0x7E, 0x16, 0x0F, 0x7D, 0x7E, 0x14, 0x11, 0x7D, /* ; D8-DF */
2536                  0x7D, 0x13, 0x13, 0x7D, 0x7D, 0x11, 0x14, 0x7E, /* ; E0-E7 */
2537                  0x7D, 0x0F, 0x16, 0x7E, 0x7D, 0x0E, 0x17, 0x7E, /* ; EA-EF */
2538                  0x7D, 0x0C, 0x18, 0x7F, 0x7D, 0x0A, 0x18, 0x01, /* ; F0-F7 */
2539                  0x7D, 0x08, 0x19, 0x02, 0x7D, 0x06, 0x19, 0x04 /* F8-FF */
2540                  }
2541         }
2542 };
2543 #endif