lcdtbl.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591
  1. /*
  2. * Copyright 1998-2008 VIA Technologies, Inc. All Rights Reserved.
  3. * Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved.
  4. * This program is free software; you can redistribute it and/or
  5. * modify it under the terms of the GNU General Public
  6. * License as published by the Free Software Foundation;
  7. * either version 2, or (at your option) any later version.
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTIES OR REPRESENTATIONS; without even
  10. * the implied warranty of MERCHANTABILITY or FITNESS FOR
  11. * A PARTICULAR PURPOSE.See the GNU General Public License
  12. * for more details.
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program; if not, write to the Free Software
  15. * Foundation, Inc.,
  16. * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  17. */
  18. #ifndef __LCDTBL_H__
  19. #define __LCDTBL_H__
  20. #include "share.h"
  21. /* CLE266 Software Power Sequence */
  22. /* {Mask}, {Data}, {Delay} */
  23. int PowerSequenceOn[3][3] =
  24. { {0x10, 0x08, 0x06}, {0x10, 0x08, 0x06}, {0x19, 0x1FE, 0x01} };
  25. int PowerSequenceOff[3][3] =
  26. { {0x06, 0x08, 0x10}, {0x00, 0x00, 0x00}, {0xD2, 0x19, 0x01} };
  27. /* ++++++ P880 ++++++ */
  28. /* Panel 1600x1200 */
  29. struct io_reg P880_LCD_RES_6X4_16X12[] = {
  30. /*IGA2 Horizontal Total */
  31. {VIACR, CR50, 0xFF, 0x73}, {VIACR, CR55, 0x0F, 0x08},
  32. /*IGA2 Horizontal Blank End */
  33. {VIACR, CR53, 0xFF, 0x73}, {VIACR, CR54, 0x38, 0x00},
  34. {VIACR, CR5D, 0x40, 0x40},
  35. /*IGA2 Horizontal Total Shadow */
  36. {VIACR, CR6D, 0xFF, 0x5A}, {VIACR, CR71, 0x08, 0x00},
  37. /*IGA2 Horizontal Blank End Shadow */
  38. {VIACR, CR6E, 0xFF, 0x5E},
  39. /*IGA2 Offset */
  40. {VIACR, CR66, 0xFF, 0xD6}, {VIACR, CR67, 0x03, 0x00},
  41. /*VCLK*/ {VIASR, SR44, 0xFF, 0x7D}, {VIASR, SR45, 0xFF, 0x8C},
  42. {VIASR, SR46, 0xFF, 0x02}
  43. };
  44. #define NUM_TOTAL_P880_LCD_RES_6X4_16X12 ARRAY_SIZE(P880_LCD_RES_6X4_16X12)
  45. struct io_reg P880_LCD_RES_7X4_16X12[] = {
  46. /*IGA2 Horizontal Total */
  47. {VIACR, CR50, 0xFF, 0x67}, {VIACR, CR55, 0x0F, 0x08},
  48. /*IGA2 Horizontal Blank End */
  49. {VIACR, CR53, 0xFF, 0x67}, {VIACR, CR54, 0x38, 0x00},
  50. {VIACR, CR5D, 0x40, 0x40},
  51. /*IGA2 Horizontal Total Shadow */
  52. {VIACR, CR6D, 0xFF, 0x74}, {VIACR, CR71, 0x08, 0x00},
  53. /*IGA2 Horizontal Blank End Shadow */
  54. {VIACR, CR6E, 0xFF, 0x78},
  55. /*IGA2 Offset */
  56. {VIACR, CR66, 0xFF, 0xF5}, {VIACR, CR67, 0x03, 0x00},
  57. /*VCLK*/ {VIASR, SR44, 0xFF, 0x78}, {VIASR, SR45, 0xFF, 0x8C},
  58. {VIASR, SR46, 0xFF, 0x01}
  59. };
  60. #define NUM_TOTAL_P880_LCD_RES_7X4_16X12 ARRAY_SIZE(P880_LCD_RES_7X4_16X12)
  61. struct io_reg P880_LCD_RES_8X6_16X12[] = {
  62. /*IGA2 Horizontal Total */
  63. {VIACR, CR50, 0xFF, 0x65}, {VIACR, CR55, 0x0F, 0x08},
  64. /*IGA2 Horizontal Blank End */
  65. {VIACR, CR53, 0xFF, 0x65}, {VIACR, CR54, 0x38, 0x00},
  66. {VIACR, CR5D, 0x40, 0x40},
  67. /*IGA2 Horizontal Total Shadow */
  68. {VIACR, CR6D, 0xFF, 0x7F}, {VIACR, CR71, 0x08, 0x00},
  69. /*IGA2 Horizontal Blank End Shadow */
  70. {VIACR, CR6E, 0xFF, 0x83},
  71. /*IGA2 Offset */
  72. {VIACR, CR66, 0xFF, 0xE1}, {VIACR, CR67, 0x03, 0x00},
  73. /*VCLK*/ {VIASR, SR44, 0xFF, 0x6D}, {VIASR, SR45, 0xFF, 0x88},
  74. {VIASR, SR46, 0xFF, 0x03}
  75. };
  76. #define NUM_TOTAL_P880_LCD_RES_8X6_16X12 ARRAY_SIZE(P880_LCD_RES_8X6_16X12)
  77. struct io_reg P880_LCD_RES_10X7_16X12[] = {
  78. /*IGA2 Horizontal Total */
  79. {VIACR, CR50, 0xFF, 0x65}, {VIACR, CR55, 0x0F, 0x08},
  80. /*IGA2 Horizontal Blank End */
  81. {VIACR, CR53, 0xFF, 0x65}, {VIACR, CR54, 0x38, 0x00},
  82. {VIACR, CR5D, 0x40, 0x40},
  83. /*IGA2 Horizontal Total Shadow */
  84. {VIACR, CR6D, 0xFF, 0xAB}, {VIACR, CR71, 0x08, 0x00},
  85. /*IGA2 Horizontal Blank End Shadow */
  86. {VIACR, CR6E, 0xFF, 0xAF},
  87. /*IGA2 Offset */
  88. {VIACR, CR66, 0xFF, 0xF0}, {VIACR, CR67, 0x03, 0x00},
  89. /*VCLK*/ {VIASR, SR44, 0xFF, 0x92}, {VIASR, SR45, 0xFF, 0x88},
  90. {VIASR, SR46, 0xFF, 0x03}
  91. };
  92. #define NUM_TOTAL_P880_LCD_RES_10X7_16X12 ARRAY_SIZE(P880_LCD_RES_10X7_16X12)
  93. struct io_reg P880_LCD_RES_12X10_16X12[] = {
  94. /*IGA2 Horizontal Total */
  95. {VIACR, CR50, 0xFF, 0x7D}, {VIACR, CR55, 0x0F, 0x08},
  96. /*IGA2 Horizontal Blank End */
  97. {VIACR, CR53, 0xFF, 0x7D}, {VIACR, CR54, 0x38, 0x00},
  98. {VIACR, CR5D, 0x40, 0x40},
  99. /*IGA2 Horizontal Total Shadow */
  100. {VIACR, CR6D, 0xFF, 0xD0}, {VIACR, CR71, 0x08, 0x00},
  101. /*IGA2 Horizontal Blank End Shadow */
  102. {VIACR, CR6E, 0xFF, 0xD4},
  103. /*IGA2 Offset */
  104. {VIACR, CR66, 0xFF, 0xFA}, {VIACR, CR67, 0x03, 0x00},
  105. /*VCLK*/ {VIASR, SR44, 0xFF, 0xF6}, {VIASR, SR45, 0xFF, 0x88},
  106. {VIASR, SR46, 0xFF, 0x05}
  107. };
  108. #define NUM_TOTAL_P880_LCD_RES_12X10_16X12 ARRAY_SIZE(P880_LCD_RES_12X10_16X12)
  109. /* Panel 1400x1050 */
  110. struct io_reg P880_LCD_RES_6X4_14X10[] = {
  111. /* 640x480 */
  112. /* IGA2 Horizontal Total */
  113. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x56},
  114. /* IGA2 Horizontal Blank End */
  115. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x75},
  116. {VIACR, CR5D, 0x40, 0x24},
  117. /* IGA2 Horizontal Total Shadow */
  118. {VIACR, CR6D, 0xFF, 0x5F}, {VIACR, CR71, 0x08, 0x44},
  119. /* IGA2 Horizontal Blank End Shadow */
  120. {VIACR, CR6E, 0xFF, 0x63},
  121. /* IGA2 Offset */
  122. {VIACR, CR66, 0xFF, 0xB4}, {VIACR, CR67, 0x03, 0x00},
  123. /* VCLK */
  124. {VIASR, SR44, 0xFF, 0xC6}, {VIASR, SR45, 0xFF, 0x8C},
  125. {VIASR, SR46, 0xFF, 0x05}
  126. };
  127. #define NUM_TOTAL_P880_LCD_RES_6X4_14X10 ARRAY_SIZE(P880_LCD_RES_6X4_14X10)
  128. struct io_reg P880_LCD_RES_8X6_14X10[] = {
  129. /* 800x600 */
  130. /* IGA2 Horizontal Total */
  131. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x56},
  132. /* IGA2 Horizontal Blank End */
  133. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x75},
  134. {VIACR, CR5D, 0x40, 0x24},
  135. /* IGA2 Horizontal Total Shadow */
  136. {VIACR, CR6D, 0xFF, 0x7F}, {VIACR, CR71, 0x08, 0x44},
  137. /* IGA2 Horizontal Blank End Shadow */
  138. {VIACR, CR6E, 0xFF, 0x83},
  139. /* IGA2 Offset */
  140. {VIACR, CR66, 0xFF, 0xBE}, {VIACR, CR67, 0x03, 0x00},
  141. /* VCLK */
  142. {VIASR, SR44, 0xFF, 0x06}, {VIASR, SR45, 0xFF, 0x8D},
  143. {VIASR, SR46, 0xFF, 0x05}
  144. };
  145. #define NUM_TOTAL_P880_LCD_RES_8X6_14X10 ARRAY_SIZE(P880_LCD_RES_8X6_14X10)
  146. /* ++++++ K400 ++++++ */
  147. /* Panel 1600x1200 */
  148. struct io_reg K400_LCD_RES_6X4_16X12[] = {
  149. /*IGA2 Horizontal Total */
  150. {VIACR, CR50, 0xFF, 0x73}, {VIACR, CR55, 0x0F, 0x08},
  151. /*IGA2 Horizontal Blank End */
  152. {VIACR, CR53, 0xFF, 0x73}, {VIACR, CR54, 0x38, 0x00},
  153. {VIACR, CR5D, 0x40, 0x40},
  154. /*IGA2 Horizontal Total Shadow */
  155. {VIACR, CR6D, 0xFF, 0x5A}, {VIACR, CR71, 0x08, 0x00},
  156. /*IGA2 Horizontal Blank End Shadow */
  157. {VIACR, CR6E, 0xFF, 0x5E},
  158. /*IGA2 Offset */
  159. {VIACR, CR66, 0xFF, 0xDA}, {VIACR, CR67, 0x03, 0x00},
  160. /*VCLK*/ {VIASR, SR46, 0xFF, 0xC4}, {VIASR, SR47, 0xFF, 0x7F}
  161. };
  162. #define NUM_TOTAL_K400_LCD_RES_6X4_16X12 ARRAY_SIZE(K400_LCD_RES_6X4_16X12)
  163. struct io_reg K400_LCD_RES_7X4_16X12[] = {
  164. /*IGA2 Horizontal Total */
  165. {VIACR, CR50, 0xFF, 0x67}, {VIACR, CR55, 0x0F, 0x08},
  166. /*IGA2 Horizontal Blank End */
  167. {VIACR, CR53, 0xFF, 0x67}, {VIACR, CR54, 0x38, 0x00},
  168. {VIACR, CR5D, 0x40, 0x40},
  169. /*IGA2 Horizontal Total Shadow */
  170. {VIACR, CR6D, 0xFF, 0x74}, {VIACR, CR71, 0x08, 0x00},
  171. /*IGA2 Horizontal Blank End Shadow */
  172. {VIACR, CR6E, 0xFF, 0x78},
  173. /*IGA2 Offset */
  174. {VIACR, CR66, 0xFF, 0xF5}, {VIACR, CR67, 0x03, 0x00},
  175. /*VCLK*/ {VIASR, SR46, 0xFF, 0x46}, {VIASR, SR47, 0xFF, 0x3D}
  176. };
  177. #define NUM_TOTAL_K400_LCD_RES_7X4_16X12 ARRAY_SIZE(K400_LCD_RES_7X4_16X12)
  178. struct io_reg K400_LCD_RES_8X6_16X12[] = {
  179. /*IGA2 Horizontal Total */
  180. {VIACR, CR50, 0xFF, 0x65}, {VIACR, CR55, 0x0F, 0x08},
  181. /*IGA2 Horizontal Blank End */
  182. {VIACR, CR53, 0xFF, 0x65}, {VIACR, CR54, 0x38, 0x00},
  183. {VIACR, CR5D, 0x40, 0x40},
  184. /*IGA2 Horizontal Total Shadow */
  185. {VIACR, CR6D, 0xFF, 0x7F}, {VIACR, CR71, 0x08, 0x00},
  186. /*IGA2 Horizontal Blank End Shadow */
  187. {VIACR, CR6E, 0xFF, 0x83},
  188. /*IGA2 Offset */
  189. {VIACR, CR66, 0xFF, 0xE1}, {VIACR, CR67, 0x03, 0x00},
  190. /*VCLK*/ {VIASR, SR46, 0xFF, 0x85}, {VIASR, SR47, 0xFF, 0x6F}
  191. };
  192. #define NUM_TOTAL_K400_LCD_RES_8X6_16X12 ARRAY_SIZE(K400_LCD_RES_8X6_16X12)
  193. struct io_reg K400_LCD_RES_10X7_16X12[] = {
  194. /*IGA2 Horizontal Total */
  195. {VIACR, CR50, 0xFF, 0x65}, {VIACR, CR55, 0x0F, 0x08},
  196. /*IGA2 Horizontal Blank End */
  197. {VIACR, CR53, 0xFF, 0x65}, {VIACR, CR54, 0x38, 0x00},
  198. {VIACR, CR5D, 0x40, 0x40},
  199. /*IGA2 Horizontal Total Shadow */
  200. {VIACR, CR6D, 0xFF, 0xAB}, {VIACR, CR71, 0x08, 0x00},
  201. /*IGA2 Horizontal Blank End Shadow */
  202. {VIACR, CR6E, 0xFF, 0xAF},
  203. /*IGA2 Offset */
  204. {VIACR, CR66, 0xFF, 0xF0}, {VIACR, CR67, 0x03, 0x00},
  205. /*VCLK*/ {VIASR, SR46, 0xFF, 0x45}, {VIASR, SR47, 0xFF, 0x4A}
  206. };
  207. #define NUM_TOTAL_K400_LCD_RES_10X7_16X12 ARRAY_SIZE(K400_LCD_RES_10X7_16X12)
  208. struct io_reg K400_LCD_RES_12X10_16X12[] = {
  209. /*IGA2 Horizontal Total */
  210. {VIACR, CR50, 0xFF, 0x7D}, {VIACR, CR55, 0x0F, 0x08},
  211. /*IGA2 Horizontal Blank End */
  212. {VIACR, CR53, 0xFF, 0x7D}, {VIACR, CR54, 0x38, 0x00},
  213. {VIACR, CR5D, 0x40, 0x40},
  214. /*IGA2 Horizontal Total Shadow */
  215. {VIACR, CR6D, 0xFF, 0xD0}, {VIACR, CR71, 0x08, 0x00},
  216. /*IGA2 Horizontal Blank End Shadow */
  217. {VIACR, CR6E, 0xFF, 0xD4},
  218. /*IGA2 Offset */
  219. {VIACR, CR66, 0xFF, 0xFA}, {VIACR, CR67, 0x03, 0x00},
  220. /*VCLK*/ {VIASR, SR46, 0xFF, 0x47}, {VIASR, SR47, 0xFF, 0x7C}
  221. };
  222. #define NUM_TOTAL_K400_LCD_RES_12X10_16X12 ARRAY_SIZE(K400_LCD_RES_12X10_16X12)
  223. /* Panel 1400x1050 */
  224. struct io_reg K400_LCD_RES_6X4_14X10[] = {
  225. /* 640x400 */
  226. /* IGA2 Horizontal Total */
  227. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x56},
  228. /* IGA2 Horizontal Blank End */
  229. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x75},
  230. {VIACR, CR5D, 0x40, 0x24},
  231. /* IGA2 Horizontal Total Shadow */
  232. {VIACR, CR6D, 0xFF, 0x5F}, {VIACR, CR71, 0x08, 0x44},
  233. /* IGA2 Horizontal Blank End Shadow */
  234. {VIACR, CR6E, 0xFF, 0x63},
  235. /* IGA2 Offset */
  236. {VIACR, CR66, 0xFF, 0xB4}, {VIACR, CR67, 0x03, 0x00},
  237. /* VCLK */
  238. {VIASR, SR46, 0xFF, 0x07}, {VIASR, SR47, 0xFF, 0x19}
  239. };
  240. #define NUM_TOTAL_K400_LCD_RES_6X4_14X10 ARRAY_SIZE(K400_LCD_RES_6X4_14X10)
  241. struct io_reg K400_LCD_RES_8X6_14X10[] = {
  242. /* 800x600 */
  243. /* IGA2 Horizontal Total */
  244. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x56},
  245. /* IGA2 Horizontal Blank End */
  246. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x75},
  247. {VIACR, CR5D, 0x40, 0x24},
  248. /* IGA2 Horizontal Total Shadow */
  249. {VIACR, CR6D, 0xFF, 0x7F}, {VIACR, CR71, 0x08, 0x44},
  250. /* IGA2 Horizontal Blank End Shadow */
  251. {VIACR, CR6E, 0xFF, 0x83},
  252. /* IGA2 Offset */
  253. {VIACR, CR66, 0xFF, 0xBE}, {VIACR, CR67, 0x03, 0x00},
  254. /* VCLK */
  255. {VIASR, SR46, 0xFF, 0x07}, {VIASR, SR47, 0xFF, 0x21}
  256. };
  257. #define NUM_TOTAL_K400_LCD_RES_8X6_14X10 ARRAY_SIZE(K400_LCD_RES_8X6_14X10)
  258. struct io_reg K400_LCD_RES_10X7_14X10[] = {
  259. /* 1024x768 */
  260. /* IGA2 Horizontal Total */
  261. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x56},
  262. /* IGA2 Horizontal Blank End */
  263. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x75},
  264. {VIACR, CR5D, 0x40, 0x24},
  265. /* IGA2 Horizontal Total Shadow */
  266. {VIACR, CR6D, 0xFF, 0xA3}, {VIACR, CR71, 0x08, 0x44},
  267. /* IGA2 Horizontal Blank End Shadow */
  268. {VIACR, CR6E, 0xFF, 0xA7},
  269. /* IGA2 Offset */
  270. {VIACR, CR66, 0xFF, 0xC3}, {VIACR, CR67, 0x03, 0x04},
  271. /* VCLK */
  272. {VIASR, SR46, 0xFF, 0x05}, {VIASR, SR47, 0xFF, 0x1E}
  273. };
  274. #define NUM_TOTAL_K400_LCD_RES_10X7_14X10 ARRAY_SIZE(K400_LCD_RES_10X7_14X10)
  275. struct io_reg K400_LCD_RES_12X10_14X10[] = {
  276. /* 1280x768, 1280x960, 1280x1024 */
  277. /* IGA2 Horizontal Total */
  278. {VIACR, CR50, 0xFF, 0x97}, {VIACR, CR55, 0x0F, 0x56},
  279. /* IGA2 Horizontal Blank End */
  280. {VIACR, CR53, 0xFF, 0x97}, {VIACR, CR54, 0x38, 0x75},
  281. {VIACR, CR5D, 0x40, 0x24},
  282. /* IGA2 Horizontal Total Shadow */
  283. {VIACR, CR6D, 0xFF, 0xCE}, {VIACR, CR71, 0x08, 0x44},
  284. /* IGA2 Horizontal Blank End Shadow */
  285. {VIACR, CR6E, 0xFF, 0xD2},
  286. /* IGA2 Offset */
  287. {VIACR, CR66, 0xFF, 0xC9}, {VIACR, CR67, 0x03, 0x04},
  288. /* VCLK */
  289. {VIASR, SR46, 0xFF, 0x84}, {VIASR, SR47, 0xFF, 0x79}
  290. };
  291. #define NUM_TOTAL_K400_LCD_RES_12X10_14X10 ARRAY_SIZE(K400_LCD_RES_12X10_14X10)
  292. /* ++++++ K400 ++++++ */
  293. /* Panel 1366x768 */
  294. struct io_reg K400_LCD_RES_6X4_1366X7[] = {
  295. /* 640x400 */
  296. /* IGA2 Horizontal Total */
  297. {VIACR, CR50, 0xFF, 0x47}, {VIACR, CR55, 0x0F, 0x35},
  298. /* IGA2 Horizontal Blank End */
  299. {VIACR, CR53, 0xFF, 0x47}, {VIACR, CR54, 0x38, 0x2B},
  300. {VIACR, CR5D, 0x40, 0x13},
  301. /* IGA2 Horizontal Total Shadow */
  302. {VIACR, CR6D, 0xFF, 0x60}, {VIACR, CR71, 0x08, 0x23},
  303. /* IGA2 Horizontal Blank End Shadow */
  304. {VIACR, CR6E, 0xFF, 0x64},
  305. /* IGA2 Offset */
  306. {VIACR, CR66, 0xFF, 0x8C}, {VIACR, CR67, 0x03, 0x00},
  307. /* VCLK */
  308. {VIASR, SR46, 0xFF, 0x87}, {VIASR, SR47, 0xFF, 0x4C}
  309. };
  310. #define NUM_TOTAL_K400_LCD_RES_6X4_1366X7 ARRAY_SIZE(K400_LCD_RES_6X4_1366X7)
  311. struct io_reg K400_LCD_RES_7X4_1366X7[] = {
  312. /* IGA2 Horizontal Total */
  313. {VIACR, CR50, 0xFF, 0x3B}, {VIACR, CR55, 0x0F, 0x35},
  314. /* IGA2 Horizontal Blank End */
  315. {VIACR, CR53, 0xFF, 0x3B}, {VIACR, CR54, 0x38, 0x2B},
  316. {VIACR, CR5D, 0x40, 0x13},
  317. /* IGA2 Horizontal Total Shadow */
  318. {VIACR, CR6D, 0xFF, 0x71}, {VIACR, CR71, 0x08, 0x23},
  319. /* IGA2 Horizontal Blank End Shadow */
  320. {VIACR, CR6E, 0xFF, 0x75},
  321. /* IGA2 Offset */
  322. {VIACR, CR66, 0xFF, 0x96}, {VIACR, CR67, 0x03, 0x00},
  323. /* VCLK */
  324. {VIASR, SR46, 0xFF, 0x05}, {VIASR, SR47, 0xFF, 0x10}
  325. };
  326. #define NUM_TOTAL_K400_LCD_RES_7X4_1366X7 ARRAY_SIZE(K400_LCD_RES_7X4_1366X7)
  327. struct io_reg K400_LCD_RES_8X6_1366X7[] = {
  328. /* 800x600 */
  329. /* IGA2 Horizontal Total */
  330. {VIACR, CR50, 0xFF, 0x37}, {VIACR, CR55, 0x0F, 0x35},
  331. /* IGA2 Horizontal Blank End */
  332. {VIACR, CR53, 0xFF, 0x37}, {VIACR, CR54, 0x38, 0x2B},
  333. {VIACR, CR5D, 0x40, 0x13},
  334. /* IGA2 Horizontal Total Shadow */
  335. {VIACR, CR6D, 0xFF, 0x7E}, {VIACR, CR71, 0x08, 0x23},
  336. /* IGA2 Horizontal Blank End Shadow */
  337. {VIACR, CR6E, 0xFF, 0x82},
  338. /* IGA2 Offset */
  339. {VIACR, CR66, 0xFF, 0x8C}, {VIACR, CR67, 0x03, 0x00},
  340. /* VCLK */
  341. {VIASR, SR46, 0xFF, 0x84}, {VIASR, SR47, 0xFF, 0xB9}
  342. };
  343. #define NUM_TOTAL_K400_LCD_RES_8X6_1366X7 ARRAY_SIZE(K400_LCD_RES_8X6_1366X7)
  344. struct io_reg K400_LCD_RES_10X7_1366X7[] = {
  345. /* 1024x768 */
  346. /* IGA2 Horizontal Total */
  347. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x56},
  348. /* IGA2 Horizontal Blank End */
  349. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x75},
  350. {VIACR, CR5D, 0x40, 0x24},
  351. /* IGA2 Horizontal Total Shadow */
  352. {VIACR, CR6D, 0xFF, 0xA3}, {VIACR, CR71, 0x08, 0x44},
  353. /* IGA2 Horizontal Blank End Shadow */
  354. {VIACR, CR6E, 0xFF, 0xA7},
  355. /* IGA2 Offset */
  356. {VIACR, CR66, 0xFF, 0xC3}, {VIACR, CR67, 0x03, 0x04},
  357. /* VCLK */
  358. {VIASR, SR46, 0xFF, 0x05}, {VIASR, SR47, 0xFF, 0x1E}
  359. };
  360. #define NUM_TOTAL_K400_LCD_RES_10X7_1366X7 ARRAY_SIZE(K400_LCD_RES_10X7_1366X7)
  361. struct io_reg K400_LCD_RES_12X10_1366X7[] = {
  362. /* 1280x768, 1280x960, 1280x1024 */
  363. /* IGA2 Horizontal Total */
  364. {VIACR, CR50, 0xFF, 0x97}, {VIACR, CR55, 0x0F, 0x56},
  365. /* IGA2 Horizontal Blank End */
  366. {VIACR, CR53, 0xFF, 0x97}, {VIACR, CR54, 0x38, 0x75},
  367. {VIACR, CR5D, 0x40, 0x24},
  368. /* IGA2 Horizontal Total Shadow */
  369. {VIACR, CR6D, 0xFF, 0xCE}, {VIACR, CR71, 0x08, 0x44},
  370. /* IGA2 Horizontal Blank End Shadow */
  371. {VIACR, CR6E, 0xFF, 0xD2},
  372. /* IGA2 Offset */
  373. {VIACR, CR66, 0xFF, 0xC9}, {VIACR, CR67, 0x03, 0x04},
  374. /* VCLK */
  375. {VIASR, SR46, 0xFF, 0x84}, {VIASR, SR47, 0xFF, 0x79}
  376. };
  377. #define NUM_TOTAL_K400_LCD_RES_12X10_1366X7\
  378. ARRAY_SIZE(K400_LCD_RES_12X10_1366X7)
  379. /* ++++++ K400 ++++++ */
  380. /* Panel 1280x1024 */
  381. struct io_reg K400_LCD_RES_6X4_12X10[] = {
  382. /*IGA2 Horizontal Total */
  383. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x46},
  384. /*IGA2 Horizontal Blank End */
  385. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x74},
  386. {VIACR, CR5D, 0x40, 0x1C},
  387. /*IGA2 Horizontal Total Shadow */
  388. {VIACR, CR6D, 0xFF, 0x5F}, {VIACR, CR71, 0x08, 0x34},
  389. /*IGA2 Horizontal Blank End Shadow */
  390. {VIACR, CR6E, 0xFF, 0x63},
  391. /*IGA2 Offset */
  392. {VIACR, CR66, 0xFF, 0xAA}, {VIACR, CR67, 0x03, 0x00},
  393. /*VCLK*/ {VIASR, SR46, 0xFF, 0x07}, {VIASR, SR47, 0xFF, 0x19}
  394. };
  395. #define NUM_TOTAL_K400_LCD_RES_6X4_12X10 ARRAY_SIZE(K400_LCD_RES_6X4_12X10)
  396. struct io_reg K400_LCD_RES_7X4_12X10[] = {
  397. /*IGA2 Horizontal Total */
  398. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x46},
  399. /*IGA2 Horizontal Blank End */
  400. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x74},
  401. {VIACR, CR5D, 0x40, 0x1C},
  402. /*IGA2 Horizontal Total Shadow */
  403. {VIACR, CR6D, 0xFF, 0x68}, {VIACR, CR71, 0x08, 0x34},
  404. /*IGA2 Horizontal Blank End Shadow */
  405. {VIACR, CR6E, 0xFF, 0x6C},
  406. /*IGA2 Offset */
  407. {VIACR, CR66, 0xFF, 0xA8}, {VIACR, CR67, 0x03, 0x00},
  408. /*VCLK*/ {VIASR, SR46, 0xFF, 0x87}, {VIASR, SR47, 0xFF, 0xED}
  409. };
  410. #define NUM_TOTAL_K400_LCD_RES_7X4_12X10 ARRAY_SIZE(K400_LCD_RES_7X4_12X10)
  411. struct io_reg K400_LCD_RES_8X6_12X10[] = {
  412. /*IGA2 Horizontal Total */
  413. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x46},
  414. /*IGA2 Horizontal Blank End */
  415. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x74},
  416. {VIACR, CR5D, 0x40, 0x1C},
  417. /*IGA2 Horizontal Total Shadow */
  418. {VIACR, CR6D, 0xFF, 0x7F}, {VIACR, CR71, 0x08, 0x34},
  419. /*IGA2 Horizontal Blank End Shadow */
  420. {VIACR, CR6E, 0xFF, 0x83},
  421. /*IGA2 Offset */
  422. {VIACR, CR66, 0xFF, 0xBE}, {VIACR, CR67, 0x03, 0x00},
  423. /*VCLK*/ {VIASR, SR46, 0xFF, 0x07}, {VIASR, SR47, 0xFF, 0x21}
  424. };
  425. #define NUM_TOTAL_K400_LCD_RES_8X6_12X10 ARRAY_SIZE(K400_LCD_RES_8X6_12X10)
  426. struct io_reg K400_LCD_RES_10X7_12X10[] = {
  427. /*IGA2 Horizontal Total */
  428. {VIACR, CR50, 0xFF, 0x9D}, {VIACR, CR55, 0x0F, 0x46},
  429. /*IGA2 Horizontal Blank End */
  430. {VIACR, CR53, 0xFF, 0x9D}, {VIACR, CR54, 0x38, 0x74},
  431. {VIACR, CR5D, 0x40, 0x1C},
  432. /*IGA2 Horizontal Total Shadow */
  433. {VIACR, CR6D, 0xFF, 0xA3}, {VIACR, CR71, 0x08, 0x34},
  434. /*IGA2 Horizontal Blank End Shadow */
  435. {VIACR, CR6E, 0xFF, 0xA7},
  436. /*IGA2 Offset */
  437. {VIACR, CR66, 0xFF, 0xBE}, {VIACR, CR67, 0x03, 0x04},
  438. /*VCLK*/ {VIASR, SR46, 0xFF, 0x05}, {VIASR, SR47, 0xFF, 0x1E}
  439. };
  440. #define NUM_TOTAL_K400_LCD_RES_10X7_12X10 ARRAY_SIZE(K400_LCD_RES_10X7_12X10)
  441. /* ++++++ K400 ++++++ */
  442. /* Panel 1024x768 */
  443. struct io_reg K400_LCD_RES_6X4_10X7[] = {
  444. /*IGA2 Horizontal Total */
  445. {VIACR, CR50, 0xFF, 0x47}, {VIACR, CR55, 0x0F, 0x35},
  446. /*IGA2 Horizontal Blank End */
  447. {VIACR, CR53, 0xFF, 0x47}, {VIACR, CR54, 0x38, 0x2B},
  448. {VIACR, CR5D, 0x40, 0x13},
  449. /*IGA2 Horizontal Total Shadow */
  450. {VIACR, CR6D, 0xFF, 0x60}, {VIACR, CR71, 0x08, 0x23},
  451. /*IGA2 Horizontal Blank End Shadow */
  452. {VIACR, CR6E, 0xFF, 0x64},
  453. /*IGA2 Offset */
  454. {VIACR, CR66, 0xFF, 0x8C}, {VIACR, CR67, 0x03, 0x00},
  455. /*VCLK*/ {VIASR, SR46, 0xFF, 0x87}, {VIASR, SR47, 0xFF, 0x4C}
  456. };
  457. #define NUM_TOTAL_K400_LCD_RES_6X4_10X7 ARRAY_SIZE(K400_LCD_RES_6X4_10X7)
  458. struct io_reg K400_LCD_RES_7X4_10X7[] = {
  459. /*IGA2 Horizontal Total */
  460. {VIACR, CR50, 0xFF, 0x3B}, {VIACR, CR55, 0x0F, 0x35},
  461. /*IGA2 Horizontal Blank End */
  462. {VIACR, CR53, 0xFF, 0x3B}, {VIACR, CR54, 0x38, 0x2B},
  463. {VIACR, CR5D, 0x40, 0x13},
  464. /*IGA2 Horizontal Total Shadow */
  465. {VIACR, CR6D, 0xFF, 0x71}, {VIACR, CR71, 0x08, 0x23},
  466. /*IGA2 Horizontal Blank End Shadow */
  467. {VIACR, CR6E, 0xFF, 0x75},
  468. /*IGA2 Offset */
  469. {VIACR, CR66, 0xFF, 0x96}, {VIACR, CR67, 0x03, 0x00},
  470. /*VCLK*/ {VIASR, SR46, 0xFF, 0x05}, {VIASR, SR47, 0xFF, 0x10}
  471. };
  472. #define NUM_TOTAL_K400_LCD_RES_7X4_10X7 ARRAY_SIZE(K400_LCD_RES_7X4_10X7)
  473. struct io_reg K400_LCD_RES_8X6_10X7[] = {
  474. /*IGA2 Horizontal Total */
  475. {VIACR, CR50, 0xFF, 0x37}, {VIACR, CR55, 0x0F, 0x35},
  476. /*IGA2 Horizontal Blank End */
  477. {VIACR, CR53, 0xFF, 0x37}, {VIACR, CR54, 0x38, 0x2B},
  478. {VIACR, CR5D, 0x40, 0x13},
  479. /*IGA2 Horizontal Total Shadow */
  480. {VIACR, CR6D, 0xFF, 0x7E}, {VIACR, CR71, 0x08, 0x23},
  481. /*IGA2 Horizontal Blank End Shadow */
  482. {VIACR, CR6E, 0xFF, 0x82},
  483. /*IGA2 Offset */
  484. {VIACR, CR66, 0xFF, 0x8C}, {VIACR, CR67, 0x03, 0x00},
  485. /*VCLK*/ {VIASR, SR46, 0xFF, 0x84}, {VIASR, SR47, 0xFF, 0xB9}
  486. };
  487. #define NUM_TOTAL_K400_LCD_RES_8X6_10X7 ARRAY_SIZE(K400_LCD_RES_8X6_10X7)
  488. /* ++++++ K400 ++++++ */
  489. /* Panel 800x600 */
  490. struct io_reg K400_LCD_RES_6X4_8X6[] = {
  491. /*IGA2 Horizontal Total */
  492. {VIACR, CR50, 0xFF, 0x1A}, {VIACR, CR55, 0x0F, 0x34},
  493. /*IGA2 Horizontal Blank End */
  494. {VIACR, CR53, 0xFF, 0x1A}, {VIACR, CR54, 0x38, 0xE3},
  495. {VIACR, CR5D, 0x40, 0x12},
  496. /*IGA2 Horizontal Total Shadow */
  497. {VIACR, CR6D, 0xFF, 0x5F}, {VIACR, CR71, 0x08, 0x22},
  498. /*IGA2 Horizontal Blank End Shadow */
  499. {VIACR, CR6E, 0xFF, 0x63},
  500. /*IGA2 Offset */
  501. {VIACR, CR66, 0xFF, 0x6E}, {VIACR, CR67, 0x03, 0x00},
  502. /*VCLK*/ {VIASR, SR46, 0xFF, 0x86}, {VIASR, SR47, 0xFF, 0xB3}
  503. };
  504. #define NUM_TOTAL_K400_LCD_RES_6X4_8X6 ARRAY_SIZE(K400_LCD_RES_6X4_8X6)
  505. struct io_reg K400_LCD_RES_7X4_8X6[] = {
  506. /*IGA2 Horizontal Total */
  507. {VIACR, CR50, 0xFF, 0x1F}, {VIACR, CR55, 0x0F, 0x34},
  508. /*IGA2 Horizontal Blank End */
  509. {VIACR, CR53, 0xFF, 0x1F}, {VIACR, CR54, 0x38, 0xE3},
  510. {VIACR, CR5D, 0x40, 0x12},
  511. /*IGA2 Horizontal Total Shadow */
  512. {VIACR, CR6D, 0xFF, 0x7F}, {VIACR, CR71, 0x08, 0x22},
  513. /*IGA2 Horizontal Blank End Shadow */
  514. {VIACR, CR6E, 0xFF, 0x83},
  515. /*IGA2 Offset */
  516. {VIACR, CR66, 0xFF, 0x78}, {VIACR, CR67, 0x03, 0x00},
  517. /*VCLK*/ {VIASR, SR46, 0xFF, 0xC4}, {VIASR, SR47, 0xFF, 0x59}
  518. };
  519. #define NUM_TOTAL_K400_LCD_RES_7X4_8X6 ARRAY_SIZE(K400_LCD_RES_7X4_8X6)
  520. #endif /* __LCDTBL_H__ */