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