Merge branch 'gpio/merge' of git://git.secretlab.ca/git/linux-2.6
[pandora-kernel.git] / drivers / staging / sm7xx / smtcfb.h
1 /*
2  * Silicon Motion SM712 frame buffer device
3  *
4  * Copyright (C) 2006 Silicon Motion Technology Corp.
5  * Authors:     Ge Wang, gewang@siliconmotion.com
6  *              Boyod boyod.yang@siliconmotion.com.cn
7  *
8  * Copyright (C) 2009 Lemote, Inc.
9  * Author: Wu Zhangjin, wuzhangjin@gmail.com
10  *
11  *  This file is subject to the terms and conditions of the GNU General Public
12  *  License. See the file COPYING in the main directory of this archive for
13  *  more details.
14  */
15
16 #define SMTC_LINUX_FB_VERSION   "version 0.11.2619.21.01 July 27, 2008"
17
18 #define NR_PALETTE        256
19 #define NR_RGB            2
20
21 #define FB_ACCEL_SMI_LYNX 88
22
23 #ifdef __BIG_ENDIAN
24 #define PC_VGA            0
25 #else
26 #define PC_VGA            1
27 #endif
28
29 #define SCREEN_X_RES      1024
30 #define SCREEN_Y_RES      600
31 #define SCREEN_BPP        16
32
33 /*Assume SM712 graphics chip has 4MB VRAM */
34 #define SM712_VIDEOMEMORYSIZE     0x00400000
35 /*Assume SM722 graphics chip has 8MB VRAM */
36 #define SM722_VIDEOMEMORYSIZE     0x00800000
37
38 #define dac_reg (0x3c8)
39 #define dac_val (0x3c9)
40
41 extern char *smtc_RegBaseAddress;
42 #define smtc_mmiowb(dat, reg)   writeb(dat, smtc_RegBaseAddress + reg)
43 #define smtc_mmioww(dat, reg)   writew(dat, smtc_RegBaseAddress + reg)
44 #define smtc_mmiowl(dat, reg)   writel(dat, smtc_RegBaseAddress + reg)
45
46 #define smtc_mmiorb(reg)        readb(smtc_RegBaseAddress + reg)
47 #define smtc_mmiorw(reg)        readw(smtc_RegBaseAddress + reg)
48 #define smtc_mmiorl(reg)        readl(smtc_RegBaseAddress + reg)
49
50 #define SIZE_SR00_SR04      (0x04 - 0x00 + 1)
51 #define SIZE_SR10_SR24      (0x24 - 0x10 + 1)
52 #define SIZE_SR30_SR75      (0x75 - 0x30 + 1)
53 #define SIZE_SR80_SR93      (0x93 - 0x80 + 1)
54 #define SIZE_SRA0_SRAF      (0xAF - 0xA0 + 1)
55 #define SIZE_GR00_GR08      (0x08 - 0x00 + 1)
56 #define SIZE_AR00_AR14      (0x14 - 0x00 + 1)
57 #define SIZE_CR00_CR18      (0x18 - 0x00 + 1)
58 #define SIZE_CR30_CR4D      (0x4D - 0x30 + 1)
59 #define SIZE_CR90_CRA7      (0xA7 - 0x90 + 1)
60 #define SIZE_VPR                (0x6C + 1)
61 #define SIZE_DPR                (0x44 + 1)
62
63 static inline void smtc_crtcw(int reg, int val)
64 {
65         smtc_mmiowb(reg, 0x3d4);
66         smtc_mmiowb(val, 0x3d5);
67 }
68
69 static inline unsigned int smtc_crtcr(int reg)
70 {
71         smtc_mmiowb(reg, 0x3d4);
72         return smtc_mmiorb(0x3d5);
73 }
74
75 static inline void smtc_grphw(int reg, int val)
76 {
77         smtc_mmiowb(reg, 0x3ce);
78         smtc_mmiowb(val, 0x3cf);
79 }
80
81 static inline unsigned int smtc_grphr(int reg)
82 {
83         smtc_mmiowb(reg, 0x3ce);
84         return smtc_mmiorb(0x3cf);
85 }
86
87 static inline void smtc_attrw(int reg, int val)
88 {
89         smtc_mmiorb(0x3da);
90         smtc_mmiowb(reg, 0x3c0);
91         smtc_mmiorb(0x3c1);
92         smtc_mmiowb(val, 0x3c0);
93 }
94
95 static inline void smtc_seqw(int reg, int val)
96 {
97         smtc_mmiowb(reg, 0x3c4);
98         smtc_mmiowb(val, 0x3c5);
99 }
100
101 static inline unsigned int smtc_seqr(int reg)
102 {
103         smtc_mmiowb(reg, 0x3c4);
104         return smtc_mmiorb(0x3c5);
105 }
106
107 /* The next structure holds all information relevant for a specific video mode.
108  */
109
110 struct ModeInit {
111         int mmSizeX;
112         int mmSizeY;
113         int bpp;
114         int hz;
115         unsigned char Init_MISC;
116         unsigned char Init_SR00_SR04[SIZE_SR00_SR04];
117         unsigned char Init_SR10_SR24[SIZE_SR10_SR24];
118         unsigned char Init_SR30_SR75[SIZE_SR30_SR75];
119         unsigned char Init_SR80_SR93[SIZE_SR80_SR93];
120         unsigned char Init_SRA0_SRAF[SIZE_SRA0_SRAF];
121         unsigned char Init_GR00_GR08[SIZE_GR00_GR08];
122         unsigned char Init_AR00_AR14[SIZE_AR00_AR14];
123         unsigned char Init_CR00_CR18[SIZE_CR00_CR18];
124         unsigned char Init_CR30_CR4D[SIZE_CR30_CR4D];
125         unsigned char Init_CR90_CRA7[SIZE_CR90_CRA7];
126 };
127
128 /**********************************************************************
129                          SM712 Mode table.
130  **********************************************************************/
131 struct ModeInit VGAMode[] = {
132         {
133          /*  mode#0: 640 x 480  16Bpp  60Hz */
134          640, 480, 16, 60,
135          /*  Init_MISC */
136          0xE3,
137          {                      /*  Init_SR0_SR4 */
138           0x03, 0x01, 0x0F, 0x00, 0x0E,
139           },
140          {                      /*  Init_SR10_SR24 */
141           0xFF, 0xBE, 0xEF, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
142           0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143           0xC4, 0x30, 0x02, 0x01, 0x01,
144           },
145          {                      /*  Init_SR30_SR75 */
146           0x32, 0x03, 0xA0, 0x09, 0xC0, 0x32, 0x32, 0x32,
147           0x32, 0x32, 0x32, 0x32, 0x00, 0x00, 0x03, 0xFF,
148           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
149           0x20, 0x0C, 0x44, 0x20, 0x00, 0x32, 0x32, 0x32,
150           0x04, 0x24, 0x63, 0x4F, 0x52, 0x0B, 0xDF, 0xEA,
151           0x04, 0x50, 0x19, 0x32, 0x32, 0x00, 0x00, 0x32,
152           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
153           0x50, 0x03, 0x74, 0x14, 0x07, 0x82, 0x07, 0x04,
154           0x00, 0x45, 0x30, 0x30, 0x40, 0x30,
155           },
156          {                      /*  Init_SR80_SR93 */
157           0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x32,
158           0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x32, 0x32,
159           0x00, 0x00, 0x00, 0x00,
160           },
161          {                      /*  Init_SRA0_SRAF */
162           0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
163           0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xFF, 0xDF,
164           },
165          {                      /*  Init_GR00_GR08 */
166           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
167           0xFF,
168           },
169          {                      /*  Init_AR00_AR14 */
170           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
171           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
172           0x41, 0x00, 0x0F, 0x00, 0x00,
173           },
174          {                      /*  Init_CR00_CR18 */
175           0x5F, 0x4F, 0x4F, 0x00, 0x53, 0x1F, 0x0B, 0x3E,
176           0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
177           0xEA, 0x0C, 0xDF, 0x50, 0x40, 0xDF, 0x00, 0xE3,
178           0xFF,
179           },
180          {                      /*  Init_CR30_CR4D */
181           0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x03, 0x20,
182           0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xFF, 0xFD,
183           0x5F, 0x4F, 0x00, 0x54, 0x00, 0x0B, 0xDF, 0x00,
184           0xEA, 0x0C, 0x2E, 0x00, 0x4F, 0xDF,
185           },
186          {                      /*  Init_CR90_CRA7 */
187           0x56, 0xDD, 0x5E, 0xEA, 0x87, 0x44, 0x8F, 0x55,
188           0x0A, 0x8F, 0x55, 0x0A, 0x00, 0x00, 0x18, 0x00,
189           0x11, 0x10, 0x0B, 0x0A, 0x0A, 0x0A, 0x0A, 0x00,
190           },
191          },
192         {
193          /*  mode#1: 640 x 480  24Bpp  60Hz */
194          640, 480, 24, 60,
195          /*  Init_MISC */
196          0xE3,
197          {                      /*  Init_SR0_SR4 */
198           0x03, 0x01, 0x0F, 0x00, 0x0E,
199           },
200          {                      /*  Init_SR10_SR24 */
201           0xFF, 0xBE, 0xEF, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
202           0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
203           0xC4, 0x30, 0x02, 0x01, 0x01,
204           },
205          {                      /*  Init_SR30_SR75 */
206           0x32, 0x03, 0xA0, 0x09, 0xC0, 0x32, 0x32, 0x32,
207           0x32, 0x32, 0x32, 0x32, 0x00, 0x00, 0x03, 0xFF,
208           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
209           0x20, 0x0C, 0x44, 0x20, 0x00, 0x32, 0x32, 0x32,
210           0x04, 0x24, 0x63, 0x4F, 0x52, 0x0B, 0xDF, 0xEA,
211           0x04, 0x50, 0x19, 0x32, 0x32, 0x00, 0x00, 0x32,
212           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
213           0x50, 0x03, 0x74, 0x14, 0x07, 0x82, 0x07, 0x04,
214           0x00, 0x45, 0x30, 0x30, 0x40, 0x30,
215           },
216          {                      /*  Init_SR80_SR93 */
217           0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x32,
218           0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x32, 0x32,
219           0x00, 0x00, 0x00, 0x00,
220           },
221          {                      /*  Init_SRA0_SRAF */
222           0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
223           0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xFF, 0xDF,
224           },
225          {                      /*  Init_GR00_GR08 */
226           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
227           0xFF,
228           },
229          {                      /*  Init_AR00_AR14 */
230           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
231           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
232           0x41, 0x00, 0x0F, 0x00, 0x00,
233           },
234          {                      /*  Init_CR00_CR18 */
235           0x5F, 0x4F, 0x4F, 0x00, 0x53, 0x1F, 0x0B, 0x3E,
236           0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
237           0xEA, 0x0C, 0xDF, 0x50, 0x40, 0xDF, 0x00, 0xE3,
238           0xFF,
239           },
240          {                      /*  Init_CR30_CR4D */
241           0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x03, 0x20,
242           0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xFF, 0xFD,
243           0x5F, 0x4F, 0x00, 0x54, 0x00, 0x0B, 0xDF, 0x00,
244           0xEA, 0x0C, 0x2E, 0x00, 0x4F, 0xDF,
245           },
246          {                      /*  Init_CR90_CRA7 */
247           0x56, 0xDD, 0x5E, 0xEA, 0x87, 0x44, 0x8F, 0x55,
248           0x0A, 0x8F, 0x55, 0x0A, 0x00, 0x00, 0x18, 0x00,
249           0x11, 0x10, 0x0B, 0x0A, 0x0A, 0x0A, 0x0A, 0x00,
250           },
251          },
252         {
253          /*  mode#0: 640 x 480  32Bpp  60Hz */
254          640, 480, 32, 60,
255          /*  Init_MISC */
256          0xE3,
257          {                      /*  Init_SR0_SR4 */
258           0x03, 0x01, 0x0F, 0x00, 0x0E,
259           },
260          {                      /*  Init_SR10_SR24 */
261           0xFF, 0xBE, 0xEF, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
262           0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
263           0xC4, 0x30, 0x02, 0x01, 0x01,
264           },
265          {                      /*  Init_SR30_SR75 */
266           0x32, 0x03, 0xA0, 0x09, 0xC0, 0x32, 0x32, 0x32,
267           0x32, 0x32, 0x32, 0x32, 0x00, 0x00, 0x03, 0xFF,
268           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
269           0x20, 0x0C, 0x44, 0x20, 0x00, 0x32, 0x32, 0x32,
270           0x04, 0x24, 0x63, 0x4F, 0x52, 0x0B, 0xDF, 0xEA,
271           0x04, 0x50, 0x19, 0x32, 0x32, 0x00, 0x00, 0x32,
272           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
273           0x50, 0x03, 0x74, 0x14, 0x07, 0x82, 0x07, 0x04,
274           0x00, 0x45, 0x30, 0x30, 0x40, 0x30,
275           },
276          {                      /*  Init_SR80_SR93 */
277           0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x32,
278           0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x32, 0x32,
279           0x00, 0x00, 0x00, 0x00,
280           },
281          {                      /*  Init_SRA0_SRAF */
282           0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
283           0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xFF, 0xDF,
284           },
285          {                      /*  Init_GR00_GR08 */
286           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
287           0xFF,
288           },
289          {                      /*  Init_AR00_AR14 */
290           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
291           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
292           0x41, 0x00, 0x0F, 0x00, 0x00,
293           },
294          {                      /*  Init_CR00_CR18 */
295           0x5F, 0x4F, 0x4F, 0x00, 0x53, 0x1F, 0x0B, 0x3E,
296           0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
297           0xEA, 0x0C, 0xDF, 0x50, 0x40, 0xDF, 0x00, 0xE3,
298           0xFF,
299           },
300          {                      /*  Init_CR30_CR4D */
301           0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x03, 0x20,
302           0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xFF, 0xFD,
303           0x5F, 0x4F, 0x00, 0x54, 0x00, 0x0B, 0xDF, 0x00,
304           0xEA, 0x0C, 0x2E, 0x00, 0x4F, 0xDF,
305           },
306          {                      /*  Init_CR90_CRA7 */
307           0x56, 0xDD, 0x5E, 0xEA, 0x87, 0x44, 0x8F, 0x55,
308           0x0A, 0x8F, 0x55, 0x0A, 0x00, 0x00, 0x18, 0x00,
309           0x11, 0x10, 0x0B, 0x0A, 0x0A, 0x0A, 0x0A, 0x00,
310           },
311          },
312
313         {                       /*  mode#2: 800 x 600  16Bpp  60Hz */
314          800, 600, 16, 60,
315          /*  Init_MISC */
316          0x2B,
317          {                      /*  Init_SR0_SR4 */
318           0x03, 0x01, 0x0F, 0x03, 0x0E,
319           },
320          {                      /*  Init_SR10_SR24 */
321           0xFF, 0xBE, 0xEE, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
322           0x99, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
323           0xC4, 0x30, 0x02, 0x01, 0x01,
324           },
325          {                      /*  Init_SR30_SR75 */
326           0x34, 0x03, 0x20, 0x09, 0xC0, 0x24, 0x24, 0x24,
327           0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x03, 0xFF,
328           0x00, 0xFC, 0x00, 0x00, 0x20, 0x38, 0x00, 0xFC,
329           0x20, 0x0C, 0x44, 0x20, 0x00, 0x24, 0x24, 0x24,
330           0x04, 0x48, 0x83, 0x63, 0x68, 0x72, 0x57, 0x58,
331           0x04, 0x55, 0x59, 0x24, 0x24, 0x00, 0x00, 0x24,
332           0x01, 0x80, 0x7A, 0x1A, 0x1A, 0x00, 0x00, 0x00,
333           0x50, 0x03, 0x74, 0x14, 0x1C, 0x85, 0x35, 0x13,
334           0x02, 0x45, 0x30, 0x35, 0x40, 0x20,
335           },
336          {                      /*  Init_SR80_SR93 */
337           0x00, 0x00, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x24,
338           0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x24,
339           0x00, 0x00, 0x00, 0x00,
340           },
341          {                      /*  Init_SRA0_SRAF */
342           0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
343           0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xBF, 0xDF,
344           },
345          {                      /*  Init_GR00_GR08 */
346           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
347           0xFF,
348           },
349          {                      /*  Init_AR00_AR14 */
350           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
351           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
352           0x41, 0x00, 0x0F, 0x00, 0x00,
353           },
354          {                      /*  Init_CR00_CR18 */
355           0x7F, 0x63, 0x63, 0x00, 0x68, 0x18, 0x72, 0xF0,
356           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
357           0x58, 0x0C, 0x57, 0x64, 0x40, 0x57, 0x00, 0xE3,
358           0xFF,
359           },
360          {                      /*  Init_CR30_CR4D */
361           0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x20,
362           0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xBF, 0xFD,
363           0x7F, 0x63, 0x00, 0x69, 0x18, 0x72, 0x57, 0x00,
364           0x58, 0x0C, 0xE0, 0x20, 0x63, 0x57,
365           },
366          {                      /*  Init_CR90_CRA7 */
367           0x56, 0x4B, 0x5E, 0x55, 0x86, 0x9D, 0x8E, 0xAA,
368           0xDB, 0x2A, 0xDF, 0x33, 0x00, 0x00, 0x18, 0x00,
369           0x20, 0x1F, 0x1A, 0x19, 0x0F, 0x0F, 0x0F, 0x00,
370           },
371          },
372         {                       /*  mode#3: 800 x 600  24Bpp  60Hz */
373          800, 600, 24, 60,
374          0x2B,
375          {                      /*  Init_SR0_SR4 */
376           0x03, 0x01, 0x0F, 0x03, 0x0E,
377           },
378          {                      /*  Init_SR10_SR24 */
379           0xFF, 0xBE, 0xEE, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
380           0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
381           0xC4, 0x30, 0x02, 0x01, 0x01,
382           },
383          {                      /*  Init_SR30_SR75 */
384           0x36, 0x03, 0x20, 0x09, 0xC0, 0x36, 0x36, 0x36,
385           0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x03, 0xFF,
386           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
387           0x20, 0x0C, 0x44, 0x20, 0x00, 0x36, 0x36, 0x36,
388           0x04, 0x48, 0x83, 0x63, 0x68, 0x72, 0x57, 0x58,
389           0x04, 0x55, 0x59, 0x36, 0x36, 0x00, 0x00, 0x36,
390           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
391           0x50, 0x03, 0x74, 0x14, 0x1C, 0x85, 0x35, 0x13,
392           0x02, 0x45, 0x30, 0x30, 0x40, 0x20,
393           },
394          {                      /*  Init_SR80_SR93 */
395           0xFF, 0x07, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x36,
396           0xF7, 0x00, 0x00, 0x00, 0xEF, 0xFF, 0x36, 0x36,
397           0x00, 0x00, 0x00, 0x00,
398           },
399          {                      /*  Init_SRA0_SRAF */
400           0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
401           0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xBF, 0xDF,
402           },
403          {                      /*  Init_GR00_GR08 */
404           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
405           0xFF,
406           },
407          {                      /*  Init_AR00_AR14 */
408           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
409           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
410           0x41, 0x00, 0x0F, 0x00, 0x00,
411           },
412          {                      /*  Init_CR00_CR18 */
413           0x7F, 0x63, 0x63, 0x00, 0x68, 0x18, 0x72, 0xF0,
414           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
415           0x58, 0x0C, 0x57, 0x64, 0x40, 0x57, 0x00, 0xE3,
416           0xFF,
417           },
418          {                      /*  Init_CR30_CR4D */
419           0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x20,
420           0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xBF, 0xFD,
421           0x7F, 0x63, 0x00, 0x69, 0x18, 0x72, 0x57, 0x00,
422           0x58, 0x0C, 0xE0, 0x20, 0x63, 0x57,
423           },
424          {                      /*  Init_CR90_CRA7 */
425           0x56, 0x4B, 0x5E, 0x55, 0x86, 0x9D, 0x8E, 0xAA,
426           0xDB, 0x2A, 0xDF, 0x33, 0x00, 0x00, 0x18, 0x00,
427           0x20, 0x1F, 0x1A, 0x19, 0x0F, 0x0F, 0x0F, 0x00,
428           },
429          },
430         {                       /*  mode#7: 800 x 600  32Bpp  60Hz */
431          800, 600, 32, 60,
432          /*  Init_MISC */
433          0x2B,
434          {                      /*  Init_SR0_SR4 */
435           0x03, 0x01, 0x0F, 0x03, 0x0E,
436           },
437          {                      /*  Init_SR10_SR24 */
438           0xFF, 0xBE, 0xEE, 0xFF, 0x00, 0x0E, 0x17, 0x2C,
439           0x99, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
440           0xC4, 0x30, 0x02, 0x01, 0x01,
441           },
442          {                      /*  Init_SR30_SR75 */
443           0x34, 0x03, 0x20, 0x09, 0xC0, 0x24, 0x24, 0x24,
444           0x24, 0x24, 0x24, 0x24, 0x00, 0x00, 0x03, 0xFF,
445           0x00, 0xFC, 0x00, 0x00, 0x20, 0x38, 0x00, 0xFC,
446           0x20, 0x0C, 0x44, 0x20, 0x00, 0x24, 0x24, 0x24,
447           0x04, 0x48, 0x83, 0x63, 0x68, 0x72, 0x57, 0x58,
448           0x04, 0x55, 0x59, 0x24, 0x24, 0x00, 0x00, 0x24,
449           0x01, 0x80, 0x7A, 0x1A, 0x1A, 0x00, 0x00, 0x00,
450           0x50, 0x03, 0x74, 0x14, 0x1C, 0x85, 0x35, 0x13,
451           0x02, 0x45, 0x30, 0x35, 0x40, 0x20,
452           },
453          {                      /*  Init_SR80_SR93 */
454           0x00, 0x00, 0x00, 0x6F, 0x7F, 0x7F, 0xFF, 0x24,
455           0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x24, 0x24,
456           0x00, 0x00, 0x00, 0x00,
457           },
458          {                      /*  Init_SRA0_SRAF */
459           0x00, 0xFF, 0xBF, 0xFF, 0xFF, 0xED, 0xED, 0xED,
460           0x7B, 0xFF, 0xFF, 0xFF, 0xBF, 0xEF, 0xBF, 0xDF,
461           },
462          {                      /*  Init_GR00_GR08 */
463           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
464           0xFF,
465           },
466          {                      /*  Init_AR00_AR14 */
467           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
468           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
469           0x41, 0x00, 0x0F, 0x00, 0x00,
470           },
471          {                      /*  Init_CR00_CR18 */
472           0x7F, 0x63, 0x63, 0x00, 0x68, 0x18, 0x72, 0xF0,
473           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
474           0x58, 0x0C, 0x57, 0x64, 0x40, 0x57, 0x00, 0xE3,
475           0xFF,
476           },
477          {                      /*  Init_CR30_CR4D */
478           0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x03, 0x20,
479           0x00, 0x00, 0x00, 0x40, 0x00, 0xE7, 0xBF, 0xFD,
480           0x7F, 0x63, 0x00, 0x69, 0x18, 0x72, 0x57, 0x00,
481           0x58, 0x0C, 0xE0, 0x20, 0x63, 0x57,
482           },
483          {                      /*  Init_CR90_CRA7 */
484           0x56, 0x4B, 0x5E, 0x55, 0x86, 0x9D, 0x8E, 0xAA,
485           0xDB, 0x2A, 0xDF, 0x33, 0x00, 0x00, 0x18, 0x00,
486           0x20, 0x1F, 0x1A, 0x19, 0x0F, 0x0F, 0x0F, 0x00,
487           },
488          },
489         /* We use 1024x768 table to light 1024x600 panel for lemote */
490         {                       /*  mode#4: 1024 x 600  16Bpp  60Hz  */
491          1024, 600, 16, 60,
492          /*  Init_MISC */
493          0xEB,
494          {                      /*  Init_SR0_SR4 */
495           0x03, 0x01, 0x0F, 0x00, 0x0E,
496           },
497          {                      /*  Init_SR10_SR24 */
498           0xC8, 0x40, 0x14, 0x60, 0x00, 0x0A, 0x17, 0x20,
499           0x51, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
500           0xC4, 0x30, 0x02, 0x00, 0x01,
501           },
502          {                      /*  Init_SR30_SR75 */
503           0x22, 0x03, 0x24, 0x09, 0xC0, 0x22, 0x22, 0x22,
504           0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x03, 0xFF,
505           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
506           0x20, 0x0C, 0x44, 0x20, 0x00, 0x22, 0x22, 0x22,
507           0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
508           0x00, 0x60, 0x59, 0x22, 0x22, 0x00, 0x00, 0x22,
509           0x01, 0x80, 0x7A, 0x1A, 0x1A, 0x00, 0x00, 0x00,
510           0x50, 0x03, 0x16, 0x02, 0x0D, 0x82, 0x09, 0x02,
511           0x04, 0x45, 0x3F, 0x30, 0x40, 0x20,
512           },
513          {                      /*  Init_SR80_SR93 */
514           0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
515           0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
516           0x00, 0x00, 0x00, 0x00,
517           },
518          {                      /*  Init_SRA0_SRAF */
519           0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
520           0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
521           },
522          {                      /*  Init_GR00_GR08 */
523           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
524           0xFF,
525           },
526          {                      /*  Init_AR00_AR14 */
527           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
528           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
529           0x41, 0x00, 0x0F, 0x00, 0x00,
530           },
531          {                      /*  Init_CR00_CR18 */
532           0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
533           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
534           0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
535           0xFF,
536           },
537          {                      /*  Init_CR30_CR4D */
538           0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
539           0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
540           0xA3, 0x7F, 0x00, 0x82, 0x0b, 0x6f, 0x57, 0x00,
541           0x5c, 0x0f, 0xE0, 0xe0, 0x7F, 0x57,
542           },
543          {                      /*  Init_CR90_CRA7 */
544           0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
545           0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
546           0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
547           },
548          },
549         {                       /*  mode#5: 1024 x 768  24Bpp  60Hz */
550          1024, 768, 24, 60,
551          /*  Init_MISC */
552          0xEB,
553          {                      /*  Init_SR0_SR4 */
554           0x03, 0x01, 0x0F, 0x03, 0x0E,
555           },
556          {                      /*  Init_SR10_SR24 */
557           0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
558           0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
559           0xC4, 0x30, 0x02, 0x01, 0x01,
560           },
561          {                      /*  Init_SR30_SR75 */
562           0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
563           0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
564           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
565           0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
566           0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
567           0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
568           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
569           0x50, 0x03, 0x74, 0x14, 0x3B, 0x0D, 0x09, 0x02,
570           0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
571           },
572          {                      /*  Init_SR80_SR93 */
573           0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
574           0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
575           0x00, 0x00, 0x00, 0x00,
576           },
577          {                      /*  Init_SRA0_SRAF */
578           0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
579           0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
580           },
581          {                      /*  Init_GR00_GR08 */
582           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
583           0xFF,
584           },
585          {                      /*  Init_AR00_AR14 */
586           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
587           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
588           0x41, 0x00, 0x0F, 0x00, 0x00,
589           },
590          {                      /*  Init_CR00_CR18 */
591           0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
592           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
593           0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
594           0xFF,
595           },
596          {                      /*  Init_CR30_CR4D */
597           0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
598           0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
599           0xA3, 0x7F, 0x00, 0x86, 0x15, 0x24, 0xFF, 0x00,
600           0x01, 0x07, 0xE5, 0x20, 0x7F, 0xFF,
601           },
602          {                      /*  Init_CR90_CRA7 */
603           0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
604           0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
605           0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
606           },
607          },
608         {                       /*  mode#4: 1024 x 768  32Bpp  60Hz */
609          1024, 768, 32, 60,
610          /*  Init_MISC */
611          0xEB,
612          {                      /*  Init_SR0_SR4 */
613           0x03, 0x01, 0x0F, 0x03, 0x0E,
614           },
615          {                      /*  Init_SR10_SR24 */
616           0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
617           0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
618           0xC4, 0x32, 0x02, 0x01, 0x01,
619           },
620          {                      /*  Init_SR30_SR75 */
621           0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
622           0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
623           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
624           0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
625           0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
626           0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
627           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
628           0x50, 0x03, 0x74, 0x14, 0x3B, 0x0D, 0x09, 0x02,
629           0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
630           },
631          {                      /*  Init_SR80_SR93 */
632           0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
633           0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
634           0x00, 0x00, 0x00, 0x00,
635           },
636          {                      /*  Init_SRA0_SRAF */
637           0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
638           0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
639           },
640          {                      /*  Init_GR00_GR08 */
641           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
642           0xFF,
643           },
644          {                      /*  Init_AR00_AR14 */
645           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
646           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
647           0x41, 0x00, 0x0F, 0x00, 0x00,
648           },
649          {                      /*  Init_CR00_CR18 */
650           0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
651           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
652           0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
653           0xFF,
654           },
655          {                      /*  Init_CR30_CR4D */
656           0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
657           0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
658           0xA3, 0x7F, 0x00, 0x86, 0x15, 0x24, 0xFF, 0x00,
659           0x01, 0x07, 0xE5, 0x20, 0x7F, 0xFF,
660           },
661          {                      /*  Init_CR90_CRA7 */
662           0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
663           0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
664           0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
665           },
666          },
667         {                       /*  mode#6: 320 x 240  16Bpp  60Hz */
668          320, 240, 16, 60,
669          /*  Init_MISC */
670          0xEB,
671          {                      /*  Init_SR0_SR4 */
672           0x03, 0x01, 0x0F, 0x03, 0x0E,
673           },
674          {                      /*  Init_SR10_SR24 */
675           0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
676           0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
677           0xC4, 0x32, 0x02, 0x01, 0x01,
678           },
679          {                      /*  Init_SR30_SR75 */
680           0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
681           0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
682           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
683           0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
684           0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
685           0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
686           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
687           0x50, 0x03, 0x74, 0x14, 0x08, 0x43, 0x08, 0x43,
688           0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
689           },
690          {                      /*  Init_SR80_SR93 */
691           0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
692           0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
693           0x00, 0x00, 0x00, 0x00,
694           },
695          {                      /*  Init_SRA0_SRAF */
696           0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
697           0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
698           },
699          {                      /*  Init_GR00_GR08 */
700           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
701           0xFF,
702           },
703          {                      /*  Init_AR00_AR14 */
704           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
705           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
706           0x41, 0x00, 0x0F, 0x00, 0x00,
707           },
708          {                      /*  Init_CR00_CR18 */
709           0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
710           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
711           0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
712           0xFF,
713           },
714          {                      /*  Init_CR30_CR4D */
715           0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
716           0x00, 0x00, 0x30, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
717           0x2E, 0x27, 0x00, 0x2b, 0x0c, 0x0F, 0xEF, 0x00,
718           0xFe, 0x0f, 0x01, 0xC0, 0x27, 0xEF,
719           },
720          {                      /*  Init_CR90_CRA7 */
721           0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
722           0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
723           0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
724           },
725          },
726
727         {                       /*  mode#8: 320 x 240  32Bpp  60Hz */
728          320, 240, 32, 60,
729          /*  Init_MISC */
730          0xEB,
731          {                      /*  Init_SR0_SR4 */
732           0x03, 0x01, 0x0F, 0x03, 0x0E,
733           },
734          {                      /*  Init_SR10_SR24 */
735           0xF3, 0xB6, 0xC0, 0xDD, 0x00, 0x0E, 0x17, 0x2C,
736           0x99, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
737           0xC4, 0x32, 0x02, 0x01, 0x01,
738           },
739          {                      /*  Init_SR30_SR75 */
740           0x38, 0x03, 0x20, 0x09, 0xC0, 0x3A, 0x3A, 0x3A,
741           0x3A, 0x3A, 0x3A, 0x3A, 0x00, 0x00, 0x03, 0xFF,
742           0x00, 0xFC, 0x00, 0x00, 0x20, 0x18, 0x00, 0xFC,
743           0x20, 0x0C, 0x44, 0x20, 0x00, 0x00, 0x00, 0x3A,
744           0x06, 0x68, 0xA7, 0x7F, 0x83, 0x24, 0xFF, 0x03,
745           0x00, 0x60, 0x59, 0x3A, 0x3A, 0x00, 0x00, 0x3A,
746           0x01, 0x80, 0x7E, 0x1A, 0x1A, 0x00, 0x00, 0x00,
747           0x50, 0x03, 0x74, 0x14, 0x08, 0x43, 0x08, 0x43,
748           0x04, 0x45, 0x30, 0x30, 0x40, 0x20,
749           },
750          {                      /*  Init_SR80_SR93 */
751           0xFF, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x3A,
752           0xF7, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x3A, 0x3A,
753           0x00, 0x00, 0x00, 0x00,
754           },
755          {                      /*  Init_SRA0_SRAF */
756           0x00, 0xFB, 0x9F, 0x01, 0x00, 0xED, 0xED, 0xED,
757           0x7B, 0xFB, 0xFF, 0xFF, 0x97, 0xEF, 0xBF, 0xDF,
758           },
759          {                      /*  Init_GR00_GR08 */
760           0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0F,
761           0xFF,
762           },
763          {                      /*  Init_AR00_AR14 */
764           0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
765           0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
766           0x41, 0x00, 0x0F, 0x00, 0x00,
767           },
768          {                      /*  Init_CR00_CR18 */
769           0xA3, 0x7F, 0x7F, 0x00, 0x85, 0x16, 0x24, 0xF5,
770           0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
771           0x03, 0x09, 0xFF, 0x80, 0x40, 0xFF, 0x00, 0xE3,
772           0xFF,
773           },
774          {                      /*  Init_CR30_CR4D */
775           0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x20,
776           0x00, 0x00, 0x30, 0x40, 0x00, 0xFF, 0xBF, 0xFF,
777           0x2E, 0x27, 0x00, 0x2b, 0x0c, 0x0F, 0xEF, 0x00,
778           0xFe, 0x0f, 0x01, 0xC0, 0x27, 0xEF,
779           },
780          {                      /*  Init_CR90_CRA7 */
781           0x55, 0xD9, 0x5D, 0xE1, 0x86, 0x1B, 0x8E, 0x26,
782           0xDA, 0x8D, 0xDE, 0x94, 0x00, 0x00, 0x18, 0x00,
783           0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x15, 0x03,
784           },
785          },
786 };
787
788 #define numVGAModes             ARRAY_SIZE(VGAMode)