1 // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
5 * Data and prototypes for init.c
7 * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
9 * If distributed as part of the Linux kernel, the following license terms
12 * * This program is free software; you can redistribute it and/or modify
13 * * it under the terms of the GNU General Public License as published by
14 * * the Free Software Foundation; either version 2 of the named License,
15 * * or any later version.
17 * * This program is distributed in the hope that it will be useful,
18 * * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 * * GNU General Public License for more details.
22 * * You should have received a copy of the GNU General Public License
23 * * along with this program; if not, write to the Free Software
24 * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
26 * Otherwise, the following license terms apply:
28 * * Redistribution and use in source and binary forms, with or without
29 * * modification, are permitted provided that the following conditions
31 * * 1) Redistributions of source code must retain the above copyright
32 * * notice, this list of conditions and the following disclaimer.
33 * * 2) Redistributions in binary form must reproduce the above copyright
34 * * notice, this list of conditions and the following disclaimer in the
35 * * documentation and/or other materials provided with the distribution.
36 * * 3) The name of the author may not be used to endorse or promote products
37 * * derived from this software without specific prior written permission.
39 * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
40 * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
41 * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
42 * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
43 * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44 * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
45 * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
46 * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
47 * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
48 * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50 * Author: Thomas Winischhofer <thomas@winischhofer.net>
54 #ifndef _SISUSB_INIT_H_
55 #define _SISUSB_INIT_H_
62 #define Mode15Bpp 0x04
63 #define Mode16Bpp 0x05
64 #define Mode24Bpp 0x06
65 #define Mode32Bpp 0x07
67 #define ModeTypeMask 0x07
68 #define IsTextMode 0x07
70 #define DACInfoFlag 0x0018
71 #define MemoryInfoFlag 0x01E0
72 #define MemorySizeShift 5
75 #define Charx8Dot 0x0200
76 #define LineCompareOff 0x0400
77 #define CRT2Mode 0x0800
78 #define HalfDCLK 0x1000
79 #define NoSupportSimuTV 0x2000
80 #define NoSupportLCDScale 0x4000 /* SiS bridge: No scaling possible (no matter what panel) */
81 #define DoubleScanMode 0x8000
84 #define SupportTV 0x0008
85 #define SupportTV1024 0x0800
86 #define SupportCHTV 0x0800
87 #define Support64048060Hz 0x0800 /* Special for 640x480 LCD */
88 #define SupportHiVision 0x0010
89 #define SupportYPbPr750p 0x1000
90 #define SupportLCD 0x0020
91 #define SupportRAMDAC2 0x0040 /* All (<= 100Mhz) */
92 #define SupportRAMDAC2_135 0x0100 /* All except DH (<= 135Mhz) */
93 #define SupportRAMDAC2_162 0x0200 /* B, C (<= 162Mhz) */
94 #define SupportRAMDAC2_202 0x0400 /* C (<= 202Mhz) */
95 #define InterlaceMode 0x0080
102 #define ProgrammingCRT2 0x0001
103 #define LowModeTests 0x0002
104 #define LCDVESATiming 0x0008
105 #define EnableLVDSDDA 0x0010
106 #define SetDispDevSwitchFlag 0x0020
107 #define CheckWinDos 0x0040
108 #define SetDOSMode 0x0080
110 /* Index in ModeResInfo table */
111 #define SIS_RI_320x200 0
112 #define SIS_RI_320x240 1
113 #define SIS_RI_320x400 2
114 #define SIS_RI_400x300 3
115 #define SIS_RI_512x384 4
116 #define SIS_RI_640x400 5
117 #define SIS_RI_640x480 6
118 #define SIS_RI_800x600 7
119 #define SIS_RI_1024x768 8
120 #define SIS_RI_1280x1024 9
121 #define SIS_RI_1600x1200 10
122 #define SIS_RI_1920x1440 11
123 #define SIS_RI_2048x1536 12
124 #define SIS_RI_720x480 13
125 #define SIS_RI_720x576 14
126 #define SIS_RI_1280x960 15
127 #define SIS_RI_800x480 16
128 #define SIS_RI_1024x576 17
129 #define SIS_RI_1280x720 18
130 #define SIS_RI_856x480 19
131 #define SIS_RI_1280x768 20
132 #define SIS_RI_1400x1050 21
133 #define SIS_RI_1152x864 22 /* Up to here SiS conforming */
134 #define SIS_RI_848x480 23
135 #define SIS_RI_1360x768 24
136 #define SIS_RI_1024x600 25
137 #define SIS_RI_1152x768 26
138 #define SIS_RI_768x576 27
139 #define SIS_RI_1360x1024 28
140 #define SIS_RI_1680x1050 29
141 #define SIS_RI_1280x800 30
142 #define SIS_RI_1920x1080 31
143 #define SIS_RI_960x540 32
144 #define SIS_RI_960x600 33
146 #define SIS_VIDEO_CAPTURE 0x00 - 0x30
147 #define SIS_VIDEO_PLAYBACK 0x02 - 0x30
148 #define SIS_CRT2_PORT_04 0x04 - 0x30
151 static const unsigned short ModeIndex_320x200
[] = { 0x59, 0x41, 0x00, 0x4f };
152 static const unsigned short ModeIndex_320x240
[] = { 0x50, 0x56, 0x00, 0x53 };
153 static const unsigned short ModeIndex_400x300
[] = { 0x51, 0x57, 0x00, 0x54 };
154 static const unsigned short ModeIndex_512x384
[] = { 0x52, 0x58, 0x00, 0x5c };
155 static const unsigned short ModeIndex_640x400
[] = { 0x2f, 0x5d, 0x00, 0x5e };
156 static const unsigned short ModeIndex_640x480
[] = { 0x2e, 0x44, 0x00, 0x62 };
157 static const unsigned short ModeIndex_720x480
[] = { 0x31, 0x33, 0x00, 0x35 };
158 static const unsigned short ModeIndex_720x576
[] = { 0x32, 0x34, 0x00, 0x36 };
159 static const unsigned short ModeIndex_768x576
[] = { 0x5f, 0x60, 0x00, 0x61 };
160 static const unsigned short ModeIndex_800x480
[] = { 0x70, 0x7a, 0x00, 0x76 };
161 static const unsigned short ModeIndex_800x600
[] = { 0x30, 0x47, 0x00, 0x63 };
162 static const unsigned short ModeIndex_848x480
[] = { 0x39, 0x3b, 0x00, 0x3e };
163 static const unsigned short ModeIndex_856x480
[] = { 0x3f, 0x42, 0x00, 0x45 };
164 static const unsigned short ModeIndex_960x540
[] = { 0x1d, 0x1e, 0x00, 0x1f };
165 static const unsigned short ModeIndex_960x600
[] = { 0x20, 0x21, 0x00, 0x22 };
166 static const unsigned short ModeIndex_1024x768
[] = { 0x38, 0x4a, 0x00, 0x64 };
167 static const unsigned short ModeIndex_1024x576
[] = { 0x71, 0x74, 0x00, 0x77 };
168 static const unsigned short ModeIndex_1152x864
[] = { 0x29, 0x2a, 0x00, 0x2b };
169 static const unsigned short ModeIndex_1280x720
[] = { 0x79, 0x75, 0x00, 0x78 };
170 static const unsigned short ModeIndex_1280x768
[] = { 0x23, 0x24, 0x00, 0x25 };
171 static const unsigned short ModeIndex_1280x1024
[] = { 0x3a, 0x4d, 0x00, 0x65 };
173 static const unsigned char SiS_MDA_DAC
[] = {
174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
175 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
176 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
177 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
179 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
180 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15,
181 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F
184 static const unsigned char SiS_CGA_DAC
[] = {
185 0x00, 0x10, 0x04, 0x14, 0x01, 0x11, 0x09, 0x15,
186 0x00, 0x10, 0x04, 0x14, 0x01, 0x11, 0x09, 0x15,
187 0x2A, 0x3A, 0x2E, 0x3E, 0x2B, 0x3B, 0x2F, 0x3F,
188 0x2A, 0x3A, 0x2E, 0x3E, 0x2B, 0x3B, 0x2F, 0x3F,
189 0x00, 0x10, 0x04, 0x14, 0x01, 0x11, 0x09, 0x15,
190 0x00, 0x10, 0x04, 0x14, 0x01, 0x11, 0x09, 0x15,
191 0x2A, 0x3A, 0x2E, 0x3E, 0x2B, 0x3B, 0x2F, 0x3F,
192 0x2A, 0x3A, 0x2E, 0x3E, 0x2B, 0x3B, 0x2F, 0x3F
195 static const unsigned char SiS_EGA_DAC
[] = {
196 0x00, 0x10, 0x04, 0x14, 0x01, 0x11, 0x05, 0x15,
197 0x20, 0x30, 0x24, 0x34, 0x21, 0x31, 0x25, 0x35,
198 0x08, 0x18, 0x0C, 0x1C, 0x09, 0x19, 0x0D, 0x1D,
199 0x28, 0x38, 0x2C, 0x3C, 0x29, 0x39, 0x2D, 0x3D,
200 0x02, 0x12, 0x06, 0x16, 0x03, 0x13, 0x07, 0x17,
201 0x22, 0x32, 0x26, 0x36, 0x23, 0x33, 0x27, 0x37,
202 0x0A, 0x1A, 0x0E, 0x1E, 0x0B, 0x1B, 0x0F, 0x1F,
203 0x2A, 0x3A, 0x2E, 0x3E, 0x2B, 0x3B, 0x2F, 0x3F
206 static const unsigned char SiS_VGA_DAC
[] = {
207 0x00, 0x10, 0x04, 0x14, 0x01, 0x11, 0x09, 0x15,
208 0x2A, 0x3A, 0x2E, 0x3E, 0x2B, 0x3B, 0x2F, 0x3F,
209 0x00, 0x05, 0x08, 0x0B, 0x0E, 0x11, 0x14, 0x18,
210 0x1C, 0x20, 0x24, 0x28, 0x2D, 0x32, 0x38, 0x3F,
211 0x00, 0x10, 0x1F, 0x2F, 0x3F, 0x1F, 0x27, 0x2F,
212 0x37, 0x3F, 0x2D, 0x31, 0x36, 0x3A, 0x3F, 0x00,
213 0x07, 0x0E, 0x15, 0x1C, 0x0E, 0x11, 0x15, 0x18,
214 0x1C, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x00, 0x04,
215 0x08, 0x0C, 0x10, 0x08, 0x0A, 0x0C, 0x0E, 0x10,
216 0x0B, 0x0C, 0x0D, 0x0F, 0x10
219 static const struct SiS_St SiSUSB_SModeIDTable
[] = {
220 {0x03, 0x0010, 0x18, 0x02, 0x02, 0x00, 0x01, 0x03, 0x40},
221 {0xff, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
224 static const struct SiS_StResInfo_S SiSUSB_StResInfo
[] = {
232 static const struct SiS_ModeResInfo SiSUSB_ModeResInfo
[] = {
233 {320, 200, 8, 8}, /* 0x00 */
234 {320, 240, 8, 8}, /* 0x01 */
235 {320, 400, 8, 8}, /* 0x02 */
236 {400, 300, 8, 8}, /* 0x03 */
237 {512, 384, 8, 8}, /* 0x04 */
238 {640, 400, 8, 16}, /* 0x05 */
239 {640, 480, 8, 16}, /* 0x06 */
240 {800, 600, 8, 16}, /* 0x07 */
241 {1024, 768, 8, 16}, /* 0x08 */
242 {1280, 1024, 8, 16}, /* 0x09 */
243 {1600, 1200, 8, 16}, /* 0x0a */
244 {1920, 1440, 8, 16}, /* 0x0b */
245 {2048, 1536, 8, 16}, /* 0x0c */
246 {720, 480, 8, 16}, /* 0x0d */
247 {720, 576, 8, 16}, /* 0x0e */
248 {1280, 960, 8, 16}, /* 0x0f */
249 {800, 480, 8, 16}, /* 0x10 */
250 {1024, 576, 8, 16}, /* 0x11 */
251 {1280, 720, 8, 16}, /* 0x12 */
252 {856, 480, 8, 16}, /* 0x13 */
253 {1280, 768, 8, 16}, /* 0x14 */
254 {1400, 1050, 8, 16}, /* 0x15 */
255 {1152, 864, 8, 16}, /* 0x16 */
256 {848, 480, 8, 16}, /* 0x17 */
257 {1360, 768, 8, 16}, /* 0x18 */
258 {1024, 600, 8, 16}, /* 0x19 */
259 {1152, 768, 8, 16}, /* 0x1a */
260 {768, 576, 8, 16}, /* 0x1b */
261 {1360, 1024, 8, 16}, /* 0x1c */
262 {1680, 1050, 8, 16}, /* 0x1d */
263 {1280, 800, 8, 16}, /* 0x1e */
264 {1920, 1080, 8, 16}, /* 0x1f */
265 {960, 540, 8, 16}, /* 0x20 */
266 {960, 600, 8, 16} /* 0x21 */
269 static const struct SiS_StandTable SiSUSB_StandTable
[] = {
270 /* MD_3_400 - mode 0x03 - 400 */
272 0x50, 0x18, 0x10, 0x1000,
273 {0x00, 0x03, 0x00, 0x02},
275 {0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
276 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
277 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
279 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
280 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
281 0x0c, 0x00, 0x0f, 0x08},
282 {0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff}
284 /* Generic for VGA and higher */
286 0x00, 0x00, 0x00, 0x0000,
287 {0x01, 0x0f, 0x00, 0x0e},
289 {0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
290 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
291 0xea, 0x8c, 0xdf, 0x28, 0x40, 0xe7, 0x04, 0xa3,
293 {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
294 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
295 0x01, 0x00, 0x00, 0x00},
296 {0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff}
300 static const struct SiS_Ext SiSUSB_EModeIDTable
[] = {
301 {0x2e, 0x0a1b, 0x0101, SIS_RI_640x480
, 0x00, 0x00, 0x05, 0x05, 0x08, 2}, /* 640x480x8 */
302 {0x2f, 0x0a1b, 0x0100, SIS_RI_640x400
, 0x00, 0x00, 0x05, 0x05, 0x10, 0}, /* 640x400x8 */
303 {0x30, 0x2a1b, 0x0103, SIS_RI_800x600
, 0x00, 0x00, 0x07, 0x06, 0x00, 3}, /* 800x600x8 */
304 {0x31, 0x4a1b, 0x0000, SIS_RI_720x480
, 0x00, 0x00, 0x06, 0x06, 0x11, -1}, /* 720x480x8 */
305 {0x32, 0x4a1b, 0x0000, SIS_RI_720x576
, 0x00, 0x00, 0x06, 0x06, 0x12, -1}, /* 720x576x8 */
306 {0x33, 0x4a1d, 0x0000, SIS_RI_720x480
, 0x00, 0x00, 0x06, 0x06, 0x11, -1}, /* 720x480x16 */
307 {0x34, 0x6a1d, 0x0000, SIS_RI_720x576
, 0x00, 0x00, 0x06, 0x06, 0x12, -1}, /* 720x576x16 */
308 {0x35, 0x4a1f, 0x0000, SIS_RI_720x480
, 0x00, 0x00, 0x06, 0x06, 0x11, -1}, /* 720x480x32 */
309 {0x36, 0x6a1f, 0x0000, SIS_RI_720x576
, 0x00, 0x00, 0x06, 0x06, 0x12, -1}, /* 720x576x32 */
310 {0x38, 0x0a1b, 0x0105, SIS_RI_1024x768
, 0x00, 0x00, 0x08, 0x07, 0x13, 4}, /* 1024x768x8 */
311 {0x3a, 0x0e3b, 0x0107, SIS_RI_1280x1024
, 0x00, 0x00, 0x00, 0x00, 0x2f, 8}, /* 1280x1024x8 */
312 {0x41, 0x9a1d, 0x010e, SIS_RI_320x200
, 0x00, 0x00, 0x04, 0x04, 0x1a, 0}, /* 320x200x16 */
313 {0x44, 0x0a1d, 0x0111, SIS_RI_640x480
, 0x00, 0x00, 0x05, 0x05, 0x08, 2}, /* 640x480x16 */
314 {0x47, 0x2a1d, 0x0114, SIS_RI_800x600
, 0x00, 0x00, 0x07, 0x06, 0x00, 3}, /* 800x600x16 */
315 {0x4a, 0x0a3d, 0x0117, SIS_RI_1024x768
, 0x00, 0x00, 0x08, 0x07, 0x13, 4}, /* 1024x768x16 */
316 {0x4d, 0x0e7d, 0x011a, SIS_RI_1280x1024
, 0x00, 0x00, 0x00, 0x00, 0x2f, 8}, /* 1280x1024x16 */
317 {0x50, 0x9a1b, 0x0132, SIS_RI_320x240
, 0x00, 0x00, 0x04, 0x04, 0x1b, 2}, /* 320x240x8 */
318 {0x51, 0xba1b, 0x0133, SIS_RI_400x300
, 0x00, 0x00, 0x07, 0x07, 0x1c, 3}, /* 400x300x8 */
319 {0x52, 0xba1b, 0x0134, SIS_RI_512x384
, 0x00, 0x00, 0x00, 0x00, 0x1d, 4}, /* 512x384x8 */
320 {0x56, 0x9a1d, 0x0135, SIS_RI_320x240
, 0x00, 0x00, 0x04, 0x04, 0x1b, 2}, /* 320x240x16 */
321 {0x57, 0xba1d, 0x0136, SIS_RI_400x300
, 0x00, 0x00, 0x07, 0x07, 0x1c, 3}, /* 400x300x16 */
322 {0x58, 0xba1d, 0x0137, SIS_RI_512x384
, 0x00, 0x00, 0x00, 0x00, 0x1d, 4}, /* 512x384x16 */
323 {0x59, 0x9a1b, 0x0138, SIS_RI_320x200
, 0x00, 0x00, 0x04, 0x04, 0x1a, 0}, /* 320x200x8 */
324 {0x5c, 0xba1f, 0x0000, SIS_RI_512x384
, 0x00, 0x00, 0x00, 0x00, 0x1d, 4}, /* 512x384x32 */
325 {0x5d, 0x0a1d, 0x0139, SIS_RI_640x400
, 0x00, 0x00, 0x05, 0x07, 0x10, 0}, /* 640x400x16 */
326 {0x5e, 0x0a1f, 0x0000, SIS_RI_640x400
, 0x00, 0x00, 0x05, 0x07, 0x10, 0}, /* 640x400x32 */
327 {0x62, 0x0a3f, 0x013a, SIS_RI_640x480
, 0x00, 0x00, 0x05, 0x05, 0x08, 2}, /* 640x480x32 */
328 {0x63, 0x2a3f, 0x013b, SIS_RI_800x600
, 0x00, 0x00, 0x07, 0x06, 0x00, 3}, /* 800x600x32 */
329 {0x64, 0x0a7f, 0x013c, SIS_RI_1024x768
, 0x00, 0x00, 0x08, 0x07, 0x13, 4}, /* 1024x768x32 */
330 {0x65, 0x0eff, 0x013d, SIS_RI_1280x1024
, 0x00, 0x00, 0x00, 0x00, 0x2f, 8}, /* 1280x1024x32 */
331 {0x70, 0x6a1b, 0x0000, SIS_RI_800x480
, 0x00, 0x00, 0x07, 0x07, 0x1e, -1}, /* 800x480x8 */
332 {0x71, 0x4a1b, 0x0000, SIS_RI_1024x576
, 0x00, 0x00, 0x00, 0x00, 0x21, -1}, /* 1024x576x8 */
333 {0x74, 0x4a1d, 0x0000, SIS_RI_1024x576
, 0x00, 0x00, 0x00, 0x00, 0x21, -1}, /* 1024x576x16 */
334 {0x75, 0x0a3d, 0x0000, SIS_RI_1280x720
, 0x00, 0x00, 0x00, 0x00, 0x24, 5}, /* 1280x720x16 */
335 {0x76, 0x6a1f, 0x0000, SIS_RI_800x480
, 0x00, 0x00, 0x07, 0x07, 0x1e, -1}, /* 800x480x32 */
336 {0x77, 0x4a1f, 0x0000, SIS_RI_1024x576
, 0x00, 0x00, 0x00, 0x00, 0x21, -1}, /* 1024x576x32 */
337 {0x78, 0x0a3f, 0x0000, SIS_RI_1280x720
, 0x00, 0x00, 0x00, 0x00, 0x24, 5}, /* 1280x720x32 */
338 {0x79, 0x0a3b, 0x0000, SIS_RI_1280x720
, 0x00, 0x00, 0x00, 0x00, 0x24, 5}, /* 1280x720x8 */
339 {0x7a, 0x6a1d, 0x0000, SIS_RI_800x480
, 0x00, 0x00, 0x07, 0x07, 0x1e, -1}, /* 800x480x16 */
340 {0x23, 0x0e3b, 0x0000, SIS_RI_1280x768
, 0x00, 0x00, 0x00, 0x00, 0x27, 6}, /* 1280x768x8 */
341 {0x24, 0x0e7d, 0x0000, SIS_RI_1280x768
, 0x00, 0x00, 0x00, 0x00, 0x27, 6}, /* 1280x768x16 */
342 {0x25, 0x0eff, 0x0000, SIS_RI_1280x768
, 0x00, 0x00, 0x00, 0x00, 0x27, 6}, /* 1280x768x32 */
343 {0x39, 0x6a1b, 0x0000, SIS_RI_848x480
, 0x00, 0x00, 0x00, 0x00, 0x28, -1}, /* 848x480 */
344 {0x3b, 0x6a3d, 0x0000, SIS_RI_848x480
, 0x00, 0x00, 0x00, 0x00, 0x28,
346 {0x3e, 0x6a7f, 0x0000, SIS_RI_848x480
, 0x00, 0x00, 0x00, 0x00, 0x28,
348 {0x3f, 0x6a1b, 0x0000, SIS_RI_856x480
, 0x00, 0x00, 0x00, 0x00, 0x2a, -1}, /* 856x480 */
349 {0x42, 0x6a3d, 0x0000, SIS_RI_856x480
, 0x00, 0x00, 0x00, 0x00, 0x2a,
351 {0x45, 0x6a7f, 0x0000, SIS_RI_856x480
, 0x00, 0x00, 0x00, 0x00, 0x2a,
353 {0x4f, 0x9a1f, 0x0000, SIS_RI_320x200
, 0x00, 0x00, 0x04, 0x04, 0x1a, 0}, /* 320x200x32 */
354 {0x53, 0x9a1f, 0x0000, SIS_RI_320x240
, 0x00, 0x00, 0x04, 0x04, 0x1b, 2}, /* 320x240x32 */
355 {0x54, 0xba1f, 0x0000, SIS_RI_400x300
, 0x00, 0x00, 0x07, 0x07, 0x1c, 3}, /* 400x300x32 */
356 {0x5f, 0x6a1b, 0x0000, SIS_RI_768x576
, 0x00, 0x00, 0x06, 0x06, 0x2c, -1}, /* 768x576 */
357 {0x60, 0x6a1d, 0x0000, SIS_RI_768x576
, 0x00, 0x00, 0x06, 0x06, 0x2c,
359 {0x61, 0x6a3f, 0x0000, SIS_RI_768x576
, 0x00, 0x00, 0x06, 0x06, 0x2c,
361 {0x1d, 0x6a1b, 0x0000, SIS_RI_960x540
, 0x00, 0x00, 0x00, 0x00, 0x2d, -1}, /* 960x540 */
362 {0x1e, 0x6a3d, 0x0000, SIS_RI_960x540
, 0x00, 0x00, 0x00, 0x00, 0x2d,
364 {0x1f, 0x6a7f, 0x0000, SIS_RI_960x540
, 0x00, 0x00, 0x00, 0x00, 0x2d,
366 {0x20, 0x6a1b, 0x0000, SIS_RI_960x600
, 0x00, 0x00, 0x00, 0x00, 0x2e, -1}, /* 960x600 */
367 {0x21, 0x6a3d, 0x0000, SIS_RI_960x600
, 0x00, 0x00, 0x00, 0x00, 0x2e,
369 {0x22, 0x6a7f, 0x0000, SIS_RI_960x600
, 0x00, 0x00, 0x00, 0x00, 0x2e,
371 {0x29, 0x4e1b, 0x0000, SIS_RI_1152x864
, 0x00, 0x00, 0x00, 0x00, 0x33, -1}, /* 1152x864 */
372 {0x2a, 0x4e3d, 0x0000, SIS_RI_1152x864
, 0x00, 0x00, 0x00, 0x00, 0x33,
374 {0x2b, 0x4e7f, 0x0000, SIS_RI_1152x864
, 0x00, 0x00, 0x00, 0x00, 0x33,
376 {0xff, 0x0000, 0x0000, 0, 0x00, 0x00, 0x00, 0x00, 0x00, -1}
379 static const struct SiS_Ext2 SiSUSB_RefIndex
[] = {
380 {0x085f, 0x0d, 0x03, 0x05, 0x05, 0x30, 800, 600, 0x40, 0x00, 0x00}, /* 0x0 */
381 {0x0067, 0x0e, 0x04, 0x05, 0x05, 0x30, 800, 600, 0x40, 0x00, 0x00}, /* 0x1 */
382 {0x0067, 0x0f, 0x08, 0x48, 0x05, 0x30, 800, 600, 0x40, 0x00, 0x00}, /* 0x2 */
383 {0x0067, 0x10, 0x07, 0x8b, 0x05, 0x30, 800, 600, 0x40, 0x00, 0x00}, /* 0x3 */
384 {0x0047, 0x11, 0x0a, 0x00, 0x05, 0x30, 800, 600, 0x40, 0x00, 0x00}, /* 0x4 */
385 {0x0047, 0x12, 0x0d, 0x00, 0x05, 0x30, 800, 600, 0x40, 0x00, 0x00}, /* 0x5 */
386 {0x0047, 0x13, 0x13, 0x00, 0x05, 0x30, 800, 600, 0x20, 0x00, 0x00}, /* 0x6 */
387 {0x0107, 0x14, 0x1c, 0x00, 0x05, 0x30, 800, 600, 0x20, 0x00, 0x00}, /* 0x7 */
388 {0xc85f, 0x05, 0x00, 0x04, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0x8 */
389 {0xc067, 0x06, 0x02, 0x04, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0x9 */
390 {0xc067, 0x07, 0x02, 0x47, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0xa */
391 {0xc067, 0x08, 0x03, 0x8a, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0xb */
392 {0xc047, 0x09, 0x05, 0x00, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0xc */
393 {0xc047, 0x0a, 0x09, 0x00, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0xd */
394 {0xc047, 0x0b, 0x0e, 0x00, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0xe */
395 {0xc047, 0x0c, 0x15, 0x00, 0x04, 0x2e, 640, 480, 0x40, 0x00, 0x00}, /* 0xf */
396 {0x487f, 0x04, 0x00, 0x00, 0x00, 0x2f, 640, 400, 0x30, 0x55, 0x6e}, /* 0x10 */
397 {0xc06f, 0x3c, 0x01, 0x06, 0x13, 0x31, 720, 480, 0x30, 0x00, 0x00}, /* 0x11 */
398 {0x006f, 0x3d, 0x6f, 0x06, 0x14, 0x32, 720, 576, 0x30, 0x00, 0x00}, /* 0x12 (6f was 03) */
399 {0x0087, 0x15, 0x06, 0x00, 0x06, 0x38, 1024, 768, 0x30, 0x00, 0x00}, /* 0x13 */
400 {0xc877, 0x16, 0x0b, 0x06, 0x06, 0x38, 1024, 768, 0x20, 0x00, 0x00}, /* 0x14 */
401 {0xc067, 0x17, 0x0f, 0x49, 0x06, 0x38, 1024, 768, 0x20, 0x00, 0x00}, /* 0x15 */
402 {0x0067, 0x18, 0x11, 0x00, 0x06, 0x38, 1024, 768, 0x20, 0x00, 0x00}, /* 0x16 */
403 {0x0047, 0x19, 0x16, 0x8c, 0x06, 0x38, 1024, 768, 0x20, 0x00, 0x00}, /* 0x17 */
404 {0x0107, 0x1a, 0x1b, 0x00, 0x06, 0x38, 1024, 768, 0x10, 0x00, 0x00}, /* 0x18 */
405 {0x0107, 0x1b, 0x1f, 0x00, 0x06, 0x38, 1024, 768, 0x10, 0x00, 0x00}, /* 0x19 */
406 {0x407f, 0x00, 0x00, 0x00, 0x00, 0x41, 320, 200, 0x30, 0x56, 0x4e}, /* 0x1a */
407 {0xc07f, 0x01, 0x00, 0x04, 0x04, 0x50, 320, 240, 0x30, 0x00, 0x00}, /* 0x1b */
408 {0x007f, 0x02, 0x04, 0x05, 0x05, 0x51, 400, 300, 0x30, 0x00, 0x00}, /* 0x1c */
409 {0xc077, 0x03, 0x0b, 0x06, 0x06, 0x52, 512, 384, 0x30, 0x00, 0x00}, /* 0x1d */
410 {0x0077, 0x32, 0x40, 0x08, 0x18, 0x70, 800, 480, 0x30, 0x00, 0x00}, /* 0x1e */
411 {0x0047, 0x33, 0x07, 0x08, 0x18, 0x70, 800, 480, 0x30, 0x00, 0x00}, /* 0x1f */
412 {0x0047, 0x34, 0x0a, 0x08, 0x18, 0x70, 800, 480, 0x30, 0x00, 0x00}, /* 0x20 */
413 {0x0077, 0x35, 0x0b, 0x09, 0x19, 0x71, 1024, 576, 0x30, 0x00, 0x00}, /* 0x21 */
414 {0x0047, 0x36, 0x11, 0x09, 0x19, 0x71, 1024, 576, 0x30, 0x00, 0x00}, /* 0x22 */
415 {0x0047, 0x37, 0x16, 0x09, 0x19, 0x71, 1024, 576, 0x30, 0x00, 0x00}, /* 0x23 */
416 {0x1137, 0x38, 0x19, 0x0a, 0x0c, 0x75, 1280, 720, 0x30, 0x00, 0x00}, /* 0x24 */
417 {0x1107, 0x39, 0x1e, 0x0a, 0x0c, 0x75, 1280, 720, 0x30, 0x00, 0x00}, /* 0x25 */
418 {0x1307, 0x3a, 0x20, 0x0a, 0x0c, 0x75, 1280, 720, 0x30, 0x00, 0x00}, /* 0x26 */
419 {0x0077, 0x42, 0x5b, 0x08, 0x11, 0x23, 1280, 768, 0x30, 0x00, 0x00}, /* 0x27 */
420 {0x0087, 0x45, 0x57, 0x00, 0x16, 0x39, 848, 480, 0x30, 0x00, 0x00}, /* 0x28 38Hzi */
421 {0xc067, 0x46, 0x55, 0x0b, 0x16, 0x39, 848, 480, 0x30, 0x00, 0x00}, /* 0x29 848x480-60Hz */
422 {0x0087, 0x47, 0x57, 0x00, 0x17, 0x3f, 856, 480, 0x30, 0x00, 0x00}, /* 0x2a 856x480-38Hzi */
423 {0xc067, 0x48, 0x57, 0x00, 0x17, 0x3f, 856, 480, 0x30, 0x00, 0x00}, /* 0x2b 856x480-60Hz */
424 {0x006f, 0x4d, 0x71, 0x06, 0x15, 0x5f, 768, 576, 0x30, 0x00, 0x00}, /* 0x2c 768x576-56Hz */
425 {0x0067, 0x52, 0x6a, 0x00, 0x1c, 0x1d, 960, 540, 0x30, 0x00, 0x00}, /* 0x2d 960x540 60Hz */
426 {0x0077, 0x53, 0x6b, 0x0b, 0x1d, 0x20, 960, 600, 0x30, 0x00, 0x00}, /* 0x2e 960x600 60Hz */
427 {0x0087, 0x1c, 0x11, 0x00, 0x07, 0x3a, 1280, 1024, 0x30, 0x00, 0x00}, /* 0x2f */
428 {0x0137, 0x1d, 0x19, 0x07, 0x07, 0x3a, 1280, 1024, 0x00, 0x00, 0x00}, /* 0x30 */
429 {0x0107, 0x1e, 0x1e, 0x00, 0x07, 0x3a, 1280, 1024, 0x00, 0x00, 0x00}, /* 0x31 */
430 {0x0207, 0x1f, 0x20, 0x00, 0x07, 0x3a, 1280, 1024, 0x00, 0x00, 0x00}, /* 0x32 */
431 {0x0127, 0x54, 0x6d, 0x00, 0x1a, 0x29, 1152, 864, 0x30, 0x00, 0x00}, /* 0x33 1152x864-60Hz */
432 {0x0127, 0x44, 0x19, 0x00, 0x1a, 0x29, 1152, 864, 0x30, 0x00, 0x00}, /* 0x34 1152x864-75Hz */
433 {0x0127, 0x4a, 0x1e, 0x00, 0x1a, 0x29, 1152, 864, 0x30, 0x00, 0x00}, /* 0x35 1152x864-85Hz */
434 {0xffff, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0x00, 0x00}
437 static const struct SiS_CRT1Table SiSUSB_CRT1Table
[] = {
438 {{0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0xbf, 0x1f,
439 0x9c, 0x8e, 0x8f, 0x96, 0xb9, 0x30, 0x00, 0x00,
441 {{0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0x0b, 0x3e,
442 0xe9, 0x8b, 0xdf, 0xe7, 0x04, 0x00, 0x00, 0x00,
444 {{0x3d, 0x31, 0x31, 0x81, 0x37, 0x1f, 0x72, 0xf0,
445 0x58, 0x8c, 0x57, 0x57, 0x73, 0x20, 0x00, 0x05,
447 {{0x4f, 0x3f, 0x3f, 0x93, 0x45, 0x0d, 0x24, 0xf5,
448 0x02, 0x88, 0xff, 0xff, 0x25, 0x10, 0x00, 0x01,
450 {{0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
451 0x9c, 0x8e, 0x8f, 0x96, 0xb9, 0x30, 0x00, 0x05,
453 {{0x5f, 0x4f, 0x4f, 0x83, 0x55, 0x81, 0x0b, 0x3e,
454 0xe9, 0x8b, 0xdf, 0xe8, 0x0c, 0x00, 0x00, 0x05,
456 {{0x63, 0x4f, 0x4f, 0x87, 0x56, 0x9b, 0x06, 0x3e,
457 0xe8, 0x8a, 0xdf, 0xe7, 0x07, 0x00, 0x00, 0x01,
459 {{0x64, 0x4f, 0x4f, 0x88, 0x55, 0x9d, 0xf2, 0x1f,
460 0xe0, 0x83, 0xdf, 0xdf, 0xf3, 0x10, 0x00, 0x01,
462 {{0x63, 0x4f, 0x4f, 0x87, 0x5a, 0x81, 0xfb, 0x1f,
463 0xe0, 0x83, 0xdf, 0xdf, 0xfc, 0x10, 0x00, 0x05,
465 {{0x65, 0x4f, 0x4f, 0x89, 0x58, 0x80, 0xfb, 0x1f,
466 0xe0, 0x83, 0xdf, 0xdf, 0xfc, 0x10, 0x00, 0x05,
468 {{0x65, 0x4f, 0x4f, 0x89, 0x58, 0x80, 0x01, 0x3e,
469 0xe0, 0x83, 0xdf, 0xdf, 0x02, 0x00, 0x00, 0x05,
471 {{0x67, 0x4f, 0x4f, 0x8b, 0x58, 0x81, 0x0d, 0x3e,
472 0xe0, 0x83, 0xdf, 0xdf, 0x0e, 0x00, 0x00, 0x05,
474 {{0x65, 0x4f, 0x4f, 0x89, 0x57, 0x9f, 0xfb, 0x1f,
475 0xe6, 0x8a, 0xdf, 0xdf, 0xfc, 0x10, 0x00, 0x01,
477 {{0x7b, 0x63, 0x63, 0x9f, 0x6a, 0x93, 0x6f, 0xf0,
478 0x58, 0x8a, 0x57, 0x57, 0x70, 0x20, 0x00, 0x05,
480 {{0x7f, 0x63, 0x63, 0x83, 0x6c, 0x1c, 0x72, 0xf0,
481 0x58, 0x8c, 0x57, 0x57, 0x73, 0x20, 0x00, 0x06,
483 {{0x7d, 0x63, 0x63, 0x81, 0x6e, 0x1d, 0x98, 0xf0,
484 0x7c, 0x82, 0x57, 0x57, 0x99, 0x00, 0x00, 0x06,
486 {{0x7f, 0x63, 0x63, 0x83, 0x69, 0x13, 0x6f, 0xf0,
487 0x58, 0x8b, 0x57, 0x57, 0x70, 0x20, 0x00, 0x06,
489 {{0x7e, 0x63, 0x63, 0x82, 0x6b, 0x13, 0x75, 0xf0,
490 0x58, 0x8b, 0x57, 0x57, 0x76, 0x20, 0x00, 0x06,
492 {{0x81, 0x63, 0x63, 0x85, 0x6d, 0x18, 0x7a, 0xf0,
493 0x58, 0x8b, 0x57, 0x57, 0x7b, 0x20, 0x00, 0x06,
495 {{0x83, 0x63, 0x63, 0x87, 0x6e, 0x19, 0x81, 0xf0,
496 0x58, 0x8b, 0x57, 0x57, 0x82, 0x20, 0x00, 0x06,
498 {{0x85, 0x63, 0x63, 0x89, 0x6f, 0x1a, 0x91, 0xf0,
499 0x58, 0x8b, 0x57, 0x57, 0x92, 0x20, 0x00, 0x06,
501 {{0x99, 0x7f, 0x7f, 0x9d, 0x84, 0x1a, 0x96, 0x1f,
502 0x7f, 0x83, 0x7f, 0x7f, 0x97, 0x10, 0x00, 0x02,
504 {{0xa3, 0x7f, 0x7f, 0x87, 0x86, 0x97, 0x24, 0xf5,
505 0x02, 0x88, 0xff, 0xff, 0x25, 0x10, 0x00, 0x02,
507 {{0xa1, 0x7f, 0x7f, 0x85, 0x86, 0x97, 0x24, 0xf5,
508 0x02, 0x88, 0xff, 0xff, 0x25, 0x10, 0x00, 0x02,
510 {{0x9f, 0x7f, 0x7f, 0x83, 0x85, 0x91, 0x1e, 0xf5,
511 0x00, 0x83, 0xff, 0xff, 0x1f, 0x10, 0x00, 0x02,
513 {{0xa7, 0x7f, 0x7f, 0x8b, 0x89, 0x95, 0x26, 0xf5,
514 0x00, 0x83, 0xff, 0xff, 0x27, 0x10, 0x00, 0x02,
516 {{0xa9, 0x7f, 0x7f, 0x8d, 0x8c, 0x9a, 0x2c, 0xf5,
517 0x00, 0x83, 0xff, 0xff, 0x2d, 0x14, 0x00, 0x02,
519 {{0xab, 0x7f, 0x7f, 0x8f, 0x8d, 0x9b, 0x35, 0xf5,
520 0x00, 0x83, 0xff, 0xff, 0x36, 0x14, 0x00, 0x02,
522 {{0xcf, 0x9f, 0x9f, 0x93, 0xb2, 0x01, 0x14, 0xba,
523 0x00, 0x83, 0xff, 0xff, 0x15, 0x00, 0x00, 0x03,
525 {{0xce, 0x9f, 0x9f, 0x92, 0xa9, 0x17, 0x28, 0x5a,
526 0x00, 0x83, 0xff, 0xff, 0x29, 0x09, 0x00, 0x07,
528 {{0xce, 0x9f, 0x9f, 0x92, 0xa5, 0x17, 0x28, 0x5a,
529 0x00, 0x83, 0xff, 0xff, 0x29, 0x09, 0x00, 0x07,
531 {{0xd3, 0x9f, 0x9f, 0x97, 0xab, 0x1f, 0x2e, 0x5a,
532 0x00, 0x83, 0xff, 0xff, 0x2f, 0x09, 0x00, 0x07,
534 {{0x09, 0xc7, 0xc7, 0x8d, 0xd3, 0x0b, 0xe0, 0x10,
535 0xb0, 0x83, 0xaf, 0xaf, 0xe1, 0x2f, 0x01, 0x04,
537 {{0x09, 0xc7, 0xc7, 0x8d, 0xd3, 0x0b, 0xe0, 0x10,
538 0xb0, 0x83, 0xaf, 0xaf, 0xe1, 0x2f, 0x01, 0x04,
540 {{0x09, 0xc7, 0xc7, 0x8d, 0xd3, 0x0b, 0xe0, 0x10,
541 0xb0, 0x83, 0xaf, 0xaf, 0xe1, 0x2f, 0x01, 0x04,
543 {{0x09, 0xc7, 0xc7, 0x8d, 0xd3, 0x0b, 0xe0, 0x10,
544 0xb0, 0x83, 0xaf, 0xaf, 0xe1, 0x2f, 0x01, 0x04,
546 {{0x09, 0xc7, 0xc7, 0x8d, 0xd3, 0x0b, 0xe0, 0x10,
547 0xb0, 0x83, 0xaf, 0xaf, 0xe1, 0x2f, 0x01, 0x04,
549 {{0x09, 0xc7, 0xc7, 0x8d, 0xd3, 0x0b, 0xe0, 0x10,
550 0xb0, 0x83, 0xaf, 0xaf, 0xe1, 0x2f, 0x01, 0x04,
552 {{0x09, 0xc7, 0xc7, 0x8d, 0xd3, 0x0b, 0xe0, 0x10,
553 0xb0, 0x83, 0xaf, 0xaf, 0xe1, 0x2f, 0x01, 0x04,
555 {{0x40, 0xef, 0xef, 0x84, 0x03, 0x1d, 0xda, 0x1f,
556 0xa0, 0x83, 0x9f, 0x9f, 0xdb, 0x1f, 0x41, 0x01,
558 {{0x43, 0xef, 0xef, 0x87, 0x06, 0x00, 0xd4, 0x1f,
559 0xa0, 0x83, 0x9f, 0x9f, 0xd5, 0x1f, 0x41, 0x05,
561 {{0x45, 0xef, 0xef, 0x89, 0x07, 0x01, 0xd9, 0x1f,
562 0xa0, 0x83, 0x9f, 0x9f, 0xda, 0x1f, 0x41, 0x05,
564 {{0x40, 0xef, 0xef, 0x84, 0x03, 0x1d, 0xda, 0x1f,
565 0xa0, 0x83, 0x9f, 0x9f, 0xdb, 0x1f, 0x41, 0x01,
567 {{0x40, 0xef, 0xef, 0x84, 0x03, 0x1d, 0xda, 0x1f,
568 0xa0, 0x83, 0x9f, 0x9f, 0xdb, 0x1f, 0x41, 0x01,
570 {{0x40, 0xef, 0xef, 0x84, 0x03, 0x1d, 0xda, 0x1f,
571 0xa0, 0x83, 0x9f, 0x9f, 0xdb, 0x1f, 0x41, 0x01,
573 {{0x59, 0xff, 0xff, 0x9d, 0x17, 0x13, 0x33, 0xba,
574 0x00, 0x83, 0xff, 0xff, 0x34, 0x0f, 0x41, 0x05,
576 {{0x5b, 0xff, 0xff, 0x9f, 0x18, 0x14, 0x38, 0xba,
577 0x00, 0x83, 0xff, 0xff, 0x39, 0x0f, 0x41, 0x05,
579 {{0x5b, 0xff, 0xff, 0x9f, 0x18, 0x14, 0x3d, 0xba,
580 0x00, 0x83, 0xff, 0xff, 0x3e, 0x0f, 0x41, 0x05,
582 {{0x5d, 0xff, 0xff, 0x81, 0x19, 0x95, 0x41, 0xba,
583 0x00, 0x84, 0xff, 0xff, 0x42, 0x0f, 0x41, 0x05,
585 {{0x55, 0xff, 0xff, 0x99, 0x0d, 0x0c, 0x3e, 0xba,
586 0x00, 0x84, 0xff, 0xff, 0x3f, 0x0f, 0x41, 0x05,
588 {{0x7f, 0x63, 0x63, 0x83, 0x6c, 0x1c, 0x72, 0xba,
589 0x27, 0x8b, 0xdf, 0xdf, 0x73, 0x00, 0x00, 0x06,
591 {{0x7f, 0x63, 0x63, 0x83, 0x69, 0x13, 0x6f, 0xba,
592 0x26, 0x89, 0xdf, 0xdf, 0x6f, 0x00, 0x00, 0x06,
594 {{0x7f, 0x63, 0x63, 0x82, 0x6b, 0x13, 0x75, 0xba,
595 0x29, 0x8c, 0xdf, 0xdf, 0x75, 0x00, 0x00, 0x06,
597 {{0xa3, 0x7f, 0x7f, 0x87, 0x86, 0x97, 0x24, 0xf1,
598 0xaf, 0x85, 0x3f, 0x3f, 0x25, 0x30, 0x00, 0x02,
600 {{0x9f, 0x7f, 0x7f, 0x83, 0x85, 0x91, 0x1e, 0xf1,
601 0xad, 0x81, 0x3f, 0x3f, 0x1f, 0x30, 0x00, 0x02,
603 {{0xa7, 0x7f, 0x7f, 0x88, 0x89, 0x95, 0x26, 0xf1,
604 0xb1, 0x85, 0x3f, 0x3f, 0x27, 0x30, 0x00, 0x02,
606 {{0xce, 0x9f, 0x9f, 0x92, 0xa9, 0x17, 0x28, 0xc4,
607 0x7a, 0x8e, 0xcf, 0xcf, 0x29, 0x21, 0x00, 0x07,
609 {{0xce, 0x9f, 0x9f, 0x92, 0xa5, 0x17, 0x28, 0xd4,
610 0x7a, 0x8e, 0xcf, 0xcf, 0x29, 0x21, 0x00, 0x07,
612 {{0xd3, 0x9f, 0x9f, 0x97, 0xab, 0x1f, 0x2e, 0xd4,
613 0x7d, 0x81, 0xcf, 0xcf, 0x2f, 0x21, 0x00, 0x07,
615 {{0xdc, 0x9f, 0x9f, 0x80, 0xaf, 0x9d, 0xe6, 0xff,
616 0xc0, 0x83, 0xbf, 0xbf, 0xe7, 0x10, 0x00, 0x07,
618 {{0x6b, 0x59, 0x59, 0x8f, 0x5e, 0x8c, 0x0b, 0x3e,
619 0xe9, 0x8b, 0xdf, 0xe7, 0x04, 0x00, 0x00, 0x05,
621 {{0x6d, 0x59, 0x59, 0x91, 0x60, 0x89, 0x53, 0xf0,
622 0x41, 0x84, 0x3f, 0x3f, 0x54, 0x00, 0x00, 0x05,
624 {{0x86, 0x6a, 0x6a, 0x8a, 0x74, 0x06, 0x8c, 0x15,
625 0x4f, 0x83, 0xef, 0xef, 0x8d, 0x30, 0x00, 0x02,
627 {{0x81, 0x6a, 0x6a, 0x85, 0x70, 0x00, 0x0f, 0x3e,
628 0xeb, 0x8e, 0xdf, 0xdf, 0x10, 0x00, 0x00, 0x02,
630 {{0xa3, 0x7f, 0x7f, 0x87, 0x86, 0x97, 0x1e, 0xf1,
631 0xae, 0x85, 0x57, 0x57, 0x1f, 0x30, 0x00, 0x02,
633 {{0xa3, 0x7f, 0x7f, 0x87, 0x86, 0x97, 0x24, 0xf5,
634 0x02, 0x88, 0xff, 0xff, 0x25, 0x10, 0x00, 0x02,
636 {{0xce, 0x9f, 0x9f, 0x92, 0xa9, 0x17, 0x20, 0xf5,
637 0x03, 0x88, 0xff, 0xff, 0x21, 0x10, 0x00, 0x07,
639 {{0xe6, 0xae, 0xae, 0x8a, 0xbd, 0x90, 0x3d, 0x10,
640 0x1a, 0x8d, 0x19, 0x19, 0x3e, 0x2f, 0x00, 0x03,
642 {{0xc3, 0x8f, 0x8f, 0x87, 0x9b, 0x0b, 0x82, 0xef,
643 0x60, 0x83, 0x5f, 0x5f, 0x83, 0x10, 0x00, 0x07,
645 {{0x86, 0x69, 0x69, 0x8A, 0x74, 0x06, 0x8C, 0x15,
646 0x4F, 0x83, 0xEF, 0xEF, 0x8D, 0x30, 0x00, 0x02,
648 {{0x83, 0x69, 0x69, 0x87, 0x6f, 0x1d, 0x03, 0x3E,
649 0xE5, 0x8d, 0xDF, 0xe4, 0x04, 0x00, 0x00, 0x06,
651 {{0x86, 0x6A, 0x6A, 0x8A, 0x74, 0x06, 0x8C, 0x15,
652 0x4F, 0x83, 0xEF, 0xEF, 0x8D, 0x30, 0x00, 0x02,
654 {{0x81, 0x6A, 0x6A, 0x85, 0x70, 0x00, 0x0F, 0x3E,
655 0xEB, 0x8E, 0xDF, 0xDF, 0x10, 0x00, 0x00, 0x02,
657 {{0xdd, 0xa9, 0xa9, 0x81, 0xb4, 0x97, 0x26, 0xfd,
658 0x01, 0x8d, 0xff, 0x00, 0x27, 0x10, 0x00, 0x03,
660 {{0xd9, 0x8f, 0x8f, 0x9d, 0xba, 0x0a, 0x8a, 0xff,
661 0x60, 0x8b, 0x5f, 0x5f, 0x8b, 0x10, 0x00, 0x03,
663 {{0xea, 0xae, 0xae, 0x8e, 0xba, 0x82, 0x40, 0x10,
664 0x1b, 0x87, 0x19, 0x1a, 0x41, 0x0f, 0x00, 0x03,
666 {{0xd3, 0x9f, 0x9f, 0x97, 0xab, 0x1f, 0xf1, 0xff,
667 0xc0, 0x83, 0xbf, 0xbf, 0xf2, 0x10, 0x00, 0x07,
669 {{0x75, 0x5f, 0x5f, 0x99, 0x66, 0x90, 0x53, 0xf0,
670 0x41, 0x84, 0x3f, 0x3f, 0x54, 0x00, 0x00, 0x05,
672 {{0x2d, 0x27, 0x28, 0x90, 0x2c, 0x80, 0x0b, 0x3e,
673 0xe9, 0x8b, 0xdf, 0xe7, 0x04, 0x00, 0x00, 0x00,
675 {{0xcd, 0x9f, 0x9f, 0x91, 0xab, 0x1c, 0x3a, 0xff,
676 0x20, 0x83, 0x1f, 0x1f, 0x3b, 0x10, 0x00, 0x07,
678 {{0x15, 0xd1, 0xd1, 0x99, 0xe2, 0x19, 0x3d, 0x10,
679 0x1a, 0x8d, 0x19, 0x19, 0x3e, 0x2f, 0x01, 0x0c,
681 {{0x0e, 0xef, 0xef, 0x92, 0xfe, 0x03, 0x30, 0xf0,
682 0x1e, 0x83, 0x1b, 0x1c, 0x31, 0x00, 0x01, 0x00,
684 {{0x85, 0x77, 0x77, 0x89, 0x7d, 0x01, 0x31, 0xf0,
685 0x1e, 0x84, 0x1b, 0x1c, 0x32, 0x00, 0x00, 0x02,
687 {{0x87, 0x77, 0x77, 0x8b, 0x81, 0x0b, 0x68, 0xf0,
688 0x5a, 0x80, 0x57, 0x57, 0x69, 0x00, 0x00, 0x02,
690 {{0xcd, 0x8f, 0x8f, 0x91, 0x9b, 0x1b, 0x7a, 0xff,
691 0x64, 0x8c, 0x5f, 0x62, 0x7b, 0x10, 0x00, 0x07,
695 static const struct SiS_VCLKData SiSUSB_VCLKData
[] = {
696 {0x1b, 0xe1, 25}, /* 0x00 */
697 {0x4e, 0xe4, 28}, /* 0x01 */
698 {0x57, 0xe4, 31}, /* 0x02 */
699 {0xc3, 0xc8, 36}, /* 0x03 */
700 {0x42, 0xe2, 40}, /* 0x04 */
701 {0xfe, 0xcd, 43}, /* 0x05 */
702 {0x5d, 0xc4, 44}, /* 0x06 */
703 {0x52, 0xe2, 49}, /* 0x07 */
704 {0x53, 0xe2, 50}, /* 0x08 */
705 {0x74, 0x67, 52}, /* 0x09 */
706 {0x6d, 0x66, 56}, /* 0x0a */
707 {0x5a, 0x64, 65}, /* 0x0b */
708 {0x46, 0x44, 67}, /* 0x0c */
709 {0xb1, 0x46, 68}, /* 0x0d */
710 {0xd3, 0x4a, 72}, /* 0x0e */
711 {0x29, 0x61, 75}, /* 0x0f */
712 {0x6e, 0x46, 76}, /* 0x10 */
713 {0x2b, 0x61, 78}, /* 0x11 */
714 {0x31, 0x42, 79}, /* 0x12 */
715 {0xab, 0x44, 83}, /* 0x13 */
716 {0x46, 0x25, 84}, /* 0x14 */
717 {0x78, 0x29, 86}, /* 0x15 */
718 {0x62, 0x44, 94}, /* 0x16 */
719 {0x2b, 0x41, 104}, /* 0x17 */
720 {0x3a, 0x23, 105}, /* 0x18 */
721 {0x70, 0x44, 108}, /* 0x19 */
722 {0x3c, 0x23, 109}, /* 0x1a */
723 {0x5e, 0x43, 113}, /* 0x1b */
724 {0xbc, 0x44, 116}, /* 0x1c */
725 {0xe0, 0x46, 132}, /* 0x1d */
726 {0x54, 0x42, 135}, /* 0x1e */
727 {0xea, 0x2a, 139}, /* 0x1f */
728 {0x41, 0x22, 157}, /* 0x20 */
729 {0x70, 0x24, 162}, /* 0x21 */
730 {0x30, 0x21, 175}, /* 0x22 */
731 {0x4e, 0x22, 189}, /* 0x23 */
732 {0xde, 0x26, 194}, /* 0x24 */
733 {0x62, 0x06, 202}, /* 0x25 */
734 {0x3f, 0x03, 229}, /* 0x26 */
735 {0xb8, 0x06, 234}, /* 0x27 */
736 {0x34, 0x02, 253}, /* 0x28 */
737 {0x58, 0x04, 255}, /* 0x29 */
738 {0x24, 0x01, 265}, /* 0x2a */
739 {0x9b, 0x02, 267}, /* 0x2b */
740 {0x70, 0x05, 270}, /* 0x2c */
741 {0x25, 0x01, 272}, /* 0x2d */
742 {0x9c, 0x02, 277}, /* 0x2e */
743 {0x27, 0x01, 286}, /* 0x2f */
744 {0x3c, 0x02, 291}, /* 0x30 */
745 {0xef, 0x0a, 292}, /* 0x31 */
746 {0xf6, 0x0a, 310}, /* 0x32 */
747 {0x95, 0x01, 315}, /* 0x33 */
748 {0xf0, 0x09, 324}, /* 0x34 */
749 {0xfe, 0x0a, 331}, /* 0x35 */
750 {0xf3, 0x09, 332}, /* 0x36 */
751 {0xea, 0x08, 340}, /* 0x37 */
752 {0xe8, 0x07, 376}, /* 0x38 */
753 {0xde, 0x06, 389}, /* 0x39 */
754 {0x52, 0x2a, 54}, /* 0x3a 301 TV */
755 {0x52, 0x6a, 27}, /* 0x3b 301 TV */
756 {0x62, 0x24, 70}, /* 0x3c 301 TV */
757 {0x62, 0x64, 70}, /* 0x3d 301 TV */
758 {0xa8, 0x4c, 30}, /* 0x3e 301 TV */
759 {0x20, 0x26, 33}, /* 0x3f 301 TV */
760 {0x31, 0xc2, 39}, /* 0x40 */
761 {0x60, 0x36, 30}, /* 0x41 Chrontel */
762 {0x40, 0x4a, 28}, /* 0x42 Chrontel */
763 {0x9f, 0x46, 44}, /* 0x43 Chrontel */
764 {0x97, 0x2c, 26}, /* 0x44 */
765 {0x44, 0xe4, 25}, /* 0x45 Chrontel */
766 {0x7e, 0x32, 47}, /* 0x46 Chrontel */
767 {0x8a, 0x24, 31}, /* 0x47 Chrontel */
768 {0x97, 0x2c, 26}, /* 0x48 Chrontel */
769 {0xce, 0x3c, 39}, /* 0x49 */
770 {0x52, 0x4a, 36}, /* 0x4a Chrontel */
771 {0x34, 0x61, 95}, /* 0x4b */
772 {0x78, 0x27, 108}, /* 0x4c - was 102 */
773 {0x66, 0x43, 123}, /* 0x4d Modes 0x26-0x28 (1400x1050) */
774 {0x41, 0x4e, 21}, /* 0x4e */
775 {0xa1, 0x4a, 29}, /* 0x4f Chrontel */
776 {0x19, 0x42, 42}, /* 0x50 */
777 {0x54, 0x46, 58}, /* 0x51 Chrontel */
778 {0x25, 0x42, 61}, /* 0x52 */
779 {0x44, 0x44, 66}, /* 0x53 Chrontel */
780 {0x3a, 0x62, 70}, /* 0x54 Chrontel */
781 {0x62, 0xc6, 34}, /* 0x55 848x480-60 */
782 {0x6a, 0xc6, 37}, /* 0x56 848x480-75 - TEMP */
783 {0xbf, 0xc8, 35}, /* 0x57 856x480-38i,60 */
784 {0x30, 0x23, 88}, /* 0x58 1360x768-62 (is 60Hz!) */
785 {0x52, 0x07, 149}, /* 0x59 1280x960-85 */
786 {0x56, 0x07, 156}, /* 0x5a 1400x1050-75 */
787 {0x70, 0x29, 81}, /* 0x5b 1280x768 LCD */
788 {0x45, 0x25, 83}, /* 0x5c 1280x800 */
789 {0x70, 0x0a, 147}, /* 0x5d 1680x1050 */
790 {0x70, 0x24, 162}, /* 0x5e 1600x1200 */
791 {0x5a, 0x64, 65}, /* 0x5f 1280x720 - temp */
792 {0x63, 0x46, 68}, /* 0x60 1280x768_2 */
793 {0x31, 0x42, 79}, /* 0x61 1280x768_3 - temp */
794 {0, 0, 0}, /* 0x62 - custom (will be filled out at run-time) */
795 {0x5a, 0x64, 65}, /* 0x63 1280x720 (LCD LVDS) */
796 {0x70, 0x28, 90}, /* 0x64 1152x864@60 */
797 {0x41, 0xc4, 32}, /* 0x65 848x480@60 */
798 {0x5c, 0xc6, 32}, /* 0x66 856x480@60 */
799 {0x76, 0xe7, 27}, /* 0x67 720x480@60 */
800 {0x5f, 0xc6, 33}, /* 0x68 720/768x576@60 */
801 {0x52, 0x27, 75}, /* 0x69 1920x1080i 60Hz interlaced */
802 {0x7c, 0x6b, 38}, /* 0x6a 960x540@60 */
803 {0xe3, 0x56, 41}, /* 0x6b 960x600@60 */
804 {0x45, 0x25, 83}, /* 0x6c 1280x800 */
805 {0x70, 0x28, 90}, /* 0x6d 1152x864@60 */
806 {0x15, 0xe1, 20}, /* 0x6e 640x400@60 (fake, not actually used) */
807 {0x5f, 0xc6, 33}, /* 0x6f 720x576@60 */
808 {0x37, 0x5a, 10}, /* 0x70 320x200@60 (fake, not actually used) */
809 {0x2b, 0xc2, 35} /* 0x71 768@576@60 */
812 int SiSUSBSetMode(struct SiS_Private
*SiS_Pr
, unsigned short ModeNo
);
813 int SiSUSBSetVESAMode(struct SiS_Private
*SiS_Pr
, unsigned short VModeNo
);
815 extern int sisusb_setreg(struct sisusb_usb_data
*sisusb
, u32 port
, u8 data
);
816 extern int sisusb_getreg(struct sisusb_usb_data
*sisusb
, u32 port
, u8
* data
);
817 extern int sisusb_setidxreg(struct sisusb_usb_data
*sisusb
, u32 port
,
819 extern int sisusb_getidxreg(struct sisusb_usb_data
*sisusb
, u32 port
,
820 u8 index
, u8
* data
);
821 extern int sisusb_setidxregandor(struct sisusb_usb_data
*sisusb
, u32 port
,
822 u8 idx
, u8 myand
, u8 myor
);
823 extern int sisusb_setidxregor(struct sisusb_usb_data
*sisusb
, u32 port
,
825 extern int sisusb_setidxregand(struct sisusb_usb_data
*sisusb
, u32 port
,
828 void sisusb_delete(struct kref
*kref
);
829 int sisusb_writeb(struct sisusb_usb_data
*sisusb
, u32 adr
, u8 data
);
830 int sisusb_readb(struct sisusb_usb_data
*sisusb
, u32 adr
, u8
* data
);
831 int sisusb_copy_memory(struct sisusb_usb_data
*sisusb
, char *src
,
832 u32 dest
, int length
);
833 int sisusb_reset_text_mode(struct sisusb_usb_data
*sisusb
, int init
);
834 int sisusbcon_do_font_op(struct sisusb_usb_data
*sisusb
, int set
, int slot
,
835 u8
* arg
, int cmapsz
, int ch512
, int dorecalc
,
836 struct vc_data
*c
, int fh
, int uplock
);
837 void sisusb_set_cursor(struct sisusb_usb_data
*sisusb
, unsigned int location
);
838 int sisusb_console_init(struct sisusb_usb_data
*sisusb
, int first
, int last
);
839 void sisusb_console_exit(struct sisusb_usb_data
*sisusb
);
840 void sisusb_init_concode(void);