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