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