Merge branches 'irq-core-for-linus' and 'core-locking-for-linus' of git://git.kernel...
[pandora-kernel.git] / drivers / staging / xgifb / vb_table.h
1 #define  Tap4
2
3
4 static struct XGI_MCLKDataStruct XGI330New_MCLKData[] =
5 {
6  { 0x5c,0x23,0x01,166},
7  { 0x5c,0x23,0x01,166},
8  { 0x7C,0x08,0x80,200},
9  { 0x79,0x06,0x80,250},
10  { 0x29,0x01,0x81,300},
11  { 0x29,0x01,0x81,300},
12  { 0x29,0x01,0x81,300},
13  { 0x29,0x01,0x81,300}
14 };
15 //yilin modify for xgi20
16 static struct XGI_MCLKDataStruct XGI340New_MCLKData[] =
17 {
18  { 0x16,0x01,0x01,166},
19  { 0x19,0x02,0x01,124},
20  { 0x7C,0x08,0x01,200},
21  { 0x79,0x06,0x01,250},
22  { 0x29,0x01,0x81,301},
23  { 0x5c,0x23,0x01,166},
24  { 0x5c,0x23,0x01,166},
25  { 0x5c,0x23,0x01,166}
26 };
27
28 static struct XGI_MCLKDataStruct XGI27New_MCLKData[] =
29 {
30  { 0x5c,0x23,0x01,166},
31  { 0x19,0x02,0x01,124},
32  { 0x7C,0x08,0x80,200},
33  { 0x79,0x06,0x80,250},
34  { 0x29,0x01,0x81,300},
35  { 0x5c,0x23,0x01,166},
36  { 0x5c,0x23,0x01,166},
37  { 0x5c,0x23,0x01,166}
38 };
39
40 static struct XGI_ECLKDataStruct XGI330_ECLKData[] =
41 {
42  { 0x7c,0x08,0x01,200},
43  { 0x7c,0x08,0x01,200},
44  { 0x7C,0x08,0x80,200},
45  { 0x79,0x06,0x80,250},
46  { 0x29,0x01,0x81,300},
47  { 0x29,0x01,0x81,300},
48  { 0x29,0x01,0x81,300},
49  { 0x29,0x01,0x81,300}
50 };
51 //yilin modify for xgi20
52 static struct XGI_ECLKDataStruct XGI340_ECLKData[] =
53 {
54  { 0x5c,0x23,0x01,166},
55  { 0x55,0x84,0x01,123},
56  { 0x7C,0x08,0x01,200},
57  { 0x79,0x06,0x01,250},
58  { 0x29,0x01,0x81,301},
59  { 0x5c,0x23,0x01,166},
60  { 0x5c,0x23,0x01,166},
61  { 0x5c,0x23,0x01,166}
62 };
63
64
65
66 static unsigned char XGI340_SR13[4][8] = {
67 {0x35,0x45,0xb1,0x00,0x00,0x00,0x00,0x00},/* SR13 */
68 {0x41,0x51,0x5c,0x00,0x00,0x00,0x00,0x00},/* SR14 */
69 {0x31,0x42,0x42,0x00,0x00,0x00,0x00,0x00},/* SR18 */
70 {0x03,0x03,0x03,0x00,0x00,0x00,0x00,0x00}/* SR1B */
71 };
72
73 static unsigned char XGI340_cr41[24][8] =
74 {{0x20,0x50,0x60,0x00,0x00,0x00,0x00,0x00},/* 0 CR41 */
75 {0xc4,0x40,0x84,0x00,0x00,0x00,0x00,0x00},/* 1 CR8A */
76 {0xc4,0x40,0x84,0x00,0x00,0x00,0x00,0x00},/* 2 CR8B */
77 {0xb5,0xa4,0xa4,0x00,0x00,0x00,0x00,0x00},
78 {0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x00},
79 {0x90,0x90,0x24,0x00,0x00,0x00,0x00,0x00},/* 5 CR68 */
80 {0x77,0x77,0x44,0x00,0x00,0x00,0x00,0x00},/* 6 CR69 */
81 {0x77,0x77,0x44,0x00,0x00,0x00,0x00,0x00},/* 7 CR6A */
82 {0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00},/* 8 CR6D */
83 {0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00},/* 9 CR80 */
84 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/* 10 CR81 */
85 {0x88,0xa8,0x48,0x00,0x00,0x00,0x00,0x00},/* 11 CR82 */
86 {0x44,0x44,0x77,0x00,0x00,0x00,0x00,0x00},/* 12 CR85 */
87 {0x48,0x48,0x88,0x00,0x00,0x00,0x00,0x00},/* 13 CR86 */
88 {0x54,0x54,0x44,0x00,0x00,0x00,0x00,0x00},/* 14 CR90 */
89 {0x54,0x54,0x44,0x00,0x00,0x00,0x00,0x00},/* 15 CR91 */
90 {0x0a,0x0a,0x07,0x00,0x00,0x00,0x00,0x00},/* 16 CR92 */
91 {0x44,0x44,0x44,0x00,0x00,0x00,0x00,0x00},/* 17 CR93 */
92 {0x10,0x10,0x0A,0x00,0x00,0x00,0x00,0x00},/* 18 CR94 */
93 {0x11,0x11,0x0a,0x00,0x00,0x00,0x00,0x00},/* 19 CR95 */
94 {0x05,0x05,0x05,0x00,0x00,0x00,0x00,0x00},/* 20 CR96 */
95 {0xf0,0xf0,0xf0,0x00,0x00,0x00,0x00,0x00},/* 21 CRC3 */
96 {0x05,0x00,0x02,0x00,0x00,0x00,0x00,0x00},/* 22 CRC4 */
97 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}/* 23 CRC5 */
98 };
99
100
101 static unsigned char XGI27_cr41[24][8] =
102 {
103 {0x20,0x40,0x60,0x00,0x00,0x00,0x00,0x00},/* 0 CR41 */
104 {0xC4,0x40,0x84,0x00,0x00,0x00,0x00,0x00},/* 1 CR8A */
105 {0xC4,0x40,0x84,0x00,0x00,0x00,0x00,0x00},/* 2 CR8B */
106 {0xB5,0x13,0xa4,0x00,0x00,0x00,0x00,0x00},/* 3 CR40[7],CR99[2:0],CR45[3:0]*/
107 {0xf0,0xf5,0xf0,0x00,0x00,0x00,0x00,0x00},/* 4 CR59 */
108 {0x90,0x90,0x24,0x00,0x00,0x00,0x00,0x00},/* 5 CR68 */
109 {0x77,0x67,0x44,0x00,0x00,0x00,0x00,0x00},/* 6 CR69 */
110 {0x77,0x77,0x44,0x00,0x00,0x00,0x00,0x00},/* 7 CR6A */
111 {0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00},/* 8 CR6D */
112 {0x55,0x55,0x55,0x00,0x00,0x00,0x00,0x00},/* 9 CR80 */
113 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/* 10 CR81 */
114 {0x88,0xcc,0x48,0x00,0x00,0x00,0x00,0x00},/* 11 CR82 */
115 {0x44,0x88,0x77,0x00,0x00,0x00,0x00,0x00},/* 12 CR85 */
116 {0x48,0x88,0x88,0x00,0x00,0x00,0x00,0x00},/* 13 CR86 */
117 {0x54,0x32,0x44,0x00,0x00,0x00,0x00,0x00},/* 14 CR90 */
118 {0x54,0x33,0x44,0x00,0x00,0x00,0x00,0x00},/* 15 CR91 */
119 {0x0a,0x07,0x07,0x00,0x00,0x00,0x00,0x00},/* 16 CR92 */
120 {0x44,0x63,0x44,0x00,0x00,0x00,0x00,0x00},/* 17 CR93 */
121 {0x10,0x14,0x0A,0x00,0x00,0x00,0x00,0x00},/* 18 CR94 */
122 {0x11,0x0B,0x0C,0x00,0x00,0x00,0x00,0x00},/* 19 CR95 */
123 {0x05,0x22,0x05,0x00,0x00,0x00,0x00,0x00},/* 20 CR96 */
124 {0xf0,0xf0,0x00,0x00,0x00,0x00,0x00,0x00},/* 21 CRC3 */
125 {0x05,0x00,0x02,0x00,0x00,0x00,0x00,0x00},/* 22 CRC4 */
126 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}/* 23 CRC5 */
127 };
128
129 static unsigned char XGI340_CR6B[8][4] = {
130 {0xaa,0xaa,0xaa,0xaa},
131 {0xaa,0xaa,0xaa,0xaa},
132 {0xaa,0xaa,0xaa,0xaa},
133 {0x00,0x00,0x00,0x00},
134 {0x00,0x00,0x00,0x00},
135 {0x00,0x00,0x00,0x00},
136 {0x00,0x00,0x00,0x00},
137 {0x00,0x00,0x00,0x00}
138 };
139
140 static unsigned char XGI340_CR6E[8][4] = {
141 {0x00,0x00,0x00,0x00},
142 {0x00,0x00,0x00,0x00},
143 {0x00,0x00,0x00,0x00},
144 {0x00,0x00,0x00,0x00},
145 {0x00,0x00,0x00,0x00},
146 {0x00,0x00,0x00,0x00},
147 {0x00,0x00,0x00,0x00},
148 {0x00,0x00,0x00,0x00}
149 };
150
151 static unsigned char XGI340_CR6F[8][32] = {
152 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
153 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
154 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
155 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
156 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
157 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
158 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
159 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
160 };
161
162 static unsigned char XGI340_CR89[8][2] = {
163 {0x00,0x00},
164 {0x00,0x00},
165 {0x00,0x00},
166 {0x00,0x00},
167 {0x00,0x00},
168 {0x00,0x00},
169 {0x00,0x00},
170 {0x00,0x00}
171 };
172                          /* CR47,CR48,CR49,CR4A,CR4B,CR4C,CR70,CR71,CR74,CR75,CR76,CR77 */
173 static unsigned char XGI340_AGPReg[12] = {
174                                    0x28, 0x23, 0x00, 0x20, 0x00, 0x20, 0x00,
175                                    0x05, 0xd0, 0x10, 0x10, 0x00};
176
177 static unsigned char XGI340_SR16[4] = {0x03, 0x83, 0x03, 0x83};
178
179 #if 0
180 static unsigned char XGI330_SR15_1[8][8] = {
181 {0x0,0x0,0x00,0x00,0x20,0x20,0x00,0x00},
182 {0x5,0x15,0x15,0x15,0x15,0x15,0x00,0x00},
183 {0xba,0xba,0xba,0xba,0xBA,0xBA,0x00,0x00},
184 {0x55,0x57,0x57,0xAB,0xAB,0xAB,0x00,0x00},
185 {0x60,0x34,0x34,0x34,0x34,0x34,0x00,0x00},
186 {0x0,0x80,0x80,0x80,0x83,0x83,0x00,0x00},
187 {0x50,0x50,0x50,0x3C,0x3C,0x3C,0x00,0x00},
188 {0x0,0xa5,0xfb,0xf6,0xF6,0xF6,0x00,0x00}
189 };
190
191 static unsigned char XGI330_cr40_1[15][8] = {
192 {0x66,0x40,0x40,0x28,0x24,0x24,0x00,0x00},
193 {0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
194 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
195 {0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00},
196 {0x00,0xf0,0xf0,0xf0,0xF0,0xF0,0x00,0x00},
197 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
198 {0x10,0x10,0x10,0x10,0x20,0x20,0x00,0x00},
199 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
200 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
201 {0x88,0x88,0x88,0xAA,0xAC,0xAC,0x00,0x00},
202 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
203 {0x00,0x00,0x00,0x00,0x77,0x77,0x00,0x00},
204 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
205 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
206 {0x00,0xA2,0x00,0x00,0xA2,0xA2,0x00,0x00},
207 };
208 #endif
209
210 static unsigned char XGI330_sr25[] = {0x00, 0x0};
211 static unsigned char XGI330_sr31 = 0xc0;
212 static unsigned char XGI330_sr32 = 0x11;
213 static unsigned char XGI330_SR33 = 0x00;
214 static unsigned char XG40_CRCF = 0x13;
215 static unsigned char XG40_DRAMTypeDefinition = 0xFF ;
216
217 static struct XGI_StStruct XGI330_SModeIDTable[] =
218 {
219  {0x01,0x9208,0x01,0x00,0x10,0x00,0x00,0x01,0x00},
220  {0x01,0x1210,0x14,0x01,0x00,0x01,0x00,0x01,0x00},
221  {0x01,0x1010,0x17,0x02,0x11,0x00,0x00,0x01,0x01},
222  {0x03,0x8208,0x03,0x00,0x14,0x00,0x00,0x01,0x02},
223  {0x03,0x0210,0x16,0x01,0x04,0x01,0x00,0x01,0x02},
224  {0x03,0x0010,0x18,0x02,0x15,0x00,0x00,0x01,0x03},
225  {0x05,0x9209,0x05,0x00,0x10,0x00,0x00,0x00,0x04},
226  {0x06,0x8209,0x06,0x00,0x14,0x00,0x00,0x00,0x05},
227  {0x07,0x0000,0x07,0x03,0x05,0x03,0x00,0x01,0x03},
228  {0x07,0x0000,0x19,0x02,0x15,0x02,0x00,0x01,0x03},
229  {0x0d,0x920a,0x0d,0x00,0x10,0x00,0x00,0x00,0x04},
230  {0x0e,0x820a,0x0e,0x00,0x14,0x00,0x00,0x00,0x05},
231  {0x0f,0x0202,0x11,0x01,0x04,0x01,0x00,0x00,0x05},
232  {0x10,0x0212,0x12,0x01,0x04,0x01,0x00,0x00,0x05},
233  {0x11,0x0212,0x1a,0x04,0x24,0x04,0x00,0x00,0x05},
234  {0x12,0x0212,0x1b,0x04,0x24,0x04,0x00,0x00,0x05},
235  {0x13,0x021b,0x1c,0x00,0x14,0x00,0x00,0x00,0x04},
236  {0x12,0x0010,0x18,0x02,0x24,0x02,0x00,0x00,0x05},/* St_CRT2CRTC2 not sure */
237  {0x12,0x0210,0x18,0x01,0x24,0x01,0x00,0x00,0x05},/* St_CRT2CRTC2 not sure */
238  {0xff,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
239 };
240
241
242 static struct XGI_ExtStruct  XGI330_EModeIDTable[] =
243 {
244  {0x6a,0x2212,0x0407,0x3a81,0x0102,0x08,0x07,0x00,0x00,0x07,0x0e},
245  {0x2e,0x0a1b,0x0306,0x3a57,0x0101,0x08,0x06,0x00,0x00,0x05,0x06},
246  {0x2f,0x0a1b,0x0305,0x3a50,0x0100,0x08,0x05,0x00,0x00,0x05,0x05},
247  {0x30,0x2a1b,0x0407,0x3a81,0x0103,0x08,0x07,0x00,0x00,0x07,0x0e},
248  {0x31,0x0a1b,0x030d,0x3b85,0x0000,0x08,0x0d,0x00,0x00,0x06,0x3d},
249  {0x32,0x0a1b,0x0a0e,0x3b8c,0x0000,0x08,0x0e,0x00,0x00,0x06,0x3e},
250  {0x33,0x0a1d,0x0a0d,0x3b85,0x0000,0x08,0x0d,0x00,0x00,0x06,0x3d},
251  {0x34,0x2a1d,0x0a0e,0x3b8c,0x0000,0x08,0x0e,0x00,0x00,0x06,0x3e},
252  {0x35,0x0a1f,0x0a0d,0x3b85,0x0000,0x08,0x0d,0x00,0x00,0x06,0x3d},
253  {0x36,0x2a1f,0x0a0e,0x3b8c,0x0000,0x08,0x0e,0x00,0x00,0x06,0x3e},
254  {0x37,0x0212,0x0508,0x3aab,0x0104,0x08,0x08,0x00,0x00,0x00,0x16},
255  {0x38,0x0a1b,0x0508,0x3aab,0x0105,0x08,0x08,0x00,0x00,0x00,0x16},
256  {0x3a,0x0e3b,0x0609,0x3adc,0x0107,0x08,0x09,0x00,0x00,0x00,0x1e},
257  {0x3c,0x0e3b,0x070a,0x3af2,0x0130,0x08,0x0a,0x00,0x00,0x00,0x22},      /* mode 1600x1200 add CRT2MODE [2003/10/07] */
258  {0x3d,0x0e7d,0x070a,0x3af2,0x0131,0x08,0x0a,0x00,0x00,0x00,0x22},      /* mode 1600x1200 add CRT2MODE */
259  {0x40,0x9a1c,0x0000,0x3a34,0x010d,0x08,0x00,0x00,0x00,0x04,0x00},
260  {0x41,0x9a1d,0x0000,0x3a34,0x010e,0x08,0x00,0x00,0x00,0x04,0x00},      /* ModeIdIndex = 0x10 */
261  {0x43,0x0a1c,0x0306,0x3a57,0x0110,0x08,0x06,0x00,0x00,0x05,0x06},
262  {0x44,0x0a1d,0x0306,0x3a57,0x0111,0x08,0x06,0x00,0x00,0x05,0x06},
263  {0x46,0x2a1c,0x0407,0x3a81,0x0113,0x08,0x07,0x00,0x00,0x07,0x0e},
264  {0x47,0x2a1d,0x0407,0x3a81,0x0114,0x08,0x07,0x00,0x00,0x07,0x0e},
265  {0x49,0x0a3c,0x0508,0x3aab,0x0116,0x08,0x08,0x00,0x00,0x00,0x16},
266  {0x4a,0x0a3d,0x0508,0x3aab,0x0117,0x08,0x08,0x00,0x00,0x00,0x16},
267  {0x4c,0x0e7c,0x0609,0x3adc,0x0119,0x08,0x09,0x00,0x00,0x00,0x1e},
268  {0x4d,0x0e7d,0x0609,0x3adc,0x011a,0x08,0x09,0x00,0x00,0x00,0x1e},
269  {0x50,0x9a1b,0x0001,0x3a3b,0x0132,0x08,0x01,0x00,0x00,0x04,0x02},
270  {0x51,0xba1b,0x0103,0x3a42,0x0133,0x08,0x03,0x00,0x00,0x07,0x03},
271  {0x52,0x9a1b,0x0204,0x3a49,0x0134,0x08,0x04,0x00,0x00,0x00,0x04},
272  {0x56,0x9a1d,0x0001,0x3a3b,0x0135,0x08,0x01,0x00,0x00,0x04,0x02},
273  {0x57,0xba1d,0x0103,0x3a42,0x0136,0x08,0x03,0x00,0x00,0x07,0x03},
274  {0x58,0x9a1d,0x0204,0x3a49,0x0137,0x08,0x04,0x00,0x00,0x00,0x04},
275  {0x59,0x9a1b,0x0000,0x3a34,0x0138,0x08,0x00,0x00,0x00,0x04,0x00},
276  {0x5A,0x021b,0x0014,0x3b83,0x0138,0x08,0x01,0x00,0x00,0x04,0x3f},      /* ModeIdIndex = 0x20 */
277  {0x5B,0x0a1d,0x0014,0x3b83,0x0135,0x08,0x01,0x00,0x00,0x04,0x3f},
278  {0x5d,0x0a1d,0x0305,0x3a50,0x0139,0x08,0x05,0x00,0x00,0x07,0x05},
279  {0x62,0x0a3f,0x0306,0x3a57,0x013a,0x08,0x06,0x00,0x00,0x05,0x06},
280  {0x63,0x2a3f,0x0407,0x3a81,0x013b,0x08,0x07,0x00,0x00,0x07,0x0e},
281  {0x64,0x0a7f,0x0508,0x3aab,0x013c,0x08,0x08,0x00,0x00,0x00,0x16},
282  {0x65,0x0eff,0x0609,0x3adc,0x013d,0x08,0x09,0x00,0x00,0x00,0x1e},
283  {0x66,0x0eff,0x070a,0x3af2,0x013e,0x08,0x0a,0x00,0x00,0x00,0x22},      /* mode 1600x1200 add CRT2MODE */
284  {0x68,0x067b,0x080b,0x3b17,0x013f,0x08,0x0b,0x00,0x00,0x00,0x29},
285  {0x69,0x06fd,0x080b,0x3b17,0x0140,0x08,0x0b,0x00,0x00,0x00,0x29},
286  {0x6b,0x07ff,0x080b,0x3b17,0x0141,0x10,0x0b,0x00,0x00,0x00,0x29},
287  {0x6c,0x067b,0x090c,0x3b37,0x0000,0x08,0x0c,0x00,0x00,0x00,0x2f},
288  {0x6d,0x06fd,0x090c,0x3b37,0x0000,0x10,0x0c,0x00,0x00,0x00,0x2f},
289  {0x6e,0x07ff,0x090c,0x3b37,0x0000,0x10,0x0c,0x00,0x00,0x00,0x2f},
290  {0x70,0x2a1b,0x0410,0x3b52,0x0000,0x08,0x10,0x00,0x00,0x07,0x34},
291  {0x71,0x0a1b,0x0511,0x3b63,0x0000,0x08,0x11,0x00,0x00,0x00,0x37},
292  {0x74,0x0a1d,0x0511,0x3b63,0x0000,0x08,0x11,0x00,0x00,0x00,0x37},      /* ModeIdIndex = 0x30 */
293  {0x75,0x0a3d,0x0612,0x3b74,0x0000,0x08,0x12,0x00,0x00,0x00,0x3a},
294  {0x76,0x2a1f,0x0410,0x3b52,0x0000,0x08,0x10,0x00,0x00,0x07,0x34},
295  {0x77,0x0a1f,0x0511,0x3b63,0x0000,0x08,0x11,0x00,0x00,0x00,0x37},
296  {0x78,0x0a3f,0x0612,0x3b74,0x0000,0x08,0x12,0x00,0x00,0x00,0x3a},
297  {0x79,0x0a3b,0x0612,0x3b74,0x0000,0x08,0x12,0x00,0x00,0x00,0x3a},
298  {0x7a,0x2a1d,0x0410,0x3b52,0x0000,0x08,0x10,0x00,0x00,0x07,0x34},
299  {0x7b,0x0e3b,0x060f,0x3ad0,0x0000,0x08,0x0f,0x00,0x00,0x00,0x1d},
300  {0x7c,0x0e7d,0x060f,0x3ad0,0x0000,0x08,0x0f,0x00,0x00,0x00,0x1d},
301  {0x7d,0x0eff,0x060f,0x3ad0,0x0000,0x08,0x0f,0x00,0x00,0x00,0x1d},
302  {0x20,0x0e3b,0x0D16,0x49e0,0x0000,0x08,0x16,0x00,0x00,0x00,0x43},
303  {0x21,0x0e7d,0x0D16,0x49e0,0x0000,0x08,0x16,0x00,0x00,0x00,0x43},
304  {0x22,0x0eff,0x0D16,0x49e0,0x0000,0x08,0x16,0x00,0x00,0x00,0x43},
305  {0x23,0x0e3b,0x0614,0x49d5,0x0000,0x08,0x14,0x00,0x00,0x00,0x41},
306  {0x24,0x0e7d,0x0614,0x49d5,0x0000,0x08,0x14,0x00,0x00,0x00,0x41},
307  {0x25,0x0eff,0x0614,0x49d5,0x0000,0x08,0x14,0x00,0x00,0x00,0x41},
308  {0x26,0x063b,0x0c15,0x49dc,0x0000,0x08,0x15,0x00,0x00,0x00,0x42},      /* ModeIdIndex = 0x40 */
309  {0x27,0x067d,0x0c15,0x49dc,0x0000,0x08,0x15,0x00,0x00,0x00,0x42},
310  {0x28,0x06ff,0x0c15,0x49dc,0x0000,0x08,0x15,0x00,0x00,0x00,0x42},
311  {0xff,0x0000,0x0000,0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00}
312 };
313
314 static struct XGI_StandTableStruct XGI330_StandTable[] =
315 {
316 /* MD_0_200 */
317  {
318   0x28,0x18,0x08,0x0800,
319   {0x09,0x03,0x00,0x02},
320   0x63,
321   {0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f,
322    0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00,
323    0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3,
324    0xff},
325   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
326    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
327    0x08,0x00,0x0f,0x00},
328   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
329    0xff}
330  },
331 /* MD_1_200 */
332  {
333   0x28,0x18,0x08,0x0800,
334   {0x09,0x03,0x00,0x02},
335   0x63,
336   {0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f,
337    0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00,
338    0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3,
339    0xff},
340   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
341    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
342    0x08,0x00,0x0f,0x00},
343   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
344    0xff}
345  },
346 /* MD_2_200 */
347  {
348   0x50,0x18,0x08,0x1000,
349   {0x01,0x03,0x00,0x02},
350   0x63,
351   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
352    0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00,
353    0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3,
354    0xff},
355   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
356    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
357    0x08,0x00,0x0f,0x00},
358   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
359    0xff}
360  },
361 /* MD_3_200 */
362  {
363   0x50,0x18,0x08,0x1000,
364   {0x01,0x03,0x00,0x02},
365   0x63,
366   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
367    0x00,0xc7,0x06,0x07,0x00,0x00,0x00,0x00,
368    0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3,
369    0xff},
370   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
371    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
372    0x08,0x00,0x0f,0x00},
373   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
374    0xff}
375  },
376 /* MD_4 */
377  {
378   0x28,0x18,0x08,0x4000,
379   {0x09,0x03,0x00,0x02},
380   0x63,
381   {0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f,
382    0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,
383    0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xa2,
384    0xff},
385   {0x00,0x13,0x15,0x17,0x02,0x04,0x06,0x07,
386    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
387    0x01,0x00,0x03,0x00},
388   {0x00,0x00,0x00,0x00,0x00,0x30,0x0f,0x00,
389    0xff}
390  },
391 /* MD_5 */
392  {
393   0x28,0x18,0x08,0x4000,
394   {0x09,0x03,0x00,0x02},
395   0x63,
396   {0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f,
397    0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,
398    0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xa2,
399    0xff},
400   {0x00,0x13,0x15,0x17,0x02,0x04,0x06,0x07,
401    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
402    0x01,0x00,0x03,0x00},
403   {0x00,0x00,0x00,0x00,0x00,0x30,0x0f,0x00,
404    0xff}
405  },
406 /* MD_6 */
407  {
408   0x50,0x18,0x08,0x4000,
409   {0x01,0x01,0x00,0x06},
410   0x63,
411   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
412    0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,
413    0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xc2,
414    0xff},
415   {0x00,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
416    0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
417    0x01,0x00,0x01,0x00},
418   {0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x00,
419    0xff}
420  },
421 /* MD_7 */
422  {
423   0x50,0x18,0x0e,0x1000,
424   {0x00,0x03,0x00,0x03},
425   0xa6,
426   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
427    0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00,
428    0x83,0x85,0x5d,0x28,0x0d,0x63,0xba,0xa3,
429    0xff},
430   {0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
431    0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
432    0x0e,0x00,0x0f,0x08},
433   {0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x00,
434    0xff}
435  },
436 /* MDA_DAC */
437  {
438   0x00,0x00,0x00,0x0000,
439   {0x00,0x00,0x00,0x15},
440   0x15,
441   {0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
442    0x15,0x15,0x15,0x15,0x15,0x15,0x3f,0x3f,
443    0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x00,0x00,
444    0x00},
445   {0x00,0x00,0x00,0x00,0x00,0x15,0x15,0x15,
446    0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
447    0x15,0x15,0x15,0x15},
448   {0x15,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
449    0x3f}
450  },
451 /* CGA_DAC */
452  {
453   0x00,0x10,0x04,0x0114,
454   {0x11,0x09,0x15,0x00},
455   0x10,
456   {0x04,0x14,0x01,0x11,0x09,0x15,0x2a,0x3a,
457    0x2e,0x3e,0x2b,0x3b,0x2f,0x3f,0x2a,0x3a,
458    0x2e,0x3e,0x2b,0x3b,0x2f,0x3f,0x00,0x10,
459    0x04},
460   {0x14,0x01,0x11,0x09,0x15,0x00,0x10,0x04,
461    0x14,0x01,0x11,0x09,0x15,0x2a,0x3a,0x2e,
462    0x3e,0x2b,0x3b,0x2f},
463   {0x3f,0x2a,0x3a,0x2e,0x3e,0x2b,0x3b,0x2f,
464    0x3f}
465  },
466 /* EGA_DAC */
467  {
468   0x00,0x10,0x04,0x0114,
469   {0x11,0x05,0x15,0x20},
470   0x30,
471   {0x24,0x34,0x21,0x31,0x25,0x35,0x08,0x18,
472    0x0c,0x1c,0x09,0x19,0x0d,0x1d,0x28,0x38,
473    0x2c,0x3c,0x29,0x39,0x2d,0x3d,0x02,0x12,
474    0x06},
475   {0x16,0x03,0x13,0x07,0x17,0x22,0x32,0x26,
476    0x36,0x23,0x33,0x27,0x37,0x0a,0x1a,0x0e,
477    0x1e,0x0b,0x1b,0x0f},
478   {0x1f,0x2a,0x3a,0x2e,0x3e,0x2b,0x3b,0x2f,
479    0x3f}
480  },
481 /* VGA_DAC */
482  {
483   0x00,0x10,0x04,0x0114,
484   {0x11,0x09,0x15,0x2a},
485   0x3a,
486   {0x2e,0x3e,0x2b,0x3b,0x2f,0x3f,0x00,0x05,
487    0x08,0x0b,0x0e,0x11,0x14,0x18,0x1c,0x20,
488    0x24,0x28,0x2d,0x32,0x38,0x3f,0x00,0x10,
489    0x1f},
490   {0x2f,0x3f,0x1f,0x27,0x2f,0x37,0x3f,0x2d,
491    0x31,0x36,0x3a,0x3f,0x00,0x07,0x0e,0x15,
492    0x1c,0x0e,0x11,0x15},
493   {0x18,0x1c,0x14,0x16,0x18,0x1a,0x1c,0x00,
494    0x04}
495  },
496  {
497   0x08,0x0c,0x10,0x0a08,
498   {0x0c,0x0e,0x10,0x0b},
499   0x0c,
500   {0x0d,0x0f,0x10,0x10,0x01,0x08,0x00,0x00,
501    0x00,0x00,0x01,0x00,0x02,0x02,0x01,0x00,
502    0x04,0x04,0x01,0x00,0x05,0x02,0x05,0x00,
503    0x06},
504   {0x01,0x06,0x05,0x06,0x00,0x08,0x01,0x08,
505    0x00,0x07,0x02,0x07,0x06,0x07,0x00,0x00,
506    0x00,0x00,0x00,0x00},
507   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
508    0x00}
509  },
510 /* MD_D */
511  {
512   0x28,0x18,0x08,0x2000,
513   {0x09,0x0f,0x00,0x06},
514   0x63,
515   {0x2d,0x27,0x28,0x90,0x2c,0x80,0xbf,0x1f,
516    0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
517    0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xe3,
518    0xff},
519   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
520    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
521    0x01,0x00,0x0f,0x00},
522   {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,
523    0xff}
524  },
525 /* MD_E */
526  {
527   0x50,0x18,0x08,0x4000,
528   {0x01,0x0f,0x00,0x06},
529   0x63,
530   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
531    0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
532    0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xe3,
533    0xff},
534   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
535    0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
536    0x01,0x00,0x0f,0x00},
537   {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,
538    0xff}
539  },
540 /* ExtVGATable */
541  {
542   0x00,0x00,0x00,0x0000,
543   {0x01,0x0f,0x00,0x0e},
544   0x23,
545   {0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e,
546    0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
547    0xea,0x8c,0xdf,0x28,0x40,0xe7,0x04,0xa3,
548    0xff},
549   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
550    0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
551    0x01,0x00,0x00,0x00},
552   {0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0f,
553    0xff}
554  },
555 /* ROM_SAVEPTR */
556  {
557   0x9f,0x3b,0x00,0x00c0,
558   {0x00,0x00,0x00,0x00},
559   0x00,
560   {0x00,0x00,0x00,0x00,0x00,0x00,0xbb,0x3f,
561    0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
562    0x00,0x00,0x1a,0x00,0xac,0x3e,0x00,0xc0,
563    0x00},
564   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
565    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
566    0x00,0x00,0x00,0x00},
567   {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
568    0x00}
569  },
570 /* MD_F */
571  {
572   0x50,0x18,0x0e,0x8000,
573   {0x01,0x0f,0x00,0x06},
574   0xa2,
575   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
576    0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
577    0x82,0x84,0x5d,0x28,0x0f,0x63,0xba,0xe3,
578    0xff},
579   {0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00,
580    0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,
581    0x0b,0x00,0x05,0x00},
582   {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x05,
583    0xff}
584  },
585 /* MD_10 */
586  {
587   0x50,0x18,0x0e,0x8000,
588   {0x01,0x0f,0x00,0x06},
589   0xa3,
590   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
591    0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
592    0x82,0x84,0x5d,0x28,0x0f,0x63,0xba,0xe3,
593    0xff},
594   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
595    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
596    0x01,0x00,0x0f,0x00},
597   {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,
598    0xff}
599  },
600 /* MD_0_350 */
601  {
602   0x28,0x18,0x0e,0x0800,
603   {0x09,0x03,0x00,0x02},
604   0xa3,
605   {0x2d,0x27,0x28,0x90,0x2b,0xb1,0xbf,0x1f,
606    0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00,
607    0x83,0x85,0x5d,0x14,0x1f,0x63,0xba,0xa3,
608    0xff},
609   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
610    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
611    0x08,0x00,0x0f,0x00},
612   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
613    0xff}
614  },
615 /* MD_1_350 */
616  {
617   0x28,0x18,0x0e,0x0800,
618   {0x09,0x03,0x00,0x02},
619   0xa3,
620   {0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f,
621    0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00,
622    0x83,0x85,0x5d,0x14,0x1f,0x63,0xba,0xa3,
623    0xff},
624   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
625    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
626    0x08,0x00,0x0f,0x00},
627   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
628    0xff}
629  },
630 /* MD_2_350 */
631  {
632   0x50,0x18,0x0e,0x1000,
633   {0x01,0x03,0x00,0x02},
634   0xa3,
635   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
636    0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00,
637    0x83,0x85,0x5d,0x28,0x1f,0x63,0xba,0xa3,
638    0xff},
639   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
640    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
641    0x08,0x00,0x0f,0x00},
642   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
643    0xff}
644  },
645 /* MD_3_350 */
646  {
647   0x50,0x18,0x0e,0x1000,
648   {0x01,0x03,0x00,0x02},
649   0xa3,
650   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
651    0x00,0x4d,0x0b,0x0c,0x00,0x00,0x00,0x00,
652    0x83,0x85,0x5d,0x28,0x1f,0x63,0xba,0xa3,
653    0xff},
654   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
655    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
656    0x08,0x00,0x0f,0x00},
657   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
658    0xff}
659  },
660 /* MD_0_1_400 */
661  {
662   0x28,0x18,0x10,0x0800,
663   {0x08,0x03,0x00,0x02},
664   0x67,
665   {0x2d,0x27,0x28,0x90,0x2b,0xb1,0xbf,0x1f,
666    0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,
667    0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3,
668    0xff},
669   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
670    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
671    0x0c,0x00,0x0f,0x08},
672   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
673    0xff}
674  },
675 /* MD_2_3_400 */
676  {
677   0x50,0x18,0x10,0x1000,
678   {0x00,0x03,0x00,0x02},
679   0x67,
680   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
681    0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,
682    0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3,
683    0xff},
684   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
685    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
686    0x0c,0x00,0x0f,0x08},
687   {0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x00,
688    0xff}
689  },
690 /* MD_7_400 */
691  {
692   0x50,0x18,0x10,0x1000,
693   {0x00,0x03,0x00,0x02},
694   0x66,
695   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
696    0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,
697    0x9c,0x8e,0x8f,0x28,0x0f,0x96,0xb9,0xa3,
698    0xff},
699   {0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
700    0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
701    0x0e,0x00,0x0f,0x08},
702   {0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x00,
703    0xff}
704  },
705 /* MD_11 */
706  {
707   0x50,0x1d,0x10,0xa000,
708   {0x01,0x0f,0x00,0x06},
709   0xe3,
710   {0x5f,0x4f,0x50,0x82,0x55,0x81,0x0b,0x3e,
711    0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
712    0xe9,0x8b,0xdf,0x28,0x00,0xe7,0x04,0xc3,
713    0xff},
714   {0x00,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
715    0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,
716    0x01,0x00,0x0f,0x00},
717   {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x01,
718    0xff}
719  },
720 /* ExtEGATable */
721  {
722   0x50,0x1d,0x10,0xa000,
723   {0x01,0x0f,0x00,0x06},
724   0xe3,
725   {0x5f,0x4f,0x50,0x82,0x55,0x81,0x0b,0x3e,
726    0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
727    0xe9,0x8b,0xdf,0x28,0x00,0xe7,0x04,0xe3,
728    0xff},
729   {0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,
730    0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
731    0x01,0x00,0x0f,0x00},
732   {0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,
733    0xff}
734  },
735 /* MD_13 */
736  {
737   0x28,0x18,0x08,0x2000,
738   {0x01,0x0f,0x00,0x0e},
739   0x63,
740   {0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,
741    0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,
742    0x9c,0x8e,0x8f,0x28,0x40,0x96,0xb9,0xa3,
743    0xff},
744   {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
745    0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
746    0x41,0x00,0x0f,0x00},
747   {0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0f,
748    0xff}
749  }
750 };
751
752 static struct XGI_TimingHStruct XGI_TimingH[] =
753 {{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}};
754
755 static struct XGI_TimingVStruct XGI_TimingV[] =
756 {{{0x00,0x00,0x00,0x00,0x00,0x00,0x00}}};
757
758 static struct XGI_XG21CRT1Struct XGI_UpdateCRT1Table[] =
759 {
760  {0x01,0x27,0x91,0x8f,0xc0},    /* 00 */
761  {0x03,0x4f,0x83,0x8f,0xc0},    /* 01 */
762  {0x05,0x27,0x91,0x8f,0xc0},    /* 02 */
763  {0x06,0x4f,0x83,0x8f,0xc0},    /* 03 */
764  {0x07,0x4f,0x83,0x8f,0xc0},    /* 04 */
765  {0x0d,0x27,0x91,0x8f,0xc0},    /* 05 */
766  {0x0e,0x4f,0x83,0x8f,0xc0},    /* 06 */
767  {0x0f,0x4f,0x83,0x5d,0xc0},    /* 07 */
768  {0x10,0x4f,0x83,0x5d,0xc0},    /* 08 */
769  {0x11,0x4f,0x83,0xdf,0x0c},    /* 09 */
770  {0x12,0x4f,0x83,0xdf,0x0c},    /* 10 */
771  {0x13,0x4f,0x83,0x8f,0xc0},    /* 11 */
772  {0x2e,0x4f,0x83,0xdf,0x0c},    /* 12 */
773  {0x2e,0x4f,0x87,0xdf,0xc0},    /* 13 */
774  {0x2f,0x4f,0x83,0x8f,0xc0},    /* 14 */
775  {0x50,0x27,0x91,0xdf,0x0c},    /* 15 */
776  {0x59,0x27,0x91,0x8f,0xc0}     /* 16 */
777 };
778
779 static struct XGI_CRT1TableStruct XGI_CRT1Table[] =
780 {
781  {{0x2d,0x28,0x90,0x2c,0x90,0x00,0x04,0x00,
782     0xbf,0x1f,0x9c,0x8e,0x96,0xb9,0x30}}, /* 0x0 */
783  {{0x2d,0x28,0x90,0x2c,0x90,0x00,0x04,0x00,
784     0x0b,0x3e,0xe9,0x8b,0xe7,0x04,0x00}}, /* 0x1 */
785  {{0x3D,0x31,0x81,0x37,0x1F,0x00,0x05,0x00,
786     0x72,0xF0,0x58,0x8C,0x57,0x73,0xA0}}, /* 0x2 */
787  {{0x4F,0x3F,0x93,0x45,0x0D,0x00,0x01,0x00,
788     0x24,0xF5,0x02,0x88,0xFF,0x25,0x90}}, /* 0x3 */
789  {{0x5F,0x50,0x82,0x55,0x81,0x00,0x05,0x00,
790     0xBF,0x1F,0x9C,0x8E,0x96,0xB9,0x30}}, /* 0x4 */
791  {{0x5F,0x50,0x82,0x55,0x81,0x00,0x05,0x00,
792     0x0B,0x3E,0xE9,0x8B,0xE7,0x04,0x00}}, /* 0x5 */
793  {{0x63,0x50,0x86,0x56,0x9B,0x00,0x01,0x00,
794     0x06,0x3E,0xE8,0x8B,0xE7,0xFF,0x10}}, /* 0x6 */
795  {{0x64,0x4F,0x88,0x55,0x9D,0x00,0x01,0x00,
796     0xF2,0x1F,0xE0,0x83,0xDF,0xF3,0x10}}, /* 0x7 */
797  {{0x63,0x4F,0x87,0x5A,0x81,0x00,0x05,0x00,
798     0xFB,0x1F,0xE0,0x83,0xDF,0xFC,0x10}}, /* 0x8 */
799  {{0x65,0x4F,0x89,0x58,0x80,0x00,0x05,0x60,
800     0xFB,0x1F,0xE0,0x83,0xDF,0xFC,0x80}}, /* 0x9 */
801  {{0x65,0x4F,0x89,0x58,0x80,0x00,0x05,0x60,
802     0x01,0x3E,0xE0,0x83,0xDF,0x02,0x80}}, /* 0xa */
803  {{0x67,0x4F,0x8B,0x58,0x81,0x00,0x05,0x60,
804     0x0D,0x3E,0xE0,0x83,0xDF,0x0E,0x90}}, /* 0xb */
805  {{0x65,0x4F,0x89,0x57,0x9F,0x00,0x01,0x00,
806    0xFB,0x1F,0xE6,0x8A,0xDF,0xFC,0x10}}, /* 0xc */
807  {{0x7B,0x63,0x9F,0x6A,0x93,0x00,0x05,0x00,    /* ; 0D (800x600,56Hz) */
808     0x6F,0xF0,0x58,0x8A,0x57,0x70,0xA0}},         /* ; (VCLK 36.0MHz) */
809  {{0x7F,0x63,0x83,0x6C,0x1C,0x00,0x06,0x00,    /* ; 0E (800x600,60Hz) */
810     0x72,0xF0,0x58,0x8C,0x57,0x73,0xA0}},         /* ; (VCLK 40.0MHz) */
811  {{0x7D,0x63,0x81,0x6E,0x1D,0x00,0x06,0x00,    /* ; 0F (800x600,72Hz) */
812     0x98,0xF0,0x7C,0x82,0x57,0x99,0x80}},         /* ; (VCLK 50.0MHz) */
813  {{0x7F,0x63,0x83,0x69,0x13,0x00,0x06,0x00,    /* ; 10 (800x600,75Hz) */
814     0x6F,0xF0,0x58,0x8B,0x57,0x70,0xA0}},         /* ; (VCLK 49.5MHz) */
815  {{0x7E,0x63,0x82,0x6B,0x13,0x00,0x06,0x00,    /* ; 11 (800x600,85Hz) */
816     0x75,0xF0,0x58,0x8B,0x57,0x76,0xA0}},         /* ; (VCLK 56.25MHz) */
817  {{0x81,0x63,0x85,0x6D,0x18,0x00,0x06,0x60,    /* ; 12 (800x600,100Hz) */
818     0x7A,0xF0,0x58,0x8B,0x57,0x7B,0xA0}},         /* ; (VCLK 75.8MHz) */
819  {{0x83,0x63,0x87,0x6E,0x19,0x00,0x06,0x60,    /* ; 13 (800x600,120Hz) */
820     0x81,0xF0,0x58,0x8B,0x57,0x82,0xA0}},         /* ; (VCLK 79.411MHz) */
821  {{0x85,0x63,0x89,0x6F,0x1A,0x00,0x06,0x60,    /* ; 14 (800x600,160Hz) */
822    0x91,0xF0,0x58,0x8B,0x57,0x92,0xA0}},         /* ; (VCLK 105.822MHz) */
823  {{0x99,0x7F,0x9D,0x84,0x1A,0x00,0x02,0x00,
824     0x96,0x1F,0x7F,0x83,0x7F,0x97,0x10}}, /* 0x15 */
825  {{0xA3,0x7F,0x87,0x86,0x97,0x00,0x02,0x00,
826     0x24,0xF5,0x02,0x88,0xFF,0x25,0x90}}, /* 0x16 */
827  {{0xA1,0x7F,0x85,0x86,0x97,0x00,0x02,0x00,
828     0x24,0xF5,0x02,0x88,0xFF,0x25,0x90}}, /* 0x17 */
829  {{0x9F,0x7F,0x83,0x85,0x91,0x00,0x02,0x00,
830     0x1E,0xF5,0x00,0x83,0xFF,0x1F,0x90}}, /* 0x18 */
831  {{0xA7,0x7F,0x8B,0x89,0x95,0x00,0x02,0x00,
832     0x26,0xF5,0x00,0x83,0xFF,0x27,0x90}}, /* 0x19 */
833  {{0xA9,0x7F,0x8D,0x8C,0x9A,0x00,0x02,0x62,
834     0x2C,0xF5,0x00,0x83,0xFF,0x2D,0x14}}, /* 0x1a */
835  {{0xAB,0x7F,0x8F,0x8D,0x9B,0x00,0x02,0x62,
836     0x35,0xF5,0x00,0x83,0xFF,0x36,0x14}}, /* 0x1b */
837  {{0xCF,0x9F,0x93,0xB2,0x01,0x00,0x03,0x00,
838     0x14,0xBA,0x00,0x83,0xFF,0x15,0x00}}, /* 0x1c */
839  {{0xCE,0x9F,0x92,0xA9,0x17,0x00,0x07,0x00,
840     0x28,0x5A,0x00,0x83,0xFF,0x29,0x89}}, /* 0x1d */
841  {{0xCE,0x9F,0x92,0xA5,0x17,0x00,0x07,0x00,
842     0x28,0x5A,0x00,0x83,0xFF,0x29,0x89}}, /* 0x1e */
843  {{0xD3,0x9F,0x97,0xAB,0x1F,0x00,0x07,0x00,
844     0x2E,0x5A,0x00,0x83,0xFF,0x2F,0x89}}, /* 0x1f */
845  {{0x09,0xC7,0x8D,0xD3,0x0B,0x01,0x04,0x00,
846     0xE0,0x10,0xB0,0x83,0xAF,0xE1,0x2F}}, /* 0x20 */
847  {{0x09,0xC7,0x8D,0xD3,0x0B,0x01,0x04,0x00,
848     0xE0,0x10,0xB0,0x83,0xAF,0xE1,0x2F}}, /* 0x21 */
849  {{0x09,0xC7,0x8D,0xD3,0x0B,0x01,0x04,0x00,
850     0xE0,0x10,0xB0,0x83,0xAF,0xE1,0x2F}}, /* 0x22 */
851  {{0x09,0xC7,0x8D,0xD3,0x0B,0x01,0x04,0x00,
852     0xE0,0x10,0xB0,0x83,0xAF,0xE1,0x2F}}, /* 0x23 */
853  {{0x09,0xC7,0x8D,0xD3,0x0B,0x01,0x04,0x00,
854     0xE0,0x10,0xB0,0x83,0xAF,0xE1,0x2F}}, /* 0x24 */
855  {{0x09,0xC7,0x8D,0xD3,0x0B,0x01,0x04,0x00,
856     0xE0,0x10,0xB0,0x83,0xAF,0xE1,0x2F}}, /* 0x25 */
857  {{0x09,0xC7,0x8D,0xD3,0x0B,0x01,0x04,0x00,
858     0xE0,0x10,0xB0,0x83,0xAF,0xE1,0x2F}}, /* 0x26 */
859  {{0x40,0xEF,0x84,0x03,0x1D,0x41,0x01,0x00,
860     0xDA,0x1F,0xA0,0x83,0x9F,0xDB,0x1F}}, /* 0x27 */
861  {{0x43,0xEF,0x87,0x06,0x00,0x41,0x05,0x62,
862     0xD4,0x1F,0xA0,0x83,0x9F,0xD5,0x9F}}, /* 0x28 */
863  {{0x45,0xEF,0x89,0x07,0x01,0x41,0x05,0x62,
864     0xD9,0x1F,0xA0,0x83,0x9F,0xDA,0x9F}}, /* 0x29 */
865  {{0x40,0xEF,0x84,0x03,0x1D,0x41,0x01,0x00,
866     0xDA,0x1F,0xA0,0x83,0x9F,0xDB,0x1F}}, /* 0x2a */
867  {{0x40,0xEF,0x84,0x03,0x1D,0x41,0x01,0x00,
868     0xDA,0x1F,0xA0,0x83,0x9F,0xDB,0x1F}}, /* 0x2b */
869  {{0x40,0xEF,0x84,0x03,0x1D,0x41,0x01,0x00,
870     0xDA,0x1F,0xA0,0x83,0x9F,0xDB,0x1F}}, /* 0x2c */
871  {{0x59,0xFF,0x9D,0x17,0x13,0x41,0x05,0x44,
872     0x33,0xBA,0x00,0x83,0xFF,0x34,0x0F}}, /* 0x2d */
873  {{0x5B,0xFF,0x9F,0x18,0x14,0x41,0x05,0x44,
874     0x38,0xBA,0x00,0x83,0xFF,0x39,0x0F}}, /* 0x2e */
875  {{0x5B,0xFF,0x9F,0x18,0x14,0x41,0x05,0x44,
876     0x3D,0xBA,0x00,0x83,0xFF,0x3E,0x0F}}, /* 0x2f */
877  {{0x5D,0xFF,0x81,0x19,0x95,0x41,0x05,0x44,
878     0x41,0xBA,0x00,0x84,0xFF,0x42,0x0F}}, /* 0x30 */
879  {{0x55,0xFF,0x99,0x0D,0x0C,0x41,0x05,0x00,
880     0x3E,0xBA,0x00,0x84,0xFF,0x3F,0x0F}}, /* 0x31 */
881  {{0x7F,0x63,0x83,0x6C,0x1C,0x00,0x06,0x00,
882     0x72,0xBA,0x27,0x8B,0xDF,0x73,0x80}}, /* 0x32 */
883  {{0x7F,0x63,0x83,0x69,0x13,0x00,0x06,0x00,
884     0x6F,0xBA,0x26,0x89,0xDF,0x6F,0x80}}, /* 0x33 */
885  {{0x7F,0x63,0x82,0x6B,0x13,0x00,0x06,0x00,
886     0x75,0xBA,0x29,0x8C,0xDF,0x75,0x80}}, /* 0x34 */
887  {{0xA3,0x7F,0x87,0x86,0x97,0x00,0x02,0x00,
888     0x24,0xF1,0xAF,0x85,0x3F,0x25,0xB0}}, /* 0x35 */
889  {{0x9F,0x7F,0x83,0x85,0x91,0x00,0x02,0x00,
890     0x1E,0xF1,0xAD,0x81,0x3F,0x1F,0xB0}}, /* 0x36 */
891  {{0xA7,0x7F,0x88,0x89,0x15,0x00,0x02,0x00,
892     0x26,0xF1,0xB1,0x85,0x3F,0x27,0xB0}}, /* 0x37 */
893  {{0xCE,0x9F,0x92,0xA9,0x17,0x00,0x07,0x00,
894     0x28,0xC4,0x7A,0x8E,0xCF,0x29,0xA1}}, /* 0x38 */
895  {{0xCE,0x9F,0x92,0xA5,0x17,0x00,0x07,0x00,
896     0x28,0xD4,0x7A,0x8E,0xCF,0x29,0xA1}}, /* 0x39 */
897  {{0xD3,0x9F,0x97,0xAB,0x1F,0x00,0x07,0x00,
898     0x2E,0xD4,0x7D,0x81,0xCF,0x2F,0xA1}}, /* 0x3a */
899  {{0xDC,0x9F,0x00,0xAB,0x19,0x00,0x07,0x00,
900     0xE6,0xEF,0xC0,0xC3,0xBF,0xE7,0x90}}, /* 0x3b */
901  {{0x6B,0x59,0x8F,0x5E,0x8C,0x00,0x05,0x00,
902     0x0B,0x3E,0xE9,0x8B,0xE7,0x04,0x00}}, /* 0x3c */
903  {{0x7B,0x63,0x9F,0x6A,0x93,0x00,0x05,0x00,
904     0x6F,0xF0,0x58,0x8A,0x57,0x70,0xA0}}, /* 0x3d */
905  {{0x86,0x6A,0x8a,0x74,0x06,0x00,0x02,0x00,
906     0x8c,0x15,0x4f,0x83,0xef,0x8d,0x30}}, /* 0x3e */
907  {{0x81,0x6A,0x85,0x70,0x00,0x00,0x02,0x00,
908     0x0f,0x3e,0xeb,0x8e,0xdf,0x10,0x00}}, /* 0x3f */
909  {{0xCE,0x9F,0x92,0xA9,0x17,0x00,0x07,0x00,
910     0x20,0xF5,0x03,0x88,0xFF,0x21,0x90}}, /* 0x40 */
911  {{0xE6,0xAE,0x8A,0xBD,0x90,0x00,0x03,0x00,
912     0x3D,0x10,0x1A,0x8D,0x19,0x3E,0x2F}}, /* 0x41 */
913  {{0xB9,0x8F,0x9D,0x9B,0x8A,0x00,0x06,0x00,
914     0x7D,0xFF,0x60,0x83,0x5F,0x7E,0x90}}, /* 0x42 */
915  {{0xC3,0x8F,0x87,0x9B,0x0B,0x00,0x07,0x00,
916     0x82,0xFF,0x60,0x83,0x5F,0x83,0x90}},  /* 0x43 */
917  {{0xAD,0x7F,0x91,0x8E,0x9C,0x00,0x02,0x82,
918     0x49,0xF5,0x00,0x83,0xFF,0x4A,0x90}},  /* 0x44 */
919  {{0xCD,0x9F,0x91,0xA7,0x19,0x00,0x07,0x60,
920     0xE6,0xFF,0xC0,0x83,0xBF,0xE7,0x90}},  /* 0x45 */
921  {{0xD3,0x9F,0x97,0xAB,0x1F,0x00,0x07,0x60,
922     0xF1,0xFF,0xC0,0x83,0xBF,0xF2,0x90}},  /* 0x46 */
923  {{0xD7,0x9F,0x9B,0xAC,0x1E,0x00,0x07,0x00,
924     0x03,0xDE,0xC0,0x84,0xBF,0x04,0x90}}  /* 0x47 */
925 };
926
927 #if 0
928 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegUNTSC[] = {
929                 /* Index:000h,001h,002h,004h,003h,005h,006h,007h,008h,015h,01Fh,00Ch,00Dh,00Eh,00Fh,010h */
930                 {{      0x4A,0x77,0xBB,0x94,0x84,0x48,0xFE,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 00 (640x200,640x400) */
931                 {{      0x4A,0x77,0xBB,0x94,0x84,0x48,0xFE,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 01 (640x350) */
932                 {{      0x4A,0x77,0xBB,0x94,0x84,0x48,0xFE,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 02 (720x400) */
933                 {{      0x4A,0x77,0xBB,0x94,0x84,0x48,0xFE,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 03 (720x350) */
934                 {{      0x6A,0x77,0xBB,0x6E,0x84,0x2E,0x02,0x5A,0x04,0x00,0x80,0x20,0x7E,0x80,0x97,0x00  }},/* 04 (640x480) ;;5/6/02 */
935                 {{      0xCF,0x77,0xB7,0xC8,0x84,0x3B,0x02,0x5A,0x04,0x00,0x80,0x19,0x88,0xAE,0xA3,0x00  }},/* 05 (800x600) ;;1/12/02 */
936                 {{      0xEE,0x77,0xBB,0x66,0x87,0x32,0x01,0x5A,0x04,0x00,0x80,0x1B,0xD4,0x2F,0x6F,0x00  }}/* 06 (1024x768) ;;5/6/02 */
937           };
938
939 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegONTSC[] = {
940                 /* Index:000h,001h,002h,004h,003h,005h,006h,007h,008h,015h,01Fh,00Ch,00Dh,00Eh,00Fh,010h */
941                 {{      0x49,0x77,0xBB,0x7B,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 00 (640x200,640x400) */
942                 {{      0x49,0x77,0xBB,0x7B,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 01 (640x350) */
943                 {{      0x49,0x77,0xBB,0x7B,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 02 (720x400) */
944                 {{      0x49,0x77,0xBB,0x7B,0x84,0x34,0x00,0x50,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* 03 (720x350) */
945                 {{      0x69,0x77,0xBB,0x6E,0x84,0x1E,0x00,0x5A,0x04,0x00,0x80,0x25,0x1A,0x80,0x26,0x00  }},/* 04 (640x480) ;;5/6/02 */
946                 {{      0xCE,0x77,0xB7,0xB6,0x83,0x2C,0x02,0x5A,0x04,0x00,0x80,0x1C,0x00,0x82,0x97,0x00  }},/* 05 (800x600) ;;5/6/02 */
947                 {{      0xED,0x77,0xBB,0x66,0x8C,0x21,0x02,0x5A,0x04,0x00,0x80,0x1F,0xA0,0x7E,0x73,0x00  }}/* 06 (1024x768) ;;5/6/02 */
948           };
949
950 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegUPAL[] = {
951                 /* Index:000h,001h,002h,004h,003h,005h,006h,007h,008h,015h,01Fh,00Ch,00Dh,00Eh,00Fh,010h */
952                 {{      0x41,0x7F,0xB7,0x34,0xAD,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* ; 00 (640x200,640x400) */
953                 {{      0x41,0x7F,0xB7,0x80,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* ; 01 (640x350) */
954                 {{      0x41,0x7F,0xB7,0x34,0xAD,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* ; 02 (720x400) */
955                 {{      0x41,0x7F,0xB7,0x12,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01  }},/* ; 03 (720x350) */
956                 {{      0x61,0x7F,0xB7,0x99,0x84,0x35,0x04,0x5A,0x05,0x00,0x80,0x26,0x2A,0x55,0x5D,0x00  }},/* ; 04 (640x480) */
957                 {{      0xC3,0x7F,0xB7,0x7A,0x84,0x40,0x02,0x5A,0x05,0x00,0x80,0x1F,0x84,0x3D,0x28,0x00  }},/* ; 05 (800x600) ;;1/12/02 */
958                 {{      0xE5,0x7F,0xB7,0x1D,0xA7,0x3E,0x04,0x5A,0x05,0x00,0x80,0x20,0x3E,0xE4,0x22,0x00  }}/* ; 06 (1024x768) ;;1/12/02 */
959           };
960
961 static struct XGI330_CHTVRegDataStruct XGI_CHTVRegOPAL[] = {
962                 /* Index:000,0x01,0x02,0x04,0x03,0x05,0x06,0x07,0x08,0x15,0x1F,0x0C,0x0D,0x0E,0x0F,0x10h */
963                 {{      0x41,0x7F,0xB7,0x36,0xAD,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01 }},/* 00 (640x200,640x400) */
964                 {{      0x41,0x7F,0xB7,0x86,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01 }},/* 01 (640x350) */
965                 {{      0x41,0x7F,0xB7,0x36,0xAD,0x50,0x34,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01 }},/* 02 (720x400) */
966                 {{      0x41,0x7F,0xB7,0x86,0x85,0x50,0x00,0x83,0x05,0x00,0x80,0x00,0x00,0x00,0x00,0x01 }},/* 03 (720x350) */
967                 {{      0x61,0x7F,0xB7,0x99,0x84,0x35,0x04,0x5A,0x05,0x00,0x80,0x26,0x2A,0x55,0x5D,0x00 }},/* 04 (640x480) */
968                 {{      0xC1,0x7F,0xB7,0x4D,0x8C,0x1E,0x31,0x5A,0x05,0x00,0x80,0x26,0x78,0x19,0x34,0x00 }},/* 05 (800x600) ;;1/12/02 */
969                 {{      0xE4,0x7F,0xB7,0x1E,0xAF,0x29,0x37,0x5A,0x05,0x00,0x80,0x25,0x8C,0xB2,0x2A,0x00 }}/* 06 (1024x768) ;;1/12/02 */
970              };
971 #endif
972
973 static unsigned char XGI_CH7017LV1024x768[] = {
974                                         0x60, 0x02, 0x00, 0x07, 0x40, 0xED, 0xA3,
975                                         0xC8, 0xC7, 0xAC, 0xE0, 0x02};
976 static unsigned char XGI_CH7017LV1400x1050[] = {
977                                          0x60, 0x03, 0x11, 0x00, 0x40, 0xE3, 0xAD,
978                                          0xDB, 0xF6, 0xAC, 0xE0, 0x02};
979
980
981 /*add for new UNIVGABIOS*/
982 static struct XGI330_LCDDataStruct  XGI_StLCD1024x768Data[] =
983 {
984  {   62,  25, 800, 546,1344, 806},
985  {   32,  15, 930, 546,1344, 806},
986  {   62,  25, 800, 546,1344, 806}, /* chiawen for dot9 -> dot8 */
987  {  104,  45, 945, 496,1344, 806},
988  {   62,  25, 800, 546,1344, 806},
989  {   31,  18,1008, 624,1344, 806},
990  {    1,   1,1344, 806,1344, 806}
991 };
992
993 static struct XGI330_LCDDataStruct  XGI_ExtLCD1024x768Data[] =
994 {
995  {   42,  25,1536, 419,1344, 806}, /* { 12, 5, 896, 512,1344, 806}, // alan 09/12/2003 */
996  {   48,  25,1536, 369,1344, 806}, /* { 12, 5, 896, 510,1344, 806}, // alan 09/12/2003 */
997  {   42,  25,1536, 419,1344, 806}, /* { 32, 15,1008, 505,1344, 806}, // alan 09/12/2003 */
998  {   48,  25,1536, 369,1344, 806}, /* { 32, 15,1008, 514,1344, 806}, // alan 09/12/2003 */
999  {   12,   5, 896, 500,1344, 806},
1000  {   42,  25,1024, 625,1344, 806},
1001  {    1,   1,1344, 806,1344, 806},
1002  {   12,   5, 896, 500,1344, 806},
1003  {   42,  25,1024, 625,1344, 806},
1004  {    1,   1,1344, 806,1344, 806},
1005  {   12,   5, 896, 500,1344, 806},
1006  {   42,  25,1024, 625,1344, 806},
1007  {    1,   1,1344, 806,1344, 806}
1008 };
1009
1010 /*struct XGI330_LCDDataStruct  XGI_St2LCD1024x768Data[] =
1011 {
1012  {   62,  25, 800, 546,1344, 806},
1013  {   32,  15, 930, 546,1344, 806},
1014  {   62,  25, 800, 546,1344, 806},
1015  {  104,  45, 945, 496,1344, 806},
1016  {   62,  25, 800, 546,1344, 806},
1017  {   31,  18,1008, 624,1344, 806},
1018  {    1,   1,1344, 806,1344, 806}
1019 };*/
1020
1021 static struct XGI330_LCDDataStruct  XGI_CetLCD1024x768Data[] =
1022 {
1023         {         1,1,1344,806,1344,806           }, /* ; 00 (320x200,320x400,640x200,640x400) */
1024         {         1,1,1344,806,1344,806           }, /* 01 (320x350,640x350) */
1025         {         1,1,1344,806,1344,806           }, /* 02 (360x400,720x400) */
1026         {         1,1,1344,806,1344,806           }, /* 03 (720x350) */
1027         {         1,1,1344,806,1344,806           }, /* 04 (640x480x60Hz) */
1028         {         1,1,1344,806,1344,806           }, /* 05 (800x600x60Hz) */
1029         {         1,1,1344,806,1344,806           }  /* 06 (1024x768x60Hz) */
1030 };
1031
1032 static struct XGI330_LCDDataStruct  XGI_StLCD1280x1024Data[] =
1033 {
1034  {   22,   5, 800, 510,1650,1088},
1035  {   22,   5, 800, 510,1650,1088},
1036  {  176,  45, 900, 510,1650,1088},
1037  {  176,  45, 900, 510,1650,1088},
1038  {   22,   5, 800, 510,1650,1088},
1039  {   13,   5,1024, 675,1560,1152},
1040  {   16,   9,1266, 804,1688,1072},
1041  {    1,   1,1688,1066,1688,1066}
1042 };
1043
1044 static struct XGI330_LCDDataStruct  XGI_ExtLCD1280x1024Data[] =
1045 {
1046  {  211,  60,1024, 501,1688,1066},
1047  {  211,  60,1024, 508,1688,1066},
1048  {  211,  60,1024, 501,1688,1066},
1049  {  211,  60,1024, 508,1688,1066},
1050  {  211,  60,1024, 500,1688,1066},
1051  {  211,  75,1024, 625,1688,1066},
1052  {  211, 120,1280, 798,1688,1066},
1053  {    1,   1,1688,1066,1688,1066}
1054 };
1055
1056 #if 0
1057 static struct XGI330_LCDDataStruct  XGI_St2LCD1280x1024Data[] =
1058 {
1059  {   22,   5, 800, 510,1650,1088},
1060  {   22,   5, 800, 510,1650,1088},
1061  {  176,  45, 900, 510,1650,1088},
1062  {  176,  45, 900, 510,1650,1088},
1063  {   22,   5, 800, 510,1650,1088},
1064  {   13,   5,1024, 675,1560,1152},
1065  {   16,   9,1266, 804,1688,1072},
1066  {    1,   1,1688,1066,1688,1066}
1067 };
1068 #endif
1069
1070 static struct XGI330_LCDDataStruct  XGI_CetLCD1280x1024Data[] =
1071 {
1072         {         1,1,1688,1066,1688,1066         }, /* 00 (320x200,320x400,640x200,640x400) */
1073         {         1,1,1688,1066,1688,1066         }, /* 01 (320x350,640x350) */
1074         {         1,1,1688,1066,1688,1066         }, /* 02 (360x400,720x400) */
1075         {         1,1,1688,1066,1688,1066         }, /* 03 (720x350) */
1076         {         1,1,1688,1066,1688,1066         }, /* 04 (640x480x60Hz) */
1077         {         1,1,1688,1066,1688,1066         }, /* 05 (800x600x60Hz) */
1078         {         1,1,1688,1066,1688,1066         }, /* 06 (1024x768x60Hz) */
1079         {         1,1,1688,1066,1688,1066         }, /* 07 (1280x1024x60Hz) */
1080         {         1,1,1688,1066,1688,1066         } /* 08 (1400x1050x60Hz) */
1081 };
1082
1083 static struct XGI330_LCDDataStruct  XGI_StLCD1400x1050Data[] =
1084 {
1085         {         211,100,2100,408,1688,1066      }, /* 00 (320x200,320x400,640x200,640x400) */
1086         {         211,64,1536,358,1688,1066       }, /* 01 (320x350,640x350) */
1087         {         211,100,2100,408,1688,1066      }, /* 02 (360x400,720x400) */
1088         {         211,64,1536,358,1688,1066       }, /* 03 (720x350) */
1089         {         211,48,840,488,1688,1066        }, /* 04 (640x480x60Hz) */
1090         {         211,72,1008,609,1688,1066       }, /* 05 (800x600x60Hz) */
1091         {         211,128,1400,776,1688,1066      }, /* 06 (1024x768x60Hz) */
1092         {         1,1,1688,1066,1688,1066         }, /* 07 (1280x1024x60Hz w/o Scaling) */
1093         {         1,1,1688,1066,1688,1066         }  /* 08 (1400x1050x60Hz) */
1094 };
1095
1096 static struct XGI330_LCDDataStruct  XGI_ExtLCD1400x1050Data[] =
1097 {
1098         {         211,100,2100,408,1688,1066      }, /* 00 (320x200,320x400,640x200,640x400) */
1099         {         211,64,1536,358,1688,1066       }, /* 01 (320x350,640x350) */
1100         {         211,100,2100,408,1688,1066      }, /* 02 (360x400,720x400) */
1101         {         211,64,1536,358,1688,1066       }, /* 03 (720x350) */
1102         {         211,48,840,488,1688,1066        }, /* 04 (640x480x60Hz) */
1103         {         211,72,1008,609,1688,1066       }, /* 05 (800x600x60Hz) */
1104         {         211,128,1400,776,1688,1066      }, /* 06 (1024x768x60Hz) */
1105         {         1,1,1688,1066,1688,1066         }, /* 07 (1280x1024x60Hz w/o Scaling) */
1106         {         1,1,1688,1066,1688,1066         }  /* 08 (1400x1050x60Hz) */
1107 };
1108
1109 static struct XGI330_LCDDataStruct  XGI_ExtLCD1600x1200Data[] =
1110 {
1111         {         4,1,1620,420,2160,1250          }, /* { 3,1,2160,425,2160,1250 }, // 00 (320x200,320x400,640x200,640x400) // alan 10/14/2003 */
1112         {         27,7,1920,375,2160,1250         }, /* 01 (320x350,640x350) */
1113         {         4,1,1620,420,2160,1250          }, /* { 3,1,2160,425,2160,1250 }, // 02 (360x400,720x400) // alan 10/14/2003 */
1114         {         27,7,1920,375,2160,1250         }, /* 03 (720x350) */
1115         {         27,4,800,500,2160,1250          }, /* 04 (640x480x60Hz) */
1116         {         4,1,1080,625,2160,1250          }, /* 05 (800x600x60Hz) */
1117         {         5,2,1350,800,2160,1250          }, /* 06 (1024x768x60Hz) */
1118         {         27,16,1500,1064,2160,1250       }, /* 07 (1280x1024x60Hz) */
1119         {         9,7,1920,1106,2160,1250         }, /* 08 (1400x1050x60Hz) */
1120         {         1,1,2160,1250,2160,1250         }  /* 09 (1600x1200x60Hz) ;302lv */
1121 };
1122
1123 static struct XGI330_LCDDataStruct  XGI_StLCD1600x1200Data[] =
1124 {
1125         {         27,4,800,500,2160,1250          },/* 00 (320x200,320x400,640x200,640x400) */
1126         {         27,4,800,500,2160,1250          },/* 01 (320x350,640x350) */
1127         {         27,4,800,500,2160,1250          },/* 02 (360x400,720x400) */
1128         {         27,4,800,500,2160,1250          },/* 03 (720x350) */
1129         {         27,4,800,500,2160,1250          },/* 04 (320x240,640x480) */
1130         {         4,1,1080,625,2160,1250          },/* 05 (400x300,800x600) */
1131         {         5,2,1350,800,2160,1250          },/* 06 (512x384,1024x768) */
1132         {         135,88,1600,1100,2160,1250      },/* 07 (1280x1024) */
1133         {         1,1,1800,1500,2160,1250         },/* 08 (1400x1050) */
1134         {         1,1,2160,1250,2160,1250         } /* 09 (1600x1200) */
1135 };
1136
1137 static struct XGI330_LCDDataStruct  XGI_CetLCD1400x1050Data[] =
1138 {
1139         {         1,1,1688,1066,1688,1066         }, /* 00 (320x200,320x400,640x200,640x400) */
1140         {         1,1,1688,1066,1688,1066         }, /* 01 (320x350,640x350) */
1141         {         1,1,1688,1066,1688,1066         }, /* 02 (360x400,720x400) */
1142         {         1,1,1688,1066,1688,1066         }, /* 03 (720x350) */
1143         {         1,1,1688,1066,1688,1066         }, /* 04 (640x480x60Hz) */
1144         {         1,1,1688,1066,1688,1066         }, /* 05 (800x600x60Hz) */
1145         {         1,1,1688,1066,1688,1066         }, /* 06 (1024x768x60Hz) */
1146         {         1,1,1688,1066,1688,1066         }, /* 07 (1280x1024x60Hz) */
1147         {         1,1,1688,1066,1688,1066         }  /* 08 (1400x1050x60Hz) */
1148 };
1149
1150 static struct XGI330_LCDDataStruct  XGI_NoScalingData[] =
1151 {
1152  {    1,   1, 800, 449, 800, 449},
1153  {    1,   1, 800, 449, 800, 449},
1154  {    1,   1, 900, 449, 900, 449},
1155  {    1,   1, 900, 449, 900, 449},
1156  {    1,   1, 800, 525, 800, 525},
1157  {    1,   1,1056, 628,1056, 628},
1158  {    1,   1,1344, 806,1344, 806},
1159  {    1,   1,1688,1066,1688,1066}
1160 };
1161
1162 static struct XGI330_LCDDataStruct  XGI_ExtLCD1024x768x75Data[] =
1163 {
1164         {42,25,1536,419,1344,806 }, /* ; 00 (320x200,320x400,640x200,640x400) */
1165         {48,25,1536,369,1344,806 }, /* ; 01 (320x350,640x350) */
1166         {42,25,1536,419,1344,806 }, /* ; 02 (360x400,720x400) */
1167         {48,25,1536,369,1344,806 }, /* ; 03 (720x350) */
1168         {8,5,1312,500,1312,800   }, /* ; 04 (640x480x75Hz) */
1169         {41,25,1024,625,1312,800 }, /* ; 05 (800x600x75Hz) */
1170         {1,1,1312,800,1312,800   }  /* ; 06 (1024x768x75Hz) */
1171 };
1172
1173 #if 0
1174 static struct XGI330_LCDDataStruct  XGI_StLCD1024x768x75Data[] =
1175 {
1176         {42,25,1536,419,1344,806 }, /* ; 00 (320x200,320x400,640x200,640x400) */
1177         {48,25,1536,369,1344,806 }, /* ; 01 (320x350,640x350) */
1178         {42,25,1536,419,1344,806 }, /* ; 02 (360x400,720x400) */
1179         {48,25,1536,369,1344,806 }, /* ; 03 (720x350) */
1180         {8,5,1312,500,1312,800   }, /* ; 04 (640x480x75Hz) */
1181         {41,25,1024,625,1312,800 }, /* ; 05 (800x600x75Hz) */
1182         {1,1,1312,800,1312,800   }  /* ; 06 (1024x768x75Hz) */
1183 };
1184 #endif
1185
1186 static struct XGI330_LCDDataStruct  XGI_CetLCD1024x768x75Data[] =
1187 {
1188         {1,1,1312,800,1312,800}, /* ; 00 (320x200,320x400,640x200,640x400) */
1189         {1,1,1312,800,1312,800}, /* ; 01 (320x350,640x350) */
1190         {1,1,1312,800,1312,800}, /* ; 02 (360x400,720x400) */
1191         {1,1,1312,800,1312,800}, /* ; 03 (720x350) */
1192         {1,1,1312,800,1312,800}, /* ; 04 (640x480x75Hz) */
1193         {1,1,1312,800,1312,800}, /* ; 05 (800x600x75Hz) */
1194         {1,1,1312,800,1312,800} /* ; 06 (1024x768x75Hz) */
1195 };
1196
1197 static struct XGI330_LCDDataStruct  XGI_ExtLCD1280x1024x75Data[] =
1198 {
1199         {211,60,1024,501,1688,1066   }, /* ; 00 (320x200,320x400,640x200,640x400) */
1200         {211,60,1024,508,1688,1066   }, /* ; 01 (320x350,640x350) */
1201         {211,60,1024,501,1688,1066   }, /* ; 02 (360x400,720x400) */
1202         {211,60,1024,508,1688,1066   }, /* ; 03 (720x350) */
1203         {211,45,768,498,1688,1066    }, /* ; 04 (640x480x75Hz) */
1204         {211,75,1024,625,1688,1066   }, /* ; 05 (800x600x75Hz) */
1205         {211,120,1280,798,1688,1066  }, /* ; 06 (1024x768x75Hz) */
1206         {1,1,1688,1066,1688,1066     }  /* ; 07 (1280x1024x75Hz) */
1207 };
1208
1209 static struct XGI330_LCDDataStruct  XGI_StLCD1280x1024x75Data[] =
1210 {
1211         {211,60,1024,501,1688,1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */
1212         {211,60,1024,508,1688,1066 }, /* ; 01 (320x350,640x350) */
1213         {211,60,1024,501,1688,1066 }, /* ; 02 (360x400,720x400) */
1214         {211,60,1024,508,1688,1066 }, /* ; 03 (720x350) */
1215         {211,45,768,498,1688,1066  }, /* ; 04 (640x480x75Hz) */
1216         {211,75,1024,625,1688,1066 }, /* ; 05 (800x600x75Hz) */
1217         {211,120,1280,798,1688,1066}, /* ; 06 (1024x768x75Hz) */
1218         {1,1,1688,1066,1688,1066   }  /* ; 07 (1280x1024x75Hz) */
1219 };
1220
1221 static struct XGI330_LCDDataStruct  XGI_CetLCD1280x1024x75Data[] =
1222 {
1223         {1,1,1688,1066,1688,1066}, /* ; 00 (320x200,320x400,640x200,640x400) */
1224         {1,1,1688,1066,1688,1066}, /* ; 01 (320x350,640x350) */
1225         {1,1,1688,1066,1688,1066}, /* ; 02 (360x400,720x400) */
1226         {1,1,1688,1066,1688,1066}, /* ; 03 (720x350) */
1227         {1,1,1688,1066,1688,1066}, /* ; 04 (640x480x75Hz) */
1228         {1,1,1688,1066,1688,1066}, /* ; 05 (800x600x75Hz) */
1229         {1,1,1688,1066,1688,1066}, /* ; 06 (1024x768x75Hz) */
1230         {1,1,1688,1066,1688,1066}  /* ; 07 (1280x1024x75Hz) */
1231 };
1232
1233 static struct XGI330_LCDDataStruct  XGI_NoScalingDatax75[] =
1234 {
1235         {1,1,800,449,800,449    }, /* ; 00 (320x200,320x400,640x200,640x400) */
1236         {1,1,800,449,800,449    }, /* ; 01 (320x350,640x350) */
1237         {1,1,900,449,900,449    }, /* ; 02 (360x400,720x400) */
1238         {1,1,900,449,900,449    }, /* ; 03 (720x350) */
1239         {1,1,840,500,840,500    }, /* ; 04 (640x480x75Hz) */
1240         {1,1,1056,625,1056,625  }, /* ; 05 (800x600x75Hz) */
1241         {1,1,1312,800,1312,800  }, /* ; 06 (1024x768x75Hz) */
1242         {1,1,1688,1066,1688,1066}, /* ; 07 (1280x1024x75Hz) */
1243         {1,1,1688,1066,1688,1066}, /* ; 08 (1400x1050x75Hz) ;;[ycchen] 12/19/02 */
1244         {1,1,2160,1250,2160,1250}, /* ; 09 (1600x1200x75Hz) */
1245         {1,1,1688,806,1688,806  }  /* ; 0A (1280x768x75Hz) */
1246 };
1247
1248 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1024x768Data[] =
1249 {
1250    {  9,1057,0, 771  }, /* ; 00 (320x200,320x400,640x200,640x400) */
1251    {  9,1057,0, 771  }, /* ; 01 (320x350,640x350) */
1252    {  9,1057,0, 771  }, /* ; 02 (360x400,720x400) */
1253    {  9,1057,0, 771  }, /* ; 03 (720x350) */
1254    {  9,1057,0, 771  }, /* ; 04 (640x480x60Hz) */
1255    {  9,1057,0, 771  }, /* ; 05 (800x600x60Hz) */
1256    {  9,1057,805, 770  }  /* ; 06 (1024x768x60Hz) */
1257 };
1258
1259 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1024x768Data[] =
1260 {
1261         { 9,1057,737,703   }, /* ; 00 (320x200,320x400,640x200,640x400) */
1262         { 9,1057,686,651   }, /* ; 01 (320x350,640x350) */
1263         { 9,1057,737,703   }, /* ; 02 (360x400,720x400) */
1264         { 9,1057,686,651   }, /* ; 03 (720x350) */
1265         { 9,1057,776,741   }, /* ; 04 (640x480x60Hz) */
1266         { 9,1057, 0 ,771   }, /* ; 05 (800x600x60Hz) */
1267         { 9,1057,805,770   }  /* ; 06 (1024x768x60Hz) */
1268 };
1269
1270 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1024x768Data[] =
1271 {
1272         {      1152,856,622,587   }, /* ; 00 (320x200,320x400,640x200,640x400) */
1273         {      1152,856,597,562   }, /* ; 01 (320x350,640x350) */
1274         {      1152,856,622,587   }, /* ; 02 (360x400,720x400) */
1275         {      1152,856,597,562   }, /* ; 03 (720x350) */
1276         {      1152,856,662,627   }, /* ; 04 (640x480x60Hz) */
1277         {      1232,936,722,687   }, /* ; 05 (800x600x60Hz) */
1278         {      0,1048,805,770   }  /* ; 06 (1024x768x60Hz) */
1279 };
1280
1281 static struct XGI330_LCDDataDesStruct XGI_ExtLCDDLDes1280x1024Data[] =
1282 {
1283         {      18,1346,981,940     },/* 00 (320x200,320x400,640x200,640x400) */
1284         {      18,1346,926,865     },/* 01 (320x350,640x350) */
1285         {      18,1346,981,940     },/* 02 (360x400,720x400) */
1286         {      18,1346,926,865     },/* 03 (720x350) */
1287         {      18,1346,0,1025     },/* 04 (640x480x60Hz) */
1288         {      18,1346,0,1025     },/* 05 (800x600x60Hz) */
1289         {      18,1346,1065,1024     },/* 06 (1024x768x60Hz) */
1290         {      18,1346,1065,1024     }/* 07 (1280x1024x60Hz) */
1291 };
1292
1293 static struct XGI330_LCDDataDesStruct XGI_StLCDDLDes1280x1024Data[] =
1294 {
1295         {      18,1346,970,907     },/* 00 (320x200,320x400,640x200,640x400) */
1296         {      18,1346,917,854     },/* 01 (320x350,640x350) */
1297         {      18,1346,970,907     },/* 02 (360x400,720x400) */
1298         {      18,1346,917,854     },/* 03 (720x350) */
1299         {      18,1346,0,1025     },/* 04 (640x480x60Hz) */
1300         {      18,1346,0,1025     },/* 05 (800x600x60Hz) */
1301         {      18,1346,1065,1024     },/* 06 (1024x768x60Hz) */
1302         {      18,1346,1065,1024     }/* 07 (1280x1024x60Hz) */
1303 };
1304
1305 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDLDes1280x1024Data[] =
1306 {
1307         {      1368,1008,752,711    }, /* 00 (320x200,320x400,640x200,640x400) */
1308         {      1368,1008,729,688    }, /* 01 (320x350,640x350) */
1309         {      1368,1008,752,711    }, /* 02 (360x400,720x400) */
1310         {      1368,1008,729,688    }, /* 03 (720x350) */
1311         {      1368,1008,794,753    }, /* 04 (640x480x60Hz) */
1312         {      1448,1068,854,813    }, /* 05 (800x600x60Hz) */
1313         {      1560,1200,938,897    }, /* 06 (1024x768x60Hz) */
1314         {      18,1346,1065,1024    }  /* 07 (1280x1024x60Hz) */
1315 };
1316
1317 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1280x1024Data[] =
1318 {
1319         {      9,1337,981,940    }, /* ; 00 (320x200,320x400,640x200,640x400) */
1320         {      9,1337,926,884    }, /* ; 01 (320x350,640x350) alan, 2003/09/30 */
1321         {      9,1337,981,940    }, /* ; 02 (360x400,720x400) */
1322         {      9,1337,926,884    }, /* ; 03 (720x350) alan, 2003/09/30 */
1323         {      9,1337,0,1025    }, /* ; 04 (640x480x60Hz) */
1324         {      9,1337,0,1025    }, /* ; 05 (800x600x60Hz) */
1325         {      9,1337,1065,1024    }, /* ; 06 (1024x768x60Hz) */
1326         {      9,1337,1065,1024    }  /* ; 07 (1280x1024x60Hz) */
1327 };
1328
1329 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1280x1024Data[] =
1330 {
1331         {      9,1337,970,907    }, /* ; 00 (320x200,320x400,640x200,640x400) */
1332         {      9,1337,917,854    }, /* ; 01 (320x350,640x350) */
1333         {      9,1337,970,907    }, /* ; 02 (360x400,720x400) */
1334         {      9,1337,917,854    }, /* ; 03 (720x350) */
1335         {      9,1337,0,1025    }, /* ; 04 (640x480x60Hz) */
1336         {      9,1337,0,1025    }, /* ; 05 (800x600x60Hz) */
1337         {      9,1337,1065,1024    }, /* ; 06 (1024x768x60Hz) */
1338         {      9,1337,1065,1024    }  /* ; 07 (1280x1024x60Hz) */
1339 };
1340
1341 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1280x1024Data[] =
1342 {
1343         {      1368,1008,752,711    }, /* 00 (320x200,320x400,640x200,640x400) */
1344         {      1368,1008,729,688    }, /* 01 (320x350,640x350) */
1345         {      1368,1008,752,711    }, /* 02 (360x400,720x400) */
1346         {      1368,1008,729,688    }, /* 03 (720x350) */
1347         {      1368,1008,794,753    }, /* 04 (640x480x60Hz) */
1348         {      1448,1068,854,813    }, /* 05 (800x600x60Hz) */
1349         {      1560,1200,938,897    }, /* 06 (1024x768x60Hz) */
1350         {      9,1337,1065,1024    }  /* 07 (1280x1024x60Hz) */
1351 };
1352
1353 static struct XGI330_LCDDataDesStruct  XGI_StLCDDLDes1400x1050Data[] =
1354 {
1355         {      18,1464,0,1051    }, /* 00 (320x200,320x400,640x200,640x400) */
1356         {      18,1464,0,1051    }, /* 01 (320x350,640x350) */
1357         {      18,1464,0,1051    }, /* 02 (360x400,720x400) */
1358         {      18,1464,0,1051    }, /* 03 (720x350) */
1359         {      18,1464,0,1051    }, /* 04 (640x480x60Hz) */
1360         {      18,1464,0,1051    }, /* 05 (800x600x60Hz) */
1361         {      18,1464,0,1051    }, /* 06 (1024x768x60Hz) */
1362         {      1646,1406,1053,1038    }, /* 07 (1280x1024x60Hz) */
1363         {      18,1464,0,1051    }  /* 08 (1400x1050x60Hz) */
1364 };
1365
1366 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDLDes1400x1050Data[] =
1367 {
1368         {      18,1464,0,1051    }, /* 00 (320x200,320x400,640x200,640x400) */
1369         {      18,1464,0,1051    }, /* 01 (320x350,640x350) */
1370         {      18,1464,0,1051    }, /* 02 (360x400,720x400) */
1371         {      18,1464,0,1051    }, /* 03 (720x350) */
1372         {      18,1464,0,1051    }, /* 04 (640x480x60Hz) */
1373         {      18,1464,0,1051    }, /* 05 (800x600x60Hz) */
1374         {      18,1464,0,1051    }, /* 06 (1024x768x60Hz) */
1375         {      1646,1406,1053,1038    }, /* 07 (1280x1024x60Hz) */
1376         {      18,1464,0,1051    }  /* 08 (1400x1050x60Hz) */
1377 };
1378
1379 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1400x1050Data[] =
1380 {
1381         {      9,1455,0,1051     },/* 00 (320x200,320x400,640x200,640x400) */
1382         {      9,1455,0,1051     },/* 01 (320x350,640x350) */
1383         {      9,1455,0,1051     },/* 02 (360x400,720x400) */
1384         {      9,1455,0,1051     },/* 03 (720x350) */
1385         {      9,1455,0,1051     },/* 04 (640x480x60Hz) */
1386         {      9,1455,0,1051     },/* 05 (800x600x60Hz) */
1387         {      9,1455,0,1051     },/* 06 (1024x768x60Hz) */
1388         {      1637,1397,1053,1038     },/* 07 (1280x1024x60Hz) */
1389         {      9,1455,0,1051     } /* 08 (1400x1050x60Hz) */
1390 };
1391
1392 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1400x1050Data[] =
1393 {
1394         {      9,1455,0,1051     },/* 00 (320x200,320x400,640x200,640x400) */
1395         {      9,1455,0,1051     },/* 01 (320x350,640x350) */
1396         {      9,1455,0,1051     },/* 02 (360x400,720x400) */
1397         {      9,1455,0,1051     },/* 03 (720x350) */
1398         {      9,1455,0,1051     },/* 04 (640x480x60Hz) */
1399         {      9,1455,0,1051     },/* 05 (800x600x60Hz) */
1400         {      9,1455,0,1051     },/* 06 (1024x768x60Hz) */
1401         {      1637,1397,1053,1038     },/* 07 (1280x1024x60Hz) */
1402         {      9,1455,0,1051     } /* 08 (1400x1050x60Hz) */
1403 };
1404
1405 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1400x1050Data[] =
1406 {
1407         {      1308,1068,781,766    }, /* 00 (320x200,320x400,640x200,640x400) */
1408         {      1308,1068,781,766    }, /* 01 (320x350,640x350) */
1409         {      1308,1068,781,766    }, /* 02 (360x400,720x400) */
1410         {      1308,1068,781,766    }, /* 03 (720x350) */
1411         {      1308,1068,781,766    }, /* 04 (640x480x60Hz) */
1412         {      1388,1148,841,826    }, /* 05 (800x600x60Hz) */
1413         {      1490,1250,925,910    }, /* 06 (1024x768x60Hz) */
1414         {      1646,1406,1053,1038    }, /* 07 (1280x1024x60Hz) */
1415         {      18,1464,0,1051    } /* 08 (1400x1050x60Hz) */
1416 };
1417
1418 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1400x1050Data2[] =
1419 {
1420         {      0,1448,0,1051    }, /* 00 (320x200,320x400,640x200,640x400) */
1421         {      0,1448,0,1051    }, /* 01 (320x350,640x350) */
1422         {      0,1448,0,1051    }, /* 02 (360x400,720x400) */
1423         {      0,1448,0,1051    }, /* 03 (720x350) */
1424         {      0,1448,0,1051    }  /* 04 (640x480x60Hz) */
1425 };
1426
1427
1428
1429 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDLDes1600x1200Data[] =
1430 {
1431         {      18,1682,0,1201    }, /* 00 (320x200,320x400,640x200,640x400) */
1432         {      18,1682,0,1201    }, /* 01 (320x350,640x350) */
1433         {      18,1682,0,1201    }, /* 02 (360x400,720x400) */
1434         {      18,1682,0,1201    }, /* 03 (720x350) */
1435         {      18,1682,0,1201    }, /* 04 (640x480x60Hz) */
1436         {      18,1682,0,1201    }, /* 05 (800x600x60Hz) */
1437         {      18,1682,0,1201    }, /* 06 (1024x768x60Hz) */
1438         {      18,1682,0,1201    }, /* 07 (1280x1024x60Hz) */
1439         {      18,1682,0,1201    }, /* 08 (1400x1050x60Hz) */
1440         {      18,1682,0,1201    }  /* 09 (1600x1200x60Hz) */
1441 };
1442
1443 static struct XGI330_LCDDataDesStruct  XGI_StLCDDLDes1600x1200Data[] =
1444 {
1445         {      18,1682,1150,1101    }, /* 00 (320x200,320x400,640x200,640x400) */
1446         {      18,1682,1083,1034    }, /* 01 (320x350,640x350) */
1447         {      18,1682,1150,1101    }, /* 02 (360x400,720x400) */
1448         {      18,1682,1083,1034    }, /* 03 (720x350) */
1449         {      18,1682,0,1201    }, /* 04 (640x480x60Hz) */
1450         {      18,1682,0,1201    }, /* 05 (800x600x60Hz) */
1451         {      18,1682,0,1201    }, /* 06 (1024x768x60Hz) */
1452         {      18,1682,1232,1183    }, /* 07 (1280x1024x60Hz) */
1453         {      18,1682,0,1201    }, /* 08 (1400x1050x60Hz) */
1454         {      18,1682,0,1201    } /* 09 (1600x1200x60Hz) */
1455 };
1456
1457 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1600x1200Data[] =
1458 {
1459         {      9,1673,0,1201     },/* 00 (320x200,320x400,640x200,640x400) */
1460         {      9,1673,0,1201     },/* 01 (320x350,640x350) */
1461         {      9,1673,0,1201     },/* 02 (360x400,720x400) */
1462         {      9,1673,0,1201     },/* 03 (720x350) */
1463         {      9,1673,0,1201     },/* 04 (640x480x60Hz) */
1464         {      9,1673,0,1201     },/* 05 (800x600x60Hz) */
1465         {      9,1673,0,1201     },/* 06 (1024x768x60Hz) */
1466         {      9,1673,0,1201     },/* 07 (1280x1024x60Hz) */
1467         {      9,1673,0,1201     },/* 08 (1400x1050x60Hz) */
1468         {      9,1673,0,1201     } /* 09 (1600x1200x60Hz) */
1469 };
1470
1471 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1600x1200Data[] =
1472 {
1473         {      9,1673,1150,1101     },/* 00 (320x200,320x400,640x200,640x400) */
1474         {      9,1673,1083,1034     },/* 01 (320x350,640x350) */
1475         {      9,1673,1150,1101     },/* 02 (360x400,720x400) */
1476         {      9,1673,1083,1034     },/* 03 (720x350) */
1477         {      9,1673,0,1201     },/* 04 (640x480x60Hz) */
1478         {      9,1673,0,1201     },/* 05 (800x600x60Hz) */
1479         {      9,1673,0,1201     },/* 06 (1024x768x60Hz) */
1480         {      9,1673,1232,1183     },/* 07 (1280x1024x60Hz) */
1481         {      9,1673,0,1201     },/* 08 (1400x1050x60Hz) */
1482         {      9,1673,0,1201     } /* 09 (1600x1200x60Hz) */
1483 };
1484
1485 static struct XGI330_LCDDataDesStruct2  XGI_NoScalingDesData[] =
1486 {
1487         {     9,657,448,405,96,2  }, /* 00 (320x200,320x400,640x200,640x400) */
1488         {     9,657,448,355,96,2  }, /* 01 (320x350,640x350) */
1489         {     9,657,448,405,96,2  }, /* 02 (360x400,720x400) */
1490         {     9,657,448,355,96,2  }, /* 03 (720x350) */
1491         {     9,657,1,483,96,2  }, /* 04 (640x480x60Hz) */
1492         {     9,849,627,600,128,4  }, /* 05 (800x600x60Hz) */
1493         {     9,1057,805,770,0136,6  }, /* 06 (1024x768x60Hz) */
1494         {     9,1337,0,1025,112,3  }, /* 07 (1280x1024x60Hz) */
1495         {     9,1457,0,1051,112,3  }, /* 08 (1400x1050x60Hz) }, //;[ycchen] 12/19/02 */
1496         {     9,1673,0,1201,192,3  }, /* 09 (1600x1200x60Hz) */
1497         {     9,1337,0,771,112,6  }  /* 0A (1280x768x60Hz) */
1498 };
1499
1500 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1024x768x75Data[] =         /* ;;1024x768x75Hz */
1501 {
1502         {9,1049,0,769},    /* ; 00 (320x200,320x400,640x200,640x400) */
1503         {9,1049,0,769},    /* ; 01 (320x350,640x350) */
1504         {9,1049,0,769},    /* ; 02 (360x400,720x400) */
1505         {9,1049,0,769},    /* ; 03 (720x350) */
1506         {9,1049,0,769},    /* ; 04 (640x480x75Hz) */
1507         {9,1049,0,769},    /* ; 05 (800x600x75Hz) */
1508         {9,1049,0,769}     /* ; 06 (1024x768x75Hz) */
1509 };
1510
1511 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1024x768x75Data[] =
1512 {
1513         {9,1049,0,769},    /* ; 00 (320x200,320x400,640x200,640x400) */
1514         {9,1049,0,769},    /* ; 01 (320x350,640x350) */
1515         {9,1049,0,769},    /* ; 02 (360x400,720x400) */
1516         {9,1049,0,769},    /* ; 03 (720x350) */
1517         {9,1049,0,769},    /* ; 04 (640x480x75Hz) */
1518         {9,1049,0,769},    /* ; 05 (800x600x75Hz) */
1519         {9,1049,0,769}     /* ; 06 (1024x768x75Hz) */
1520 };
1521
1522 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1024x768x75Data[] = /* ;;1024x768x75Hz */
1523 {
1524         {1152,856,622,587},     /* ; 00 (320x200,320x400,640x200,640x400) */
1525         {1152,856,597,562},     /* ; 01 (320x350,640x350) */
1526         {1192,896,622,587},     /* ; 02 (360x400,720x400) */
1527         {1192,896,597,562},     /* ; 03 (720x350) */
1528         {1129,857,656,625},     /* ; 04 (640x480x75Hz) */
1529         {1209,937,716,685},     /* ; 05 (800x600x75Hz) */
1530         {9,1049,0,769}          /* ; 06 (1024x768x75Hz) */
1531 };
1532
1533 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDLDes1280x1024x75Data[] =         /* ;;1280x1024x75Hz */
1534 {
1535         {18,1314,0,1025     },/* ; 00 (320x200,320x400,640x200,640x400) */
1536         {18,1314,0,1025     },/* ; 01 (320x350,640x350) */
1537         {18,1314,0,1025     },/* ; 02 (360x400,720x400) */
1538         {18,1314,0,1025     },/* ; 03 (720x350) */
1539         {18,1314,0,1025     },/* ; 04 (640x480x60Hz) */
1540         {18,1314,0,1025     },/* ; 05 (800x600x60Hz) */
1541         {18,1314,0,1025     },/* ; 06 (1024x768x60Hz) */
1542         {18,1314,0,1025     }/* ; 07 (1280x1024x60Hz) */
1543 };
1544
1545 static struct XGI330_LCDDataDesStruct  XGI_StLCDDLDes1280x1024x75Data[] =
1546 {
1547         {18,1314,0,1025     },/* ; 00 (320x200,320x400,640x200,640x400) */
1548         {18,1314,0,1025     },/* ; 01 (320x350,640x350) */
1549         {18,1314,0,1025     },/* ; 02 (360x400,720x400) */
1550         {18,1314,0,1025     },/* ; 03 (720x350) */
1551         {18,1314,0,1025     },/* ; 04 (640x480x60Hz) */
1552         {18,1314,0,1025     },/* ; 05 (800x600x60Hz) */
1553         {18,1314,0,1025     },/* ; 06 (1024x768x60Hz) */
1554         {18,1314,0,1025     }/* ; 07 (1280x1024x60Hz) */
1555 };
1556
1557 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDLDes1280x1024x75Data[] =      /* 1280x1024x75Hz */
1558 {
1559         {1368,1008,752,711},    /* ; 00 (320x200,320x400,640x200,640x400) */
1560         {1368,1008,729,688},    /* ; 01 (320x350,640x350) */
1561         {1408,1048,752,711},    /* ; 02 (360x400,720x400) */
1562         {1408,1048,729,688},    /* ; 03 (720x350) */
1563         {1377,985,794,753},    /* ; 04 (640x480x75Hz) */
1564         {1457,1065,854,813},    /* ; 05 (800x600x75Hz) */
1565         {1569,1177,938,897},    /* ; 06 (1024x768x75Hz) */
1566         {18,1314,0,1025}          /* ; 07 (1280x1024x75Hz) */
1567 };
1568
1569 static struct XGI330_LCDDataDesStruct  XGI_ExtLCDDes1280x1024x75Data[] =         /* ;;1280x1024x75Hz */
1570 {
1571         {9,1305,0,1025},/* ; 00 (320x200,320x400,640x200,640x400) */
1572         {9,1305,0,1025},/* ; 01 (320x350,640x350) */
1573         {9,1305,0,1025},/* ; 02 (360x400,720x400) */
1574         {9,1305,0,1025},/* ; 03 (720x350) */
1575         {9,1305,0,1025},/* ; 04 (640x480x60Hz) */
1576         {9,1305,0,1025},/* ; 05 (800x600x60Hz) */
1577         {9,1305,0,1025},/* ; 06 (1024x768x60Hz) */
1578         {9,1305,0,1025} /* ; 07 (1280x1024x60Hz) */
1579 };
1580
1581 static struct XGI330_LCDDataDesStruct  XGI_StLCDDes1280x1024x75Data[] =
1582 {
1583         {9,1305,0,1025},/* ; 00 (320x200,320x400,640x200,640x400) */
1584         {9,1305,0,1025},/* ; 01 (320x350,640x350) */
1585         {9,1305,0,1025},/* ; 02 (360x400,720x400) */
1586         {9,1305,0,1025},/* ; 03 (720x350) */
1587         {9,1305,0,1025},/* ; 04 (640x480x60Hz) */
1588         {9,1305,0,1025},/* ; 05 (800x600x60Hz) */
1589         {9,1305,0,1025},/* ; 06 (1024x768x60Hz) */
1590         {9,1305,0,1025} /* ; 07 (1280x1024x60Hz) */
1591 };
1592
1593 static struct XGI330_LCDDataDesStruct  XGI_CetLCDDes1280x1024x75Data[] =        /* 1280x1024x75Hz */
1594 {
1595         {1368,1008,752,711},    /* ; 00 (320x200,320x400,640x200,640x400) */
1596         {1368,1008,729,688},    /* ; 01 (320x350,640x350) */
1597         {1408,1048,752,711},    /* ; 02 (360x400,720x400) */
1598         {1408,1048,729,688},    /* ; 03 (720x350) */
1599         {1377,985,794,753},    /* ; 04 (640x480x75Hz) */
1600         {1457,1065,854,813},    /* ; 05 (800x600x75Hz) */
1601         {1569,1177,938,897},    /* ; 06 (1024x768x75Hz) */
1602         {9,1305,0,1025}           /* ; 07 (1280x1024x75Hz) */
1603 };
1604
1605 static struct XGI330_LCDDataDesStruct2 XGI_NoScalingDesDatax75[] = /* Scaling LCD 75Hz */
1606 {
1607         {9,657,448,405,96,2},   /* ; 00 (320x200,320x400,640x200,640x400) */
1608         {9,657,448,355,96,2},   /* ; 01 (320x350,640x350) */
1609         {9,738,448,405,108,2},   /* ; 02 (360x400,720x400) */
1610         {9,738,448,355,108,2},   /* ; 03 (720x350) */
1611         {9,665,0,481,64,3},   /* ; 04 (640x480x75Hz) */
1612         {9,825,0,601,80,3},   /* ; 05 (800x600x75Hz) */
1613         {9,1049,0,769,96,3},   /* ; 06 (1024x768x75Hz) */
1614         {9,1305,0,1025,144,3},   /* ; 07 (1280x1024x75Hz) */
1615         {9,1457,0,1051,112,3},   /* ; 08 (1400x1050x60Hz) ;;[ycchen] 12/19/02 */
1616         {9,1673,0,1201,192,3},   /* ; 09 (1600x1200x75Hz) */
1617         {9,1337,0,771,112,6}    /* ; 0A (1280x768x60Hz) */
1618 };
1619
1620 static struct XGI330_TVDataStruct  XGI_StPALData[] =
1621 {
1622  {    1,   1, 864, 525,1270, 400, 100,   0, 760},
1623  {    1,   1, 864, 525,1270, 350, 100,   0, 760},
1624  {    1,   1, 864, 525,1270, 400,   0,   0, 720},
1625  {    1,   1, 864, 525,1270, 350,   0,   0, 720},
1626  {    1,   1, 864, 525,1270, 480,  50,   0, 760},
1627  {    1,   1, 864, 525,1270, 600,  50,   0,   0}
1628 };
1629
1630 static struct XGI330_TVDataStruct  XGI_ExtPALData[] =
1631 {
1632  {    2,   1,1080, 463,1270, 500,  50,   0,  50},
1633  {   15,   7,1152, 413,1270, 500,  50,   0,  50},
1634  {    2,   1,1080, 463,1270, 500,  50,   0,  50},
1635  {   15,   7,1152, 413,1270, 500,  50,   0,  50},
1636  {    2,   1, 900, 543,1270, 500,   0,   0,  50},
1637  {    4,   3,1080, 663,1270, 500, 438,   0, 438},
1638  {    1,   1,1125, 831,1270, 500, 686,   0, 686},     /*301b*/
1639  {    3,   2,1080, 619,1270, 540, 438,   0, 438}
1640 };
1641
1642 static struct XGI330_TVDataStruct  XGI_StNTSCData[] =
1643 {
1644  {    1,   1, 858, 525,1270, 400,  50,   0, 760},
1645  {    1,   1, 858, 525,1270, 350,  50,   0, 640},
1646  {    1,   1, 858, 525,1270, 400,   0,   0, 720},
1647  {    1,   1, 858, 525,1270, 350,   0,   0, 720},
1648  {    1,   1, 858, 525,1270, 480,   0,   0, 760}
1649 };
1650
1651 static struct XGI330_TVDataStruct  XGI_ExtNTSCData[] =
1652 {
1653  {    9,  5, 1001, 453,1270, 420, 171,   0, 171},
1654  {   12,  5,  858, 403,1270, 420, 171,   0, 171},
1655  {    9,  5, 1001, 453,1270, 420, 171,   0, 171},
1656  {   12,  5,  858, 403,1270, 420, 171,   0, 171},
1657  {  143,  80, 836, 523,1270, 420, 224,   0,   0},
1658  {  143, 120,1008, 643,1270, 420,   0,   1,   0},
1659  {   1,    1,1120, 821,1516, 420,   0,   1,   0}, /*301b*/
1660  {    2,   1, 858, 503,1584, 480,   0,   1,   0},
1661  {    3,   2,1001, 533,1270, 420,   0,   0,   0}
1662 };
1663
1664 static struct XGI330_TVDataStruct  XGI_St1HiTVData[] =
1665 {
1666         {        1,1,892,563,690,800,0,0,0               }, /* 00 (320x200,320x400,640x200,640x400) */
1667         {        1,1,892,563,690,700,0,0,0               }, /* 01 (320x350,640x350) */
1668         {        1,1,1000,563,785,800,0,0,0              }, /* 02 (360x400,720x400) */
1669         {        1,1,1000,563,785,700,0,0,0              }, /* 03 (720x350) */
1670         {        1,1,892,563,690,960,0,0,0               }, /* 04 (320x240,640x480) */
1671         {        8,5,1050,683,1648,960,0x150,1,0         }  /* 05 (400x300,800x600) */
1672 };
1673
1674 static struct XGI330_TVDataStruct  XGI_St2HiTVData[] =
1675 {
1676         {        3,1,840,483,1648,960,0x032,0,0          }, /* 00 (320x200,320x400,640x200,640x400) */
1677         {        1,1,892,563,690,700,0,0,0               }, /* 01 (320x350,640x350) */
1678         {        3,1,840,483,1648,960,0x032,0,0          }, /* 02 (360x400,720x400) */
1679         {        1,1,1000,563,785,700,0,0,0              }, /* 03 (720x350) */
1680         {        5,2,840,563,1648,960,0x08D,1,0          }, /* 04 (320x240,640x480) */
1681         {        8,5,1050,683,1648,960,0x17C,1,0         }  /* 05 (400x300,800x600) */
1682
1683 };
1684
1685 static struct XGI330_TVDataStruct  XGI_ExtHiTVData[] =
1686 {
1687         {        6,1,840,563,1632,960,0,0,0              }, /* 00 (320x200,320x400,640x200,640x400) */
1688         {        3,1,960,563,1632,960,0,0,0              }, /* 01 (320x350,640x350) */
1689         {        3,1,840,483,1632,960,0,0,0              }, /* 02 (360x400,720x400) */
1690         {        3,1,960,563,1632,960,0,0,0              }, /* 03 (720x350) */
1691         {        5,1,840,563,1648,960,0x166,1,0          }, /* 04 (320x240,640x480) */
1692         {        16,5,1050,683,1648,960,0x143,1,0        }, /* 05 (400x300,800x600) */
1693         {        25,12,1260,851,1648,960,0x032,0,0       }, /* 06 (512x384,1024x768) */
1694         {        5,4,1575,1124,1648,960,0x128,0,0        }, /* 07 (1280x1024) */
1695         {        4,1,1050,563,1548,960,0x143,1,0         }, /* 08 (800x480) */
1696         {        5,2,1400,659,1648,960,0x032,0,0         }, /* 09 (1024x576) */
1697         {        8,5,1750,803,1648,960,0x128,0,0         }  /* 0A (1280x720) */
1698
1699 };
1700
1701 static struct XGI330_TVDataStruct  XGI_ExtYPbPr525iData[] =
1702 {
1703  {    9,  5, 1001, 453,1270, 420, 171,   0, 171},
1704  {   12,  5,  858, 403,1270, 420, 171,   0, 171},
1705  {    9,  5, 1001, 453,1270, 420, 171,   0, 171},
1706  {   12,  5,  858, 403,1270, 420, 171,   0, 171},
1707  {  143,  80, 836, 523,1250, 420, 224,   0,   0},
1708  {  143, 120,1008, 643,1250, 420,   0,   1,   0},
1709  {   1,    1,1120, 821,1516, 420,   0,   1,   0}, /*301b*/
1710  {    2,   1, 858, 503,1584, 480,   0,   1,   0},
1711  {    3,   2,1001, 533,1250, 420,   0,   0,   0}
1712 };
1713
1714 static struct XGI330_TVDataStruct  XGI_StYPbPr525iData[] =
1715 {
1716  {    1,   1, 858, 525,1270, 400,  50,   0, 760},
1717  {    1,   1, 858, 525,1270, 350,  50,   0, 640},
1718  {    1,   1, 858, 525,1270, 400,   0,   0, 720},
1719  {    1,   1, 858, 525,1270, 350,   0,   0, 720},
1720  {    1,   1, 858, 525,1270, 480,   0,   0, 760},
1721 };
1722
1723 static struct XGI330_TVDataStruct  XGI_ExtYPbPr525pData[] =
1724 {
1725  {    9,  5, 1001, 453,1270, 420, 171,   0, 171},
1726  {   12,  5,  858, 403,1270, 420, 171,   0, 171},
1727  {    9,  5, 1001, 453,1270, 420, 171,   0, 171},
1728  {   12,  5,  858, 403,1270, 420, 171,   0, 171},
1729  {  143,  80, 836, 523,1270, 420, 224,   0,   0},
1730  {  143, 120,1008, 643,1270, 420,   0,   1,   0},
1731  {   1,    1,1120, 821,1516, 420,   0,   1,   0}, /*301b*/
1732  {    2,   1, 858, 503,1584, 480,   0,   1,   0},
1733  {    3,   2,1001, 533,1270, 420,   0,   0,   0}
1734  };
1735
1736 static struct XGI330_TVDataStruct  XGI_StYPbPr525pData[] =
1737 {
1738  {    1,   1,1716, 525,1270, 400,  50,   0, 760},
1739  {    1,   1,1716, 525,1270, 350,  50,   0, 640},
1740  {    1,   1,1716, 525,1270, 400,   0,   0, 720},
1741  {    1,   1,1716, 525,1270, 350,   0,   0, 720},
1742  {    1,   1,1716, 525,1270, 480,   0,   0, 760},
1743 };
1744
1745 static struct XGI330_TVDataStruct  XGI_ExtYPbPr750pData[] =
1746 {
1747  {    3,   1, 935, 470,1130, 680,  50,   0,   0},       /* 00 (320x200,320x400,640x200,640x400) */
1748  {   24,   7, 935, 420,1130, 680,  50,   0,   0},       /* 01 (320x350,640x350) */
1749  {    3,   1, 935, 470,1130, 680,  50,   0,   0},       /* 02 (360x400,720x400) */
1750  {   24,   7, 935, 420,1130, 680,  50,   0,   0},       /* 03 (720x350) */
1751  {    2,   1,1100, 590,1130, 640,  50,   0,   0},       /* 04 (320x240,640x480) */
1752  {    3,   2,1210, 690,1130, 660,  50,   0,   0},       /* 05 (400x300,800x600) */
1753  {    1,   1,1375, 878,1130, 640, 638,   0,   0},       /* 06 (1024x768) */
1754  {    2,   1, 858, 503,1130, 480,   0,   1,   0},        /* 07 (720x480) */
1755  {    5,   4,1815, 570,1130, 660,  50,   0,   0},
1756  {    5,   3,1100, 686,1130, 640,  50,   1,   0},
1757  {   10,   9,1320, 830,1130, 640,  50,   0,   0}
1758 };
1759
1760 static struct XGI330_TVDataStruct  XGI_StYPbPr750pData[] =
1761 {
1762  {    1,   1,1650, 750,1280, 400,  50,   0, 760},
1763  {    1,   1,1650, 750,1280, 350,  50,   0, 640},
1764  {    1,   1,1650, 750,1280, 400,   0,   0, 720},
1765  {    1,   1,1650, 750,1280, 350,   0,   0, 720},
1766  {    1,   1,1650, 750,1280, 480,   0,   0, 760},
1767 };
1768
1769 static unsigned char XGI330_NTSCTiming[] = {
1770   0x17,0x1d,0x03,0x09,0x05,0x06,0x0c,0x0c,
1771   0x94,0x49,0x01,0x0a,0x06,0x0d,0x04,0x0a,
1772   0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x1b,
1773   0x0c,0x50,0x00,0x97,0x00,0xda,0x4a,0x17,
1774   0x7d,0x05,0x4b,0x00,0x00,0xe2,0x00,0x02,
1775   0x03,0x0a,0x65,0x9d,0x08,0x92,0x8f,0x40,
1776   0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x50,
1777   0x00,0x40,0x44,0x00,0xdb,0x02,0x3b,0x00};
1778
1779 static unsigned char XGI330_PALTiming[] = {
1780   0x21,0x5A,0x35,0x6e,0x04,0x38,0x3d,0x70,
1781   0x94,0x49,0x01,0x12,0x06,0x3e,0x35,0x6d,
1782   0x06,0x14,0x3e,0x35,0x6d,0x00,0x45,0x2b,
1783   0x70,0x50,0x00,0x9b,0x00,0xd9,0x5d,0x17,
1784   0x7d,0x05,0x45,0x00,0x00,0xe8,0x00,0x02,
1785   0x0d,0x00,0x68,0xb0,0x0b,0x92,0x8f,0x40,
1786   0x60,0x80,0x14,0x90,0x8c,0x60,0x14,0x63,
1787   0x00,0x40,0x3e,0x00,0xe1,0x02,0x28,0x00};
1788
1789 static unsigned char XGI330_HiTVExtTiming[] =
1790 {
1791       0x2D,0x60,0x2C,0x5F,0x08,0x31,0x3A,0x64,
1792       0x28,0x02,0x01,0x3D,0x06,0x3E,0x35,0x6D,
1793       0x06,0x14,0x3E,0x35,0x6D,0x00,0xC5,0x3F,
1794       0x64,0x90,0x33,0x8C,0x18,0x36,0x3E,0x13,
1795       0x2A,0xDE,0x2A,0x44,0x40,0x2A,0x44,0x40,
1796       0x8E,0x8E,0x82,0x07,0x0B,
1797       0x92,0x0F,0x40,0x60,0x80,0x14,0x90,0x8C,
1798       0x60,0x14,0x3D,0x63,0x4F,
1799       0x27,0x00,0xfc,0xff,0x6a,0x00
1800
1801 };
1802
1803 static unsigned char XGI330_HiTVSt1Timing[] =
1804 {
1805       0x32,0x65,0x2C,0x5F,0x08,0x31,0x3A,0x65,
1806       0x28,0x02,0x01,0x3D,0x06,0x3E,0x35,0x6D,
1807       0x06,0x14,0x3E,0x35,0x6D,0x00,0xC5,0x3F,
1808       0x65,0x90,0x7B,0xA8,0x03,0xF0,0x87,0x03,
1809       0x11,0x15,0x11,0xCF,0x10,0x11,0xCF,0x10,
1810       0x35,0x35,0x3B,0x69,0x1D,
1811       0x92,0x0F,0x40,0x60,0x80,0x14,0x90,0x8C,
1812       0x60,0x04,0x86,0xAF,0x5D,
1813       0x0E,0x00,0xfc,0xff,0x2d,0x00
1814 };
1815
1816 static unsigned char XGI330_HiTVSt2Timing[] =
1817 {
1818       0x32,0x65,0x2C,0x5F,0x08,0x31,0x3A,0x64,
1819       0x28,0x02,0x01,0x3D,0x06,0x3E,0x35,0x6D,
1820       0x06,0x14,0x3E,0x35,0x6D,0x00,0xC5,0x3F,
1821       0x64,0x90,0x33,0x8C,0x18,0x36,0x3E,0x13,
1822       0x2A,0xDE,0x2A,0x44,0x40,0x2A,0x44,0x40,
1823       0x8E,0x8E,0x82,0x07,0x0B,
1824       0x92,0x0F,0x40,0x60,0x80,0x14,0x90,0x8C,
1825       0x60,0x14,0x3D,0x63,0x4F,
1826       0x27,0x00,0xFC,0xff,0x6a,0x00
1827 };
1828
1829 static unsigned char XGI330_HiTVTextTiming[] =
1830 {
1831       0x32,0x65,0x2C,0x5F,0x08,0x31,0x3A,0x65,
1832       0x28,0x02,0x01,0x3D,0x06,0x3E,0x35,0x6D,
1833       0x06,0x14,0x3E,0x35,0x6D,0x00,0xC5,0x3F,
1834       0x65,0x90,0xE7,0xBC,0x03,0x0C,0x97,0x03,
1835       0x14,0x78,0x14,0x08,0x20,0x14,0x08,0x20,
1836       0xC8,0xC8,0x3B,0xD2,0x26,
1837       0x92,0x0F,0x40,0x60,0x80,0x14,0x90,0x8C,
1838       0x60,0x04,0x96,0x72,0x5C,
1839       0x11,0x00,0xFC,0xFF,0x32,0x00
1840 };
1841
1842 static unsigned char XGI330_YPbPr750pTiming[] =
1843 {
1844       0x30,0x1d,0xe8,0x09,0x09,0xed,0x0c,0x0c,
1845       0x98,0x0a,0x01,0x0c,0x06,0x0d,0x04,0x0a,
1846       0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
1847       0xed,0x50,0x70,0x9f,0x16,0x59,0x60,0x13,
1848       0x27,0x0b,0x27,0xfc,0x30,0x27,0x1c,0xb0,
1849       0x4b,0x4b,0x6f,0x2f,0x63,
1850       0x92,0x0F,0x40,0x60,0x80,0x14,0x90,0x8C,
1851       0x60,0x14,0x73,0x00,0x40,
1852       0x11,0x00,0xfc,0xff,0x32,0x00
1853 };
1854
1855 static unsigned char XGI330_YPbPr525pTiming[] =
1856 {
1857       0x3E,0x11,0x06,0x09,0x0b,0x0c,0x0c,0x0c,
1858       0x98,0x0a,0x01,0x0d,0x06,0x0d,0x04,0x0a,
1859       0x06,0x14,0x0d,0x04,0x0a,0x00,0x85,0x3f,
1860       0x0c,0x50,0xb2,0x9f,0x16,0x59,0x4f,0x13,
1861       0xad,0x11,0xad,0x1d,0x40,0x8a,0x3d,0xb8,
1862       0x51,0x5e,0x60,0x49,0x7d,
1863       0x92,0x0F,0x40,0x60,0x80,0x14,0x90,0x8C,
1864       0x60,0x14,0x4B,0x43,0x41,
1865       0x11,0x00,0xFC,0xFF,0x32,0x00
1866 };
1867
1868 static unsigned char XGI330_YPbPr525iTiming[] =
1869 {
1870       0x1B,0x21,0x03,0x09,0x05,0x06,0x0C,0x0C,
1871       0x94,0x49,0x01,0x0A,0x06,0x0D,0x04,0x0A,
1872       0x06,0x14,0x0D,0x04,0x0A,0x00,0x85,0x1B,
1873       0x0C,0x50,0x00,0x97,0x00,0xDA,0x4A,0x17,
1874       0x7D,0x05,0x4B,0x00,0x00,0xE2,0x00,0x02,
1875       0x03,0x0A,0x65,0x9D,0x08,
1876       0x92,0x8F,0x40,0x60,0x80,0x14,0x90,0x8C,
1877       0x60,0x14,0x4B,0x00,0x40,
1878       0x44,0x00,0xDB,0x02,0x3B,0x00
1879
1880 };
1881
1882 static unsigned char XGI330_HiTVGroup3Data[] =
1883 {
1884       0x00,0x1A,0x22,0x63,0x62,0x22,0x08,0x5F,
1885       0x05,0x21,0xB2,0xB2,0x55,0x77,0x2A,0xA6,
1886       0x25,0x2F,0x47,0xFA,0xC8,0xFF,0x8E,0x20,
1887       0x8C,0x6E,0x60,0x2E,0x58,0x48,0x72,0x44,
1888       0x56,0x36,0x4F,0x6E,0x3F,0x80,0x00,0x80,
1889       0x4F,0x7F,0x03,0xA8,0x7D,0x20,0x1A,0xA9,
1890       0x14,0x05,0x03,0x7E,0x64,0x31,0x14,0x75,
1891       0x18,0x05,0x18,0x05,0x4C,0xA8,0x01
1892 };
1893
1894 static unsigned char XGI330_HiTVGroup3Simu[] =
1895 {
1896       0x00,0x1A,0x22,0x63,0x62,0x22,0x08,0x95,
1897       0xDB,0x20,0xB8,0xB8,0x55,0x47,0x2A,0xA6,
1898       0x25,0x2F,0x47,0xFA,0xC8,0xFF,0x8E,0x20,
1899       0x8C,0x6E,0x60,0x15,0x26,0xD3,0xE4,0x11,
1900       0x56,0x36,0x4F,0x6E,0x3F,0x80,0x00,0x80,
1901       0x67,0x36,0x01,0x47,0x0E,0x10,0xBE,0xB4,
1902       0x01,0x05,0x03,0x7E,0x65,0x31,0x14,0x75,
1903       0x18,0x05,0x18,0x05,0x4C,0xA8,0x01
1904 };
1905
1906 static unsigned char XGI330_HiTVGroup3Text[] =
1907 {
1908       0x00,0x1A,0x22,0x63,0x62,0x22,0x08,0xA7,
1909       0xF5,0x20,0xCE,0xCE,0x55,0x47,0x2A,0xA6,
1910       0x25,0x2F,0x47,0xFA,0xC8,0xFF,0x8E,0x20,
1911       0x8C,0x6E,0x60,0x18,0x2C,0x0C,0x20,0x22,
1912       0x56,0x36,0x4F,0x6E,0x3F,0x80,0x00,0x80,
1913       0x93,0x3C,0x01,0x50,0x2F,0x10,0xF4,0xCA,
1914       0x01,0x05,0x03,0x7E,0x65,0x31,0x14,0x75,
1915       0x18,0x05,0x18,0x05,0x4C,0xA8,0x01
1916 };
1917
1918 static unsigned char XGI330_Ren525pGroup3[] =
1919 {
1920   0x00,0x14,0x15,0x25,0x55,0x15,0x0b,0x13,
1921   0xB1,0x41,0x62,0x62,0xFF,0xF4,0x45,0xa6,
1922   0x25,0x2F,0x67,0xF6,0xbf,0xFF,0x8E,0x20,
1923   0xAC,0xDA,0x60,0xFe,0x6A,0x9A,0x06,0x10,
1924   0xd1,0x04,0x18,0x0a,0xFF,0x80,0x00,0x80,
1925   0x3c,0x77,0x00,0xEF,0xE0,0x10,0xB0,0xE0,
1926   0x10,0x4F,0x0F,0x0F,0x05,0x0F,0x08,0x6E,
1927   0x1a,0x1F,0x25,0x2a,0x4C,0xAA,0x01
1928 };
1929
1930 static unsigned char XGI330_Ren750pGroup3[] =
1931 {
1932   0x00,0x14,0x15,0x25,0x55,0x15,0x0b,0x7a,
1933   0x54,0x41,0xE7,0xE7,0xFF,0xF4,0x45,0xa6,
1934   0x25,0x2F,0x67,0xF6,0xbf,0xFF,0x8E,0x20,
1935   0xAC,0x6A,0x60,0x2b,0x52,0xCD,0x61,0x10,
1936   0x51,0x04,0x18,0x0a,0x1F,0x80,0x00,0x80,
1937   0xFF,0xA4,0x04,0x2B,0x94,0x21,0x72,0x94,
1938   0x26,0x05,0x01,0x0F,0xed,0x0F,0x0A,0x64,
1939   0x18,0x1D,0x23,0x28,0x4C,0xAA,0x01
1940 };
1941
1942 #if 0
1943 static struct XGI_PanelDelayTblStruct XGI330_PanelDelayTbl[] =
1944 {
1945 {{0x00,0x00}},
1946 {{0x00,0x00}},
1947 {{0x00,0x00}},
1948 {{0x00,0x00}},
1949 {{0x00,0x00}},
1950 {{0x00,0x00}},
1951 {{0x00,0x00}},
1952 {{0x00,0x00}},
1953 {{0x00,0x00}},
1954 {{0x00,0x00}},
1955 {{0x00,0x00}},
1956 {{0x00,0x00}},
1957 {{0x00,0x00}},
1958 {{0x00,0x00}},
1959 {{0x00,0x00}},
1960 {{0x00,0x00}}
1961 };
1962
1963 static struct XGI330_LVDSDataStruct  XGI330_LVDS320x480Data_1[] =
1964 {
1965  {848, 433,400,525},
1966  {848, 389,400,525},
1967  {848, 433,400,525},
1968  {848, 389,400,525},
1969  {848, 518,400, 525},
1970  {1056, 628,400,525},
1971  {400, 525,400,525},
1972  {800, 449,1000, 644},
1973  {800, 525,1000, 635}
1974 };
1975
1976 static struct XGI330_LVDSDataStruct  XGI330_LVDS800x600Data_1[] =
1977 {
1978  {848, 433,1060, 629},
1979  {848, 389,1060, 629},
1980  {848, 433,1060, 629},
1981  {848, 389,1060, 629},
1982  {848, 518,1060, 629},
1983  {1056, 628,1056, 628},
1984  {1056, 628,1056, 628},
1985  {800, 449,1000, 644},
1986  {800, 525,1000, 635}
1987 };
1988
1989 static struct XGI330_LVDSDataStruct  XGI330_LVDS800x600Data_2[] =
1990 {
1991  {1056, 628,1056, 628},
1992  {1056, 628,1056, 628},
1993  {1056, 628,1056, 628},
1994  {1056, 628,1056, 628},
1995  {1056, 628,1056, 628},
1996  {1056, 628,1056, 628},
1997  {1056, 628,1056, 628},
1998  {800, 449,1000, 644},
1999  {800, 525,1000, 635}
2000 };
2001 #endif
2002
2003 static struct XGI330_LVDSDataStruct  XGI_LVDS1024x768Data_1[] =
2004 {
2005  { 960 , 438 , 1344 , 806 } ,   /* 00 (320x200,320x400,640x200,640x400) */
2006  { 960 , 388 , 1344 , 806 } ,   /* 01 (320x350,640x350) */
2007  { 1040, 438 , 1344 , 806 } ,   /* 02 (360x400,720x400) */
2008  { 1040, 388 , 1344 , 806 } ,   /* 03 (720x350) */
2009  { 960 , 518 , 1344 , 806 } ,   /* 04 (320x240,640x480) */
2010  {1120 , 638 , 1344 , 806 } ,   /* 05 (400x300,800x600) */
2011  {1344 , 806 , 1344 , 806 }     /* 06 (512x384,1024x768) */
2012 };
2013
2014
2015 static struct XGI330_LVDSDataStruct  XGI_LVDS1024x768Data_2[] =
2016 {
2017  {1344, 806,1344, 806},
2018  {1344, 806,1344, 806},
2019  {1344, 806,1344, 806},
2020  {1344, 806,1344, 806},
2021  {1344, 806,1344, 806},
2022  {1344, 806,1344, 806},
2023  {1344, 806,1344, 806},
2024  {800, 449,1280, 801},
2025  {800, 525,1280, 813}
2026 };
2027
2028 static struct XGI330_LVDSDataStruct  XGI_LVDS1280x1024Data_1[] =
2029 {
2030  {1048, 442,1688, 1066},
2031  {1048, 392,1688, 1066},
2032  {1048, 442,1688, 1066},
2033  {1048, 392,1688, 1066},
2034  {1048, 522,1688, 1066},
2035  {1208, 642,1688, 1066},
2036  {1432, 810,1688, 1066},
2037  {1688, 1066,1688, 1066}
2038 };
2039
2040 static struct XGI330_LVDSDataStruct  XGI_LVDS1280x1024Data_2[] =
2041 {
2042  {1344, 806,1344, 806},
2043  {1344, 806,1344, 806},
2044  {1344, 806,1344, 806},
2045  {1344, 806,1344, 806},
2046  {1344, 806,1344, 806},
2047  {1344, 806,1344, 806},
2048  {1344, 806,1344, 806},
2049  {800, 449,1280, 801},
2050  {800, 525,1280, 813}
2051 };
2052 /*
2053 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768Data_1[] =
2054 {
2055  {768,438,1408,806},
2056  {768,388,1408,806},
2057  {768,438,1408,806},
2058  {768,388,1408,806},
2059  {768,518,1408,806},
2060  {928,638,1408,806},
2061  {1408,806,1408,806},
2062  {1408,806,1408,806},
2063  {1408,806,1408,806}
2064 };
2065
2066 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768Data_2[] =
2067 {
2068  {1408, 806,1408, 806},
2069  {1408, 806,1408, 806},
2070  {1408, 806,1408, 806},
2071  {1408, 806,1408, 806},
2072  {1408, 806,1408, 806},
2073  {1408, 806,1408, 806},
2074  {1408, 806,1408, 806},
2075  {1408, 806,1408, 806},
2076  {1408, 806,1408, 806}
2077 };
2078
2079 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768NData_1[] =
2080 {
2081  {704, 438,1344, 806},
2082  {704, 388,1344, 806},
2083  {704, 438,1344, 806},
2084  {704, 388,1344, 806},
2085  {704, 518,1344, 806},
2086  {864, 638,1344, 806},
2087  {1088, 806,1344, 806},
2088  {1344, 806,1344, 806},
2089  {1344, 806,1344, 806}
2090 };
2091
2092 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768NData_2[] =
2093 {
2094  {1344, 806,1344, 806},
2095  {1344, 806,1344, 806},
2096  {1344, 806,1344, 806},
2097  {1344, 806,1344, 806},
2098  {1344, 806,1344, 806},
2099  {1344, 806,1344, 806},
2100  {1344, 806,1344, 806},
2101  {1344, 806,1344, 806},
2102  {1344, 806,1344, 806}
2103 };
2104
2105 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768SData_1[] =
2106 {
2107  {1048,438,1688,806},
2108  {1048,388,1688,806},
2109  {1148,438,1688,806},
2110  {1148,388,1688,806},
2111  {1048,518,1688,806},
2112  {1208,638,1688,806},
2113  {1432,806,1688,806},
2114  {1688,806,1688,806},
2115  {1688,806,1688,806}
2116 };
2117
2118 struct XGI330_LVDSDataStruct  XGI_LVDS1280x768SData_2[] =
2119 {
2120  {1688,806,1688,806},
2121  {1688,806,1688,806},
2122  {1688,806,1688,806},
2123  {1688,806,1688,806},
2124  {1688,806,1688,806},
2125  {1688,806,1688,806},
2126  {1688,806,1688,806},
2127  {1688,806,1688,806},
2128  {1688,806,1688,806}
2129 };
2130 */
2131 static struct XGI330_LVDSDataStruct  XGI_LVDS1400x1050Data_1[] =
2132 {
2133  {928,416,1688,1066},
2134  {928,366,1688,1066},
2135  {928,416,1688,1066},
2136  {928,366,1688,1066},
2137  {928,496,1688,1066},
2138  {1088,616,1688,1066},
2139  {1312,784,1688,1066},
2140  {1568,1040,1688,1066},
2141  {1688,1066,1688,1066}
2142 };
2143
2144 static struct XGI330_LVDSDataStruct  XGI_LVDS1400x1050Data_2[] =
2145 {
2146  {1688,1066,1688,1066},
2147  {1688,1066,1688,1066},
2148  {1688,1066,1688,1066},
2149  {1688,1066,1688,1066},
2150  {1688,1066,1688,1066},
2151  {1688,1066,1688,1066},
2152  {1688,1066,1688,1066},
2153  {1688,1066,1688,1066},
2154  {1688,1066,1688,1066}
2155 };
2156
2157 static struct XGI330_LVDSDataStruct XGI_LVDS1600x1200Data_1[] =
2158 {      /* ;;[ycchen] 12/05/02 LCDHTxLCDVT=2048x1320 */
2159         {        1088,520,2048,1320      },/* 00 (320x200,320x400,640x200,640x400) */
2160         {        1088,470,2048,1320      },/* 01 (320x350,640x350) */
2161         {        1088,520,2048,1320      },/* 02 (360x400,720x400) */
2162         {        1088,470,2048,1320      },/* 03 (720x350) */
2163         {        1088,600,2048,1320      },/* 04 (320x240,640x480) */
2164         {        1248,720,2048,1320      },/* 05 (400x300,800x600) */
2165         {        1472,888,2048,1320      },/* 06 (512x384,1024x768) */
2166         {        1728,1144,2048,1320     },/* 07 (640x512,1280x1024) */
2167         {        1848,1170,2048,1320     },/* 08 (1400x1050) */
2168         {        2048,1320,2048,1320     } /* 09 (1600x1200) */
2169 };
2170
2171 static struct XGI330_LVDSDataStruct XGI_LVDSNoScalingData[] =
2172 {
2173         {        800,449,800,449             }, /* 00 (320x200,320x400,640x200,640x400) */
2174         {        800,449,800,449             }, /* 01 (320x350,640x350) */
2175         {        800,449,800,449             }, /* 02 (360x400,720x400) */
2176         {        800,449,800,449             }, /* 03 (720x350) */
2177         {        800,525,800,525             }, /* 04 (640x480x60Hz) */
2178         {        1056,628,1056,628           }, /* 05 (800x600x60Hz) */
2179         {        1344,806,1344,806           }, /* 06 (1024x768x60Hz) */
2180         {        1688,1066,1688,1066         }, /* 07 (1280x1024x60Hz) */
2181         {        1688,1066,1688,1066         }, /* 08 (1400x1050x60Hz) ;;[ycchen] 12/19/02 */
2182         {        2160,1250,2160,1250         }, /* 09 (1600x1200x60Hz) */
2183         {        1688,806,1688,806           }  /* 0A (1280x768x60Hz) */
2184 };
2185
2186 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Data_1x75[] =
2187 {
2188         {960,438,1312,800  }, /* 00 (320x200,320x400,640x200,640x400) */
2189         {960,388,1312,800  }, /* 01 (320x350,640x350) */
2190         {1040,438,1312,800 }, /* 02 (360x400,720x400) */
2191         {1040,388,1312,800 }, /* 03 (720x350) */
2192         {928,512,1312,800  }, /* 04 (320x240,640x480) */
2193         {1088,632,1312,800 }, /* 05 (400x300,800x600) */
2194         {1312,800,1312,800 }, /* 06 (512x384,1024x768) */
2195 };
2196
2197
2198 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Data_2x75[] =
2199 {
2200         {1312,800,1312,800}, /* ; 00 (320x200,320x400,640x200,640x400) */
2201         {1312,800,1312,800}, /* ; 01 (320x350,640x350) */
2202         {1312,800,1312,800}, /* ; 02 (360x400,720x400) */
2203         {1312,800,1312,800}, /* ; 03 (720x350) */
2204         {1312,800,1312,800}, /* ; 04 (320x240,640x480) */
2205         {1312,800,1312,800}, /* ; 05 (400x300,800x600) */
2206         {1312,800,1312,800}, /* ; 06 (512x384,1024x768) */
2207 };
2208
2209 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Data_1x75[] =
2210 {
2211         {1048,442,1688,1066  }, /* ; 00 (320x200,320x400,640x200,640x400) */
2212         {1048,392,1688,1066  }, /* ; 01 (320x350,640x350) */
2213         {1128,442,1688,1066  }, /* ; 02 (360x400,720x400) */
2214         {1128,392,1688,1066  }, /* ; 03 (720x350) */
2215         {1048,522,1688,1066  }, /* ; 04 (320x240,640x480) */
2216         {1208,642,1688,1066  }, /* ; 05 (400x300,800x600) */
2217         {1432,810,1688,1066  }, /* ; 06 (512x384,1024x768) */
2218         {1688,1066,1688,1066 }, /* ; 06; 07 (640x512,1280x1024) */
2219 };
2220
2221 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Data_2x75[] =
2222 {
2223         {1688,1066,1688,1066 }, /* ; 00 (320x200,320x400,640x200,640x400) */
2224         {1688,1066,1688,1066 }, /* ; 01 (320x350,640x350) */
2225         {1688,1066,1688,1066 }, /* ; 02 (360x400,720x400) */
2226         {1688,1066,1688,1066 }, /* ; 03 (720x350) */
2227         {1688,1066,1688,1066 }, /* ; 04 (320x240,640x480) */
2228         {1688,1066,1688,1066 }, /* ; 05 (400x300,800x600) */
2229         {1688,1066,1688,1066 }, /* ; 06 (512x384,1024x768) */
2230         {1688,1066,1688,1066 }, /* ; 06; 07 (640x512,1280x1024) */
2231 };
2232
2233 static struct XGI330_LVDSDataStruct XGI_LVDSNoScalingDatax75[] =
2234 {
2235         {800,449,800,449     }, /* ; 00 (320x200,320x400,640x200,640x400) */
2236         {800,449,800,449     }, /* ; 01 (320x350,640x350) */
2237         {900,449,900,449     }, /* ; 02 (360x400,720x400) */
2238         {900,449,900,449     }, /* ; 03 (720x350) */
2239         {800,500,800,500     }, /* ; 04 (640x480x75Hz) */
2240         {1056,625,1056,625   }, /* ; 05 (800x600x75Hz) */
2241         {1312,800,1312,800   }, /* ; 06 (1024x768x75Hz) */
2242         {1688,1066,1688,1066 }, /* ; 07 (1280x1024x75Hz) */
2243         {1688,1066,1688,1066 }, /* ; 08 (1400x1050x75Hz) ;;[ycchen] 12/19/02 */
2244         {2160,1250,2160,1250 }, /* ; 09 (1600x1200x75Hz) */
2245         {1688,806,1688,806   }, /* ; 0A (1280x768x75Hz) */
2246 };
2247
2248 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_1[] =
2249 {
2250         {      0,1048,   0, 771     }, /* 00 (320x200,320x400,640x200,640x400) */
2251         {      0,1048,   0, 771     }, /* 01 (320x350,640x350) */
2252         {      0,1048,   0, 771     }, /* 02 (360x400,720x400) */
2253         {      0,1048,   0, 771     }, /* 03 (720x350) */
2254         {      0,1048,   0, 771     }, /* 04 (640x480x60Hz) */
2255         {      0,1048,   0, 771     }, /* 05 (800x600x60Hz) */
2256         {      0,1048, 805, 770     }  /* 06 (1024x768x60Hz) */
2257 } ;
2258
2259 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_2[] =
2260 {
2261         {      1142, 856, 622, 587     }, /* 00 (320x200,320x400,640x200,640x400) */
2262         {      1142, 856, 597, 562     }, /* 01 (320x350,640x350) */
2263         {      1142, 856, 622, 587     }, /* 02 (360x400,720x400) */
2264         {      1142, 856, 597, 562     }, /* 03 (720x350) */
2265         {      1142,1048, 722, 687     }, /* 04 (640x480x60Hz) */
2266         {      1232, 936, 722, 687     }, /* 05 (800x600x60Hz) */
2267         {         0,1048, 805, 771     }  /* 06 (1024x768x60Hz) */
2268 };
2269
2270 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_3[] =
2271 {
2272         {       320,  24, 622, 587     }, /* 00 (320x200,320x400,640x200,640x400) */
2273         {       320,  24, 597, 562     }, /* 01 (320x350,640x350) */
2274         {       320,  24, 622, 587     }, /* 02 (360x400,720x400) */
2275         {       320,  24, 597, 562     }, /* 03 (720x350) */
2276         {       320,  24, 722, 687     }  /* 04 (640x480x60Hz) */
2277 };
2278
2279 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_1[] =
2280 {
2281         {      0,1328,    0, 1025     }, /* 00 (320x200,320x400,640x200,640x400) */
2282         {      0,1328,    0, 1025     }, /* 01 (320x350,640x350) */
2283         {      0,1328,    0, 1025     }, /* 02 (360x400,720x400) */
2284         {      0,1328,    0, 1025     }, /* 03 (720x350) */
2285         {      0,1328,    0, 1025     }, /* 04 (640x480x60Hz) */
2286         {      0,1328,    0, 1025     }, /* 05 (800x600x60Hz) */
2287         {      0,1328,    0, 1025     }, /* 06 (1024x768x60Hz) */
2288         {      0,1328, 1065, 1024     }  /* 07 (1280x1024x60Hz) */
2289 };
2290
2291  /* The Display setting for DE Mode Panel */
2292 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_2[] =
2293 {
2294         {      1368,1008,752,711     }, /* 00 (320x200,320x400,640x200,640x400) */
2295         {      1368,1008,729,688     }, /* 01 (320x350,640x350) */
2296         {      1408,1048,752,711     }, /* 02 (360x400,720x400) */
2297         {      1408,1048,729,688     }, /* 03 (720x350) */
2298         {      1368,1008,794,753     }, /* 04 (640x480x60Hz) */
2299         {      1448,1068,854,813     }, /* 05 (800x600x60Hz) */
2300         {      1560,1200,938,897     }, /* 06 (1024x768x60Hz) */
2301         {      0000,1328,0,1025     }  /* 07 (1280x1024x60Hz) */
2302 };
2303
2304 static struct XGI330_LVDSDataStruct XGI_LVDS1400x1050Des_1[] =
2305 {
2306         {      0,1448,0,1051     }, /* 00 (320x200,320x400,640x200,640x400) */
2307         {      0,1448,0,1051     }, /* 01 (320x350,640x350) */
2308         {      0,1448,0,1051     }, /* 02 (360x400,720x400) */
2309         {      0,1448,0,1051     }, /* 03 (720x350) */
2310         {      0,1448,0,1051     }, /* 04 (640x480x60Hz) */
2311         {      0,1448,0,1051     }, /* 05 (800x600x60Hz) */
2312         {      0,1448,0,1051     }, /* 06 (1024x768x60Hz) */
2313         {      0,1448,0,1051     }, /* 07 (1280x1024x60Hz) */
2314         {      0,1448,0,1051     }  /* 08 (1400x1050x60Hz) */
2315 };
2316
2317 static struct XGI330_LVDSDataStruct XGI_LVDS1400x1050Des_2[] =
2318 {
2319         {      1308,1068, 781, 766     }, /* 00 (320x200,320x400,640x200,640x400) */
2320         {      1308,1068, 781, 766     }, /* 01 (320x350,640x350) */
2321         {      1308,1068, 781, 766     }, /* 02 (360x400,720x400) */
2322         {      1308,1068, 781, 766     }, /* 03 (720x350) */
2323         {      1308,1068, 781, 766     }, /* 04 (640x480x60Hz) */
2324         {      1388,1148, 841, 826     }, /* 05 (800x600x60Hz) */
2325         {      1490,1250, 925, 910     }, /* 06 (1024x768x60Hz) */
2326         {      1608,1368,1053,1038     }, /* 07 (1280x1024x60Hz) */
2327         {      0,1448,0,1051     }  /* 08 (1400x1050x60Hz) */
2328 };
2329
2330 static struct XGI330_LVDSDataStruct XGI_LVDS1600x1200Des_1[] =
2331 {
2332         {      0,1664,0,1201     }, /* 00 (320x200,320x400,640x200,640x400) */
2333         {      0,1664,0,1201     }, /* 01 (320x350,640x350) */
2334         {      0,1664,0,1201     }, /* 02 (360x400,720x400) */
2335         {      0,1664,0,1201     }, /* 03 (720x350) */
2336         {      0,1664,0,1201     }, /* 04 (640x480x60Hz) */
2337         {      0,1664,0,1201     }, /* 05 (800x600x60Hz) */
2338         {      0,1664,0,1201     }, /* 06 (1024x768x60Hz) */
2339         {      0,1664,0,1201     }, /* 07 (1280x1024x60Hz) */
2340         {      0,1664,0,1201     }, /* 08 (1400x1050x60Hz) */
2341         {      0,1664,0,1201     }  /* 09 (1600x1200x60Hz) */
2342 };
2343
2344
2345
2346 static struct XGI330_LCDDataDesStruct2  XGI_LVDSNoScalingDesData[] =
2347 {
2348         {     0, 648, 448, 405,  96,   2   }, /* 00 (320x200,320x400,640x200,640x400) */
2349         {     0, 648, 448, 355,  96,   2   }, /* 01 (320x350,640x350) */
2350         {     0, 648, 448, 405,  96,   2   }, /* 02 (360x400,720x400) */
2351         {     0, 648, 448, 355,  96,   2   }, /* 03 (720x350) */
2352         {     0, 648,  1, 483,  96,   2   }, /* 04 (640x480x60Hz) */
2353         {     0, 840, 627, 600, 128,   4   }, /* 05 (800x600x60Hz) */
2354         {     0,1048, 805, 770, 136,   6   }, /* 06 (1024x768x60Hz) */
2355         {     0,1328,0,1025, 112,   3   }, /* 07 (1280x1024x60Hz) */
2356         {     0,1438,0,1051, 112,   3   }, /* 08 (1400x1050x60Hz) ;;[ycchen] 12/19/02 */
2357         {     0,1664,0,1201, 192,   3   }, /* 09 (1600x1200x60Hz) */
2358         {     0,1328,0,0771, 112,   6   }  /* 0A (1280x768x60Hz) */
2359 };
2360
2361 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_1x75[] =                        /* ; 1024x768 Full-screen */
2362 {
2363         {0,1040,0,769}, /* ; 00 (320x200,320x400,640x200,640x400) */
2364         {0,1040,0,769}, /* ; 01 (320x350,640x350) */
2365         {0,1040,0,769}, /* ; 02 (360x400,720x400) */
2366         {0,1040,0,769}, /* ; 03 (720x350) */
2367         {0,1040,0,769}, /* ; 04 (640x480x75Hz) */
2368         {0,1040,0,769}, /* ; 05 (800x600x75Hz) */
2369         {0,1040,0,769} /* ; 06 (1024x768x75Hz) */
2370 };
2371
2372 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_2x75[] = /* ; 1024x768 center-screen (Enh. Mode) */
2373 {
2374         {1142, 856,622,587 }, /* 00 (320x200,320x400,640x200,640x400) */
2375         {1142, 856,597,562 }, /* 01 (320x350,640x350) */
2376         {1142, 856,622,587 }, /* 02 (360x400,720x400) */
2377         {1142, 856,597,562 }, /* 03 (720x350) */
2378         {1142,1048,722,687 }, /* 04 (640x480x60Hz) */
2379         {1232, 936,722,687 }, /* 05 (800x600x60Hz) */
2380         {   0,1048,805,771 }  /* 06 (1024x768x60Hz) */
2381 };
2382
2383 static struct XGI330_LVDSDataStruct XGI_LVDS1024x768Des_3x75[] = /* ; 1024x768 center-screen (St.Mode) */
2384 {
2385         {320,24,622,587  }, /* ; 00 (320x200,320x400,640x200,640x400) */
2386         {320,24,597,562  }, /* ; 01 (320x350,640x350) */
2387         {320,24,622,587  }, /* ; 02 (360x400,720x400) */
2388         {320,24,597,562  }, /* ; 03 (720x350) */
2389         {320,24,722,687  } /* ; 04 (640x480x60Hz) */
2390 };
2391
2392 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_1x75[] =
2393 {
2394         {0,1296,0,1025}, /* ; 00 (320x200,320x400,640x200,640x400) */
2395         {0,1296,0,1025}, /* ; 01 (320x350,640x350) */
2396         {0,1296,0,1025}, /* ; 02 (360x400,720x400) */
2397         {0,1296,0,1025}, /* ; 03 (720x350) */
2398         {0,1296,0,1025}, /* ; 04 (640x480x75Hz) */
2399         {0,1296,0,1025}, /* ; 05 (800x600x75Hz) */
2400         {0,1296,0,1025}, /* ; 06 (1024x768x75Hz) */
2401         {0,1296,0,1025} /* ; 07 (1280x1024x75Hz) */
2402 };
2403
2404 /* The Display setting for DE Mode Panel */
2405 static struct XGI330_LVDSDataStruct XGI_LVDS1280x1024Des_2x75[] =   /* [ycchen] 02/18/03 Set DE as default */
2406 {
2407         {1368,976,752,711 }, /* ; 00 (320x200,320x400,640x200,640x400) */
2408         {1368,976,729,688 }, /* ; 01 (320x350,640x350) */
2409         {1408,976,752,711 }, /* ; 02 (360x400,720x400) */
2410         {1408,976,729,688 }, /* ; 03 (720x350) */
2411         {1368,976,794,753 }, /* ; 04 (640x480x75Hz) */
2412         {1448,1036,854,813}, /* ; 05 (800x600x75Hz) */
2413         {1560,1168,938,897}, /* ; 06 (1024x768x75Hz) */
2414         {0,1296,0,1025    } /* ; 07 (1280x1024x75Hz) */
2415 };
2416
2417 static struct XGI330_LCDDataDesStruct2 XGI_LVDSNoScalingDesDatax75[] =  /* Scaling LCD 75Hz */
2418 {
2419        { 0,648,448,405,96,2  }, /* ; 00 (320x200,320x400,640x200,640x400) */
2420        { 0,648,448,355,96,2  }, /* ; 01 (320x350,640x350) */
2421        { 0,729,448,405,108,2 }, /* ; 02 (360x400,720x400) */
2422        { 0,729,448,355,108,2 }, /* ; 03 (720x350) */
2423        { 0,656,0,481,64,3    }, /* ; 04 (640x480x75Hz) */
2424        { 0,816,0,601,80,3    }, /* ; 05 (800x600x75Hz) */
2425        { 0,1040,0,769,96,3   }, /* ; 06 (1024x768x75Hz) */
2426        { 0,1296,0,1025,144,3 }, /* ; 07 (1280x1024x75Hz) */
2427        { 0,1448,0,1051,112,3 }, /* ; 08 (1400x1050x75Hz) ;;[ycchen] 12/19/02 */
2428        { 0,1664,0,1201,192,3 }, /* ; 09 (1600x1200x75Hz) */
2429        { 0,1328,0,771,112,6  }  /* ; 0A (1280x768x75Hz) */
2430 };
2431
2432 #if 0
2433 static struct XGI330_LVDSDataStruct  XGI330_LVDS640x480Data_1[] =
2434 {
2435  {800, 449, 800, 449},
2436  {800, 449, 800, 449},
2437  {800, 449, 800, 449},
2438  {800, 449, 800, 449},
2439  {800, 525, 800, 525},
2440  {1056, 628,1056, 628},
2441  {1056, 628,1056, 628},
2442  {1056, 628,1056, 628},
2443  {1056, 628,1056, 628}
2444 };
2445 #endif
2446
2447 static struct XGI330_CHTVDataStruct  XGI_CHTVUNTSCData[] =
2448 {
2449  {840, 600, 840, 600},
2450  {840, 600, 840, 600},
2451  {840, 600, 840, 600},
2452  {840, 600, 840, 600},
2453  {784, 600, 784, 600},
2454  {1064, 750,1064, 750}
2455 };
2456
2457 static struct XGI330_CHTVDataStruct  XGI_CHTVONTSCData[] =
2458 {
2459  {840, 525, 840, 525},
2460  {840, 525, 840, 525},
2461  {840, 525, 840, 525},
2462  {840, 525, 840, 525},
2463  {784, 525, 784, 525},
2464  {1040, 700,1040, 700}
2465 };
2466
2467 static struct XGI330_CHTVDataStruct  XGI_CHTVUPALData[] =
2468 {
2469  {1008, 625,1008, 625},
2470  {1008, 625,1008, 625},
2471  {1008, 625,1008, 625},
2472  {1008, 625,1008, 625},
2473  {840, 750, 840, 750},
2474  {936, 836, 936, 836}
2475 };
2476
2477 static struct XGI330_CHTVDataStruct  XGI_CHTVOPALData[] =
2478 {
2479  {1008, 625,1008, 625},
2480  {1008, 625,1008, 625},
2481  {1008, 625,1008, 625},
2482  {1008, 625,1008, 625},
2483  {840, 625, 840, 625},
2484  {960, 750, 960, 750}
2485 };
2486
2487 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_1_H[] =
2488 {
2489                 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2490                 {{      0x4B,0x27,0x8F,0x32,0x1B,0x00,0x45,0x00 }}, /* 00 (320x) */
2491                 {{      0x4B,0x27,0x8F,0x2B,0x03,0x00,0x44,0x00 }}, /* 01 (360x) */
2492                 {{      0x55,0x31,0x99,0x46,0x1D,0x00,0x55,0x00 }}, /* 02 (400x) */
2493                 {{      0x63,0x3F,0x87,0x4A,0x93,0x00,0x01,0x00 }}, /* 03 (512x) */
2494                 {{      0x73,0x4F,0x97,0x55,0x86,0x00,0x05,0x00 }}, /* 04 (640x) */
2495                 {{      0x73,0x4F,0x97,0x55,0x86,0x00,0x05,0x00 }}, /* 05 (720x) */
2496                 {{      0x87,0x63,0x8B,0x69,0x1A,0x00,0x26,0x00 }}, /* 06 (800x) */
2497                 {{      0xA3,0x7F,0x87,0x86,0x97,0x00,0x02,0x00 }} /* 07 (1024x) */
2498 };
2499
2500 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_1_H[] =
2501 {
2502                 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2503                 {{      0x56,0x27,0x9A,0x30,0x1E,0x00,0x05,0x00 }}, /* 00 (320x) */
2504                 {{      0x56,0x27,0x9A,0x30,0x1E,0x00,0x05,0x00 }}, /* 01 (360x) */
2505                 {{      0x60,0x31,0x84,0x3A,0x88,0x00,0x01,0x00 }}, /* 02 (400x) */
2506                 {{      0x6E,0x3F,0x92,0x48,0x96,0x00,0x01,0x00 }}, /* 03 (512x) */
2507                 {{      0x7E,0x4F,0x82,0x58,0x06,0x00,0x06,0x00 }}, /* 04 (640x) */
2508                 {{      0x7E,0x4F,0x82,0x58,0x06,0x00,0x06,0x00 }}, /* 05 (720x) */
2509                 {{      0x92,0x63,0x96,0x6C,0x1A,0x00,0x06,0x00 }}, /* 06 (800x) */
2510                 {{      0xAE,0x7F,0x92,0x88,0x96,0x00,0x02,0x00 }}, /* 07 (1024x) */
2511                 {{      0xCE,0x9F,0x92,0xA8,0x16,0x00,0x07,0x00 }} /* 08 (1280x) */
2512 };
2513
2514 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11024x768_2_H[] =
2515 {
2516                 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2517                 {{      0x63,0x27,0x87,0x3B,0x8C,0x00,0x01,0x00 }}, /* 00 (320x) */
2518                 {{      0x63,0x27,0x87,0x3B,0x8C,0x00,0x01,0x00 }}, /* 01 (360x) */
2519                 {{      0x63,0x31,0x87,0x3D,0x8E,0x00,0x01,0x00 }}, /* 02 (400x) */
2520                 {{      0x63,0x3F,0x87,0x45,0x96,0x00,0x01,0x00 }}, /* 03 (512x) */
2521                 {{      0xA3,0x4F,0x87,0x6E,0x9F,0x00,0x06,0x00 }}, /* 04 (640x) */
2522                 {{      0xA3,0x4F,0x87,0x6E,0x9F,0x00,0x06,0x00 }}, /* 05 (720x) */
2523                 {{      0xA3,0x63,0x87,0x78,0x89,0x00,0x02,0x00 }}, /* 06 (800x) */
2524                 {{      0xA3,0x7F,0x87,0x86,0x97,0x00,0x02,0x00 }} /* 07 (1024x) */
2525 };
2526
2527 static struct XGI_LVDSCRT1HDataStruct  XGI_LVDSCRT11280x1024_2_H[] =
2528 {
2529                 /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2530                 {{      0x7E,0x3B,0x9A,0x44,0x12,0x00,0x01,0x00 }}, /* 00 (320x) */
2531                 {{      0x7E,0x3B,0x9A,0x44,0x12,0x00,0x01,0x00 }}, /* 01 (360x) */
2532                 {{      0x7E,0x40,0x84,0x49,0x91,0x00,0x01,0x00 }}, /* 02 (400x) */
2533                 {{      0x7E,0x47,0x93,0x50,0x9E,0x00,0x01,0x00 }}, /* 03 (512x) */
2534                 {{      0xCE,0x77,0x8A,0x80,0x8E,0x00,0x02,0x00 }}, /* 04 (640x) */
2535                 {{      0xCE,0x77,0x8A,0x80,0x8E,0x00,0x02,0x00 }}, /* 05 (720x) */
2536                 {{      0xCE,0x81,0x94,0x8A,0x98,0x00,0x02,0x00 }}, /* 06 (800x) */
2537                 {{      0xCE,0x8F,0x82,0x98,0x06,0x00,0x07,0x00 }}, /* 07 (1024x) */
2538                 {{      0xCE,0x9F,0x92,0xA8,0x16,0x00,0x07,0x00 }} /* 08 (1280x) */
2539 };
2540
2541 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_1_H[] =
2542 {               /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2543                 {{      0x47,0x27,0x8B,0x2C,0x1A,0x00,0x05,0x00 }}, /* 00 (320x) */
2544                 {{      0x47,0x27,0x8B,0x30,0x1E,0x00,0x05,0x00 }}, /* 01 (360x) */
2545                 {{      0x51,0x31,0x95,0x36,0x04,0x00,0x01,0x00 }}, /* 02 (400x) */
2546                 {{      0x5F,0x3F,0x83,0x44,0x92,0x00,0x01,0x00 }}, /* 03 (512x) */
2547                 {{      0x6F,0x4F,0x93,0x54,0x82,0x00,0x05,0x00 }}, /* 04 (640x) */
2548                 {{      0x6F,0x4F,0x93,0x54,0x82,0x00,0x05,0x00 }}, /* 05 (720x) */
2549                 {{      0x83,0x63,0x87,0x68,0x16,0x00,0x06,0x00 }}, /* 06 (800x) */
2550                 {{      0x9F,0x7F,0x83,0x84,0x92,0x00,0x02,0x00 }}, /* 07 (1024x) */
2551                 {{      0xBF,0x9F,0x83,0xA4,0x12,0x00,0x07,0x00 }}, /* 08 (1280x) */
2552                 {{      0xCE,0xAE,0x92,0xB3,0x01,0x00,0x03,0x00 }} /* 09 (1400x) */
2553 };
2554
2555 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11400x1050_2_H[] =
2556 {               /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2557                 {{      0x76,0x3F,0x83,0x45,0x8C,0x00,0x41,0x00 }}, /* 00 (320x) */
2558                 {{      0x76,0x3F,0x83,0x45,0x8C,0x00,0x41,0x00 }}, /* 01 (360x) */
2559                 {{      0x76,0x31,0x9A,0x48,0x9F,0x00,0x41,0x00 }}, /* 02 (400x) */
2560                 {{      0x76,0x3F,0x9A,0x4F,0x96,0x00,0x41,0x00 }}, /* 03 (512x) */
2561                 {{      0xCE,0x7E,0x82,0x87,0x9E,0x00,0x02,0x00 }}, /* 04 (640x) */
2562                 {{      0xCE,0x7E,0x82,0x87,0x9E,0x00,0x02,0x00 }}, /* 05 (720x) */
2563                 {{      0xCE,0x63,0x92,0x96,0x04,0x00,0x07,0x00 }}, /* 06 (800x) */
2564                 {{      0xCE,0x7F,0x92,0xA4,0x12,0x00,0x07,0x00 }}, /* 07 (1024x) */
2565                 {{      0xCE,0x9F,0x92,0xB4,0x02,0x00,0x03,0x00 }}, /* 08 (1280x) */
2566                 {{      0xCE,0xAE,0x92,0xBC,0x0A,0x00,0x03,0x00 }} /* 09 (1400x) */
2567 };
2568
2569 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11600x1200_1_H[] =
2570 /* ;302lv channelA [ycchen] 12/05/02 LCDHT=2048 */
2571 {   /* ; CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2572                 {{      0x5B,0x27,0x9F,0x32,0x0A,0x00,0x01,0x00 }},/* 00 (320x) */
2573                 {{      0x5B,0x27,0x9F,0x32,0x0A,0x00,0x01,0x00 }},/* 01 (360x) */
2574                 {{      0x65,0x31,0x89,0x3C,0x94,0x00,0x01,0x00 }},/* 02 (400x) */
2575                 {{      0x73,0x3F,0x97,0x4A,0x82,0x00,0x05,0x00 }},/* 03 (512x) */
2576                 {{      0x83,0x4F,0x87,0x51,0x09,0x00,0x06,0x00 }},/* 04 (640x) */
2577                 {{      0x83,0x4F,0x87,0x51,0x09,0x00,0x06,0x00 }},/* 05 (720x) */
2578                 {{      0x97,0x63,0x9B,0x65,0x1D,0x00,0x06,0xF0 }},/* 06 (800x) */
2579                 {{      0xB3,0x7F,0x97,0x81,0x99,0x00,0x02,0x00 }},/* 07 (1024x) */
2580                 {{      0xD3,0x9F,0x97,0xA1,0x19,0x00,0x07,0x00 }},/* 08 (1280x) */
2581                 {{      0xE2,0xAE,0x86,0xB9,0x91,0x00,0x03,0x00 }},/* 09 (1400x) */
2582                 {{      0xFB,0xC7,0x9F,0xC9,0x81,0x00,0x07,0x00 }} /* 0A (1600x) */
2583 };
2584
2585 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_V[] =
2586 {               /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2587                 {{      0x97,0x1F,0x60,0x87,0x5D,0x83,0x10      }}, /* 00 (x350) */
2588                 {{      0xB4,0x1F,0x92,0x89,0x8F,0xB5,0x30      }}, /* 01 (x400) */
2589                 {{      0x04,0x3E,0xE2,0x89,0xDF,0x05,0x00      }}, /* 02 (x480) */
2590                 {{      0x7C,0xF0,0x5A,0x8F,0x57,0x7D,0xA0      }}, /* 03 (x600) */
2591                 {{      0x24,0xF5,0x02,0x88,0xFF,0x25,0x90      }} /* 04 (x768) */
2592 };
2593
2594 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_V[] =
2595 {               /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2596                 {{      0x24,0xBB,0x31,0x87,0x5D,0x25,0x30      }}, /* 00 (x350) */
2597                 {{      0x24,0xBB,0x4A,0x80,0x8F,0x25,0x30      }}, /* 01 (x400) */
2598                 {{      0x24,0xBB,0x72,0x88,0xDF,0x25,0x30      }}, /* 02 (x480) */
2599                 {{      0x24,0xF1,0xAE,0x84,0x57,0x25,0xB0      }}, /* 03 (x600) */
2600                 {{      0x24,0xF5,0x02,0x88,0xFF,0x25,0x90      }} /* 04 (x768) */
2601 };
2602
2603 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_V[] =
2604 {               /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2605                 {{       0x86,0x1F,0x5E,0x82,0x5D,0x87,0x00     }}, /* 00 (x350) */
2606                 {{       0xB8,0x1F,0x90,0x84,0x8F,0xB9,0x30     }}, /* 01 (x400) */
2607                 {{       0x08,0x3E,0xE0,0x84,0xDF,0x09,0x00     }}, /* 02 (x480) */
2608                 {{       0x80,0xF0,0x58,0x8C,0x57,0x81,0xA0     }}, /* 03 (x600) */
2609                 {{       0x28,0xF5,0x00,0x84,0xFF,0x29,0x90     }}, /* 04 (x768) */
2610                 {{       0x28,0x5A,0x13,0x87,0xFF,0x29,0xA9     }} /* 05 (x1024) */
2611 };
2612
2613 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_V[] =
2614 {               /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2615                 {{      0x28,0xD2,0xAF,0x83,0xAE,0xD8,0xA1      }}, /* 00 (x350) */
2616                 {{      0x28,0xD2,0xC8,0x8C,0xC7,0xF2,0x81      }}, /* 01 (x400) */
2617                 {{      0x28,0xD2,0xF0,0x84,0xEF,0x1A,0xB1      }}, /* 02 (x480) */
2618                 {{      0x28,0xDE,0x2C,0x8F,0x2B,0x56,0x91      }}, /* 03 (x600) */
2619                 {{      0x28,0xDE,0x80,0x83,0x7F,0xAA,0x91      }}, /* 04 (x768) */
2620                 {{      0x28,0x5A,0x13,0x87,0xFF,0x29,0xA9      }} /* 05 (x1024) */
2621 };
2622
2623 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_1_V[] =
2624 {               /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2625                 {{      0x6C,0x1F,0x60,0x84,0x5D,0x6D,0x10      }}, /* 00 (x350) */
2626                 {{      0x9E,0x1F,0x93,0x86,0x8F,0x9F,0x30      }}, /* 01 (x400) */
2627                 {{      0xEE,0x1F,0xE2,0x86,0xDF,0xEF,0x10      }}, /* 02 (x480) */
2628                 {{      0x66,0xF0,0x5A,0x8e,0x57,0x67,0xA0      }}, /* 03 (x600) */
2629                 {{      0x0E,0xF5,0x02,0x86,0xFF,0x0F,0x90      }}, /* 04 (x768) */
2630                 {{      0x0E,0x5A,0x02,0x86,0xFF,0x0F,0x89      }}, /* 05 (x1024) */
2631                 {{      0x28,0x10,0x1A,0x80,0x19,0x29,0x0F      }} /* 06 (x1050) */
2632 };
2633
2634 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11400x1050_2_V[] =
2635 {              /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2636                 {{      0x28,0x92,0xB6,0x83,0xB5,0xCF,0x81      }}, /* 00 (x350) */
2637                 {{      0x28,0x92,0xD5,0x82,0xD4,0xEE,0x81      }}, /* 01 (x400) */
2638                 {{      0x28,0x92,0xFD,0x8A,0xFC,0x16,0xB1      }}, /* 02 (x480) */
2639                 {{      0x28,0xD4,0x39,0x86,0x57,0x29,0x81      }}, /* 03 (x600) */
2640                 {{      0x28,0xD4,0x8D,0x9A,0xFF,0x29,0xA1      }}, /* 04 (x768) */
2641                 {{      0x28,0x5A,0x0D,0x9A,0xFF,0x29,0xA9      }}, /* 05 (x1024) */
2642                 {{      0x28,0x10,0x1A,0x87,0x19,0x29,0x8F      }} /* 06 (x1050) */
2643 };
2644
2645 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11600x1200_1_V[] =
2646 {
2647                /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2648                 {{      0xd4,0x1F,0x81,0x84,0x5D,0xd5,0x10      }}, /* 00 (x350) */
2649                 {{      0x06,0x3e,0xb3,0x86,0x8F,0x07,0x20      }}, /* 01 (x400) */
2650                 {{      0x56,0xba,0x03,0x86,0xDF,0x57,0x00      }}, /* 02 (x480) */
2651                 {{      0xce,0xF0,0x7b,0x8e,0x57,0xcf,0xa0      }}, /* 03 (x600) */
2652                 {{      0x76,0xF5,0x23,0x86,0xFF,0x77,0x90      }}, /* 04 (x768) */
2653                 {{      0x76,0x5A,0x23,0x86,0xFF,0x77,0x89      }}, /* 05 (x1024) */
2654                 {{      0x90,0x10,0x1A,0x8E,0x19,0x91,0x2F      }}, /* 06 (x1050) */
2655                 {{      0x26,0x11,0xd3,0x86,0xaF,0x27,0x3f      }} /* 07 (x1200) */
2656 };
2657
2658 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_1_Hx75[] =
2659 {       /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2660     {{      0x4B,0x27,0x8F,0x32,0x1B,0x00,0x45,0x00 }},/* ; 00 (320x) */
2661     {{      0x4B,0x27,0x8F,0x2B,0x03,0x00,0x44,0x00 }},/* ; 01 (360x) */
2662     {{      0x55,0x31,0x99,0x46,0x1D,0x00,0x55,0x00 }},/* ; 02 (400x) */
2663     {{      0x63,0x3F,0x87,0x4A,0x93,0x00,0x01,0x00 }},/* ; 03 (512x) */
2664     {{      0x6F,0x4F,0x93,0x54,0x80,0x00,0x05,0x00 }},/* ; 04 (640x) */
2665     {{      0x6F,0x4F,0x93,0x54,0x80,0x00,0x05,0x00 }},/* ; 05 (720x) */
2666     {{      0x83,0x63,0x87,0x68,0x14,0x00,0x26,0x00 }},/* ; 06 (800x) */
2667     {{      0x9F,0x7F,0x83,0x85,0x91,0x00,0x02,0x00 }} /* ; 07 (1024x) */
2668 };
2669
2670 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_1_Vx75[] =
2671 {       /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A+CR09(5->7) */
2672     {{      0x97,0x1F,0x60,0x87,0x5D,0x83,0x10      }},/* ; 00 (x350) */
2673     {{      0xB4,0x1F,0x92,0x89,0x8F,0xB5,0x30      }},/* ; 01 (x400) */
2674     {{      0xFE,0x1F,0xE0,0x84,0xDF,0xFF,0x10      }},/* ; 02 (x480) */
2675     {{      0x76,0xF0,0x58,0x8C,0x57,0x77,0xA0      }},/* ; 03 (x600) */
2676     {{      0x1E,0xF5,0x00,0x83,0xFF,0x1F,0x90      }} /* ; 04 (x768) */
2677 };
2678
2679 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11024x768_2_Hx75[] =
2680 {       /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2681     {{      0x63,0x27,0x87,0x3B,0x8C,0x00,0x01,0x00 }},/* ; 00 (320x) */
2682     {{      0x63,0x27,0x87,0x3B,0x8C,0x00,0x01,0x00 }},/* ; 01 (360x) */
2683     {{      0x63,0x31,0x87,0x3D,0x8E,0x00,0x01,0x00 }},/* ; 02 (400x) */
2684     {{      0x63,0x3F,0x87,0x45,0x96,0x00,0x01,0x00 }},/* ; 03 (512x) */
2685     {{      0xA3,0x4F,0x87,0x6E,0x9F,0x00,0x06,0x00 }},/* ; 04 (640x) */
2686     {{      0xA3,0x4F,0x87,0x6E,0x9F,0x00,0x06,0x00 }},/* ; 05 (720x) */
2687     {{      0xA3,0x63,0x87,0x78,0x89,0x00,0x02,0x00 }},/* ; 06 (800x) */
2688     {{      0xA3,0x7F,0x87,0x86,0x97,0x00,0x02,0x00 }} /* ; 07 (1024x) */
2689 };
2690
2691 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11024x768_2_Vx75[] =
2692 {       /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2693     {{      0x24,0xBB,0x31,0x87,0x5D,0x25,0x30      }},/* ; 00 (x350) */
2694     {{      0x24,0xBB,0x4A,0x80,0x8F,0x25,0x30      }},/* ; 01 (x400) */
2695     {{      0x24,0xBB,0x72,0x88,0xDF,0x25,0x30      }},/* ; 02 (x480) */
2696     {{      0x24,0xF1,0xAE,0x84,0x57,0x25,0xB0      }},/* ; 03 (x600) */
2697     {{      0x24,0xF5,0x02,0x88,0xFF,0x25,0x90      }} /* ; 04 (x768) */
2698 };
2699
2700 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_1_Hx75[] =
2701 {      /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2702     {{      0x56,0x27,0x9A,0x30,0x1E,0x00,0x05,0x00 }},/* ; 00 (320x) */
2703     {{      0x56,0x27,0x9A,0x30,0x1E,0x00,0x05,0x00 }},/* ; 01 (360x) */
2704     {{      0x60,0x31,0x84,0x3A,0x88,0x00,0x01,0x00 }},/* ; 02 (400x) */
2705     {{      0x6E,0x3F,0x92,0x48,0x96,0x00,0x01,0x00 }},/* ; 03 (512x) */
2706     {{      0x7E,0x4F,0x82,0x54,0x06,0x00,0x06,0x00 }},/* ; 04 (640x) */
2707     {{      0x7E,0x4F,0x82,0x54,0x06,0x00,0x06,0x00 }},/* ; 05 (720x) */
2708     {{      0x92,0x63,0x96,0x68,0x1A,0x00,0x06,0x00 }},/* ; 06 (800x) */
2709     {{      0xAE,0x7F,0x92,0x84,0x96,0x00,0x02,0x00 }},/* ; 07 (1024x) */
2710     {{      0xCE,0x9F,0x92,0xA5,0x17,0x00,0x07,0x00 }} /* ; 08 (1280x) */
2711 };
2712
2713 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_1_Vx75[] =
2714 {       /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2715     {{      0x86,0xD1,0xBC,0x80,0xBB,0xE5,0x00      }},/* ; 00 (x350) */
2716     {{      0xB8,0x1F,0x90,0x84,0x8F,0xB9,0x30      }},/* ; 01 (x400) */
2717     {{      0x08,0x3E,0xE0,0x84,0xDF,0x09,0x00      }},/* ; 02 (x480) */
2718     {{      0x80,0xF0,0x58,0x8C,0x57,0x81,0xA0      }},/* ; 03 (x600) */
2719     {{      0x28,0xF5,0x00,0x84,0xFF,0x29,0x90      }},/* ; 04 (x768) */
2720     {{      0x28,0x5A,0x13,0x87,0xFF,0x29,0xA9      }} /* ; 05 (x1024) */
2721 };
2722
2723 static struct XGI_LVDSCRT1HDataStruct XGI_LVDSCRT11280x1024_2_Hx75[] =
2724 {
2725         /* CR00,CR02,CR03,CR04,CR05,SR0B,SR0C,SR0E */
2726     {{      0x7E,0x3B,0x9A,0x44,0x12,0x00,0x01,0x00 }},/* ; 00 (320x) */
2727     {{      0x7E,0x3B,0x9A,0x44,0x12,0x00,0x01,0x00 }},/* ; 01 (360x) */
2728     {{      0x7E,0x40,0x84,0x49,0x91,0x00,0x01,0x00 }},/* ; 02 (400x) */
2729     {{      0x7E,0x47,0x93,0x50,0x9E,0x00,0x01,0x00 }},/* ; 03 (512x) */
2730     {{      0xCE,0x77,0x8A,0x80,0x8E,0x00,0x02,0x00 }},/* ; 04 (640x) */
2731     {{      0xCE,0x77,0x8A,0x80,0x8E,0x00,0x02,0x00 }},/* ; 05 (720x) */
2732     {{      0xCE,0x81,0x94,0x8A,0x98,0x00,0x02,0x00 }},/* ; 06 (800x) */
2733     {{      0xCE,0x8F,0x82,0x98,0x06,0x00,0x07,0x00 }},/* ; 07 (1024x) */
2734     {{      0xCE,0x9F,0x92,0xA8,0x16,0x00,0x07,0x00 }} /* ; 08 (1280x) */
2735 };
2736
2737 static struct XGI_LVDSCRT1VDataStruct XGI_LVDSCRT11280x1024_2_Vx75[] =
2738 {
2739         /* CR06,CR07,CR10,CR11,CR15,CR16,SR0A */
2740      {{     0x28,0xD2,0xAF,0x83,0xAE,0xD8,0xA1     }},/* ; 00 (x350) */
2741      {{     0x28,0xD2,0xC8,0x8C,0xC7,0xF2,0x81     }},/* ; 01 (x400) */
2742      {{     0x28,0xD2,0xF0,0x84,0xEF,0x1A,0xB1     }},/* ; 02 (x480) */
2743      {{     0x28,0xDE,0x2C,0x8F,0x2B,0x56,0x91     }},/* ; 03 (x600) */
2744      {{     0x28,0xDE,0x80,0x83,0x7F,0xAA,0x91     }},/* ; 04 (x768) */
2745      {{     0x28,0x5A,0x13,0x87,0xFF,0x29,0xA9     }} /* ; 05 (x1024) */
2746 };
2747
2748 #if 0
2749 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1UNTSC[] =
2750 {
2751  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
2752     0xe8,0x84,0x8f,0x57,0x20,0x00,0x01,0x00 }},
2753  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
2754     0xd0,0x82,0x5d,0x57,0x00,0x00,0x01,0x00 }},
2755  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
2756     0xe8,0x84,0x8f,0x57,0x20,0x00,0x01,0x00 }},
2757  {{0x64,0x4f,0x88,0x56,0x9f,0x56,0x3e,
2758     0xd0,0x82,0x5d,0x57,0x00,0x00,0x01,0x00 }},
2759  {{0x5d,0x4f,0x81,0x53,0x9c,0x56,0xba,
2760     0x18,0x84,0xdf,0x57,0x00,0x00,0x01,0x00 }},
2761  {{0x80,0x63,0x84,0x6c,0x17,0xec,0xf0,
2762    0x90,0x8c,0x57,0xed,0x20,0x00,0x06,0x01 }}
2763 };
2764
2765 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1ONTSC[] =
2766 {
2767  {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e,
2768     0xc0,0x84,0x8f,0x0c,0x20,0x00,0x01,0x00 }},
2769  {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e,
2770     0xb0,0x8d,0x5d,0x0c,0x00,0x00,0x01,0x00 }},
2771  {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e,
2772     0xc0,0x84,0x8f,0x0c,0x20,0x00,0x01,0x00 }},
2773  {{0x64,0x4f,0x88,0x5a,0x9f,0x0b,0x3e,
2774     0xb0,0x8d,0x5d,0x0c,0x00,0x00,0x01,0x00 }},
2775  {{0x5d,0x4f,0x81,0x56,0x9c,0x0b,0x3e,
2776     0xe8,0x84,0xdf,0x0c,0x00,0x00,0x01,0x00 }},
2777  {{0x7d,0x63,0x81,0x6a,0x16,0xba,0xf0,
2778    0x7f,0x86,0x57,0xbb,0x00,0x00,0x06,0x01 }}
2779 };
2780
2781 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1UPAL[] =
2782 {
2783  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2784     0xf8,0x83,0x8f,0x70,0x20,0x00,0x05,0x00 }},
2785  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2786     0xde,0x81,0x5d,0x70,0x00,0x00,0x05,0x00 }},
2787  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2788     0xf8,0x83,0x8f,0x70,0x20,0x00,0x05,0x00 }},
2789  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2790     0xde,0x81,0x5d,0x70,0x00,0x00,0x05,0x00 }},
2791  {{0x64,0x4f,0x88,0x55,0x80,0xec,0xba,
2792     0x50,0x84,0xdf,0xed,0x00,0x00,0x05,0x00 }},
2793  {{0x70,0x63,0x94,0x68,0x8d,0x42,0xf1,
2794    0xc8,0x8c,0x57,0xe9,0x20,0x00,0x05,0x01 }}
2795 };
2796
2797 static struct XGI_LVDSCRT1DataStruct  XGI_CHTVCRT1OPAL[] =
2798 {
2799  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2800     0xf0,0x83,0x8f,0x70,0x20,0x00,0x05,0x00 }},
2801  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2802     0xde,0x81,0x5d,0x70,0x00,0x00,0x05,0x00 }},
2803  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2804     0xf0,0x83,0x8f,0x70,0x20,0x00,0x05,0x00 }},
2805  {{0x79,0x4f,0x9d,0x5a,0x90,0x6f,0x3e,
2806     0xde,0x81,0x5d,0x70,0x00,0x00,0x05,0x00 }},
2807  {{0x64,0x4f,0x88,0x55,0x80,0x6f,0xba,
2808     0x20,0x83,0xdf,0x70,0x00,0x00,0x05,0x00 }},
2809  {{0x73,0x63,0x97,0x69,0x8e,0xec,0xf0,
2810    0x90,0x8c,0x57,0xed,0x20,0x00,0x05,0x01 }}
2811 };
2812 #endif
2813
2814 /*add for new UNIVGABIOS*/
2815 static struct XGI330_LCDDataTablStruct XGI_LCDDataTable[] =
2816 {
2817   {Panel1024x768,0x0019,0x0001,0},  /* XGI_ExtLCD1024x768Data */
2818   {Panel1024x768,0x0019,0x0000,1},  /* XGI_StLCD1024x768Data */
2819   {Panel1024x768,0x0018,0x0010,2},  /* XGI_CetLCD1024x768Data */
2820   {Panel1280x1024,0x0019,0x0001,3},  /* XGI_ExtLCD1280x1024Data */
2821   {Panel1280x1024,0x0019,0x0000,4},  /* XGI_StLCD1280x1024Data */
2822   {Panel1280x1024,0x0018,0x0010,5},  /* XGI_CetLCD1280x1024Data */
2823   {Panel1400x1050,0x0019,0x0001,6},  /* XGI_ExtLCD1400x1050Data */
2824   {Panel1400x1050,0x0019,0x0000,7},  /* XGI_StLCD1400x1050Data */
2825   {Panel1400x1050,0x0018,0x0010,8},  /* XGI_CetLCD1400x1050Data */
2826   {Panel1600x1200,0x0019,0x0001,9},   /* XGI_ExtLCD1600x1200Data */
2827   {Panel1600x1200,0x0019,0x0000,10},  /* XGI_StLCD1600x1200Data */
2828   {PanelRef60Hz,0x0008,0x0008,11},      /* XGI_NoScalingData */
2829   {Panel1024x768x75,0x0019,0x0001,12},  /* XGI_ExtLCD1024x768x75Data */
2830   {Panel1024x768x75,0x0019,0x0000,13},  /* XGI_StLCD1024x768x75Data */
2831   {Panel1024x768x75,0x0018,0x0010,14},  /* XGI_CetLCD1024x768x75Data */
2832   {Panel1280x1024x75,0x0019,0x0001,15}, /* XGI_ExtLCD1280x1024x75Data */
2833   {Panel1280x1024x75,0x0019,0x0000,16}, /* XGI_StLCD1280x1024x75Data */
2834   {Panel1280x1024x75,0x0018,0x0010,17}, /* XGI_CetLCD1280x1024x75Data */
2835   {PanelRef75Hz,0x0008,0x0008,18},      /* XGI_NoScalingDatax75 */
2836   {0xFF,0x0000,0x0000,0}                /* End of table */
2837 };
2838
2839 static struct XGI330_LCDDataTablStruct XGI_LCDDesDataTable[] =
2840 {
2841   {Panel1024x768,0x0019,0x0001,0}, /* XGI_ExtLCDDes1024x768Data */
2842   {Panel1024x768,0x0019,0x0000,1}, /* XGI_StLCDDes1024x768Data */
2843   {Panel1024x768,0x0018,0x0010,2}, /* XGI_CetLCDDes1024x768Data */
2844   {Panel1280x1024,0x0019,0x0001,3}, /* XGI_ExtLCDDes1280x1024Data */
2845   {Panel1280x1024,0x0019,0x0000,4}, /* XGI_StLCDDes1280x1024Data */
2846   {Panel1280x1024,0x0018,0x0010,5}, /* XGI_CetLCDDes1280x1024Data */
2847   {Panel1400x1050,0x0019,0x0001,6}, /* XGI_ExtLCDDes1400x1050Data */
2848   {Panel1400x1050,0x0019,0x0000,7}, /* XGI_StLCDDes1400x1050Data */
2849   {Panel1400x1050,0x0418,0x0010,8}, /* XGI_CetLCDDes1400x1050Data */
2850   {Panel1400x1050,0x0418,0x0410,9}, /* XGI_CetLCDDes1400x1050Data2 */
2851   {Panel1600x1200,0x0019,0x0001,10}, /* XGI_ExtLCDDes1600x1200Data */
2852   {Panel1600x1200,0x0019,0x0000,11}, /* XGI_StLCDDes1600x1200Data */
2853   {PanelRef60Hz,0x0008,0x0008,12},      /* XGI_NoScalingDesData */
2854   {Panel1024x768x75,0x0019,0x0001,13},  /* XGI_ExtLCDDes1024x768x75Data */
2855   {Panel1024x768x75,0x0019,0x0000,14},  /* XGI_StLCDDes1024x768x75Data */
2856   {Panel1024x768x75,0x0018,0x0010,15},  /* XGI_CetLCDDes1024x768x75Data */
2857   {Panel1280x1024x75,0x0019,0x0001,16}, /* XGI_ExtLCDDes1280x1024x75Data */
2858   {Panel1280x1024x75,0x0019,0x0000,17}, /* XGI_StLCDDes1280x1024x75Data */
2859   {Panel1280x1024x75,0x0018,0x0010,18}, /* XGI_CetLCDDes1280x1024x75Data */
2860   {PanelRef75Hz,0x0008,0x0008,19},      /* XGI_NoScalingDesDatax75 */
2861   {0xFF,0x0000,0x0000,0}
2862 };
2863
2864 static struct XGI330_LCDDataTablStruct XGI_EPLLCDCRT1Ptr_H[] =
2865 {
2866   {Panel1024x768,0x0018,0x0000,0}, /* XGI_LVDSCRT11024x768_1_H */
2867   {Panel1024x768,0x0018,0x0010,1}, /* XGI_LVDSCRT11024x768_2_H */
2868   {Panel1280x1024,0x0018,0x0000,2}, /* XGI_LVDSCRT11280x1024_1_H */
2869   {Panel1280x1024,0x0018,0x0010,3}, /* XGI_LVDSCRT11280x1024_2_H */
2870   {Panel1400x1050,0x0018,0x0000,4}, /* XGI_LVDSCRT11400x1050_1_H */
2871   {Panel1400x1050,0x0018,0x0010,5}, /* XGI_LVDSCRT11400x1050_2_H */
2872   {Panel1600x1200,0x0018,0x0000,6},  /* XGI_LVDSCRT11600x1200_1_H */
2873   {Panel1024x768x75,0x0018,0x0000,7},   /* XGI_LVDSCRT11024x768_1_Hx75 */
2874   {Panel1024x768x75,0x0018,0x0010,8},   /* XGI_LVDSCRT11024x768_2_Hx75 */
2875   {Panel1280x1024x75,0x0018,0x0000,9},  /* XGI_LVDSCRT11280x1024_1_Hx75 */
2876   {Panel1280x1024x75,0x0018,0x0010,10}, /* XGI_LVDSCRT11280x1024_2_Hx75 */
2877   {0xFF,0x0000,0x0000,0}
2878 };
2879
2880 static struct XGI330_LCDDataTablStruct XGI_EPLLCDCRT1Ptr_V[] =
2881 {
2882   {Panel1024x768,0x0018,0x0000,0}, /* XGI_LVDSCRT11024x768_1_V */
2883   {Panel1024x768,0x0018,0x0010,1}, /* XGI_LVDSCRT11024x768_2_V */
2884   {Panel1280x1024,0x0018,0x0000,2}, /* XGI_LVDSCRT11280x1024_1_V */
2885   {Panel1280x1024,0x0018,0x0010,3}, /* XGI_LVDSCRT11280x1024_2_V */
2886   {Panel1400x1050,0x0018,0x0000,4}, /* XGI_LVDSCRT11400x1050_1_V */
2887   {Panel1400x1050,0x0018,0x0010,5}, /* XGI_LVDSCRT11400x1050_2_V */
2888   {Panel1600x1200,0x0018,0x0000,6}, /* XGI_LVDSCRT11600x1200_1_V */
2889   {Panel1024x768x75,0x0018,0x0000,7},   /* XGI_LVDSCRT11024x768_1_Vx75 */
2890   {Panel1024x768x75,0x0018,0x0010,8},   /* XGI_LVDSCRT11024x768_2_Vx75 */
2891   {Panel1280x1024x75,0x0018,0x0000,9},  /* XGI_LVDSCRT11280x1024_1_Vx75 */
2892   {Panel1280x1024x75,0x0018,0x0010,10}, /* XGI_LVDSCRT11280x1024_2_Vx75 */
2893   {0xFF,0x0000,0x0000,0}
2894 };
2895
2896 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDataPtr[] =
2897 {
2898   {Panel1024x768,0x0018,0x0000,0}, /* XGI_LVDS1024x768Data_1 */
2899   {Panel1024x768,0x0018,0x0010,1}, /* XGI_LVDS1024x768Data_2 */
2900   {Panel1280x1024,0x0018,0x0000,2}, /* XGI_LVDS1280x1024Data_1 */
2901   {Panel1280x1024,0x0018,0x0010,3}, /* XGI_LVDS1280x1024Data_2 */
2902   {Panel1400x1050,0x0018,0x0000,4}, /* XGI_LVDS1400x1050Data_1 */
2903   {Panel1400x1050,0x0018,0x0010,5}, /* XGI_LVDS1400x1050Data_2 */
2904   {Panel1600x1200,0x0018,0x0000,6}, /* XGI_LVDS1600x1200Data_1 */
2905   {PanelRef60Hz,0x0008,0x0008,7}, /* XGI_LVDSNoScalingData */
2906   {Panel1024x768x75,0x0018,0x0000,8},   /* XGI_LVDS1024x768Data_1x75 */
2907   {Panel1024x768x75,0x0018,0x0010,9},   /* XGI_LVDS1024x768Data_2x75 */
2908   {Panel1280x1024x75,0x0018,0x0000,10}, /* XGI_LVDS1280x1024Data_1x75 */
2909   {Panel1280x1024x75,0x0018,0x0010,11}, /* XGI_LVDS1280x1024Data_2x75 */
2910   {PanelRef75Hz,0x0008,0x0008,12},      /* XGI_LVDSNoScalingDatax75 */
2911   {0xFF,0x0000,0x0000,0}
2912 };
2913
2914 static struct XGI330_LCDDataTablStruct XGI_EPLLCDDesDataPtr[] =
2915 {
2916   {Panel1024x768,0x0018,0x0000,0}, /* XGI_LVDS1024x768Des_1 */
2917   {Panel1024x768,0x0618,0x0410,1}, /* XGI_LVDS1024x768Des_3 */
2918   {Panel1024x768,0x0018,0x0010,2}, /* XGI_LVDS1024x768Des_2 */
2919   {Panel1280x1024,0x0018,0x0000,3}, /* XGI_LVDS1280x1024Des_1 */
2920   {Panel1280x1024,0x0018,0x0010,4}, /* XGI_LVDS1280x1024Des_2 */
2921   {Panel1400x1050,0x0018,0x0000,5}, /* XGI_LVDS1400x1050Des_1 */
2922   {Panel1400x1050,0x0018,0x0010,6}, /* XGI_LVDS1400x1050Des_2 */
2923   {Panel1600x1200,0x0018,0x0000,7}, /* XGI_LVDS1600x1200Des_1 */
2924   {PanelRef60Hz,0x0008,0x0008,8},       /* XGI_LVDSNoScalingDesData */
2925   {Panel1024x768x75,0x0018,0x0000,9},   /* XGI_LVDS1024x768Des_1x75 */
2926   {Panel1024x768x75,0x0618,0x0410,10},  /* XGI_LVDS1024x768Des_3x75 */
2927   {Panel1024x768x75,0x0018,0x0010,11},  /* XGI_LVDS1024x768Des_2x75 */
2928   {Panel1280x1024x75,0x0018,0x0000,12}, /* XGI_LVDS1280x1024Des_1x75 */
2929   {Panel1280x1024x75,0x0018,0x0010,13}, /* XGI_LVDS1280x1024Des_2x75 */
2930   {PanelRef75Hz,0x0008,0x0008,14},      /* XGI_LVDSNoScalingDesDatax75 */
2931   {0xFF,0x0000,0x0000,0}
2932 };
2933
2934 static struct XGI330_LCDDataTablStruct XGI_EPLCHLCDRegPtr[] =
2935 {
2936   {Panel1024x768,0x0000,0x0000,0}, /* XGI_CH7017LV1024x768 */
2937   {Panel1400x1050,0x0000,0x0000,1}, /* XGI_CH7017LV1400x1050 */
2938   {0xFF,0x0000,0x0000,0}
2939 };
2940
2941 static struct XGI330_TVDataTablStruct XGI_TVDataTable[] =
2942 {
2943  {0x09E1,0x0001,0},     /* XGI_ExtPALData */
2944  {0x09E1,0x0000,1},     /* XGI_ExtNTSCData */
2945  {0x09E1,0x0801,2},     /* XGI_StPALData */
2946  {0x09E1,0x0800,3},     /* XGI_StNTSCData */
2947  {0x49E0,0x0100,4},     /* XGI_ExtHiTVData */
2948  {0x49E0,0x4100,5},     /* XGI_St2HiTVData */
2949  {0x49E0,0x4900,13},    /* XGI_St1HiTVData */
2950  {0x09E0,0x0020,6},     /* XGI_ExtYPbPr525iData */
2951  {0x09E0,0x0040,7},     /* XGI_ExtYPbPr525pData */
2952  {0x09E0,0x0080,8},     /* XGI_ExtYPbPr750pData */
2953  {0x09E0,0x0820,9},     /* XGI_StYPbPr525iData */
2954  {0x09E0,0x0840,10},    /* XGI_StYPbPr525pData */
2955  {0x09E0,0x0880,11},    /* XGI_StYPbPr750pData */
2956  {0xffff,0x0000,12}     /* END */
2957 };
2958
2959 #if 0
2960 static unsigned short TVLenList[] =
2961 {
2962    LVDSCRT1Len_H,
2963    LVDSCRT1Len_V,
2964    LVDSDataLen,
2965    0,
2966    TVDataLen,
2967    0,
2968    0,
2969    CHTVRegLen
2970 } ;
2971 #endif
2972
2973 /* Chrontel 7017 TV CRT1 Timing List */
2974 static struct XGI330_TVDataTablStruct XGI_EPLCHTVCRT1Ptr[] =
2975 {
2976   {0x0011,0x0000,0}, /* XGI_CHTVCRT1UNTSC */
2977   {0x0011,0x0010,1}, /* XGI_CHTVCRT1ONTSC */
2978   {0x0011,0x0001,2}, /* XGI_CHTVCRT1UPAL */
2979   {0x0011,0x0011,3}, /* XGI_CHTVCRT1OPAL */
2980   {0xFFFF,0x0000,4}
2981 };
2982
2983 /* ;;Chrontel 7017 TV Timing List */
2984 static struct XGI330_TVDataTablStruct XGI_EPLCHTVDataPtr[] =
2985 {
2986   {0x0011,0x0000,0}, /* XGI_CHTVUNTSCData */
2987   {0x0011,0x0010,1}, /* XGI_CHTVONTSCData */
2988   {0x0011,0x0001,2}, /* XGI_CHTVUPALData */
2989   {0x0011,0x0011,3}, /* XGI_CHTVOPALData */
2990   {0xFFFF,0x0000,4}
2991 };
2992
2993 /* ;;Chrontel 7017 TV Reg. List */
2994 static struct XGI330_TVDataTablStruct XGI_EPLCHTVRegPtr[] =
2995 {
2996   {0x0011,0x0000,0}, /* XGI_CHTVRegUNTSC */
2997   {0x0011,0x0010,1}, /* XGI_CHTVRegONTSC */
2998   {0x0011,0x0001,2}, /* XGI_CHTVRegUPAL */
2999   {0x0011,0x0011,3}, /* XGI_CHTVRegOPAL */
3000   {0xFFFF,0x0000,4}
3001 };
3002
3003 static unsigned short LCDLenList[] =
3004 {
3005    LVDSCRT1Len_H,
3006    LVDSCRT1Len_V,
3007    LVDSDataLen,
3008    LCDDesDataLen,
3009    LCDDataLen,
3010    LCDDesDataLen,
3011    0,
3012    LCDDesDataLen,
3013    LCDDesDataLen,
3014    0
3015 } ;
3016
3017 #if 0
3018 static struct XGI330_LCDCapStruct  XGI660_LCDDLCapList[] =  /* 660, Dual link */
3019 {
3020 /* LCDCap1024x768 */
3021                 {Panel1024x768, DefaultLCDCap, 0, 0x014, 0x88, 0x06, VCLK65,
3022                  0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3023                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3024 /* LCDCap1280x1024 */
3025                 {Panel1280x1024, LCDDualLink+DefaultLCDCap, StLCDBToA, 0x053, 0x70, 0x03, VCLK108_2,
3026                  0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3027                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3028 /* LCDCap1400x1050 */
3029                 {Panel1400x1050, LCDDualLink+DefaultLCDCap, StLCDBToA, 0x053, 0x70, 0x03, VCLK108_2,
3030                  0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3031                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3032 /* LCDCap1600x1200 */
3033                 {Panel1600x1200, LCDDualLink+DefaultLCDCap, LCDToFull, 0x053, 0xC0, 0x03, VCLK162,
3034                  0x43, 0x22, 0x70, 0x24, 0x02, 0x14, 0x0A, 0x02, 0x00,
3035                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3036 /* LCDCap1024x768x75 */
3037                 {Panel1024x768x75, DefaultLCDCap, 0, 0x014, 0x60, 0, VCLK78_75,
3038                  0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3039                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3040 /* LCDCap1280x1024x75 */
3041                 {Panel1280x1024x75, LCDDualLink+DefaultLCDCap, StLCDBToA, 0x053, 0x90, 0x03, VCLK135_5,
3042                  0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3043                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3044 /* LCDCapDefault */
3045                 {0xFF, DefaultLCDCap, 0, 0x053, 0x88, 0x06, VCLK65,
3046                 0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3047                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3048 };
3049 #endif
3050
3051 static struct XGI330_LCDCapStruct  XGI_LCDDLCapList[] =  /* Dual link only */
3052 {
3053 /* LCDCap1024x768 */
3054                 {Panel1024x768, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3055                 0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3056                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3057 /* LCDCap1280x1024 */
3058                 {Panel1280x1024, LCDDualLink+DefaultLCDCap, StLCDBToA, 0x012, 0x70, 0x03, VCLK108_2,
3059                 0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3060                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3061 /* LCDCap1400x1050 */
3062                 {Panel1400x1050, LCDDualLink+DefaultLCDCap, StLCDBToA, 0x012, 0x70, 0x03, VCLK108_2,
3063                  0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3064                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3065 /* LCDCap1600x1200 */
3066                 {Panel1600x1200, LCDDualLink+DefaultLCDCap, LCDToFull, 0x012, 0xC0, 0x03, VCLK162,
3067                  0x43, 0x22, 0x70, 0x24, 0x02, 0x14, 0x0A, 0x02, 0x00,
3068                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3069 /* LCDCap1024x768x75 */
3070                 {Panel1024x768x75, DefaultLCDCap, 0, 0x012, 0x60, 0, VCLK78_75,
3071                  0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3072                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3073 /* LCDCap1280x1024x75 */
3074                 {Panel1280x1024x75, LCDDualLink+DefaultLCDCap, StLCDBToA, 0x012, 0x90, 0x03, VCLK135_5,
3075                  0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3076                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3077 /* LCDCapDefault */
3078                 {0xFF, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3079                 0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3080                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3081 };
3082
3083 #if 0
3084 static struct XGI330_LCDCapStruct  XGI660_LCDCapList[] =
3085 {
3086 /* LCDCap1024x768 */
3087                 {Panel1024x768, DefaultLCDCap, 0, 0x014, 0x88, 0x06, VCLK65,
3088                 0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3089                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3090 /* LCDCap1280x1024 */
3091                 {Panel1280x1024, DefaultLCDCap, StLCDBToA, 0x053, 0x70, 0x03, VCLK108_2,
3092                 0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3093                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3094 /* LCDCap1400x1050 */
3095                 {Panel1400x1050, DefaultLCDCap, StLCDBToA, 0x053, 0x70, 0x03, VCLK108_2,
3096                  0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3097                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3098 /* LCDCap1600x1200 */
3099                 {Panel1600x1200, DefaultLCDCap, LCDToFull, 0x053, 0xC0, 0x03, VCLK162,
3100                  0x5A, 0x23, 0x5A, 0x23, 0x02, 0x14, 0x0A, 0x02, 0x00,
3101                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3102 /* LCDCap1024x768x75 */
3103                 {Panel1024x768x75, DefaultLCDCap, 0, 0x014, 0x60, 0, VCLK78_75,
3104                  0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3105                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3106 /* LCDCap1280x1024x75 */
3107                 {Panel1280x1024x75,+DefaultLCDCap, StLCDBToA, 0x053, 0x90, 0x03, VCLK135_5,
3108                  0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3109                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3110 /* LCDCapDefault */
3111                 {0xFF, DefaultLCDCap, 0, 0x053, 0x88, 0x06, VCLK65,
3112                 0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3113                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3114 };
3115 #endif
3116
3117 static struct XGI330_LCDCapStruct  XGI_LCDCapList[] =
3118 {
3119 /* LCDCap1024x768 */
3120                 {Panel1024x768, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3121                 0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3122                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3123 /* LCDCap1280x1024 */
3124                 {Panel1280x1024, DefaultLCDCap, StLCDBToA, 0x012, 0x70, 0x03, VCLK108_2,
3125                 0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3126                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3127 /* LCDCap1400x1050 */
3128                 {Panel1400x1050, DefaultLCDCap, StLCDBToA, 0x012, 0x70, 0x03, VCLK108_2,
3129                  0x70, 0x44, 0xF8, 0x2F, 0x02, 0x14, 0x0A, 0x02, 0x00,
3130                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3131 /* LCDCap1600x1200 */
3132                 {Panel1600x1200, DefaultLCDCap, LCDToFull, 0x012, 0xC0, 0x03, VCLK162,
3133                  0x5A, 0x23, 0x5A, 0x23, 0x02, 0x14, 0x0A, 0x02, 0x00,
3134                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3135 /* LCDCap1024x768x75 */
3136                 {Panel1024x768x75, DefaultLCDCap, 0, 0x012, 0x60, 0, VCLK78_75,
3137                  0x2B, 0x61, 0x2B, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3138                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10},
3139 /* LCDCap1280x1024x75 */
3140                 {Panel1280x1024x75, DefaultLCDCap, StLCDBToA, 0x012, 0x90, 0x03, VCLK135_5,
3141                  0x54, 0x42, 0x4A, 0x61, 0x02, 0x14, 0x0A, 0x02, 0x00,
3142                  0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x30, 0x10},
3143 /* LCDCapDefault */
3144                 {0xFF, DefaultLCDCap, 0, 0x012, 0x88, 0x06, VCLK65,
3145                 0x6C, 0xC3, 0x35, 0x62, 0x02, 0x14, 0x0A, 0x02, 0x00,
3146                 0x30, 0x10, 0x5A, 0x10, 0x10, 0x0A, 0xC0, 0x28, 0x10}
3147 };
3148
3149 struct XGI21_LVDSCapStruct XGI21_LCDCapList[] =
3150 {
3151     {DisableLCD24bpp + LCDPolarity,
3152      2160,1250,1600,1200,  64,  1,  192,   3,
3153      0x70,0x24,0x20,0x04,0x0A,0x02,0xC8
3154     },
3155     {DisableLCD24bpp + LCDPolarity,
3156      1688,1066,1280,1024,  48,  1,  112,   3,
3157      0x70,0x44,0x20,0x04,0x0A,0x02,0xC8
3158     },
3159     {DisableLCD24bpp + LCDPolarity + (LCDPolarity << 8),
3160      1344, 806,1024, 768,  24,  3,  136,   6,
3161      0x6C,0x65,0x20,0x04,0x0A,0x02,0xC8
3162     },
3163     {DisableLCD24bpp + LCDPolarity,
3164      1056, 628, 800, 600,  40,   1, 128,   4,
3165      0x42,0xE2,0x20,0x14,0x0A,0x02,0x00
3166     },
3167     {DisableLCD24bpp + LCDPolarity,
3168       928, 525, 800, 480,  40,  13,  48,   3,
3169      0x52,0xC5,0x20,0x14,0x0A,0x02,0x00
3170     },
3171     {DisableLCD24bpp + LCDPolarity + (LCDPolarity << 8),
3172       800, 525, 640, 480,  16,  10,  96,   2,
3173      0x1B,0xE1,0x20,0x04,0x0A,0x02,0xC8
3174     }
3175
3176 };
3177
3178 static struct XGI_Ext2Struct XGI330_RefIndex[] =
3179 {
3180 {Support32Bpp + SupportAllCRT2 + SyncPN,                        RES320x200,      VCLK25_175, 0x00,0x10,0x59, 320, 200},/* 00 */
3181 {Support32Bpp + SupportAllCRT2 + SyncPN,                        RES320x200,      VCLK25_175, 0x00,0x10,0x00, 320, 400},/* 01 */
3182 {Support32Bpp + SupportAllCRT2 + SyncNN,                        RES320x240,      VCLK25_175, 0x04,0x20,0x50, 320, 240},/* 02 */
3183 {Support32Bpp + SupportAllCRT2 + SyncPP,                        RES400x300,      VCLK40,     0x05,0x32,0x51, 400, 300},/* 03 */
3184 {Support32Bpp + NoSupportTV + SyncNN + SupportTV1024,           RES512x384,      VCLK65,     0x06,0x43,0x52, 512, 384},/* 04 */
3185 {Support32Bpp + SupportAllCRT2 + SyncPN,                        RES640x400,      VCLK25_175, 0x00,0x14,0x2f, 640, 400},/* 05 */
3186 {Support32Bpp + SupportAllCRT2 + SyncNN,                        RES640x480x60,   VCLK25_175, 0x04,0x24,0x2e, 640, 480},/* 06 640x480x60Hz (LCD 640x480x60z) */
3187 {Support32Bpp + NoSupportHiVisionTV + SyncNN,                   RES640x480x72,   VCLK31_5,   0x04,0x24,0x2e, 640, 480},/* 07 640x480x72Hz (LCD 640x480x70Hz) */
3188 {Support32Bpp + NoSupportHiVisionTV + SyncNN,                   RES640x480x75,   VCLK31_5,   0x47,0x24,0x2e, 640, 480},/* 08 640x480x75Hz (LCD 640x480x75Hz) */
3189 {Support32Bpp + SupportRAMDAC2 + SyncNN,                        RES640x480x85,   VCLK36,     0x8A,0x24,0x2e, 640, 480},/* 09 640x480x85Hz */
3190 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES640x480x100,  VCLK43_163, 0x00,0x24,0x2e, 640, 480},/* 0a 640x480x100Hz */
3191 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES640x480x120,  VCLK52_406, 0x00,0x24,0x2e, 640, 480},/* 0b 640x480x120Hz */
3192 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES640x480x160,  VCLK72_852, 0x00,0x24,0x2e, 640, 480},/* 0c 640x480x160Hz */
3193 {Support32Bpp + SupportRAMDAC2 + SyncNN,                        RES640x480x200,  VCLK86_6,   0x00,0x24,0x2e, 640, 480},/* 0d 640x480x200Hz */
3194 {Support32Bpp + NoSupportLCD + SyncPP,                          RES800x600x56,   VCLK36,     0x05,0x36,0x6a, 800, 600},/* 0e 800x600x56Hz */
3195 {Support32Bpp + NoSupportTV + SyncPP,                           RES800x600x60,   VCLK40,     0x05,0x36,0x6a, 800, 600},/* 0f 800x600x60Hz (LCD 800x600x60Hz) */
3196 {Support32Bpp + NoSupportHiVisionTV + SyncPP,                   RES800x600x72,   VCLK50,     0x48,0x36,0x6a, 800, 600},/* 10 800x600x72Hz (LCD 800x600x70Hz) */
3197 {Support32Bpp + NoSupportHiVisionTV + SyncPP,                   RES800x600x75,   VCLK49_5,   0x8B,0x36,0x6a, 800, 600},/* 11 800x600x75Hz (LCD 800x600x75Hz) */
3198 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES800x600x85,   VCLK56_25,  0x00,0x36,0x6a, 800, 600},/* 12 800x600x85Hz */
3199 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES800x600x100,  VCLK68_179, 0x00,0x36,0x6a, 800, 600},/* 13 800x600x100Hz */
3200 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES800x600x120,  VCLK83_95,  0x00,0x36,0x6a, 800, 600},/* 14 800x600x120Hz */
3201 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES800x600x160,  VCLK116_406,0x00,0x36,0x6a, 800, 600},/* 15 800x600x160Hz */
3202 {Support32Bpp + InterlaceMode + SyncPP,                         RES1024x768x43,  VCLK44_9,   0x00,0x47,0x37,1024, 768},/* 16 1024x768x43Hz */
3203 {Support32Bpp + NoSupportTV + SyncNN + SupportTV1024,           RES1024x768x60,  VCLK65,     0x06,0x47,0x37,1024, 768},/* 17 1024x768x60Hz (LCD 1024x768x60Hz) */
3204 {Support32Bpp + NoSupportHiVisionTV + SyncNN,                   RES1024x768x70,  VCLK75,     0x49,0x47,0x37,1024, 768},/* 18 1024x768x70Hz (LCD 1024x768x70Hz) */
3205 {Support32Bpp + NoSupportHiVisionTV + SyncPP,                   RES1024x768x75,  VCLK78_75,  0x00,0x47,0x37,1024, 768},/* 19 1024x768x75Hz (LCD 1024x768x75Hz) */
3206 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES1024x768x85,  VCLK94_5,   0x8C,0x47,0x37,1024, 768},/* 1a 1024x768x85Hz */
3207 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES1024x768x100, VCLK113_309,0x00,0x47,0x37,1024, 768},/* 1b 1024x768x100Hz */
3208 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES1024x768x120, VCLK139_054,0x00,0x47,0x37,1024, 768},/* 1c 1024x768x120Hz */
3209 {Support32Bpp + SupportLCD + SyncPP,                            RES1280x960x60,  VCLK108_2,  0x08,0x58,0x7b,1280, 960},/* 1d 1280x960x60Hz */
3210 {Support32Bpp + InterlaceMode + SyncPP,                         RES1280x1024x43, VCLK78_75,  0x00,0x58,0x3a,1280,1024},/* 1e 1280x1024x43Hz */
3211 {Support32Bpp + NoSupportTV + SyncPP,                           RES1280x1024x60, VCLK108_2,  0x07,0x58,0x3a,1280,1024},/* 1f 1280x1024x60Hz (LCD 1280x1024x60Hz) */
3212 {Support32Bpp + NoSupportTV + SyncPP,                           RES1280x1024x75, VCLK135_5,  0x00,0x58,0x3a,1280,1024},/* 20 1280x1024x75Hz (LCD 1280x1024x75Hz) */
3213 {Support32Bpp + SyncPP,                                         RES1280x1024x85, VCLK157_5,  0x00,0x58,0x3a,1280,1024},/* 21 1280x1024x85Hz */
3214 {Support32Bpp + SupportLCD + SyncPP + SupportCRT2in301C,        RES1600x1200x60, VCLK162,    0x09,0x7A,0x3c,1600,1200},/* 22 1600x1200x60Hz */
3215 {Support32Bpp + SyncPP + SupportCRT2in301C,                     RES1600x1200x65, VCLK175,    0x00,0x69,0x3c,1600,1200},/* 23 1600x1200x65Hz */
3216 {Support32Bpp + SyncPP + SupportCRT2in301C,                     RES1600x1200x70, VCLK189,    0x00,0x69,0x3c,1600,1200},/* 24 1600x1200x70Hz */
3217 {Support32Bpp + SyncPP + SupportCRT2in301C,                     RES1600x1200x75, VCLK202_5,  0x00,0x69,0x3c,1600,1200},/* 25 1600x1200x75Hz */
3218 {Support32Bpp + SyncPP,                                         RES1600x1200x85, VCLK229_5,  0x00,0x69,0x3c,1600,1200},/* 26 1600x1200x85Hz */
3219 {Support32Bpp + SyncPP,                                         RES1600x1200x100,VCLK269_655,0x00,0x69,0x3c,1600,1200},/* 27 1600x1200x100Hz */
3220 {Support32Bpp + SyncPP,                                         RES1600x1200x120,VCLK323_586,0x00,0x69,0x3c,1600,1200},/* 28 1600x1200x120Hz */
3221 {Support32Bpp + SupportLCD + SyncNP,                            RES1920x1440x60, VCLK234,    0x00,0x00,0x68,1920,1440},/* 29 1920x1440x60Hz */
3222 {Support32Bpp + SyncPN,                                         RES1920x1440x65, VCLK254_817,0x00,0x00,0x68,1920,1440},/* 2a 1920x1440x65Hz */
3223 {Support32Bpp + SyncPN,                                         RES1920x1440x70, VCLK277_015,0x00,0x00,0x68,1920,1440},/* 2b 1920x1440x70Hz */
3224 {Support32Bpp + SyncPN,                                         RES1920x1440x75, VCLK291_132,0x00,0x00,0x68,1920,1440},/* 2c 1920x1440x75Hz */
3225 {Support32Bpp + SyncPN,                                         RES1920x1440x85, VCLK330_615,0x00,0x00,0x68,1920,1440},/* 2d 1920x1440x85Hz */
3226 {Support16Bpp + SyncPN,                                         RES1920x1440x100,VCLK388_631,0x00,0x00,0x68,1920,1440},/* 2e 1920x1440x100Hz */
3227 {Support32Bpp + SupportLCD + SyncPN,                            RES2048x1536x60, VCLK266_952,0x00,0x00,0x6c,2048,1536},/* 2f 2048x1536x60Hz */
3228 {Support32Bpp + SyncPN,                                         RES2048x1536x65, VCLK291_766,0x00,0x00,0x6c,2048,1536},/* 30 2048x1536x65Hz */
3229 {Support32Bpp + SyncPN,                                         RES2048x1536x70, VCLK315_195,0x00,0x00,0x6c,2048,1536},/* 31 2048x1536x70Hz */
3230 {Support32Bpp + SyncPN,                                         RES2048x1536x75, VCLK340_477,0x00,0x00,0x6c,2048,1536},/* 32 2048x1536x75Hz */
3231 {Support16Bpp + SyncPN,                                         RES2048x1536x85, VCLK375_847,0x00,0x00,0x6c,2048,1536},/* 33 2048x1536x85Hz */
3232 {Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 + SyncPP + SupportYPbPr,     RES800x480x60,   VCLK39_77,  0x08,0x00,0x70, 800, 480},/* 34 800x480x60Hz */
3233 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES800x480x75,   VCLK49_5,   0x08,0x00,0x70, 800, 480},/* 35 800x480x75Hz */
3234 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES800x480x85,   VCLK56_25,  0x08,0x00,0x70, 800, 480},/* 36 800x480x85Hz */
3235 {Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 + SyncPP + SupportYPbPr,     RES1024x576x60,  VCLK65,     0x09,0x00,0x71,1024, 576},/* 37 1024x576x60Hz */
3236 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES1024x576x75,  VCLK78_75,  0x09,0x00,0x71,1024, 576},/* 38 1024x576x75Hz */
3237 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES1024x576x85,  VCLK94_5,   0x09,0x00,0x71,1024, 576},/* 39 1024x576x85Hz */
3238 {Support32Bpp + SupportHiVisionTV + SupportRAMDAC2 + SyncPP + SupportYPbPr,     RES1280x720x60,  VCLK108_2,  0x0A,0x00,0x75,1280, 720},/* 3a 1280x720x60Hz */
3239 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES1280x720x75,  VCLK135_5,  0x0A,0x00,0x75,1280, 720},/* 3b 1280x720x75Hz */
3240 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES1280x720x85,  VCLK157_5,  0x0A,0x00,0x75,1280, 720},/* 3c 1280x720x85Hz */
3241 {Support32Bpp + SupportTV + SyncNN,                             RES720x480x60,   VCLK28_322, 0x06,0x00,0x31, 720, 480},/* 3d 720x480x60Hz */
3242 {Support32Bpp + SupportTV + SyncPP,                             RES720x576x56,   VCLK36,     0x06,0x00,0x32, 720, 576},/* 3e 720x576x56Hz */
3243 {Support32Bpp + InterlaceMode + NoSupportLCD + SyncPP,          RES856x480x79I,  VCLK35_2,   0x00,0x00,0x00, 856, 480},/* 3f 856x480x79I */
3244 {Support32Bpp + NoSupportLCD + SyncNN,                          RES856x480x60,   VCLK35_2,   0x00,0x00,0x00, 856, 480},/* 40 856x480x60Hz */
3245 {Support32Bpp + NoSupportHiVisionTV + SyncPP,                   RES1280x768x60,  VCLK79_411, 0x08,0x48,0x23,1280, 768},/* 41 1280x768x60Hz */
3246 {Support32Bpp + NoSupportHiVisionTV + SyncPP,                   RES1400x1050x60, VCLK122_61, 0x08,0x69,0x26,1400,1050},/* 42 1400x1050x60Hz */
3247 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES1152x864x60,  VCLK80_350, 0x37,0x00,0x20,1152, 864},/* 43 1152x864x60Hz */
3248 {Support32Bpp + SupportRAMDAC2 + SyncPP,                        RES1152x864x75,  VCLK107_385,0x37,0x00,0x20,1152, 864},/* 44 1152x864x75Hz */
3249 {Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP,           RES1280x960x75,  VCLK125_999,0x3A,0x88,0x7b,1280, 960},/* 45 1280x960x75Hz */
3250 {Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP,           RES1280x960x85,  VCLK148_5,  0x0A,0x88,0x7b,1280, 960},/* 46 1280x960x85Hz */
3251 {Support32Bpp + SupportLCD + SupportRAMDAC2 + SyncPP,           RES1280x960x120, VCLK217_325,0x3A,0x88,0x7b,1280, 960},/* 47 1280x960x120Hz */
3252 {Support32Bpp + SupportRAMDAC2 + SyncPN,                        RES1024x768x160, VCLK139_054,0x30,0x47,0x37,1024, 768},/* 48 1024x768x160Hz */
3253 };
3254
3255
3256 #if 0
3257 static struct XGI330_VCLKDataStruct XGI330_VCLKData[] =
3258 {
3259  { 0x1b,0xe1, 25}, /* 0x0 */
3260  { 0x4e,0xe4, 28}, /* 0x1 */
3261  { 0x57,0xe4, 31}, /* 0x2 */
3262  { 0xc3,0xc8, 36}, /* 0x3 */
3263  { 0x42,0xe2, 40}, /* 0x4 */
3264  { 0xfe,0xcd, 43}, /* 0x5 */
3265  { 0x5d,0xc4, 44}, /* 0x6 */
3266  { 0x52,0xe2, 49}, /* 0x7 */
3267  { 0x53,0xe2, 50}, /* 0x8 */
3268  { 0x74,0x67, 52}, /* 0x9 */
3269  { 0x6d,0x66, 56}, /* 0xa */
3270  { 0x6c,0xc3, 65}, /* 0xb */
3271  { 0x46,0x44, 67}, /* 0xc */
3272  { 0xb1,0x46, 68}, /* 0xd */
3273  { 0xd3,0x4a, 72}, /* 0xe */
3274  { 0x29,0x61, 75}, /* 0xf */
3275  { 0x6e,0x46, 76}, /* 0x10 */
3276  { 0x2b,0x61, 78}, /* 0x11 */
3277  { 0x31,0x42, 79}, /* 0x12 */
3278  { 0xab,0x44, 83}, /* 0x13 */
3279  { 0x46,0x25, 84}, /* 0x14 */
3280  { 0x78,0x29, 86}, /* 0x15 */
3281  { 0x62,0x44, 94}, /* 0x16 */
3282  { 0x2b,0x41,104}, /* 0x17 */
3283  { 0x3a,0x23,105}, /* 0x18 */
3284  { 0x70,0x44,108}, /* 0x19 */
3285  { 0x3c,0x23,109}, /* 0x1a */
3286  { 0x5e,0x43,113}, /* 0x1b */
3287  { 0xbc,0x44,116}, /* 0x1c */
3288  { 0xe0,0x46,132}, /* 0x1d */
3289  { 0x54,0x42,135}, /* 0x1e */
3290  { 0xea,0x2a,139}, /* 0x1f */
3291  { 0x41,0x22,157}, /* 0x20 */
3292  { 0x70,0x24,162}, /* 0x21 */
3293  { 0x30,0x21,175}, /* 0x22 */
3294  { 0x4e,0x22,189}, /* 0x23 */
3295  { 0xde,0x26,194}, /* 0x24 */
3296  { 0x62,0x06,202}, /* 0x25 */
3297  { 0x3f,0x03,229}, /* 0x26 */
3298  { 0xb8,0x06,234}, /* 0x27 */
3299  { 0x34,0x02,253}, /* 0x28 */
3300  { 0x58,0x04,255}, /* 0x29 */
3301  { 0x24,0x01,265}, /* 0x2a */
3302  { 0x9b,0x02,267}, /* 0x2b */
3303  { 0x70,0x05,270}, /* 0x2c */
3304  { 0x25,0x01,272}, /* 0x2d */
3305  { 0x9c,0x02,277}, /* 0x2e */
3306  { 0x27,0x01,286}, /* 0x2f */
3307  { 0x3c,0x02,291}, /* 0x30 */
3308  { 0xef,0x0a,292}, /* 0x31 */
3309  { 0xf6,0x0a,310}, /* 0x32 */
3310  { 0x95,0x01,315}, /* 0x33 */
3311  { 0xf0,0x09,324}, /* 0x34 */
3312  { 0xfe,0x0a,331}, /* 0x35 */
3313  { 0xf3,0x09,332}, /* 0x36 */
3314  { 0xea,0x08,340}, /* 0x37 */
3315  { 0xe8,0x07,376}, /* 0x38 */
3316  { 0xde,0x06,389}, /* 0x39 */
3317  { 0x52,0x2a, 54}, /* 0x3a */
3318  { 0x52,0x6a, 27}, /* 0x3b */
3319  { 0x62,0x24, 70}, /* 0x3c */
3320  { 0x62,0x64, 70}, /* 0x3d */
3321  { 0xa8,0x4c, 30}, /* 0x3e */
3322  { 0x20,0x26, 33}, /* 0x3f */
3323  { 0x31,0xc2, 39}, /* 0x40 */
3324  { 0x60,0x36, 30}, /* 0x41 */
3325  { 0x40,0x4A, 28}, /* 0x42 */
3326  { 0x9F,0x46, 44}, /* 0x43 */
3327  { 0x97,0x2C, 26}, /* 0x44 */
3328  { 0x44,0xE4, 25}, /* 0x45 */
3329  { 0x7E,0x32, 47}, /* 0x46 */
3330  { 0x08,0x24, 31}, /* 0x47 */
3331  { 0x97,0x2c, 26}, /* 0x48 */
3332  { 0xCE,0x3c, 39}, /* 0x49 */
3333  { 0x52,0x4A, 36}, /* 0x4a */
3334  { 0x2C,0x61, 95}, /* 0x4b */
3335  { 0x78,0x27,108}, /* 0x4c */
3336  { 0x66,0x43,123},  /* 0x4d */
3337  { 0x2c,0x61, 80},  /* 0x4e */
3338  { 0x3b,0x61,108}  /* 0x4f */
3339 };
3340
3341 static struct XGI_VBVCLKDataStruct XGI330_VBVCLKData[] =
3342 {
3343  { 0x1b,0xe1, 25}, /* 0x0 */
3344  { 0x4e,0xe4, 28}, /* 0x1 */
3345  { 0x57,0xe4, 31}, /* 0x2 */
3346  { 0xc3,0xc8, 36}, /* 0x3 */
3347  { 0x42,0x47, 40}, /* 0x4 */
3348  { 0xfe,0xcd, 43}, /* 0x5 */
3349  { 0x5d,0xc4, 44}, /* 0x6 */
3350  { 0x52,0x47, 49}, /* 0x7 */
3351  { 0x53,0x47, 50}, /* 0x8 */
3352  { 0x74,0x67, 52}, /* 0x9 */
3353  { 0x6d,0x66, 56}, /* 0xa */
3354  { 0x5a,0x64, 65}, /* 0xb */
3355  { 0x46,0x44, 67}, /* 0xc */
3356  { 0xb1,0x46, 68}, /* 0xd */
3357  { 0xd3,0x4a, 72}, /* 0xe */
3358  { 0x29,0x61, 75}, /* 0xf */
3359  { 0x6d,0x46, 75}, /* 0x10 */
3360  { 0x41,0x43, 78}, /* 0x11 */
3361  { 0x31,0x42, 79}, /* 0x12 */
3362  { 0xab,0x44, 83}, /* 0x13 */
3363  { 0x46,0x25, 84}, /* 0x14 */
3364  { 0x78,0x29, 86}, /* 0x15 */
3365  { 0x62,0x44, 94}, /* 0x16 */
3366  { 0x2b,0x22,104}, /* 0x17 */
3367  { 0x49,0x24,105}, /* 0x18 */
3368  { 0xf8,0x2f,108}, /* 0x19 */
3369  { 0x3c,0x23,109}, /* 0x1a */
3370  { 0x5e,0x43,113}, /* 0x1b */
3371  { 0xbc,0x44,116}, /* 0x1c */
3372  { 0xe0,0x46,132}, /* 0x1d */
3373  { 0xd4,0x28,135}, /* 0x1e */
3374  { 0xea,0x2a,139}, /* 0x1f */
3375  { 0x41,0x22,157}, /* 0x20 */
3376  { 0x70,0x24,162}, /* 0x21 */
3377  { 0x30,0x21,175}, /* 0x22 */
3378  { 0x4e,0x22,189}, /* 0x23 */
3379  { 0xde,0x26,194}, /* 0x24 */
3380  { 0x70,0x07,202}, /* 0x25 */
3381  { 0x3f,0x03,229}, /* 0x26 */
3382  { 0xb8,0x06,234}, /* 0x27 */
3383  { 0x34,0x02,253}, /* 0x28 */
3384  { 0x58,0x04,255}, /* 0x29 */
3385  { 0x24,0x01,265}, /* 0x2a */
3386  { 0x9b,0x02,267}, /* 0x2b */
3387  { 0x70,0x05,270}, /* 0x2c */
3388  { 0x25,0x01,272}, /* 0x2d */
3389  { 0x9c,0x02,277}, /* 0x2e */
3390  { 0x27,0x01,286}, /* 0x2f */
3391  { 0x3c,0x02,291}, /* 0x30 */
3392  { 0xef,0x0a,292}, /* 0x31 */
3393  { 0xf6,0x0a,310}, /* 0x32 */
3394  { 0x95,0x01,315}, /* 0x33 */
3395  { 0xf0,0x09,324}, /* 0x34 */
3396  { 0xfe,0x0a,331}, /* 0x35 */
3397  { 0xf3,0x09,332}, /* 0x36 */
3398  { 0xea,0x08,340}, /* 0x37 */
3399  { 0xe8,0x07,376}, /* 0x38 */
3400  { 0xde,0x06,389}, /* 0x39 */
3401  { 0x52,0x2a, 54}, /* 0x3a */
3402  { 0x52,0x6a, 27}, /* 0x3b */
3403  { 0x62,0x24, 70}, /* 0x3c */
3404  { 0x62,0x64, 70}, /* 0x3d */
3405  { 0xa8,0x4c, 30}, /* 0x3e */
3406  { 0x20,0x26, 33}, /* 0x3f */
3407  { 0x31,0xc2, 39}, /* 0x40 */
3408  { 0x2e,0x48, 25}, /* 0x41 */
3409  { 0x24,0x46, 25}, /* 0x42 */
3410  { 0x26,0x64, 28}, /* 0x43 */
3411  { 0x37,0x64, 40}, /* 0x44 */
3412  { 0xa1,0x42,108}, /* 0x45 */
3413  { 0x37,0x61,100}, /* 0x46 */
3414  { 0x78,0x27,108}, /* 0x47 */
3415  { 0x5e,0x64,68},  /* 0x48 chiawen for fuj1280x768*/
3416  { 0x70,0x44,108}, /* 0x49 chiawen for 1400x1050*/
3417 };
3418 #endif
3419
3420 static unsigned char XGI330_ScreenOffset[] = {
3421                                         0x14, 0x19, 0x20, 0x28, 0x32, 0x40,
3422                                         0x50, 0x64, 0x78, 0x80, 0x2d, 0x35,
3423                                         0x57, 0x48};
3424
3425 static struct XGI_StResInfoStruct XGI330_StResInfo[] =
3426 {
3427  { 640,400},
3428  { 640,350},
3429  { 720,400},
3430  { 720,350},
3431  { 640,480}
3432 };
3433
3434 static struct XGI_ModeResInfoStruct XGI330_ModeResInfo[] =
3435 {
3436  {  320, 200, 8, 8},
3437  {  320, 240, 8, 8},
3438  {  320, 400, 8, 8},
3439  {  400, 300, 8, 8},
3440  {  512, 384, 8, 8},
3441  {  640, 400, 8,16},
3442  {  640, 480, 8,16},
3443  {  800, 600, 8,16},
3444  { 1024, 768, 8,16},
3445  { 1280,1024, 8,16},
3446  { 1600,1200, 8,16},
3447  { 1920,1440, 8,16},
3448  { 2048,1536, 8,16},
3449  {  720, 480, 8,16},
3450  {  720, 576, 8,16},
3451  { 1280, 960, 8,16},
3452  {  800, 480, 8,16},
3453  { 1024, 576, 8,16},
3454  { 1280, 720, 8,16},
3455  {  856, 480, 8,16},
3456  { 1280, 768, 8,16},
3457  { 1400,1050, 8,16},
3458  { 1152, 864, 8,16}
3459 };
3460
3461 static unsigned char XGI330_OutputSelect = 0x40;
3462 static unsigned char XGI330_SoftSetting = 0x30;
3463 static unsigned char XGI330_SR07 = 0x18;
3464
3465 #if 0
3466 static unsigned char XGI330New_SR15[8][8] = {
3467 {0x0,0x4,0x60,0x60},
3468 {0xf,0xf,0xf,0xf},
3469 {0xba,0xba,0xba,0xba},
3470 {0xa9,0xa9,0xac,0xac},
3471 {0xa0,0xa0,0xa0,0xa8},
3472 {0x0,0x0,0x2,0x2},
3473 {0x30,0x30,0x40,0x40},
3474 {0x0,0xa5,0xfb,0xf6}
3475 };
3476
3477 static unsigned char XGI330New_CR40[5][8] = {
3478 {0x77,0x77,0x44,0x44},
3479 {0x77,0x77,0x44,0x44},
3480 {0x0,0x0,0x0,0x0},
3481 {0x5b,0x5b,0xab,0xab},
3482 {0x0,0x0,0xf0,0xf8}
3483 };
3484 #endif
3485
3486 static unsigned char XGI330_CR49[] = {0xaa, 0x88};
3487 static unsigned char XGI330_SR1F = 0x0;
3488 static unsigned char XGI330_SR21 = 0xa3;
3489 #if 0
3490 static unsigned char XGI330_650_SR21 = 0xa7;
3491 #endif
3492 static unsigned char XGI330_SR22 = 0xfb;
3493 static unsigned char XGI330_SR23 = 0xf6;
3494 static unsigned char XGI330_SR24 = 0xd;
3495
3496 #if 0
3497 static unsigned char XGI660_SR21 = 0xa3;/* 2003.0312 */
3498 static unsigned char XGI660_SR22 = 0xf3;/* 2003.0312 */
3499
3500 static unsigned char XGI330_LVDS_SR32 = 0x00;   /* ynlai for 650 LVDS */
3501 static unsigned char XGI330_LVDS_SR33 = 0x00;   /* chiawen for 650 LVDS */
3502 static unsigned char XGI330_650_SR31 = 0x40;
3503 static unsigned char XGI330_650_SR33 = 0x04;
3504 #endif
3505 static unsigned char XGI330_CRT2Data_1_2 = 0x0;
3506 static unsigned char XGI330_CRT2Data_4_D = 0x0;
3507 static unsigned char XGI330_CRT2Data_4_E = 0x0;
3508 static unsigned char XGI330_CRT2Data_4_10 = 0x80;
3509 static unsigned short XGI330_RGBSenseData = 0xd1;
3510 static unsigned short XGI330_VideoSenseData = 0xb9;
3511 static unsigned short XGI330_YCSenseData = 0xb3;
3512 static unsigned short XGI330_RGBSenseData2 = 0x0190;     /*301b*/
3513 static unsigned short XGI330_VideoSenseData2 = 0x0110;
3514 static unsigned short XGI330_YCSenseData2 = 0x016B;
3515 #if 0
3516 static unsigned char XGI330_NTSCPhase[] = {0x21, 0xed, 0x8a, 0x8};
3517 static unsigned char XGI330_PALPhase[] = {0x2a, 0x5, 0xd3, 0x0};
3518 static unsigned char XGI330_NTSCPhase2[] = {0x21, 0xF0, 0x7B, 0xD6};/*301b*/
3519 static unsigned char XGI330_PALPhase2[] = {0x2a, 0x09, 0x86, 0xe9};
3520 static unsigned char XGI330_PALMPhase[] = {0x21, 0xE4, 0x2E, 0x9B};   /*palmn*/
3521 static unsigned char XGI330_PALNPhase[] = {0x21, 0xF4, 0x3E, 0xBA};
3522 #endif
3523 static unsigned char XG40_I2CDefinition = 0x00 ;
3524 static unsigned char XG20_CR97 = 0x10 ;
3525
3526 static unsigned char XG21_DVOSetting = 0x00 ;
3527 static unsigned char XG21_CR2E = 0x00 ;
3528 static unsigned char XG21_CR2F = 0x00 ;
3529 static unsigned char XG21_CR46 = 0x00 ;
3530 static unsigned char XG21_CR47 = 0x00 ;
3531
3532 static unsigned char XG27_CR97 = 0xC1 ;
3533 static unsigned char XG27_SR36 = 0x30 ;
3534 static unsigned char XG27_CR8F = 0x0C ;
3535 static unsigned char XG27_CRD0[] = {0, 0, 0, 0, 0, 0, 0, 0x82, 0x00, 0x66, 0x01, 0x00};
3536 static unsigned char XG27_CRDE[] = {0, 0};
3537 static unsigned char XG27_SR40 = 0x04 ;
3538 static unsigned char XG27_SR41 = 0x00 ;
3539
3540 static unsigned char XGI330_CHTVVCLKUNTSC[] = {0x00};
3541
3542 static unsigned char XGI330_CHTVVCLKONTSC[] = {0x00};
3543
3544 static unsigned char XGI330_CHTVVCLKUPAL[] = {0x00};
3545
3546 static unsigned char XGI330_CHTVVCLKOPAL[] = {0x00};
3547
3548 static unsigned char XGI7007_CHTVVCLKUNTSC[] = {CH7007TVVCLK30_2,
3549                                CH7007TVVCLK30_2,
3550                                CH7007TVVCLK30_2,
3551                                CH7007TVVCLK30_2,
3552                                CH7007TVVCLK28_1,
3553                                CH7007TVVCLK47_8
3554                               };
3555
3556 static unsigned char XGI7007_CHTVVCLKONTSC[] = {CH7007TVVCLK26_4,
3557                                CH7007TVVCLK26_4,
3558                                CH7007TVVCLK26_4,
3559                                CH7007TVVCLK26_4,
3560                                CH7007TVVCLK24_6,
3561                                CH7007TVVCLK43_6
3562                               };
3563
3564 static unsigned char XGI7007_CHTVVCLKUPAL[] = {CH7007TVVCLK31_5,
3565                               CH7007TVVCLK31_5,
3566                               CH7007TVVCLK31_5,
3567                               CH7007TVVCLK31_5,
3568                               CH7007TVVCLK26_2,
3569                               CH7007TVVCLK39
3570                              };
3571
3572 static unsigned char XGI7007_CHTVVCLKOPAL[] = {CH7007TVVCLK31_5,
3573                               CH7007TVVCLK31_5,
3574                               CH7007TVVCLK31_5,
3575                               CH7007TVVCLK31_5,
3576                               CH7007TVVCLK26_2,
3577                               CH7007TVVCLK36
3578                              };
3579
3580 static struct XGI330_VCLKDataStruct XGI_CH7007VCLKData[] =
3581 {
3582  { 0x60,0x36,30},  /* 0 30.2 MHZ */
3583  { 0x40,0x4A,28},  /* 1 28.19 MHZ */
3584  { 0x9F,0x46,44},  /* 2 43.6 MHZ */
3585  { 0x97,0x2C,26},  /* 3 26.4 MHZ */
3586  { 0x44,0xE4,25},  /* 4 24.6 MHZ */
3587  { 0x7E,0x32,47},  /* 5 47.832 MHZ */
3588  { 0x8A,0x24,31},  /* 6 31.5 MHZ */
3589  { 0x97,0x2C,26},  /* 7 26.2 MHZ */
3590  { 0xCE,0x3C,39},  /* 8 39 MHZ   */
3591  { 0x52,0x4A,36},  /* 9 36 MHZ   */
3592  { 0xFF,0x00,0 }   /* End mark      */
3593 };
3594
3595 static struct XGI330_VCLKDataStruct XGI_VCLKData[] =
3596 {
3597                 /* SR2B,SR2C,SR2D */
3598                 {      0x1B,0xE1,25               },/* 00 (25.175MHz) */
3599
3600                 {      0x4E,0xE4,28               },/* 01 (28.322MHz) */
3601
3602                 {      0x57,0xE4,31               },/* 02 (31.500MHz) */
3603
3604                 {      0xC3,0xC8,36               },/* 03 (36.000MHz) */
3605
3606                 {      0x42,0xE2,40               },/* 04 (40.000MHz) */
3607
3608                 {      0xFE,0xCD,43               },/* 05 (43.163MHz) */
3609
3610                 {      0x5D,0xC4,44               },/* 06 (44.900MHz) */
3611
3612                 {      0x52,0xE2,49               },/* 07 (49.500MHz) */
3613
3614                 {      0x53,0xE2,50               },/* 08 (50.000MHz) */
3615
3616                 {      0x74,0x67,52               },/* 09 (52.406MHz) */
3617
3618                 {      0x6D,0x66,56               },/* 0A (56.250MHz) */
3619
3620                 {      0x6C,0xC3,65               },/* 0B (65.000MHz) */
3621
3622                 {      0x46,0x44,67               },/* 0C (67.765MHz) */
3623
3624                 {      0xB1,0x46,68               },/* 0D (68.179MHz) */
3625
3626                 {      0xD3,0x4A,72               },/* 0E (72.852MHz) */
3627
3628                 {      0x29,0x61,75              },/* 0F (75.000MHz) */
3629
3630                 {      0x6E,0x46,76               },/* 10 (75.800MHz) */
3631
3632                 {      0x2B,0x61,78               },/* 11 (78.750MHz) */
3633
3634                 {      0x31,0x42,79               },/* 12 (79.411MHz) */
3635
3636                 {      0xAB,0x44,83               },/* 13 (83.950MHz) */
3637
3638                 {      0x46,0x25,84               },/* 14 (84.800MHz) */
3639
3640                 {      0x78,0x29,86               },/* 15 (86.600MHz) */
3641
3642                 {      0x62,0x44,94               },/* 16 (94.500MHz) */
3643
3644                 {      0x2B,0x41,104               },/* 17 (104.998MHz) */
3645
3646                 {      0x3A,0x23,105               },/* 18 (105.882MHz) */
3647
3648                 {      0x70,0x44,108               },/* 19 (107.862MHz) */
3649
3650                 {      0x3C,0x23,109               },/* 1A (109.175MHz) */
3651
3652                 {      0x5E,0x43,113              },/* 1B (113.309MHz) */
3653
3654                 {      0xBC,0x44,116              },/* 1C (116.406MHz) */
3655
3656                 {      0xE0,0x46,132              },/* 1D (132.258MHz) */
3657
3658                 {      0x54,0x42,135               },/* 1E (135.500MHz) */
3659
3660                 {      0x9C,0x22,139               },/* 1F (139.275MHz) */
3661
3662                 {      0x41,0x22,157               },/* 20 (157.500MHz) */
3663
3664                 {      0x70,0x24,162               },/* 21 (161.793MHz) */
3665
3666                 {      0x30,0x21,175               },/* 22 (175.000MHz) */
3667
3668                 {      0x4E,0x22,189              },/* 23 (188.520MHz) */
3669
3670                 {      0xDE,0x26,194              },/* 24 (194.400MHz) */
3671
3672                 {      0x62,0x06,202               },/* 25 (202.500MHz) */
3673
3674                 {      0x3F,0x03,229               },/* 26 (229.500MHz) */
3675
3676                 {      0xB8,0x06,234               },/* 27 (233.178MHz) */
3677
3678                 {      0x34,0x02,253               },/* 28 (252.699MHz) */
3679
3680                 {      0x58,0x04,255               },/* 29 (254.817MHz) */
3681
3682                 {      0x24,0x01,265              },/* 2A (265.728MHz) */
3683
3684                 {      0x9B,0x02,267               },/* 2B (266.952MHz) */
3685
3686                 {      0x70,0x05,270               },/* 2C (269.65567MHz) */
3687
3688                 {      0x25,0x01,272               },/* 2D (272.04199MHz) */
3689
3690                 {      0x9C,0x02,277               },/* 2E (277.015MHz) */
3691
3692                 {      0x27,0x01,286               },/* 2F (286.359985MHz) */
3693
3694                 {      0xB3,0x04,291               },/* 30 (291.13266MHz) */
3695
3696                 {      0xBC,0x05,292               },/* 31 (291.766MHz) */
3697
3698                 {      0xF6,0x0A,310               },/* 32 (309.789459MHz) */
3699
3700                 {      0x95,0x01,315               },/* 33 (315.195MHz) */
3701
3702                 {      0xF0,0x09,324               },/* 34 (323.586792MHz) */
3703
3704                 {      0xFE,0x0A,331               },/* 35 (330.615631MHz) */
3705
3706                 {      0xF3,0x09,332              },/* 36 (332.177612MHz) */
3707
3708                 {      0x5E,0x03,340              },/* 37 (340.477MHz) */
3709
3710                 {      0xE8,0x07,376              },/* 38 (375.847504MHz) */
3711
3712                 {      0xDE, 0x06,389             },/* 39 (388.631439MHz) */
3713
3714                 {      0x52,0x2A,54               },/* 3A (54.000MHz) */
3715
3716                 {      0x52,0x6A,27              },/* 3B (27.000MHz) */
3717
3718                 {      0x62,0x24,70               },/* 3C (70.874991MHz) */
3719
3720                 {      0x62,0x64,70               },/* 3D (70.1048912MHz) */
3721
3722                 {      0xA8,0x4C,30               },/* 3E (30.1048912MHz) */
3723
3724                 {      0x20,0x26,33               },/* 3F (33.7499957MHz) */
3725
3726                 {      0x31,0xc2,39               },/* 40 (39.77MHz) */
3727
3728                 {      0x11,0x21,30               },/* 41 (30MHz) }// NTSC 1024X768 */
3729
3730                 {      0x2E,0x48,25               },/* 42 (25.175MHz) }// ScaleLCD */
3731
3732                 {      0x24,0x46,25               },/* 43 (25.175MHz) */
3733
3734                 {      0x26,0x64,28               },/* 44 (28.322MHz) */
3735
3736                 {      0x37,0x64,40               },/* 45 (40.000MHz) */
3737
3738                 {      0xA1,0x42,108               },/* 46 (95.000MHz) }// QVGA */
3739
3740                 {      0x37,0x61,100               },/* 47 (100.00MHz) */
3741
3742                 {      0x78,0x27,108               },/* 48 (108.200MHz) */
3743
3744                 {      0xBF,0xC8,35               },/* 49 (35.2MHz) */
3745
3746                 {      0x66,0x43,123               },/* 4A (122.61Mhz) */
3747
3748                 {      0x2C,0x61,80               },/* 4B (80.350Mhz) */
3749
3750                 {      0x3B,0x61,108               },/* 4C (107.385Mhz) */
3751
3752
3753 /*                {      0x60,0x36,30               },// 4D (30.200MHz)   }// No use
3754
3755                 {      0x60,0x36,30               },// 4E (30.200MHz)   }// No use
3756
3757                 {      0x60,0x36,30               },// 4F (30.200MHz)   }// No use
3758
3759                 {      0x60,0x36,30               },// 50 (30.200MHz)   }// CHTV
3760
3761                 {      0x40,0x4A,28               },// 51 (28.190MHz)
3762
3763                 {      0x9F,0x46,44               },// 52 (43.600MHz)
3764
3765                 {      0x97,0x2C,26               },// 53 (26.400MHz)
3766
3767                 {      0x44,0xE4,25               },// 54 (24.600MHz)
3768
3769                 {      0x7E,0x32,47               },// 55 (47.832MHz)
3770
3771                 {      0x8A,0x24,31               },// 56 (31.500MHz)
3772
3773                 {      0x97,0x2C,26               },// 57 (26.200MHz)
3774
3775                 {      0xCE,0x3C,39               },// 58 (39.000MHz)
3776
3777                 {      0x52,0x4A,36               },// 59 (36.000MHz)
3778
3779 */
3780                 {      0x69,0x61,191              }, /* 4D (190.96MHz ) */
3781                 {      0x4F,0x22,192              }, /* 4E (192.069MHz) */
3782                 {      0x28,0x26,322              }, /* 4F (322.273MHz) */
3783                 {      0x5C,0x6B,27               }, /* 50 (27.74HMz) */
3784                 {      0x57,0x24,126              }, /* 51 (125.999MHz) */
3785                 {      0x5C,0x42,148              }, /* 52 (148.5MHz) */
3786                 {      0x42,0x61,120              }, /* 53 (120.839MHz) */
3787                 {      0x62,0x61,178              }, /* 54 (178.992MHz) */
3788                 {      0x59,0x22,217              }, /* 55 (217.325MHz) */
3789                 {      0x29,0x01,300              }, /* 56 (299.505Mhz) */
3790                 {      0x52,0x63,74               }, /* 57 (74.25MHz) */
3791
3792
3793                 {      0xFF,0x00,0                }/* End mark */
3794  }  ;
3795
3796 static struct XGI330_VCLKDataStruct XGI_VBVCLKData[] =
3797 {
3798                 {      0x1B,0xE1,25               },/* 00 (25.175MHz) */
3799
3800                 {      0x4E,0xE4,28               },/* 01 (28.322MHz) */
3801
3802                 {      0x57,0xE4,31               },/* 02 (31.500MHz) */
3803
3804                 {      0xC3,0xC8,36               },/* 03 (36.000MHz) */
3805
3806                 {      0x42,0x47,40               },/* 04 (40.000MHz) */
3807
3808                 {      0xFE,0xCD,43               },/* 05 (43.163MHz) */
3809
3810                 {      0x5D,0xC4,44               },/* 06 (44.900MHz) */
3811
3812                 {      0x52,0x47,49               },/* 07 (49.500MHz) */
3813
3814                 {      0x53,0x47,50               },/* 08 (50.000MHz) */
3815
3816                 {      0x74,0x67,52               },/* 09 (52.406MHz) */
3817
3818                 {      0x6D,0x66,56               },/* 0A (56.250MHz) */
3819
3820                 {      0x35,0x62,65               },/* 0B (65.000MHz) */
3821
3822                 {      0x46,0x44,67               },/* 0C (67.765MHz) */
3823
3824                 {      0xB1,0x46,68               },/* 0D (68.179MHz) */
3825
3826                 {      0xD3,0x4A,72               },/* 0E (72.852MHz) */
3827
3828                 {      0x29,0x61,75               },/* 0F (75.000MHz) */
3829
3830                 {      0x6D,0x46,75               },/* 10 (75.800MHz) */
3831
3832                 {      0x41,0x43,78               },/* 11 (78.750MHz) */
3833
3834                 {      0x31,0x42,79               },/* 12 (79.411MHz) */
3835
3836                 {      0xAB,0x44,83               },/* 13 (83.950MHz) */
3837
3838                 {      0x46,0x25,84               },/* 14 (84.800MHz) */
3839
3840                 {      0x78,0x29,86               },/* 15 (86.600MHz) */
3841
3842                 {      0x62,0x44,94               },/* 16 (94.500MHz) */
3843
3844                 {      0x2B,0x22,104               },/* 17 (104.998MHz) */
3845
3846                 {      0x49,0x24,105               },/* 18 (105.882MHz) */
3847
3848                 {      0xF8,0x2F,108               },/* 19 (108.279MHz) */
3849
3850                 {      0x3C,0x23,109               },/* 1A (109.175MHz) */
3851
3852                 {      0x5E,0x43,113               },/* 1B (113.309MHz) */
3853
3854                 {      0xBC,0x44,116               },/* 1C (116.406MHz) */
3855
3856                 {      0xE0,0x46,132               },/* 1D (132.258MHz) */
3857
3858                 {      0xD4,0x28,135               },/* 1E (135.220MHz) */
3859
3860                 {      0xEA,0x2A,139               },/* 1F (139.275MHz) */
3861
3862                 {      0x41,0x22,157               },/* 20 (157.500MHz) */
3863
3864                 {      0x70,0x24,162               },/* 21 (161.793MHz) */
3865
3866                 {      0x30,0x21,175               },/* 22 (175.000MHz) */
3867
3868                 {      0x4E,0x22,189               },/* 23 (188.520MHz) */
3869
3870                 {      0xDE,0x26,194               },/* 24 (194.400MHz) */
3871
3872                 {      0x70,0x07,202               },/* 25 (202.500MHz) */
3873
3874                 {      0x3F,0x03,229               },/* 26 (229.500MHz) */
3875
3876                 {      0xB8,0x06,234               },/* 27 (233.178MHz) */
3877
3878                 {      0x34,0x02,253               },/* 28 (252.699997 MHz) */
3879
3880                 {      0x58,0x04,255               },/* 29 (254.817MHz) */
3881
3882                 {      0x24,0x01,265               },/* 2A (265.728MHz) */
3883
3884                 {      0x9B,0x02,267               },/* 2B (266.952MHz) */
3885
3886                 {      0x70,0x05,270               },/* 2C (269.65567 MHz) */
3887
3888                 {      0x25,0x01,272               },/* 2D (272.041992 MHz) */
3889
3890                 {      0x9C,0x02,277               },/* 2E (277.015MHz) */
3891
3892                 {      0x27,0x01,286               },/* 2F (286.359985 MHz) */
3893
3894                 {      0x3C,0x02,291               },/* 30 (291.132660 MHz) */
3895
3896                 {      0xEF,0x0A,292               },/* 31 (291.766MHz) */
3897
3898                 {      0xF6,0x0A,310               },/* 32 (309.789459 MHz) */
3899
3900                 {      0x95,0x01,315               },/* 33 (315.195MHz) */
3901
3902                 {      0xF0,0x09,324               },/* 34 (323.586792 MHz) */
3903
3904                 {      0xFE,0x0A,331               },/* 35 (330.615631 MHz) */
3905
3906                 {      0xF3,0x09,332               },/* 36 (332.177612 MHz) */
3907
3908                 {      0xEA,0x08,340               },/* 37 (340.477MHz) */
3909
3910                 {      0xE8,0x07,376               },/* 38 (375.847504 MHz) */
3911
3912                 {      0xDE,0x06,389               },/* 39 (388.631439 MHz) */
3913
3914                 {      0x52,0x2A,54                },/* 3A (54.000MHz) */
3915
3916                 {      0x52,0x6A,27                },/* 3B (27.000MHz) */
3917
3918
3919                 {      0x62,0x24,70                },/* 3C (70.874991MHz) */
3920
3921
3922                 {      0x62,0x64,70                },/* 3D (70.1048912MHz) */
3923
3924                 {      0xA8,0x4C,30                },/* 3E (30.1048912MHz) */
3925
3926                 {      0x20,0x26,33                },/* 3F (33.7499957MHz) */
3927
3928                 {      0x31,0xc2,39                },/* 40 (39.77MHz) */
3929
3930                 {      0x11,0x21,30                },/* 41 (30MHz) }// NTSC 1024X768 */
3931
3932                 {      0x2E,0x48,25                },/* 42 (25.175MHz) }// ScaleLCD */
3933
3934                 {      0x24,0x46,25                },/* 43 (25.175MHz) */
3935
3936                 {      0x26,0x64,28                },/* 44 (28.322MHz) */
3937
3938                 {      0x37,0x64,40                },/* 45 (40.000MHz) */
3939
3940                 {      0xA1,0x42,108               },/* 46 (95.000MHz) }// QVGA */
3941
3942                 {      0x37,0x61,100               },/* 47 (100.00MHz) */
3943
3944                 {      0x78,0x27,108               },/* 48 (108.200MHz) */
3945
3946                 {      0xBF,0xC8,35                },/* 49 (35.2MHz) */
3947
3948                 {      0x66,0x43,123               },/* 4A (122.61Mhz) */
3949
3950                 {      0x2C,0x61,80                },/* 4B (80.350Mhz) */
3951
3952                 {      0x3B,0x61,108               },/* 4C (107.385Mhz) */
3953
3954 /*
3955                 {      0x60,0x36,30               },// 4D (30.200MHz)   }// No use
3956
3957                 {      0x60,0x36,30               },// 4E (30.200MHz)   }// No use
3958
3959                 {      0x60,0x36,30               },// 4F (30.200MHz)   }// No use
3960
3961                 {      0x60,0x36,30               },// 50 (30.200MHz)   }// CHTV
3962
3963                 {      0x40,0x4A,28               },// 51 (28.190MHz)
3964
3965                 {      0x9F,0x46,44               },// 52 (43.600MHz)
3966
3967                 {      0x97,0x2C,26               },// 53 (26.400MHz)
3968
3969                 {      0x44,0xE4,25               },// 54 (24.600MHz)
3970
3971                 {      0x7E,0x32,47               },// 55 (47.832MHz)
3972
3973                 {      0x8A,0x24,31               },// 56 (31.500MHz)
3974
3975                 {      0x97,0x2C,26               },// 57 (26.200MHz)
3976
3977                 {      0xCE,0x3C,39               },// 58 (39.000MHz)
3978
3979                 {      0x52,0x4A,36               },// 59 (36.000MHz)
3980 */
3981                 {      0x69,0x61,191              }, /* 4D (190.96MHz ) */
3982                 {      0x4F,0x22,192              }, /* 4E (192.069MHz) */
3983                 {      0x28,0x26,322              }, /* 4F (322.273MHz) */
3984                 {      0x5C,0x6B,27               }, /* 50 (27.74HMz) */
3985                 {      0x57,0x24,126              }, /* 51 (125.999MHz) */
3986                 {      0x5C,0x42,148              }, /* 52 (148.5MHz) */
3987                 {      0x42,0x61,120              }, /* 53 (120.839MHz) */
3988                 {      0x62,0x61,178              }, /* 54 (178.992MHz) */
3989                 {      0x59,0x22,217              }, /* 55 (217.325MHz) */
3990                 {      0x29,0x01,300              }, /* 56 (299.505Mhz) */
3991                 {      0x52,0x63,74               }, /* 57 (74.25MHz) */
3992
3993
3994                 {      0xFF,0x00,0                }      /* End mark */
3995 };
3996
3997 #if 0
3998 static unsigned char XGI660_TVDelayList[] =
3999 {
4000           0x44,            /* ; 0 ExtNTSCDelay */
4001           0x44,            /* ; 1 StNTSCDelay */
4002           0x44,            /* ; 2 ExtPALDelay */
4003           0x44,            /* ; 3 StPALDelay */
4004           0x44,            /* ; 4 ExtHiTVDelay(1080i) */
4005           0x44,            /* ; 5 StHiTVDelay(1080i) */
4006           0x44,            /* ; 6 ExtYPbPrDelay(525i) */
4007           0x44,            /* ; 7 StYPbPrDealy(525i) */
4008           0x44,            /* ; 8 ExtYPbPrDelay(525p) */
4009           0x44,            /* ; 9 StYPbPrDealy(525p) */
4010           0x44,            /* ; A ExtYPbPrDelay(750p) */
4011           0x44             /* ; B StYPbPrDealy(750p) */
4012 };
4013
4014 static unsigned char XGI660_TVDelayList2[] =
4015 {
4016           0x44,           /* ; 0 ExtNTSCDelay */
4017           0x44,           /* ; 1 StNTSCDelay */
4018           0x44,           /* ; 2 ExtPALDelay */
4019           0x44,           /* ; 3 StPALDelay */
4020           0x44,           /* ; 4 ExtHiTVDelay */
4021           0x44,           /* ; 5 StHiTVDelay */
4022           0x44,           /* ; 6 ExtYPbPrDelay(525i) */
4023           0x44,           /* ; 7 StYPbPrDealy(525i) */
4024           0x44,           /* ; 8 ExtYPbPrDelay(525p) */
4025           0x44,           /* ; 9 StYPbPrDealy(525p) */
4026           0x44,           /* ; A ExtYPbPrDelay(750p) */
4027           0x44            /* ; B StYPbPrDealy(750p) */
4028 };
4029 #endif
4030
4031 static unsigned char XGI301TVDelayList[] =
4032 {
4033         0x22,            /* ; 0 ExtNTSCDelay */
4034         0x22,            /* ; 1 StNTSCDelay */
4035         0x22,            /* ; 2 ExtPALDelay */
4036         0x22,            /* ; 3 StPALDelay */
4037         0x88,            /* ; 4 ExtHiTVDelay(1080i) */
4038         0xBB,            /* ; 5 StHiTVDelay(1080i) */
4039         0x22,            /* ; 6 ExtYPbPrDelay(525i) */
4040         0x22,            /* ; 7 StYPbPrDealy(525i) */
4041         0x22,            /* ; 8 ExtYPbPrDelay(525p) */
4042         0x22,            /* ; 9 StYPbPrDealy(525p) */
4043         0x22,            /* ; A ExtYPbPrDelay(750p) */
4044         0x22            /* B StYPbPrDealy(750p) */
4045 };
4046
4047 static unsigned char XGI301TVDelayList2[] =
4048 {
4049         0x22,           /* ; 0 ExtNTSCDelay */
4050         0x22,           /* ; 1 StNTSCDelay */
4051         0x22,           /* ; 2 ExtPALDelay */
4052         0x22,           /* ; 3 StPALDelay */
4053         0x22,           /* ; 4 ExtHiTVDelay */
4054         0x22,           /* ; 5 StHiTVDelay */
4055         0x22,           /* ; 6 ExtYPbPrDelay(525i) */
4056         0x22,           /* ; 7 StYPbPrDealy(525i) */
4057         0x22,           /* ; 8 ExtYPbPrDelay(525p) */
4058         0x22,           /* ; 9 StYPbPrDealy(525p) */
4059         0x22,           /* ; A ExtYPbPrDelay(750p) */
4060         0x22            /* ; B StYPbPrDealy(750p) */
4061 };
4062
4063
4064 static unsigned char TVAntiFlickList[] =
4065 {/* NTSCAntiFlicker */
4066                       0x04,           /* ; 0 Adaptive */
4067                       0x00,           /* ; 1 new anti-flicker ? */
4068 /* PALAntiFlicker */
4069                       0x04,           /* ; 0 Adaptive */
4070                       0x08,           /* ; 1 new anti-flicker ? */
4071 /* HiTVAntiFlicker */
4072                       0x04,           /* ; 0 ? */
4073                       0x00            /* ; 1 new anti-flicker ? */
4074 };
4075
4076
4077 static unsigned char TVEdgeList[] =
4078 {
4079       0x00,            /* ; 0 NTSC No Edge enhance */
4080       0x04,            /* ; 1 NTSC Adaptive Edge enhance */
4081       0x00,            /* ; 0 PAL No Edge enhance */
4082       0x04,            /* ; 1 PAL Adaptive Edge enhance */
4083       0x00,            /* ; 0 HiTV */
4084       0x00             /* ; 1 HiTV */
4085 };
4086
4087 static unsigned long TVPhaseList[] =
4088 {      0x08BAED21, /* ; 0 NTSC phase */
4089        0x00E3052A, /* ; 1 PAL phase */
4090        0x9B2EE421, /* ; 2 PAL-M phase */
4091        0xBA3EF421, /* ; 3 PAL-N phase */
4092        0xA7A28B1E, /* ; 4 NTSC 1024x768 */
4093        0xE00A831E, /* ; 5 PAL-M 1024x768 */
4094        0x00000000, /* ; 6 reserved */
4095        0x00000000, /* ; 7 reserved */
4096        0xD67BF021, /* ; 8 NTSC phase */
4097        0xE986092A, /* ; 9 PAL phase */
4098        0xA4EFE621, /* ; A PAL-M phase */
4099        0x4694F621, /* ; B PAL-N phase */
4100        0x8BDE711C, /* ; C NTSC 1024x768 */
4101        0xE00A831E  /* ; D PAL-M 1024x768 */
4102 };
4103
4104 static unsigned char NTSCYFilter1[] =
4105 {
4106                       0x00,0xF4,0x10,0x38     ,/* 0 : 320x text mode */
4107                       0x00,0xF4,0x10,0x38     ,/* 1 : 360x text mode */
4108                       0xEB,0x04,0x25,0x18     ,/* 2 : 640x text mode */
4109                       0xF1,0x04,0x1F,0x18     ,/* 3 : 720x text mode */
4110                       0x00,0xF4,0x10,0x38     ,/* 4 : 320x gra. mode */
4111                       0xEB,0x04,0x25,0x18     ,/* 5 : 640x gra. mode */
4112                       0xEB,0x15,0x25,0xF6     /* 6 : 800x gra. mode */
4113 };
4114
4115 static unsigned char PALYFilter1[] =
4116 {
4117                       0x00,0xF4,0x10,0x38, /* 0 : 320x text mode */
4118                       0x00,0xF4,0x10,0x38     ,/* 1 : 360x text mode */
4119                       0xF1,0xF7,0x1F,0x32     ,/* 2 : 640x text mode */
4120                       0xF3,0x00,0x1D,0x20     ,/* 3 : 720x text mode */
4121                       0x00,0xF4,0x10,0x38     ,/* 4 : 320x gra. mode */
4122                       0xF1,0xF7,0x1F,0x32     ,/* 5 : 640x gra. mode */
4123                       0xFC,0xFB,0x14,0x2A     /* 6 : 800x gra. mode */
4124 };
4125
4126 static unsigned char PALMYFilter1[] =
4127 {
4128                       0x00,0xF4,0x10,0x38, /* 0 : 320x text mode */
4129                       0x00,0xF4,0x10,0x38, /* 1 : 360x text mode */
4130                       0xEB,0x04,0x10,0x18, /* 2 : 640x text mode */
4131                       0xF7,0x06,0x19,0x14, /* 3 : 720x text mode */
4132                       0x00,0xF4,0x10,0x38, /* 4 : 320x gra. mode */
4133                       0xEB,0x04,0x25,0x18, /* 5 : 640x gra. mode */
4134                       0xEB,0x15,0x25,0xF6, /* 6 : 800x gra. mode */
4135                       0xFF,0xFF,0xFF,0xFF  /* End of Table */
4136 };
4137
4138 static unsigned char PALNYFilter1[] =
4139 {
4140                       0x00,0xF4,0x10,0x38, /* 0 : 320x text mode */
4141                       0x00,0xF4,0x10,0x38, /* 1 : 360x text mode */
4142                       0xEB,0x04,0x10,0x18, /* 2 : 640x text mode */
4143                       0xF7,0x06,0x19,0x14, /* 3 : 720x text mode */
4144                       0x00,0xF4,0x10,0x38, /* 4 : 320x gra. mode */
4145                       0xEB,0x04,0x25,0x18, /* 5 : 640x gra. mode */
4146                       0xEB,0x15,0x25,0xF6, /* 6 : 800x gra. mode */
4147                       0xFF,0xFF,0xFF,0xFF  /* End of Table */
4148 };
4149
4150 static unsigned char NTSCYFilter2[] =
4151 {
4152                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 0 : 320x text mode */
4153                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 1 : 360x text mode */
4154                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 2 : 640x text mode */
4155                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 3 : 720x text mode */
4156                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 4 : 320x gra. mode */
4157                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 5 : 640x gra. mode */
4158                       0x01,0x01,0xFC,0xF8,0x08,0x26,0x38, /* 6 : 800x gra. mode */
4159                       0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28  /* 7 : 1024xgra. mode */
4160 };
4161
4162 static unsigned char PALYFilter2[] =
4163 {
4164                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 0 : 320x text mode */
4165                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 1 : 360x text mode */
4166                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 2 : 640x text mode */
4167                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 3 : 720x text mode */
4168                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 4 : 320x gra. mode */
4169                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 5 : 640x gra. mode */
4170                       0x01,0x01,0xFC,0xF8,0x08,0x26,0x38, /* 6 : 800x gra. mode */
4171                       0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28  /* 7 : 1024xgra. mode */
4172 };
4173
4174 static unsigned char PALMYFilter2[] =
4175 {
4176                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 0 : 320x text mode */
4177                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 1 : 360x text mode */
4178                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 2 : 640x text mode */
4179                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 3 : 720x text mode */
4180                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 4 : 320x gra. mode */
4181                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 5 : 640x gra. mode */
4182                       0x01,0x01,0xFC,0xF8,0x08,0x26,0x38, /* 6 : 800x gra. mode */
4183                       0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28  /* 7 : 1024xgra. mode */
4184 };
4185
4186 static unsigned char PALNYFilter2[] =
4187 {
4188                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 0 : 320x text mode */
4189                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 1 : 360x text mode */
4190                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 2 : 640x text mode */
4191                       0x01,0x02,0xFE,0xF7,0x03,0x27,0x3C, /* 3 : 720x text mode */
4192                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 4 : 320x gra. mode */
4193                       0xFF,0x03,0x02,0xF6,0xFC,0x27,0x46, /* 5 : 640x gra. mode */
4194                       0x01,0x01,0xFC,0xF8,0x08,0x26,0x38, /* 6 : 800x gra. mode */
4195                       0xFF,0xFF,0xFC,0x00,0x0F,0x22,0x28  /* 7 : 1024xgra. mode */
4196 };
4197
4198 static unsigned char XGI_NTSC1024AdjTime[] =
4199 {
4200       0xa7,0x07,0xf2,0x6e,0x17,0x8b,0x73,0x53,
4201       0x13,0x40,0x34,0xF4,0x63,0xBB,0xCC,0x7A,
4202       0x58,0xe4,0x73,0xd0,0x13
4203 };
4204
4205 static struct XGI301C_Tap4TimingStruct HiTVTap4Timing[] =
4206 {
4207         {0,{
4208         0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F, /* ; C0-C7 */
4209         0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E, /* ; C8-CF */
4210         0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E, /* ; D0-D7 */
4211         0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C, /* ; D8-DF */
4212         0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C, /* ; E0-E7 */
4213         0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C, /* ; EA-EF */
4214         0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C, /* ; F0-F7 */
4215         0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E  /* ; F8-FF */
4216         }
4217         }
4218 };
4219
4220 static struct XGI301C_Tap4TimingStruct EnlargeTap4Timing[] =
4221 {
4222         {0,{
4223         0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F, /* ; C0-C7 */
4224         0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E, /* ; C8-CF */
4225         0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E, /* ; D0-D7 */
4226         0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C, /* ; D8-DF */
4227         0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C, /* ; E0-E7 */
4228         0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C, /* ; EA-EF */
4229         0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C, /* ; F0-F7 */
4230         0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E   /* ; F8-FF */
4231         }
4232         }
4233 };
4234
4235 static struct XGI301C_Tap4TimingStruct NoScaleTap4Timing[] =
4236 {
4237         {0,{
4238         0x00,0x20,0x00,0x00,0x7F,0x20,0x02,0x7F, /* ; C0-C7 */
4239         0x7D,0x20,0x04,0x7F,0x7D,0x1F,0x06,0x7E, /* ; C8-CF */
4240         0x7C,0x1D,0x09,0x7E,0x7C,0x1B,0x0B,0x7E, /* ; D0-D7 */
4241         0x7C,0x19,0x0E,0x7D,0x7C,0x17,0x11,0x7C, /* ; D8-DF */
4242         0x7C,0x14,0x14,0x7C,0x7C,0x11,0x17,0x7C, /* ; E0-E7 */
4243         0x7D,0x0E,0x19,0x7C,0x7E,0x0B,0x1B,0x7C, /* ; EA-EF */
4244         0x7E,0x09,0x1D,0x7C,0x7F,0x06,0x1F,0x7C, /* ; F0-F7 */
4245         0x7F,0x04,0x20,0x7D,0x00,0x02,0x20,0x7E  /* ; F8-FF */
4246         }
4247         }
4248 };
4249
4250 static struct XGI301C_Tap4TimingStruct PALTap4Timing[] =
4251 {
4252         {600,  {
4253                 0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E, /* ; C0-C7 */
4254                 0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D, /* ; C8-CF */
4255                 0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C, /* ; D0-D7 */
4256                 0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D, /* ; D8-DF */
4257                 0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E, /* ; E0-E7 */
4258                 0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E, /* ; EA-EF */
4259                 0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01, /* ; F0-F7 */
4260                 0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04  /* ; F8-FF */
4261                 }
4262         },
4263         {768,   {
4264                 0x08,0x12,0x08,0x7E,0x07,0x12,0x09,0x7E, /* ; C0-C7 */
4265                 0x06,0x12,0x0A,0x7E,0x05,0x11,0x0B,0x7F, /* ; C8-CF */
4266                 0x04,0x11,0x0C,0x7F,0x03,0x11,0x0C,0x00, /* ; D0-D7 */
4267                 0x03,0x10,0x0D,0x00,0x02,0x0F,0x0E,0x01, /* ; D8-DF */
4268                 0x01,0x0F,0x0F,0x01,0x01,0x0E,0x0F,0x02, /* ; E0-E7 */
4269                 0x00,0x0D,0x10,0x03,0x7F,0x0C,0x11,0x04, /* ; EA-EF */
4270                 0x7F,0x0C,0x11,0x04,0x7F,0x0B,0x11,0x05, /* ; F0-F7 */
4271                 0x7E,0x0A,0x12,0x06,0x7E,0x09,0x12,0x07  /* ; F8-FF */
4272                 }
4273         },
4274         {0xFFFF,
4275                 {
4276                 0x04,0x1A,0x04,0x7E,0x02,0x1B,0x05,0x7E, /* ; C0-C7 */
4277                 0x01,0x1A,0x07,0x7E,0x00,0x1A,0x09,0x7D, /* ; C8-CF */
4278                 0x7F,0x19,0x0B,0x7D,0x7E,0x18,0x0D,0x7D, /* ; D0-D7 */
4279                 0x7D,0x17,0x10,0x7C,0x7D,0x15,0x12,0x7C, /* ; D8-DF */
4280                 0x7C,0x14,0x14,0x7C,0x7C,0x12,0x15,0x7D, /* ; E0-E7 */
4281                 0x7C,0x10,0x17,0x7D,0x7C,0x0D,0x18,0x7F, /* ; EA-EF */
4282                 0x7D,0x0B,0x19,0x7F,0x7D,0x09,0x1A,0x00, /* ; F0-F7 */
4283                 0x7D,0x07,0x1A,0x02,0x7E,0x05,0x1B,0x02  /* ; F8-FF */
4284                 }
4285         }
4286 };
4287
4288 static struct XGI301C_Tap4TimingStruct NTSCTap4Timing[] =
4289 {
4290         {480,   {
4291                 0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D, /* ; C0-C7 */
4292                 0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D, /* ; C8-CF */
4293                 0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C, /* ; D0-D7 */
4294                 0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C, /* ; D8-DF */
4295                 0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D, /* ; E0-E7 */
4296                 0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E, /* ; EA-EF */
4297                 0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00, /* ; F0-F7 */
4298                 0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02  /* ; F8-FF */
4299                 }
4300         },
4301         {600,   {
4302                 0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D, /* ; C0-C7 */
4303                 0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E, /* ; C8-CF */
4304                 0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F, /* ; D0-D7 */
4305                 0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F, /* ; D8-DF */
4306                 0x01,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01, /* ; E0-E7 */
4307                 0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03, /* ; EA-EF */
4308                 0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04, /* ; F0-F7 */
4309                 0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06  /* ; F8-FF */
4310                 }
4311         },
4312         {0xFFFF,
4313                 {
4314                 0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00, /* ; C0-C7 */
4315                 0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01, /* ; C8-CF */
4316                 0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02, /* ; D0-D7 */
4317                 0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03, /* ; D8-DF */
4318                 0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05, /* ; E0-E7 */
4319                 0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06, /* ; EA-EF */
4320                 0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07, /* ; F0-F7 */
4321                 0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08  /* ; F8-FF */
4322                 }
4323         }
4324 };
4325
4326 static struct XGI301C_Tap4TimingStruct YPbPr525pTap4Timing[] =
4327 {
4328         {480,   {
4329                 0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D, /* ; C0-C7 */
4330                 0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D, /* ; C8-CF */
4331                 0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C, /* ; D0-D7 */
4332                 0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C, /* ; D8-DF */
4333                 0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D, /* ; E0-E7 */
4334                 0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E, /* ; EA-EF */
4335                 0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00, /* ; F0-F7 */
4336                 0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02  /* ; F8-FF */
4337                 }
4338         },
4339         {600,   {
4340                 0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D, /* ; C0-C7 */
4341                 0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E, /* ; C8-CF */
4342                 0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F, /* ; D0-D7 */
4343                 0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F, /* ; D8-DF */
4344                 0x01,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01, /* ; E0-E7 */
4345                 0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03, /* ; EA-EF */
4346                 0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04, /* ; F0-F7 */
4347                 0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06  /* ; F8-FF */
4348                 }
4349         },
4350         {0xFFFF,
4351                 {
4352                 0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00, /* ; C0-C7 */
4353                 0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01, /* ; C8-CF */
4354                 0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02, /* ; D0-D7 */
4355                 0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03, /* ; D8-DF */
4356                 0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05, /* ; E0-E7 */
4357                 0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06, /* ; EA-EF */
4358                 0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07, /* ; F0-F7 */
4359                 0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08  /* ; F8-FF */
4360                 }
4361         }
4362 };
4363
4364 static struct XGI301C_Tap4TimingStruct YPbPr525iTap4Timing[] =
4365 {
4366         {480,   {
4367                 0x04,0x1A,0x04,0x7E,0x03,0x1A,0x06,0x7D, /* ; C0-C7 */
4368                 0x01,0x1A,0x08,0x7D,0x00,0x19,0x0A,0x7D, /* ; C8-CF */
4369                 0x7F,0x19,0x0C,0x7C,0x7E,0x18,0x0E,0x7C, /* ; D0-D7 */
4370                 0x7E,0x17,0x10,0x7B,0x7D,0x15,0x12,0x7C, /* ; D8-DF */
4371                 0x7D,0x13,0x13,0x7D,0x7C,0x12,0x15,0x7D, /* ; E0-E7 */
4372                 0x7C,0x10,0x17,0x7D,0x7C,0x0E,0x18,0x7E, /* ; EA-EF */
4373                 0x7D,0x0C,0x19,0x7E,0x7D,0x0A,0x19,0x00, /* ; F0-F7 */
4374                 0x7D,0x08,0x1A,0x01,0x7E,0x06,0x1A,0x02  /* ; F8-FF */
4375                 }
4376         },
4377         {600,   {
4378                 0x07,0x14,0x07,0x7E,0x06,0x14,0x09,0x7D, /* ; C0-C7 */
4379                 0x05,0x14,0x0A,0x7D,0x04,0x13,0x0B,0x7E, /* ; C8-CF */
4380                 0x03,0x13,0x0C,0x7E,0x02,0x12,0x0D,0x7F, /* ; D0-D7 */
4381                 0x01,0x12,0x0E,0x7F,0x01,0x11,0x0F,0x7F, /* ; D8-DF */
4382                 0x01,0x10,0x10,0x00,0x7F,0x0F,0x11,0x01, /* ; E0-E7 */
4383                 0x7F,0x0E,0x12,0x01,0x7E,0x0D,0x12,0x03, /* ; EA-EF */
4384                 0x7E,0x0C,0x13,0x03,0x7E,0x0B,0x13,0x04, /* ; F0-F7 */
4385                 0x7E,0x0A,0x14,0x04,0x7D,0x09,0x14,0x06  /* ; F8-FF */
4386                 }
4387         },
4388         {0xFFFF,
4389                 {
4390                 0x09,0x0F,0x09,0x7F,0x08,0x0F,0x09,0x00, /* ; C0-C7 */
4391                 0x07,0x0F,0x0A,0x00,0x06,0x0F,0x0A,0x01, /* ; C8-CF */
4392                 0x06,0x0E,0x0B,0x01,0x05,0x0E,0x0B,0x02, /* ; D0-D7 */
4393                 0x04,0x0E,0x0C,0x02,0x04,0x0D,0x0C,0x03, /* ; D8-DF */
4394                 0x03,0x0D,0x0D,0x03,0x02,0x0C,0x0D,0x05, /* ; E0-E7 */
4395                 0x02,0x0C,0x0E,0x04,0x01,0x0B,0x0E,0x06, /* ; EA-EF */
4396                 0x01,0x0B,0x0E,0x06,0x00,0x0A,0x0F,0x07, /* ; F0-F7 */
4397                 0x00,0x0A,0x0F,0x07,0x00,0x09,0x0F,0x08  /* ; F8-FF */
4398                 }
4399         }
4400 };
4401
4402 static struct XGI301C_Tap4TimingStruct YPbPr750pTap4Timing[] =
4403 {        {0xFFFF,
4404                {
4405                0x05,0x19,0x05,0x7D,0x03,0x19,0x06,0x7E, /* ; C0-C7 */
4406                0x02,0x19,0x08,0x7D,0x01,0x18,0x0A,0x7D, /* ; C8-CF */
4407                0x00,0x18,0x0C,0x7C,0x7F,0x17,0x0E,0x7C, /* ; D0-D7 */
4408                0x7E,0x16,0x0F,0x7D,0x7E,0x14,0x11,0x7D, /* ; D8-DF */
4409                0x7D,0x13,0x13,0x7D,0x7D,0x11,0x14,0x7E, /* ; E0-E7 */
4410                0x7D,0x0F,0x16,0x7E,0x7D,0x0E,0x17,0x7E, /* ; EA-EF */
4411                0x7D,0x0C,0x18,0x7F,0x7D,0x0A,0x18,0x01, /* ; F0-F7 */
4412                0x7D,0x08,0x19,0x02,0x7D,0x06,0x19,0x04 /* F8-FF */
4413                }
4414         }
4415 };