vb_table.h 108 KB

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