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