4 * General structure definitions for universal mode switching modules
6 * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
8 * If distributed as part of the Linux kernel, the following license terms
11 * * This program is free software; you can redistribute it and/or modify
12 * * it under the terms of the GNU General Public License as published by
13 * * the Free Software Foundation; either version 2 of the named License,
14 * * or any later version.
16 * * This program is distributed in the hope that it will be useful,
17 * * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * * GNU General Public License for more details.
21 * Otherwise, the following license terms apply:
23 * * Redistribution and use in source and binary forms, with or without
24 * * modification, are permitted provided that the following conditions
26 * * 1) Redistributions of source code must retain the above copyright
27 * * notice, this list of conditions and the following disclaimer.
28 * * 2) Redistributions in binary form must reproduce the above copyright
29 * * notice, this list of conditions and the following disclaimer in the
30 * * documentation and/or other materials provided with the distribution.
31 * * 3) The name of the author may not be used to endorse or promote products
32 * * derived from this software without specific prior written permission.
34 * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
35 * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
36 * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
37 * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
38 * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
39 * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
40 * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
41 * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42 * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
43 * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 * Author: Thomas Winischhofer <thomas@winischhofer.net>
52 struct SiS_PanelDelayTbl
{
53 unsigned char timer
[2];
57 unsigned short RVBHCMAX
;
58 unsigned short RVBHCFACT
;
66 unsigned short RVBHCMAX
;
67 unsigned short RVBHCFACT
;
72 unsigned short RVBHRS
;
73 unsigned char FlickerMode
;
74 unsigned short HALFRVBHRS
;
75 unsigned short RVBHRS2
;
90 unsigned short LCDHDES
;
91 unsigned short LCDVDES
;
94 struct SiS_LVDSCRT1Data
{
98 struct SiS_CHTVRegData
{
99 unsigned char Reg
[16];
103 unsigned char St_ModeID
;
104 unsigned short St_ModeFlag
;
105 unsigned char St_StTableIndex
;
106 unsigned char St_CRT2CRTC
;
107 unsigned char St_ResInfo
;
108 unsigned char VB_StTVFlickerIndex
;
109 unsigned char VB_StTVEdgeIndex
;
110 unsigned char VB_StTVYFilterIndex
;
111 unsigned char St_PDC
;
115 unsigned char ModeID
;
116 unsigned char VB_TVDelayIndex
;
117 unsigned char VB_TVFlickerIndex
;
118 unsigned char VB_TVPhaseIndex
;
119 unsigned char VB_TVYFilterIndex
;
120 unsigned char VB_LCDDelayIndex
;
121 unsigned char _VB_LCDHIndex
;
122 unsigned char _VB_LCDVIndex
;
125 struct SiS_StandTable_S
{
126 unsigned char CRT_COLS
;
128 unsigned char CHAR_HEIGHT
;
129 unsigned short CRT_LEN
;
132 unsigned char CRTC
[0x19];
133 unsigned char ATTR
[0x14];
134 unsigned char GRC
[9];
138 unsigned char Ext_ModeID
;
139 unsigned short Ext_ModeFlag
;
140 unsigned short Ext_VESAID
;
141 unsigned char Ext_RESINFO
;
142 unsigned char VB_ExtTVFlickerIndex
;
143 unsigned char VB_ExtTVEdgeIndex
;
144 unsigned char VB_ExtTVYFilterIndex
;
145 unsigned char VB_ExtTVYFilterIndexROM661
;
146 unsigned char REFindex
;
151 unsigned short Ext_InfoFlag
;
152 unsigned char Ext_CRT1CRTC
;
153 unsigned char Ext_CRTVCLK
;
154 unsigned char Ext_CRT2CRTC
;
155 unsigned char Ext_CRT2CRTC_NS
;
156 unsigned char ModeID
;
159 unsigned char Ext_PDC
;
160 unsigned char Ext_FakeCRT2CRTC
;
161 unsigned char Ext_FakeCRT2Clk
;
162 unsigned char Ext_CRT1CRTC_NORM
;
163 unsigned char Ext_CRTVCLK_NORM
;
164 unsigned char Ext_CRT1CRTC_WIDE
;
165 unsigned char Ext_CRTVCLK_WIDE
;
168 struct SiS_Part2PortTbl
{
169 unsigned char CR
[12];
172 struct SiS_CRT1Table
{
173 unsigned char CR
[17];
176 struct SiS_MCLKData
{
177 unsigned char SR28
,SR29
,SR2A
;
178 unsigned short CLOCK
;
181 struct SiS_VCLKData
{
182 unsigned char SR2B
,SR2C
;
183 unsigned short CLOCK
;
186 struct SiS_VBVCLKData
{
187 unsigned char Part4_A
,Part4_B
;
188 unsigned short CLOCK
;
191 struct SiS_StResInfo_S
{
192 unsigned short HTotal
;
193 unsigned short VTotal
;
196 struct SiS_ModeResInfo_S
{
197 unsigned short HTotal
;
198 unsigned short VTotal
;
203 /* Defines for SiS_CustomT */
204 /* Never change these for sisfb compatibility */
206 #define CUT_FORCENONE 1
207 #define CUT_BARCO1366 2
208 #define CUT_BARCO1024 3
209 #define CUT_COMPAQ1280 4
210 #define CUT_COMPAQ12802 5
211 #define CUT_PANEL848 6
212 #define CUT_CLEVO1024 7
213 #define CUT_CLEVO10242 8
214 #define CUT_CLEVO1400 9
215 #define CUT_CLEVO14002 10
216 #define CUT_UNIWILL1024 11
217 #define CUT_ASUSL3000D 12
218 #define CUT_UNIWILL10242 13
219 #define CUT_ACER1280 14
220 #define CUT_COMPAL1400_1 15
221 #define CUT_COMPAL1400_2 16
222 #define CUT_ASUSA2H_1 17
223 #define CUT_ASUSA2H_2 18
224 #define CUT_UNKNOWNLCD 19
225 #define CUT_AOP8060 20
226 #define CUT_PANEL856 21
230 unsigned char ChipType
;
231 unsigned char ChipRevision
;
233 unsigned char *VirtualRomBase
;
235 unsigned char SISIOMEMTYPE
*VideoMemoryAddress
;
236 unsigned int VideoMemorySize
;
237 SISIOADDRESS IOAddress
;
238 SISIOADDRESS IOAddress2
; /* For dual chip XGI volari */
241 SISIOADDRESS SiS_P3c4
;
242 SISIOADDRESS SiS_P3d4
;
243 SISIOADDRESS SiS_P3c0
;
244 SISIOADDRESS SiS_P3ce
;
245 SISIOADDRESS SiS_P3c2
;
246 SISIOADDRESS SiS_P3ca
;
247 SISIOADDRESS SiS_P3c6
;
248 SISIOADDRESS SiS_P3c7
;
249 SISIOADDRESS SiS_P3c8
;
250 SISIOADDRESS SiS_P3c9
;
251 SISIOADDRESS SiS_P3cb
;
252 SISIOADDRESS SiS_P3cc
;
253 SISIOADDRESS SiS_P3cd
;
254 SISIOADDRESS SiS_P3da
;
255 SISIOADDRESS SiS_Part1Port
;
256 SISIOADDRESS SiS_Part2Port
;
257 SISIOADDRESS SiS_Part3Port
;
258 SISIOADDRESS SiS_Part4Port
;
259 SISIOADDRESS SiS_Part5Port
;
260 SISIOADDRESS SiS_VidCapt
;
261 SISIOADDRESS SiS_VidPlay
;
262 unsigned short SiS_IF_DEF_LVDS
;
263 unsigned short SiS_IF_DEF_CH70xx
;
264 unsigned short SiS_IF_DEF_CONEX
;
265 unsigned short SiS_IF_DEF_TRUMPION
;
266 unsigned short SiS_IF_DEF_DSTN
;
267 unsigned short SiS_IF_DEF_FSTN
;
268 unsigned short SiS_SysFlags
;
269 unsigned char SiS_VGAINFO
;
273 bool SiS_NeedRomModeData
;
274 bool PanelSelfDetected
;
277 bool SiS_CHSOverScan
;
281 unsigned int SiS_CustomT
;
282 int SiS_UseWide
, SiS_UseWideCRT2
;
284 unsigned short SiS_Backup70xx
;
288 unsigned char EMI_30
,EMI_31
,EMI_32
,EMI_33
;
289 unsigned short SiS_EMIOffset
;
290 unsigned short SiS_PWDOffset
;
292 unsigned char SiS_MyCR63
;
293 unsigned short SiS_CRT1Mode
;
294 unsigned short SiS_flag_clearbuffer
;
296 unsigned char SiS_ChannelAB
;
297 unsigned char SiS_DataBusWidth
;
298 unsigned short SiS_ModeType
;
299 unsigned short SiS_VBInfo
;
300 unsigned short SiS_TVMode
;
301 unsigned short SiS_LCDResInfo
;
302 unsigned short SiS_LCDTypeInfo
;
303 unsigned short SiS_LCDInfo
;
304 unsigned short SiS_LCDInfo661
;
305 unsigned short SiS_VBType
;
306 unsigned short SiS_VBExtInfo
;
307 unsigned short SiS_YPbPr
;
308 unsigned short SiS_SelectCRT2Rate
;
309 unsigned short SiS_SetFlag
;
310 unsigned short SiS_RVBHCFACT
;
311 unsigned short SiS_RVBHCMAX
;
312 unsigned short SiS_RVBHRS
;
313 unsigned short SiS_RVBHRS2
;
314 unsigned short SiS_VGAVT
;
315 unsigned short SiS_VGAHT
;
316 unsigned short SiS_VT
;
317 unsigned short SiS_HT
;
318 unsigned short SiS_VGAVDE
;
319 unsigned short SiS_VGAHDE
;
320 unsigned short SiS_VDE
;
321 unsigned short SiS_HDE
;
322 unsigned short SiS_NewFlickerMode
;
323 unsigned short SiS_RY1COE
;
324 unsigned short SiS_RY2COE
;
325 unsigned short SiS_RY3COE
;
326 unsigned short SiS_RY4COE
;
327 unsigned short SiS_LCDHDES
;
328 unsigned short SiS_LCDVDES
;
329 SISIOADDRESS SiS_DDC_Port
;
330 unsigned short SiS_DDC_Index
;
331 unsigned short SiS_DDC_Data
;
332 unsigned short SiS_DDC_NData
;
333 unsigned short SiS_DDC_Clk
;
334 unsigned short SiS_DDC_NClk
;
335 unsigned short SiS_DDC_DeviceAddr
;
336 unsigned short SiS_DDC_ReadAddr
;
337 unsigned short SiS_DDC_SecAddr
;
338 unsigned short SiS_ChrontelInit
;
339 bool SiS_SensibleSR11
;
340 unsigned short SiS661LCD2TableSize
;
342 unsigned short SiS_PanelMinLVDS
;
343 unsigned short SiS_PanelMin301
;
345 const struct SiS_St
*SiS_SModeIDTable
;
346 const struct SiS_StandTable_S
*SiS_StandTable
;
347 const struct SiS_Ext
*SiS_EModeIDTable
;
348 const struct SiS_Ext2
*SiS_RefIndex
;
349 const struct SiS_VBMode
*SiS_VBModeIDTable
;
350 const struct SiS_CRT1Table
*SiS_CRT1Table
;
351 const struct SiS_MCLKData
*SiS_MCLKData_0
;
352 const struct SiS_MCLKData
*SiS_MCLKData_1
;
353 struct SiS_VCLKData
*SiS_VCLKData
;
354 struct SiS_VBVCLKData
*SiS_VBVCLKData
;
355 const struct SiS_StResInfo_S
*SiS_StResInfo
;
356 const struct SiS_ModeResInfo_S
*SiS_ModeResInfo
;
358 const unsigned char *pSiS_OutputSelect
;
359 const unsigned char *pSiS_SoftSetting
;
361 const unsigned char *SiS_SR15
;
363 const struct SiS_PanelDelayTbl
*SiS_PanelDelayTbl
;
364 const struct SiS_PanelDelayTbl
*SiS_PanelDelayTblLVDS
;
368 const struct SiS_LCDData
*SiS_ExtLCD1024x768Data
;
369 const struct SiS_LCDData
*SiS_St2LCD1024x768Data
;
370 const struct SiS_LCDData
*SiS_LCD1280x720Data
;
371 const struct SiS_LCDData
*SiS_StLCD1280x768_2Data
;
372 const struct SiS_LCDData
*SiS_ExtLCD1280x768_2Data
;
373 const struct SiS_LCDData
*SiS_LCD1280x800Data
;
374 const struct SiS_LCDData
*SiS_LCD1280x800_2Data
;
375 const struct SiS_LCDData
*SiS_LCD1280x854Data
;
376 const struct SiS_LCDData
*SiS_LCD1280x960Data
;
377 const struct SiS_LCDData
*SiS_ExtLCD1280x1024Data
;
378 const struct SiS_LCDData
*SiS_St2LCD1280x1024Data
;
379 const struct SiS_LCDData
*SiS_StLCD1400x1050Data
;
380 const struct SiS_LCDData
*SiS_ExtLCD1400x1050Data
;
381 const struct SiS_LCDData
*SiS_StLCD1600x1200Data
;
382 const struct SiS_LCDData
*SiS_ExtLCD1600x1200Data
;
383 const struct SiS_LCDData
*SiS_LCD1680x1050Data
;
384 const struct SiS_LCDData
*SiS_NoScaleData
;
385 const struct SiS_TVData
*SiS_StPALData
;
386 const struct SiS_TVData
*SiS_ExtPALData
;
387 const struct SiS_TVData
*SiS_StNTSCData
;
388 const struct SiS_TVData
*SiS_ExtNTSCData
;
389 const struct SiS_TVData
*SiS_St1HiTVData
;
390 const struct SiS_TVData
*SiS_St2HiTVData
;
391 const struct SiS_TVData
*SiS_ExtHiTVData
;
392 const struct SiS_TVData
*SiS_St525iData
;
393 const struct SiS_TVData
*SiS_St525pData
;
394 const struct SiS_TVData
*SiS_St750pData
;
395 const struct SiS_TVData
*SiS_Ext525iData
;
396 const struct SiS_TVData
*SiS_Ext525pData
;
397 const struct SiS_TVData
*SiS_Ext750pData
;
398 const unsigned char *SiS_NTSCTiming
;
399 const unsigned char *SiS_PALTiming
;
400 const unsigned char *SiS_HiTVExtTiming
;
401 const unsigned char *SiS_HiTVSt1Timing
;
402 const unsigned char *SiS_HiTVSt2Timing
;
403 const unsigned char *SiS_HiTVGroup3Data
;
404 const unsigned char *SiS_HiTVGroup3Simu
;
406 const unsigned char *SiS_HiTVTextTiming
;
407 const unsigned char *SiS_HiTVGroup3Text
;
410 const struct SiS_Part2PortTbl
*SiS_CRT2Part2_1024x768_1
;
411 const struct SiS_Part2PortTbl
*SiS_CRT2Part2_1024x768_2
;
412 const struct SiS_Part2PortTbl
*SiS_CRT2Part2_1024x768_3
;
416 const struct SiS_LVDSData
*SiS_LVDS320x240Data_1
;
417 const struct SiS_LVDSData
*SiS_LVDS320x240Data_2
;
418 const struct SiS_LVDSData
*SiS_LVDS640x480Data_1
;
419 const struct SiS_LVDSData
*SiS_LVDS800x600Data_1
;
420 const struct SiS_LVDSData
*SiS_LVDS1024x600Data_1
;
421 const struct SiS_LVDSData
*SiS_LVDS1024x768Data_1
;
422 const struct SiS_LVDSData
*SiS_LVDSBARCO1366Data_1
;
423 const struct SiS_LVDSData
*SiS_LVDSBARCO1366Data_2
;
424 const struct SiS_LVDSData
*SiS_LVDSBARCO1024Data_1
;
425 const struct SiS_LVDSData
*SiS_LVDS848x480Data_1
;
426 const struct SiS_LVDSData
*SiS_LVDS848x480Data_2
;
427 const struct SiS_LVDSData
*SiS_CHTVUNTSCData
;
428 const struct SiS_LVDSData
*SiS_CHTVONTSCData
;
429 const struct SiS_LVDSData
*SiS_CHTVUPALData
;
430 const struct SiS_LVDSData
*SiS_CHTVOPALData
;
431 const struct SiS_LVDSData
*SiS_CHTVUPALMData
;
432 const struct SiS_LVDSData
*SiS_CHTVOPALMData
;
433 const struct SiS_LVDSData
*SiS_CHTVUPALNData
;
434 const struct SiS_LVDSData
*SiS_CHTVOPALNData
;
435 const struct SiS_LVDSData
*SiS_CHTVSOPALData
;
437 const struct SiS_LVDSDes
*SiS_PanelType04_1a
;
438 const struct SiS_LVDSDes
*SiS_PanelType04_2a
;
439 const struct SiS_LVDSDes
*SiS_PanelType04_1b
;
440 const struct SiS_LVDSDes
*SiS_PanelType04_2b
;
442 const struct SiS_LVDSCRT1Data
*SiS_LVDSCRT1320x240_1
;
443 const struct SiS_LVDSCRT1Data
*SiS_LVDSCRT1320x240_2
;
444 const struct SiS_LVDSCRT1Data
*SiS_LVDSCRT1320x240_2_H
;
445 const struct SiS_LVDSCRT1Data
*SiS_LVDSCRT1320x240_3
;
446 const struct SiS_LVDSCRT1Data
*SiS_LVDSCRT1320x240_3_H
;
447 const struct SiS_LVDSCRT1Data
*SiS_LVDSCRT1640x480_1
;
448 const struct SiS_LVDSCRT1Data
*SiS_LVDSCRT1640x480_1_H
;
449 const struct SiS_LVDSCRT1Data
*SiS_CHTVCRT1UNTSC
;
450 const struct SiS_LVDSCRT1Data
*SiS_CHTVCRT1ONTSC
;
451 const struct SiS_LVDSCRT1Data
*SiS_CHTVCRT1UPAL
;
452 const struct SiS_LVDSCRT1Data
*SiS_CHTVCRT1OPAL
;
453 const struct SiS_LVDSCRT1Data
*SiS_CHTVCRT1SOPAL
;
455 const struct SiS_CHTVRegData
*SiS_CHTVReg_UNTSC
;
456 const struct SiS_CHTVRegData
*SiS_CHTVReg_ONTSC
;
457 const struct SiS_CHTVRegData
*SiS_CHTVReg_UPAL
;
458 const struct SiS_CHTVRegData
*SiS_CHTVReg_OPAL
;
459 const struct SiS_CHTVRegData
*SiS_CHTVReg_UPALM
;
460 const struct SiS_CHTVRegData
*SiS_CHTVReg_OPALM
;
461 const struct SiS_CHTVRegData
*SiS_CHTVReg_UPALN
;
462 const struct SiS_CHTVRegData
*SiS_CHTVReg_OPALN
;
463 const struct SiS_CHTVRegData
*SiS_CHTVReg_SOPAL
;
465 const unsigned char *SiS_CHTVVCLKUNTSC
;
466 const unsigned char *SiS_CHTVVCLKONTSC
;
467 const unsigned char *SiS_CHTVVCLKUPAL
;
468 const unsigned char *SiS_CHTVVCLKOPAL
;
469 const unsigned char *SiS_CHTVVCLKUPALM
;
470 const unsigned char *SiS_CHTVVCLKOPALM
;
471 const unsigned char *SiS_CHTVVCLKUPALN
;
472 const unsigned char *SiS_CHTVVCLKOPALN
;
473 const unsigned char *SiS_CHTVVCLKSOPAL
;
475 unsigned short PanelXRes
, PanelHT
;
476 unsigned short PanelYRes
, PanelVT
;
477 unsigned short PanelHRS
, PanelHRE
;
478 unsigned short PanelVRS
, PanelVRE
;
479 unsigned short PanelVCLKIdx300
;
480 unsigned short PanelVCLKIdx315
;
481 bool Alternate1600x1200
;
484 bool CRT1UsesCustomMode
;
485 unsigned short CHDisplay
;
486 unsigned short CHSyncStart
;
487 unsigned short CHSyncEnd
;
488 unsigned short CHTotal
;
489 unsigned short CHBlankStart
;
490 unsigned short CHBlankEnd
;
491 unsigned short CVDisplay
;
492 unsigned short CVSyncStart
;
493 unsigned short CVSyncEnd
;
494 unsigned short CVTotal
;
495 unsigned short CVBlankStart
;
496 unsigned short CVBlankEnd
;
497 unsigned int CDClock
;
499 unsigned char CCRT1CRTC
[17];
502 unsigned short CSRClock
;
503 unsigned short CSRClock_CRT1
;
504 unsigned short CModeFlag
;
505 unsigned short CModeFlag_CRT1
;
506 unsigned short CInfoFlag
;
511 unsigned char Backup_Mode
;
512 unsigned char Backup_14
;
513 unsigned char Backup_15
;
514 unsigned char Backup_16
;
515 unsigned char Backup_17
;
516 unsigned char Backup_18
;
517 unsigned char Backup_19
;
518 unsigned char Backup_1a
;
519 unsigned char Backup_1b
;
520 unsigned char Backup_1c
;
521 unsigned char Backup_1d
;
523 unsigned char Init_P4_0E
;
528 unsigned short CP_Vendor
, CP_Product
;
529 bool CP_HaveCustomData
;
530 int CP_PreferredX
, CP_PreferredY
, CP_PreferredIndex
;
531 int CP_MaxX
, CP_MaxY
, CP_MaxClock
;
532 unsigned char CP_PrefSR2B
, CP_PrefSR2C
;
533 unsigned short CP_PrefClock
;
534 bool CP_Supports64048075
;
535 int CP_HDisplay
[7], CP_VDisplay
[7]; /* For Custom LCD panel dimensions */
536 int CP_HTotal
[7], CP_VTotal
[7];
537 int CP_HSyncStart
[7], CP_VSyncStart
[7];
538 int CP_HSyncEnd
[7], CP_VSyncEnd
[7];
539 int CP_HBlankStart
[7], CP_VBlankStart
[7];
540 int CP_HBlankEnd
[7], CP_VBlankEnd
[7];
542 bool CP_DataValid
[7];
543 bool CP_HSync_P
[7], CP_VSync_P
[7], CP_SyncValid
[7];