1/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/sis/initdef.h,v 1.4 2000/12/02 01:16:17 dawes Exp $ */
2
3
4#ifndef _INITDEF_
5#define _INITDEF_
6
7#define SiS300                  0x0300
8#define SiS540                  0x5300
9#define SiS630                  0x6300
10#define SiS730                  0x6300
11
12/* SiS_VBType */
13#define VB_SIS301	      	0x0001
14#define VB_SIS301B        	0x0002
15#define VB_SIS302B        	0x0004
16#define VB_SIS30xLV     	0x0008
17#define VB_SIS30xNEW     	0x0010
18#define VB_NoLCD        	0x8000
19#define VB_SIS301BLV302BLV      (VB_SIS301B|VB_SIS302B|VB_SIS30xLV|VB_SIS30xNEW)
20
21#define CRT1Len                 17
22#define LVDSCRT1Len             15
23#define CHTVRegDataLen          5
24
25/* SiS_ModeType */
26#define ModeText                0x00
27#define ModeCGA                 0x01
28#define ModeEGA                 0x02
29#define ModeVGA                 0x03
30#define Mode15Bpp               0x04
31#define Mode16Bpp               0x05
32#define Mode24Bpp               0x06
33#define Mode32Bpp               0x07
34
35#define ModeInfoFlag            0x07
36#define IsTextMode              0x07
37
38#define DACInfoFlag             0x18
39#define MemoryInfoFlag          0x1E0
40#define MemorySizeShift         0x05
41
42/* modeflag */
43#define Charx8Dot               0x0200
44#define LineCompareOff          0x0400
45#define CRT2Mode                0x0800
46#define HalfDCLK                0x1000
47#define NoSupportSimuTV         0x2000
48#define DoubleScanMode          0x8000
49
50/* Infoflag */
51#define SupportAllCRT2          0x0078
52#define SupportTV               0x0008
53#define SupportHiVisionTV       0x0010
54#define SupportLCD              0x0020
55#define SupportRAMDAC2          0x0040
56#define NoSupportTV             0x0070
57#define NoSupportHiVisionTV     0x0060
58#define NoSupportLCD            0x0058
59#define SupportCHTV 		0x0800
60#define SupportTV1024           0x0800  /*301b*/
61#define InterlaceMode           0x0080
62#define SyncPP                  0x0000
63#define SyncPN                  0x4000
64#define SyncNP                  0x8000
65#define SyncNN                  0xc000
66#define ECLKindex0              0x0000
67#define ECLKindex1              0x0100
68#define ECLKindex2              0x0200
69#define ECLKindex3              0x0300
70#define ECLKindex4              0x0400
71
72/* VBInfo */
73#define SetSimuScanMode         0x0001   /* CR 30 */
74#define SwitchToCRT2            0x0002
75#define SetCRT2ToTV             0x009C
76#define SetCRT2ToAVIDEO         0x0004
77#define SetCRT2ToSVIDEO         0x0008
78#define SetCRT2ToSCART          0x0010
79#define SetCRT2ToLCD            0x0020
80#define SetCRT2ToRAMDAC         0x0040
81#define SetCRT2ToHiVisionTV     0x0080
82#define SetNTSCTV               0x0000   /* CR 31 */
83#define SetPALTV                0x0100
84#define SetInSlaveMode          0x0200
85#define SetNotSimuMode          0x0400
86#define SetNotSimuTVMode        0x0400
87#define SetDispDevSwitch        0x0800
88#define LoadDACFlag             0x1000
89#define SetCHTVOverScan  	0x1000  /* TW: Re-defined (from 0x8000) */
90#define DisableCRT2Display      0x2000
91#define CRT2DisplayFlag         0x2000
92#define DriverMode              0x4000
93#define HotKeySwitch            0x8000  /* TW: ? */
94#define SetCRT2ToLCDA           0x8000
95
96#define PanelRGB18Bit           0x0100
97#define PanelRGB24Bit           0x0000
98
99#define TVOverScan              0x10    /* Bit in CR35 (300 series only) */
100#define TVOverScanShift         4
101#define ClearBufferFlag         0x20
102
103/* CR32 (Newer 630, and 310/325 series)
104
105   [0]   VB connected with CVBS
106   [1]   VB connected with SVHS
107   [2]   VB connected with SCART
108   [3]   VB connected with LCD
109   [4]   VB connected with CRT2 (secondary VGA)
110   [5]   CRT1 monitor is connected
111   [6]   VB connected with Hi-Vision TV
112   [7]   VB connected with DVI combo connector
113
114
115   CR37
116
117   [0]   Set 24/18 bit (0/1) RGB to LVDS/TMDS transmitter (set by BIOS)
118   [3:1] External chip
119         300 series:
120	    001   SiS301 (never seen)
121	    010   LVDS
122	    011   LVDS + Tumpion Zurac
123	    100   LVDS + Chrontel 7005
124	    110   Chrontel 7005
125	  310/325 series
126	    001   SiS30x (never seen)
127	    010   LVDS
128	    011   LVDS + Chrontel 7019
129	  All other combinations reserved
130   [4]    LVDS: Expanding(0)/Non-expanding(1) LCD display
131          30x:  SiS30x(0)/LCD monitor(1) scaling display
132   [5]    LCD polarity select
133          0: VESA DMT Standard
134	  1: EDID 2.x defined
135   [6]    LCD horizontal polarity select
136          0: High active
137	  1: Low active
138   [7]    LCD vertical polarity select
139          0: High active
140	  1: Low active
141*/
142
143#define EnableDualEdge 		0x01   /* CR38 (310/325 series) */
144/* #define PAL_NTSC             0x01      (only on 315PRO) */
145#define SetToLCDA		0x02   /* TW: LCD channel A (302B and 650+LVDS only) */
146#define EnableLVDSHiVision      0x08   /* TW: Only on 650/LVDS systems */
147#define SetYPbPr                0x10   /* TW: YPbPr color format */
148#define EnablePALMN             0x40
149#define EnablePALN              0x80
150
151/* CR79 (310/325 series only)
152   [3-0] Notify driver
153         0001 Mode Switch event (set by BIOS)
154	 0010 Epansion On/Off event
155	 0011 TV UnderScan/OverScan event
156	 0100 Set Brightness event
157	 0101 Set Contrast event
158	 0110 Set Mute event
159	 0111 Set Volume Up/Down event
160   [4]   Enable Backlight Control by BIOS/driver (set by driver)
161   [5]   PAL/NTSC (set by BIOS)
162   [6]   Expansion On/Off (set by BIOS)
163   [7]   TV UnderScan/OverScan (set by BIOS)
164*/
165
166
167#define SetSCARTOutput          0x01
168#define BoardTVType             0x02
169
170/* SetFlag */
171#define ProgrammingCRT2         0x01
172#define TVSimuMode              0x02
173#define RPLLDIV2XO              0x04
174#define LCDVESATiming           0x08
175#define EnableLVDSDDA           0x10
176#define SetDispDevSwitchFlag    0x20
177#define CheckWinDos             0x40
178#define SetJDOSMode             0x80
179#define CRT2IsVGA	        0x80  /* TW: Not sure about this name... */
180
181/* LCDResInfo */
182#define Panel300_800x600        0x01	/* CR36 */
183#define Panel300_1024x768       0x02
184#define Panel300_1280x1024      0x03
185#define Panel300_1280x960       0x04
186#define Panel300_640x480        0x05
187#define Panel300_1024x600       0x06
188#define Panel300_1152x768       0x07
189#define Panel300_320x480        0x08 	/* fstn - TW: This is fake, can be any */
190
191#define Panel310_800x600        0x01
192#define Panel310_1024x768       0x02
193#define Panel310_1280x1024      0x03
194#define Panel310_640x480        0x04
195#define Panel310_1024x600       0x05
196#define Panel310_1152x864       0x06
197#define Panel310_1280x960       0x07
198#define Panel310_1152x768       0x08	/* TW: LVDS only */
199#define Panel310_1400x1050      0x09
200#define Panel310_1280x768       0x0a    /* TW: LVDS only */
201#define Panel310_1600x1200      0x0b
202#define Panel310_320x480        0x0c    /* fstn - TW: This is fake, can be any */
203
204#define Panel_800x600           0x01	/* Unified values */
205#define Panel_1024x768          0x02
206#define Panel_1280x1024         0x03
207#define Panel_640x480           0x04
208#define Panel_1024x600          0x05
209#define Panel_1152x864          0x06
210#define Panel_1280x960          0x07
211#define Panel_1152x768          0x08	/* TW: LVDS only */
212#define Panel_1400x1050         0x09
213#define Panel_1280x768          0x0a    /* TW: LVDS only */
214#define Panel_1600x1200         0x0b
215#define Panel_320x480           0x0c    /* fstn - TW: This is fake, can be any */
216
217#define ExtChipType             0x0e
218#define ExtChip301              0x02
219#define ExtChipLVDS             0x04
220#define ExtChipTrumpion         0x06
221#define ExtChipCH7005           0x08
222#define ExtChipMitacTV          0x0a            /* TW: Incorrect, 0x0a = Chrontel 7005 only */
223
224#define IsM650                  0x80   		/* TW: CR5F */
225
226/* LCDInfo */
227#define LCDRGB18Bit             0x01
228#define LCDNonExpandingShift    0x04
229#define LCDNonExpanding         0x10
230#define LCDSync                 0x20
231#define LCDPass11              0x100
232#define LCDSyncBit              0xe0
233#define LCDSyncShift            6
234
235#define LCDDataLen              8
236#define HiTVDataLen             12
237#define TVDataLen               16
238#define SetPALTV                0x0100
239#define HalfDCLK                0x1000  /* modeflag */
240#define NTSCHT                  1716
241#define NTSC2HT                 1920
242#define NTSCVT                  525
243#define PALHT                   1728
244#define PALVT                   625
245#define StHiTVHT                892
246#define StHiTVVT                1126
247#define StHiTextTVHT            1000
248#define StHiTextTVVT            1126
249#define ExtHiTVHT               2100
250#define ExtHiTVVT               1125
251
252#define VCLKStartFreq           25
253#define SoftDramType            0x80
254
255#define VCLK40                  0x04   /* Index in VCLKData array */
256#define VCLK65                  0x09   /* Index in VCLKData array */
257#define VCLK108_2               0x14   /* Index in VCLKData array */
258#define TVVCLKDIV2              0x21   /* Indices in (VB)VCLKData arrays */
259#define TVVCLK                  0x22
260#define HiTVVCLKDIV2            0x23
261#define HiTVVCLK                0x24
262#define HiTVSimuVCLK            0x25
263#define HiTVTextVCLK            0x26
264
265#define LoadDACFlag             0x1000
266#define AfterLockCRT2           0x4000
267#define SetCRT2ToAVIDEO         0x0004
268#define SetCRT2ToSCART          0x0010
269#define Ext2StructSize          5
270
271#define SetSCARTOutput          0x01
272#define AVIDEOSense             0x01
273#define SVIDEOSense             0x02
274#define SCARTSense              0x04
275#define LCDSense                0x08
276#define Monitor1Sense           0x20
277#define Monitor2Sense           0x10
278#define HiTVSense               0x40
279#define BoardTVType             0x02
280#define HotPlugFunction         0x08
281#define StStructSize            0x06
282
283#define SIS_CRT2_PORT_04        0x04 - 0x30
284#define SIS_CRT2_PORT_10        0x10 - 0x30
285#define SIS_CRT2_PORT_12        0x12 - 0x30
286#define SIS_CRT2_PORT_14        0x14 - 0x30
287
288#define ADR_CRT2PtrData         0x20E
289#define offset_Zurac            0x210   /* TW: Trumpion Zurac data pointer */
290#define ADR_LVDSDesPtrData      0x212
291#define ADR_LVDSCRT1DataPtr     0x214
292#define ADR_CHTVVCLKPtr         0x216
293#define ADR_CHTVRegDataPtr      0x218
294
295#define LVDSDataLen             6
296#define EnableLVDSDDA           0x10
297#define LVDSDesDataLen          3
298#define ActiveNonExpanding      0x40
299#define ActiveNonExpandingShift 6
300#define ActivePAL               0x20
301#define ActivePALShift          5
302#define ModeSwitchStatus        0x0F
303#define SoftTVType              0x40
304#define SoftSettingAddr         0x52
305#define ModeSettingAddr         0x53
306
307#define SelectCRT1Rate          0x4
308
309#define _PanelType00             0x00
310#define _PanelType01             0x08
311#define _PanelType02             0x10
312#define _PanelType03             0x18
313#define _PanelType04             0x20
314#define _PanelType05             0x28
315#define _PanelType06             0x30
316#define _PanelType07             0x38
317#define _PanelType08             0x40
318#define _PanelType09             0x48
319#define _PanelType0A             0x50
320#define _PanelType0B             0x58
321#define _PanelType0C             0x60
322#define _PanelType0D             0x68
323#define _PanelType0E             0x70
324#define _PanelType0F             0x78
325
326#define PRIMARY_VGA       	0     /* 1: SiS is primary vga 0:SiS is secondary vga */
327#define BIOSIDCodeAddr          0x235  /* TW: Offsets to ptrs in BIOS image */
328#define OEMUtilIDCodeAddr       0x237
329#define VBModeIDTableAddr       0x239
330#define OEMTVPtrAddr            0x241
331#define PhaseTableAddr          0x243
332#define NTSCFilterTableAddr     0x245
333#define PALFilterTableAddr      0x247
334#define OEMLCDPtr_1Addr         0x249
335#define OEMLCDPtr_2Addr         0x24B
336#define LCDHPosTable_1Addr      0x24D
337#define LCDHPosTable_2Addr      0x24F
338#define LCDVPosTable_1Addr      0x251
339#define LCDVPosTable_2Addr      0x253
340#define OEMLCDPIDTableAddr      0x255
341
342#define VBModeStructSize        5
343#define PhaseTableSize          4
344#define FilterTableSize         4
345#define LCDHPosTableSize        7
346#define LCDVPosTableSize        5
347#define OEMLVDSPIDTableSize     4
348#define LVDSHPosTableSize       4
349#define LVDSVPosTableSize       6
350
351#define VB_ModeID               0
352#define VB_TVTableIndex         1
353#define VB_LCDTableIndex        2
354#define VB_LCDHIndex            3
355#define VB_LCDVIndex            4
356
357#define OEMLCDEnable            0x0001
358#define OEMLCDDelayEnable       0x0002
359#define OEMLCDPOSEnable         0x0004
360#define OEMTVEnable             0x0100
361#define OEMTVDelayEnable        0x0200
362#define OEMTVFlickerEnable      0x0400
363#define OEMTVPhaseEnable        0x0800
364#define OEMTVFilterEnable       0x1000
365
366#define OEMLCDPanelIDSupport    0x0080
367
368/*
369  =============================================================
370   			for 310/325 series
371  =============================================================
372*/
373#define SoftDRAMType        0x80
374#define SoftSetting_OFFSET  0x52
375#define SR07_OFFSET  0x7C
376#define SR15_OFFSET  0x7D
377#define SR16_OFFSET  0x81
378#define SR17_OFFSET  0x85
379#define SR19_OFFSET  0x8D
380#define SR1F_OFFSET  0x99
381#define SR21_OFFSET  0x9A
382#define SR22_OFFSET  0x9B
383#define SR23_OFFSET  0x9C
384#define SR24_OFFSET  0x9D
385#define SR25_OFFSET  0x9E
386#define SR31_OFFSET  0x9F
387#define SR32_OFFSET  0xA0
388#define SR33_OFFSET  0xA1
389
390#define CR40_OFFSET  0xA2
391#define SR25_1_OFFSET  0xF6
392#define CR49_OFFSET  0xF7
393
394#define VB310Data_1_2_Offset  0xB6
395#define VB310Data_4_D_Offset  0xB7
396#define VB310Data_4_E_Offset  0xB8
397#define VB310Data_4_10_Offset 0xBB
398
399#define RGBSenseDataOffset    0xBD
400#define YCSenseDataOffset     0xBF
401#define VideoSenseDataOffset  0xC1
402#define OutputSelectOffset    0xF3
403
404#define ECLK_MCLK_DISTANCE  0x14
405#define VBIOSTablePointerStart    0x100
406#define StandTablePtrOffset       VBIOSTablePointerStart+0x02
407#define EModeIDTablePtrOffset     VBIOSTablePointerStart+0x04
408#define CRT1TablePtrOffset        VBIOSTablePointerStart+0x06
409#define ScreenOffsetPtrOffset     VBIOSTablePointerStart+0x08
410#define VCLKDataPtrOffset         VBIOSTablePointerStart+0x0A
411#define MCLKDataPtrOffset         VBIOSTablePointerStart+0x0E
412#define CRT2PtrDataPtrOffset      VBIOSTablePointerStart+0x10
413#define TVAntiFlickPtrOffset      VBIOSTablePointerStart+0x12
414#define TVDelayPtr1Offset         VBIOSTablePointerStart+0x14
415#define TVPhaseIncrPtr1Offset     VBIOSTablePointerStart+0x16
416#define TVYFilterPtr1Offset       VBIOSTablePointerStart+0x18
417#define LCDDelayPtr1Offset        VBIOSTablePointerStart+0x20
418#define TVEdgePtr1Offset          VBIOSTablePointerStart+0x24
419#define CRT2Delay1Offset          VBIOSTablePointerStart+0x28
420
421#endif
422