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