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