initdef.h 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709
  1. /* $XFree86$ */
  2. /* $XdotOrg$ */
  3. /*
  4. * Global definitions for init.c and init301.c
  5. *
  6. * Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria
  7. *
  8. * If distributed as part of the Linux kernel, the following license terms
  9. * apply:
  10. *
  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.
  15. * *
  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.
  20. * *
  21. * * You should have received a copy of the GNU General Public License
  22. * * along with this program; if not, write to the Free Software
  23. * * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
  24. *
  25. * Otherwise, the following license terms apply:
  26. *
  27. * * Redistribution and use in source and binary forms, with or without
  28. * * modification, are permitted provided that the following conditions
  29. * * are met:
  30. * * 1) Redistributions of source code must retain the above copyright
  31. * * notice, this list of conditions and the following disclaimer.
  32. * * 2) Redistributions in binary form must reproduce the above copyright
  33. * * notice, this list of conditions and the following disclaimer in the
  34. * * documentation and/or other materials provided with the distribution.
  35. * * 3) The name of the author may not be used to endorse or promote products
  36. * * derived from this software without specific prior written permission.
  37. * *
  38. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  39. * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  40. * * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  41. * * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  42. * * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  43. * * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  44. * * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  45. * * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  46. * * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  47. * * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  48. *
  49. * Author: Thomas Winischhofer <thomas@winischhofer.net>
  50. *
  51. */
  52. #ifndef _INITDEF_
  53. #define _INITDEF_
  54. #define IS_SIS330 (SiS_Pr->ChipType == SIS_330)
  55. #define IS_SIS550 (SiS_Pr->ChipType == SIS_550)
  56. #define IS_SIS650 (SiS_Pr->ChipType == SIS_650) /* All versions, incl 651, M65x */
  57. #define IS_SIS740 (SiS_Pr->ChipType == SIS_740)
  58. #define IS_SIS651 (SiS_Pr->SiS_SysFlags & (SF_Is651 | SF_Is652))
  59. #define IS_SISM650 (SiS_Pr->SiS_SysFlags & (SF_IsM650 | SF_IsM652 | SF_IsM653))
  60. #define IS_SIS65x (IS_SIS651 || IS_SISM650) /* Only special versions of 65x */
  61. #define IS_SIS661 (SiS_Pr->ChipType == SIS_661)
  62. #define IS_SIS741 (SiS_Pr->ChipType == SIS_741)
  63. #define IS_SIS660 (SiS_Pr->ChipType == SIS_660)
  64. #define IS_SIS760 (SiS_Pr->ChipType == SIS_760)
  65. #define IS_SIS761 (SiS_Pr->ChipType == SIS_761)
  66. #define IS_SIS661741660760 (IS_SIS661 || IS_SIS741 || IS_SIS660 || IS_SIS760 || IS_SIS761)
  67. #define IS_SIS650740 ((SiS_Pr->ChipType >= SIS_650) && (SiS_Pr->ChipType < SIS_330))
  68. #define IS_SIS550650740 (IS_SIS550 || IS_SIS650740)
  69. #define IS_SIS650740660 (IS_SIS650 || IS_SIS740 || IS_SIS661741660760)
  70. #define IS_SIS550650740660 (IS_SIS550 || IS_SIS650740660)
  71. #define SISGETROMW(x) (ROMAddr[(x)] | (ROMAddr[(x)+1] << 8))
  72. /* SiS_VBType */
  73. #define VB_SIS301 0x0001
  74. #define VB_SIS301B 0x0002
  75. #define VB_SIS302B 0x0004
  76. #define VB_SIS301LV 0x0008
  77. #define VB_SIS302LV 0x0010
  78. #define VB_SIS302ELV 0x0020
  79. #define VB_SIS301C 0x0040
  80. #define VB_SIS307T 0x0080
  81. #define VB_SIS307LV 0x0100
  82. #define VB_UMC 0x4000
  83. #define VB_NoLCD 0x8000
  84. #define VB_SIS30xB (VB_SIS301B | VB_SIS301C | VB_SIS302B | VB_SIS307T)
  85. #define VB_SIS30xC (VB_SIS301C | VB_SIS307T)
  86. #define VB_SISTMDS (VB_SIS301 | VB_SIS301B | VB_SIS301C | VB_SIS302B | VB_SIS307T)
  87. #define VB_SISLVDS (VB_SIS301LV | VB_SIS302LV | VB_SIS302ELV | VB_SIS307LV)
  88. #define VB_SIS30xBLV (VB_SIS30xB | VB_SISLVDS)
  89. #define VB_SIS30xCLV (VB_SIS30xC | VB_SIS302ELV | VB_SIS307LV)
  90. #define VB_SISVB (VB_SIS301 | VB_SIS30xBLV)
  91. #define VB_SISLCDA (VB_SIS302B | VB_SIS301C | VB_SIS307T | VB_SISLVDS)
  92. #define VB_SISTMDSLCDA (VB_SIS301C | VB_SIS307T)
  93. #define VB_SISPART4SCALER (VB_SIS301C | VB_SIS307T | VB_SIS302ELV | VB_SIS307LV)
  94. #define VB_SISHIVISION (VB_SIS301 | VB_SIS301B | VB_SIS302B)
  95. #define VB_SISYPBPR (VB_SIS301C | VB_SIS307T | VB_SIS301LV | VB_SIS302LV | VB_SIS302ELV | VB_SIS307LV)
  96. #define VB_SISTAP4SCALER (VB_SIS301C | VB_SIS307T | VB_SIS302ELV | VB_SIS307LV)
  97. #define VB_SISPART4OVERFLOW (VB_SIS301C | VB_SIS307T | VB_SIS302LV | VB_SIS302ELV | VB_SIS307LV)
  98. #define VB_SISPWD (VB_SIS301C | VB_SIS307T | VB_SISLVDS)
  99. #define VB_SISEMI (VB_SIS302LV | VB_SIS302ELV | VB_SIS307LV)
  100. #define VB_SISPOWER (VB_SIS301C | VB_SIS307T | VB_SIS302LV | VB_SIS302ELV | VB_SIS307LV)
  101. #define VB_SISDUALLINK (VB_SIS302LV | VB_SIS302ELV | VB_SIS307T | VB_SIS307LV)
  102. #define VB_SISVGA2 VB_SISTMDS
  103. #define VB_SISRAMDAC202 (VB_SIS301C | VB_SIS307T)
  104. /* VBInfo */
  105. #define SetSimuScanMode 0x0001 /* CR 30 */
  106. #define SwitchCRT2 0x0002
  107. #define SetCRT2ToAVIDEO 0x0004
  108. #define SetCRT2ToSVIDEO 0x0008
  109. #define SetCRT2ToSCART 0x0010
  110. #define SetCRT2ToLCD 0x0020
  111. #define SetCRT2ToRAMDAC 0x0040
  112. #define SetCRT2ToHiVision 0x0080 /* for SiS bridge */
  113. #define SetCRT2ToCHYPbPr SetCRT2ToHiVision /* for Chrontel */
  114. #define SetNTSCTV 0x0000 /* CR 31 */
  115. #define SetPALTV 0x0100 /* Deprecated here, now in TVMode */
  116. #define SetInSlaveMode 0x0200
  117. #define SetNotSimuMode 0x0400
  118. #define SetNotSimuTVMode SetNotSimuMode
  119. #define SetDispDevSwitch 0x0800
  120. #define SetCRT2ToYPbPr525750 0x0800
  121. #define LoadDACFlag 0x1000
  122. #define DisableCRT2Display 0x2000
  123. #define DriverMode 0x4000
  124. #define HotKeySwitch 0x8000
  125. #define SetCRT2ToLCDA 0x8000
  126. /* v-- Needs change in sis_vga.c if changed (GPIO) --v */
  127. #define SetCRT2ToTV (SetCRT2ToYPbPr525750|SetCRT2ToHiVision|SetCRT2ToSCART|SetCRT2ToSVIDEO|SetCRT2ToAVIDEO)
  128. #define SetCRT2ToTVNoYPbPrHiVision (SetCRT2ToSCART | SetCRT2ToSVIDEO | SetCRT2ToAVIDEO)
  129. #define SetCRT2ToTVNoHiVision (SetCRT2ToYPbPr525750 | SetCRT2ToSCART | SetCRT2ToSVIDEO | SetCRT2ToAVIDEO)
  130. /* SiS_ModeType */
  131. #define ModeText 0x00
  132. #define ModeCGA 0x01
  133. #define ModeEGA 0x02
  134. #define ModeVGA 0x03
  135. #define Mode15Bpp 0x04
  136. #define Mode16Bpp 0x05
  137. #define Mode24Bpp 0x06
  138. #define Mode32Bpp 0x07
  139. #define ModeTypeMask 0x07
  140. #define IsTextMode 0x07
  141. #define DACInfoFlag 0x0018
  142. #define MemoryInfoFlag 0x01E0
  143. #define MemorySizeShift 5
  144. /* modeflag */
  145. #define Charx8Dot 0x0200
  146. #define LineCompareOff 0x0400
  147. #define CRT2Mode 0x0800
  148. #define HalfDCLK 0x1000
  149. #define NoSupportSimuTV 0x2000
  150. #define NoSupportLCDScale 0x4000 /* SiS bridge: No scaling possible (no matter what panel) */
  151. #define DoubleScanMode 0x8000
  152. /* Infoflag */
  153. #define SupportTV 0x0008
  154. #define SupportTV1024 0x0800
  155. #define SupportCHTV 0x0800
  156. #define Support64048060Hz 0x0800 /* Special for 640x480 LCD */
  157. #define SupportHiVision 0x0010
  158. #define SupportYPbPr750p 0x1000
  159. #define SupportLCD 0x0020
  160. #define SupportRAMDAC2 0x0040 /* All (<= 100Mhz) */
  161. #define SupportRAMDAC2_135 0x0100 /* All except DH (<= 135Mhz) */
  162. #define SupportRAMDAC2_162 0x0200 /* B, C (<= 162Mhz) */
  163. #define SupportRAMDAC2_202 0x0400 /* C (<= 202Mhz) */
  164. #define InterlaceMode 0x0080
  165. #define SyncPP 0x0000
  166. #define HaveWideTiming 0x2000 /* Have specific wide- and non-wide timing */
  167. #define SyncPN 0x4000
  168. #define SyncNP 0x8000
  169. #define SyncNN 0xc000
  170. /* SetFlag */
  171. #define ProgrammingCRT2 0x0001
  172. #define LowModeTests 0x0002
  173. /* #define TVSimuMode 0x0002 - deprecated */
  174. /* #define RPLLDIV2XO 0x0004 - deprecated */
  175. #define LCDVESATiming 0x0008
  176. #define EnableLVDSDDA 0x0010
  177. #define SetDispDevSwitchFlag 0x0020
  178. #define CheckWinDos 0x0040
  179. #define SetDOSMode 0x0080
  180. /* TVMode flag */
  181. #define TVSetPAL 0x0001
  182. #define TVSetNTSCJ 0x0002
  183. #define TVSetPALM 0x0004
  184. #define TVSetPALN 0x0008
  185. #define TVSetCHOverScan 0x0010
  186. #define TVSetYPbPr525i 0x0020 /* new 0x10 */
  187. #define TVSetYPbPr525p 0x0040 /* new 0x20 */
  188. #define TVSetYPbPr750p 0x0080 /* new 0x40 */
  189. #define TVSetHiVision 0x0100 /* new 0x80; = 1080i, software-wise identical */
  190. #define TVSetTVSimuMode 0x0200 /* new 0x200, prev. 0x800 */
  191. #define TVRPLLDIV2XO 0x0400 /* prev 0x1000 */
  192. #define TVSetNTSC1024 0x0800 /* new 0x100, prev. 0x2000 */
  193. #define TVSet525p1024 0x1000 /* TW */
  194. #define TVAspect43 0x2000
  195. #define TVAspect169 0x4000
  196. #define TVAspect43LB 0x8000
  197. /* YPbPr flag (>=315, <661; converted to TVMode) */
  198. #define YPbPr525p 0x0001
  199. #define YPbPr750p 0x0002
  200. #define YPbPr525i 0x0004
  201. #define YPbPrHiVision 0x0008
  202. #define YPbPrModeMask (YPbPr750p | YPbPr525p | YPbPr525i | YPbPrHiVision)
  203. /* SysFlags (to identify special versions) */
  204. #define SF_Is651 0x0001
  205. #define SF_IsM650 0x0002
  206. #define SF_Is652 0x0004
  207. #define SF_IsM652 0x0008
  208. #define SF_IsM653 0x0010
  209. #define SF_IsM661 0x0020
  210. #define SF_IsM741 0x0040
  211. #define SF_IsM760 0x0080
  212. #define SF_760UMA 0x4000 /* 76x: We have UMA */
  213. #define SF_760LFB 0x8000 /* 76x: We have LFB */
  214. /* CR32 (Newer 630, and 315 series)
  215. [0] VB connected with CVBS
  216. [1] VB connected with SVHS
  217. [2] VB connected with SCART
  218. [3] VB connected with LCD
  219. [4] VB connected with CRT2 (secondary VGA)
  220. [5] CRT1 monitor is connected
  221. [6] VB connected with Hi-Vision TV
  222. [7] <= 330: VB connected with DVI combo connector
  223. >= 661: VB connected to YPbPr
  224. */
  225. /* CR35 (300 series only) */
  226. #define TVOverScan 0x10
  227. #define TVOverScanShift 4
  228. /* CR35 (661 series only)
  229. [0] 1 = PAL, 0 = NTSC
  230. [1] 1 = NTSC-J (if D0 = 0)
  231. [2] 1 = PALM (if D0 = 1)
  232. [3] 1 = PALN (if D0 = 1)
  233. [4] 1 = Overscan (Chrontel only)
  234. [7:5] (only if D2 in CR38 is set)
  235. 000 525i
  236. 001 525p
  237. 010 750p
  238. 011 1080i (or HiVision on 301, 301B)
  239. */
  240. /* CR37
  241. [0] Set 24/18 bit (0/1) RGB to LVDS/TMDS transmitter (set by BIOS)
  242. [3:1] External chip
  243. 300 series:
  244. 001 SiS301 (never seen)
  245. 010 LVDS
  246. 011 LVDS + Tumpion Zurac
  247. 100 LVDS + Chrontel 7005
  248. 110 Chrontel 7005
  249. 315/330 series
  250. 001 SiS30x (never seen)
  251. 010 LVDS
  252. 011 LVDS + Chrontel 7019
  253. 660 series [2:1] only:
  254. reserved (chip type now in CR38)
  255. All other combinations reserved
  256. [3] 661 only: Pass 1:1 data
  257. [4] LVDS: 0: Panel Link expands / 1: Panel Link does not expand
  258. 30x: 0: Bridge scales / 1: Bridge does not scale = Panel scales (if possible)
  259. [5] LCD polarity select
  260. 0: VESA DMT Standard
  261. 1: EDID 2.x defined
  262. [6] LCD horizontal polarity select
  263. 0: High active
  264. 1: Low active
  265. [7] LCD vertical polarity select
  266. 0: High active
  267. 1: Low active
  268. */
  269. /* CR37: LCDInfo */
  270. #define LCDRGB18Bit 0x0001
  271. #define LCDNonExpanding 0x0010
  272. #define LCDSync 0x0020
  273. #define LCDPass11 0x0100 /* 0: center screen, 1: Pass 1:1 data */
  274. #define LCDDualLink 0x0200
  275. #define DontExpandLCD LCDNonExpanding
  276. #define LCDNonExpandingShift 4
  277. #define DontExpandLCDShift LCDNonExpandingShift
  278. #define LCDSyncBit 0x00e0
  279. #define LCDSyncShift 6
  280. /* CR38 (315 series) */
  281. #define EnableDualEdge 0x01
  282. #define SetToLCDA 0x02 /* LCD channel A (301C/302B/30x(E)LV and 650+LVDS only) */
  283. #define EnableCHScart 0x04 /* Scart on Ch7019 (unofficial definition - TW) */
  284. #define EnableCHYPbPr 0x08 /* YPbPr on Ch7019 (480i HDTV); only on 650/Ch7019 systems */
  285. #define EnableSiSYPbPr 0x08 /* Enable YPbPr mode (30xLV/301C only) */
  286. #define EnableYPbPr525i 0x00 /* Enable 525i YPbPr mode (30xLV/301C only) (mask 0x30) */
  287. #define EnableYPbPr525p 0x10 /* Enable 525p YPbPr mode (30xLV/301C only) (mask 0x30) */
  288. #define EnableYPbPr750p 0x20 /* Enable 750p YPbPr mode (30xLV/301C only) (mask 0x30) */
  289. #define EnableYPbPr1080i 0x30 /* Enable 1080i YPbPr mode (30xLV/301C only) (mask 0x30) */
  290. #define EnablePALM 0x40 /* 1 = Set PALM */
  291. #define EnablePALN 0x80 /* 1 = Set PALN */
  292. #define EnableNTSCJ EnablePALM /* Not BIOS */
  293. /* CR38 (661 and later)
  294. D[7:5] 000 No VB
  295. 001 301 series VB
  296. 010 LVDS
  297. 011 Chrontel 7019
  298. 100 Conexant
  299. D2 Enable YPbPr output (see CR35)
  300. D[1:0] LCDA (like before)
  301. */
  302. #define EnablePALMN 0x40 /* Romflag: 1 = Allow PALM/PALN */
  303. /* CR39 (650 only) */
  304. #define LCDPass1_1 0x01 /* 0: center screen, 1: pass 1:1 data output */
  305. #define Enable302LV_DualLink 0x04 /* 302LV only; enable dual link */
  306. /* CR39 (661 and later)
  307. D[7] LVDS (SiS or third party)
  308. D[1:0] YPbPr Aspect Ratio
  309. 00 4:3 letterbox
  310. 01 4:3
  311. 10 16:9
  312. 11 4:3
  313. */
  314. /* CR3B (651+301C)
  315. D[1:0] YPbPr Aspect Ratio
  316. ?
  317. */
  318. /* CR79 (315/330 series only; not 661 and later)
  319. [3-0] Notify driver
  320. 0001 Mode Switch event (set by BIOS)
  321. 0010 Epansion On/Off event
  322. 0011 TV UnderScan/OverScan event
  323. 0100 Set Brightness event
  324. 0101 Set Contrast event
  325. 0110 Set Mute event
  326. 0111 Set Volume Up/Down event
  327. [4] Enable Backlight Control by BIOS/driver
  328. (set by driver; set means that the BIOS should
  329. not touch the backlight registers because eg.
  330. the driver already switched off the backlight)
  331. [5] PAL/NTSC (set by BIOS)
  332. [6] Expansion On/Off (set by BIOS; copied to CR32[4])
  333. [7] TV UnderScan/OverScan (set by BIOS)
  334. */
  335. /* CR7C - 661 and later
  336. [7] DualEdge enabled (or: to be enabled)
  337. [6] CRT2 = TV/LCD/VGA enabled (or: to be enabled)
  338. [5] Init done (set at end of SiS_Init)
  339. {4] LVDS LCD capabilities
  340. [3] LVDS LCD capabilities
  341. [2] LVDS LCD capabilities (PWD)
  342. [1] LVDS LCD capabilities (PWD)
  343. [0] LVDS=1, TMDS=0 (SiS or third party)
  344. */
  345. /* CR7E - 661 and later
  346. VBType:
  347. [7] LVDS (third party)
  348. [3] 301C
  349. [2] 302LV
  350. [1] 301LV
  351. [0] 301B
  352. */
  353. /* LCDResInfo */
  354. #define Panel300_800x600 0x01 /* CR36 */
  355. #define Panel300_1024x768 0x02
  356. #define Panel300_1280x1024 0x03
  357. #define Panel300_1280x960 0x04
  358. #define Panel300_640x480 0x05
  359. #define Panel300_1024x600 0x06
  360. #define Panel300_1152x768 0x07
  361. #define Panel300_1280x768 0x0a
  362. #define Panel300_Custom 0x0f
  363. #define Panel300_Barco1366 0x10
  364. #define Panel310_800x600 0x01
  365. #define Panel310_1024x768 0x02
  366. #define Panel310_1280x1024 0x03
  367. #define Panel310_640x480 0x04
  368. #define Panel310_1024x600 0x05
  369. #define Panel310_1152x864 0x06
  370. #define Panel310_1280x960 0x07
  371. #define Panel310_1152x768 0x08 /* LVDS only */
  372. #define Panel310_1400x1050 0x09
  373. #define Panel310_1280x768 0x0a
  374. #define Panel310_1600x1200 0x0b
  375. #define Panel310_320x240_2 0x0c /* xSTN */
  376. #define Panel310_320x240_3 0x0d /* xSTN */
  377. #define Panel310_320x240_1 0x0e /* xSTN - This is fake, can be any */
  378. #define Panel310_Custom 0x0f
  379. #define Panel661_800x600 0x01
  380. #define Panel661_1024x768 0x02
  381. #define Panel661_1280x1024 0x03
  382. #define Panel661_640x480 0x04
  383. #define Panel661_1024x600 0x05
  384. #define Panel661_1152x864 0x06
  385. #define Panel661_1280x960 0x07
  386. #define Panel661_1280x854 0x08
  387. #define Panel661_1400x1050 0x09
  388. #define Panel661_1280x768 0x0a
  389. #define Panel661_1600x1200 0x0b
  390. #define Panel661_1280x800 0x0c
  391. #define Panel661_1680x1050 0x0d
  392. #define Panel661_1280x720 0x0e
  393. #define Panel661_Custom 0x0f
  394. #define Panel_800x600 0x01 /* Unified values */
  395. #define Panel_1024x768 0x02 /* MUST match BIOS values from 0-e */
  396. #define Panel_1280x1024 0x03
  397. #define Panel_640x480 0x04
  398. #define Panel_1024x600 0x05
  399. #define Panel_1152x864 0x06
  400. #define Panel_1280x960 0x07
  401. #define Panel_1152x768 0x08 /* LVDS only */
  402. #define Panel_1400x1050 0x09
  403. #define Panel_1280x768 0x0a /* 30xB/C and LVDS only (BIOS: all) */
  404. #define Panel_1600x1200 0x0b
  405. #define Panel_1280x800 0x0c /* 661etc (TMDS) */
  406. #define Panel_1680x1050 0x0d /* 661etc */
  407. #define Panel_1280x720 0x0e /* 661etc */
  408. #define Panel_Custom 0x0f /* MUST BE 0x0f (for DVI DDC detection) */
  409. #define Panel_320x240_1 0x10 /* SiS 550 xSTN */
  410. #define Panel_Barco1366 0x11
  411. #define Panel_848x480 0x12
  412. #define Panel_320x240_2 0x13 /* SiS 550 xSTN */
  413. #define Panel_320x240_3 0x14 /* SiS 550 xSTN */
  414. #define Panel_1280x768_2 0x15 /* 30xLV */
  415. #define Panel_1280x768_3 0x16 /* (unused) */
  416. #define Panel_1280x800_2 0x17 /* 30xLV */
  417. #define Panel_856x480 0x18
  418. #define Panel_1280x854 0x19 /* 661etc */
  419. /* Index in ModeResInfo table */
  420. #define SIS_RI_320x200 0
  421. #define SIS_RI_320x240 1
  422. #define SIS_RI_320x400 2
  423. #define SIS_RI_400x300 3
  424. #define SIS_RI_512x384 4
  425. #define SIS_RI_640x400 5
  426. #define SIS_RI_640x480 6
  427. #define SIS_RI_800x600 7
  428. #define SIS_RI_1024x768 8
  429. #define SIS_RI_1280x1024 9
  430. #define SIS_RI_1600x1200 10
  431. #define SIS_RI_1920x1440 11
  432. #define SIS_RI_2048x1536 12
  433. #define SIS_RI_720x480 13
  434. #define SIS_RI_720x576 14
  435. #define SIS_RI_1280x960 15
  436. #define SIS_RI_800x480 16
  437. #define SIS_RI_1024x576 17
  438. #define SIS_RI_1280x720 18
  439. #define SIS_RI_856x480 19
  440. #define SIS_RI_1280x768 20
  441. #define SIS_RI_1400x1050 21
  442. #define SIS_RI_1152x864 22 /* Up to here SiS conforming */
  443. #define SIS_RI_848x480 23
  444. #define SIS_RI_1360x768 24
  445. #define SIS_RI_1024x600 25
  446. #define SIS_RI_1152x768 26
  447. #define SIS_RI_768x576 27
  448. #define SIS_RI_1360x1024 28
  449. #define SIS_RI_1680x1050 29
  450. #define SIS_RI_1280x800 30
  451. #define SIS_RI_1920x1080 31
  452. #define SIS_RI_960x540 32
  453. #define SIS_RI_960x600 33
  454. #define SIS_RI_1280x854 34
  455. /* CR5F */
  456. #define IsM650 0x80
  457. /* Timing data */
  458. #define NTSCHT 1716
  459. #define NTSC2HT 1920
  460. #define NTSCVT 525
  461. #define PALHT 1728
  462. #define PALVT 625
  463. #define StHiTVHT 892
  464. #define StHiTVVT 1126
  465. #define StHiTextTVHT 1000
  466. #define StHiTextTVVT 1126
  467. #define ExtHiTVHT 2100
  468. #define ExtHiTVVT 1125
  469. /* Indices in (VB)VCLKData tables */
  470. #define VCLK28 0x00 /* Index in VCLKData table (300 and 315) */
  471. #define VCLK40 0x04 /* Index in VCLKData table (300 and 315) */
  472. #define VCLK65_300 0x09 /* Index in VCLKData table (300) */
  473. #define VCLK108_2_300 0x14 /* Index in VCLKData table (300) */
  474. #define VCLK81_300 0x3f /* Index in VCLKData table (300) */
  475. #define VCLK108_3_300 0x42 /* Index in VCLKData table (300) */
  476. #define VCLK100_300 0x43 /* Index in VCLKData table (300) */
  477. #define VCLK34_300 0x3d /* Index in VCLKData table (300) */
  478. #define VCLK_CUSTOM_300 0x47
  479. #define VCLK65_315 0x0b /* Indices in (VB)VCLKData table (315) */
  480. #define VCLK108_2_315 0x19
  481. #define VCLK81_315 0x5b
  482. #define VCLK162_315 0x5e
  483. #define VCLK108_3_315 0x45
  484. #define VCLK100_315 0x46
  485. #define VCLK34_315 0x55
  486. #define VCLK68_315 0x0d
  487. #define VCLK_1280x800_315_2 0x5c
  488. #define VCLK121_315 0x5d
  489. #define VCLK130_315 0x72
  490. #define VCLK_1280x720 0x5f
  491. #define VCLK_1280x768_2 0x60
  492. #define VCLK_1280x768_3 0x61 /* (unused?) */
  493. #define VCLK_CUSTOM_315 0x62
  494. #define VCLK_1280x720_2 0x63
  495. #define VCLK_720x480 0x67
  496. #define VCLK_720x576 0x68
  497. #define VCLK_768x576 0x68
  498. #define VCLK_848x480 0x65
  499. #define VCLK_856x480 0x66
  500. #define VCLK_800x480 0x65
  501. #define VCLK_1024x576 0x51
  502. #define VCLK_1152x864 0x64
  503. #define VCLK_1360x768 0x58
  504. #define VCLK_1280x800_315 0x6c
  505. #define VCLK_1280x854 0x76
  506. #define TVCLKBASE_300 0x21 /* Indices on TV clocks in VCLKData table (300) */
  507. #define TVCLKBASE_315 0x3a /* Indices on TV clocks in (VB)VCLKData table (315) */
  508. #define TVVCLKDIV2 0x00 /* Index relative to TVCLKBASE */
  509. #define TVVCLK 0x01 /* Index relative to TVCLKBASE */
  510. #define HiTVVCLKDIV2 0x02 /* Index relative to TVCLKBASE */
  511. #define HiTVVCLK 0x03 /* Index relative to TVCLKBASE */
  512. #define HiTVSimuVCLK 0x04 /* Index relative to TVCLKBASE */
  513. #define HiTVTextVCLK 0x05 /* Index relative to TVCLKBASE */
  514. #define YPbPr750pVCLK 0x25 /* Index relative to TVCLKBASE; was 0x0f NOT relative */
  515. /* ------------------------------ */
  516. #define SetSCARTOutput 0x01
  517. #define HotPlugFunction 0x08
  518. #define StStructSize 0x06
  519. #define SIS_VIDEO_CAPTURE 0x00 - 0x30
  520. #define SIS_VIDEO_PLAYBACK 0x02 - 0x30
  521. #define SIS_CRT2_PORT_04 0x04 - 0x30
  522. #define SIS_CRT2_PORT_10 0x10 - 0x30
  523. #define SIS_CRT2_PORT_12 0x12 - 0x30
  524. #define SIS_CRT2_PORT_14 0x14 - 0x30
  525. #define ADR_CRT2PtrData 0x20E
  526. #define offset_Zurac 0x210 /* TW: Trumpion Zurac data pointer */
  527. #define ADR_LVDSDesPtrData 0x212
  528. #define ADR_LVDSCRT1DataPtr 0x214
  529. #define ADR_CHTVVCLKPtr 0x216
  530. #define ADR_CHTVRegDataPtr 0x218
  531. #define LCDDataLen 8
  532. #define HiTVDataLen 12
  533. #define TVDataLen 16
  534. #define LVDSDataLen 6
  535. #define LVDSDesDataLen 3
  536. #define ActiveNonExpanding 0x40
  537. #define ActiveNonExpandingShift 6
  538. #define ActivePAL 0x20
  539. #define ActivePALShift 5
  540. #define ModeSwitchStatus 0x0F
  541. #define SoftTVType 0x40
  542. #define SoftSettingAddr 0x52
  543. #define ModeSettingAddr 0x53
  544. #define _PanelType00 0x00
  545. #define _PanelType01 0x08
  546. #define _PanelType02 0x10
  547. #define _PanelType03 0x18
  548. #define _PanelType04 0x20
  549. #define _PanelType05 0x28
  550. #define _PanelType06 0x30
  551. #define _PanelType07 0x38
  552. #define _PanelType08 0x40
  553. #define _PanelType09 0x48
  554. #define _PanelType0A 0x50
  555. #define _PanelType0B 0x58
  556. #define _PanelType0C 0x60
  557. #define _PanelType0D 0x68
  558. #define _PanelType0E 0x70
  559. #define _PanelType0F 0x78
  560. #define PRIMARY_VGA 0 /* 1: SiS is primary vga 0:SiS is secondary vga */
  561. #define BIOSIDCodeAddr 0x235 /* Offsets to ptrs in BIOS image */
  562. #define OEMUtilIDCodeAddr 0x237
  563. #define VBModeIDTableAddr 0x239
  564. #define OEMTVPtrAddr 0x241
  565. #define PhaseTableAddr 0x243
  566. #define NTSCFilterTableAddr 0x245
  567. #define PALFilterTableAddr 0x247
  568. #define OEMLCDPtr_1Addr 0x249
  569. #define OEMLCDPtr_2Addr 0x24B
  570. #define LCDHPosTable_1Addr 0x24D
  571. #define LCDHPosTable_2Addr 0x24F
  572. #define LCDVPosTable_1Addr 0x251
  573. #define LCDVPosTable_2Addr 0x253
  574. #define OEMLCDPIDTableAddr 0x255
  575. #define VBModeStructSize 5
  576. #define PhaseTableSize 4
  577. #define FilterTableSize 4
  578. #define LCDHPosTableSize 7
  579. #define LCDVPosTableSize 5
  580. #define OEMLVDSPIDTableSize 4
  581. #define LVDSHPosTableSize 4
  582. #define LVDSVPosTableSize 6
  583. #define VB_ModeID 0
  584. #define VB_TVTableIndex 1
  585. #define VB_LCDTableIndex 2
  586. #define VB_LCDHIndex 3
  587. #define VB_LCDVIndex 4
  588. #define OEMLCDEnable 0x0001
  589. #define OEMLCDDelayEnable 0x0002
  590. #define OEMLCDPOSEnable 0x0004
  591. #define OEMTVEnable 0x0100
  592. #define OEMTVDelayEnable 0x0200
  593. #define OEMTVFlickerEnable 0x0400
  594. #define OEMTVPhaseEnable 0x0800
  595. #define OEMTVFilterEnable 0x1000
  596. #define OEMLCDPanelIDSupport 0x0080
  597. /*
  598. =============================================================
  599. for 315 series (old data layout)
  600. =============================================================
  601. */
  602. #define SoftDRAMType 0x80
  603. #define SoftSetting_OFFSET 0x52
  604. #define SR07_OFFSET 0x7C
  605. #define SR15_OFFSET 0x7D
  606. #define SR16_OFFSET 0x81
  607. #define SR17_OFFSET 0x85
  608. #define SR19_OFFSET 0x8D
  609. #define SR1F_OFFSET 0x99
  610. #define SR21_OFFSET 0x9A
  611. #define SR22_OFFSET 0x9B
  612. #define SR23_OFFSET 0x9C
  613. #define SR24_OFFSET 0x9D
  614. #define SR25_OFFSET 0x9E
  615. #define SR31_OFFSET 0x9F
  616. #define SR32_OFFSET 0xA0
  617. #define SR33_OFFSET 0xA1
  618. #define CR40_OFFSET 0xA2
  619. #define SR25_1_OFFSET 0xF6
  620. #define CR49_OFFSET 0xF7
  621. #define VB310Data_1_2_Offset 0xB6
  622. #define VB310Data_4_D_Offset 0xB7
  623. #define VB310Data_4_E_Offset 0xB8
  624. #define VB310Data_4_10_Offset 0xBB
  625. #define RGBSenseDataOffset 0xBD
  626. #define YCSenseDataOffset 0xBF
  627. #define VideoSenseDataOffset 0xC1
  628. #define OutputSelectOffset 0xF3
  629. #define ECLK_MCLK_DISTANCE 0x14
  630. #define VBIOSTablePointerStart 0x100
  631. #define StandTablePtrOffset VBIOSTablePointerStart+0x02
  632. #define EModeIDTablePtrOffset VBIOSTablePointerStart+0x04
  633. #define CRT1TablePtrOffset VBIOSTablePointerStart+0x06
  634. #define ScreenOffsetPtrOffset VBIOSTablePointerStart+0x08
  635. #define VCLKDataPtrOffset VBIOSTablePointerStart+0x0A
  636. #define MCLKDataPtrOffset VBIOSTablePointerStart+0x0E
  637. #define CRT2PtrDataPtrOffset VBIOSTablePointerStart+0x10
  638. #define TVAntiFlickPtrOffset VBIOSTablePointerStart+0x12
  639. #define TVDelayPtr1Offset VBIOSTablePointerStart+0x14
  640. #define TVPhaseIncrPtr1Offset VBIOSTablePointerStart+0x16
  641. #define TVYFilterPtr1Offset VBIOSTablePointerStart+0x18
  642. #define LCDDelayPtr1Offset VBIOSTablePointerStart+0x20
  643. #define TVEdgePtr1Offset VBIOSTablePointerStart+0x24
  644. #define CRT2Delay1Offset VBIOSTablePointerStart+0x28
  645. #endif