blob: 52e4a828a6effacb189b4a458a221c4869dbbe18 [file] [log] [blame]
Bryan Huntsman3f2bc4d2011-08-16 17:27:22 -07001/* Copyright (c) 2009-2011, Code Aurora Forum. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/module.h>
15#include <linux/kernel.h>
16#include <linux/sched.h>
17#include <linux/time.h>
18#include <linux/init.h>
19#include <linux/interrupt.h>
20#include <linux/spinlock.h>
21#include <linux/hrtimer.h>
22#include <linux/clk.h>
23#include <linux/io.h>
24#include <linux/debugfs.h>
25#include <linux/semaphore.h>
26#include <linux/uaccess.h>
27#include <asm/system.h>
28#include <asm/mach-types.h>
29#include <mach/hardware.h>
30#include "mdp.h"
31#include "msm_fb.h"
32#include "mdp4.h"
33
34struct mdp4_statistic mdp4_stat;
35
36unsigned is_mdp4_hw_reset(void)
37{
38 unsigned hw_reset = 0;
39
40 /* Only revisions > v2.1 may be reset or powered off/on at runtime */
41 if (mdp_hw_revision > MDP4_REVISION_V2_1) {
42 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
43 hw_reset = !inpdw(MDP_BASE + 0x003c);
44 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
45 }
46
47 return hw_reset;
48}
49
50void mdp4_sw_reset(ulong bits)
51{
52 /* MDP cmd block enable */
53 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
54
55 bits &= 0x1f; /* 5 bits */
56 outpdw(MDP_BASE + 0x001c, bits); /* MDP_SW_RESET */
57
58 while (inpdw(MDP_BASE + 0x001c) & bits) /* self clear when complete */
59 ;
60 /* MDP cmd block disable */
61 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
62
63 MSM_FB_DEBUG("mdp4_sw_reset: 0x%x\n", (int)bits);
64}
65
66void mdp4_overlay_cfg(int overlayer, int blt_mode, int refresh, int direct_out)
67{
68 ulong bits = 0;
69
70 if (blt_mode)
71 bits |= (1 << 3);
72 refresh &= 0x03; /* 2 bites */
73 bits |= (refresh << 1);
74 direct_out &= 0x01;
75 bits |= direct_out;
76 /* MDP cmd block enable */
77 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
78
79
80 if (overlayer == MDP4_MIXER0)
81 outpdw(MDP_BASE + 0x10004, bits); /* MDP_OVERLAY0_CFG */
82 else
83 outpdw(MDP_BASE + 0x18004, bits); /* MDP_OVERLAY1_CFG */
84
85 MSM_FB_DEBUG("mdp4_overlay_cfg: 0x%x\n",
86 (int)inpdw(MDP_BASE + 0x10004));
87 /* MDP cmd block disable */
88 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
89}
90
91void mdp4_display_intf_sel(int output, ulong intf)
92{
93 ulong bits, mask, data;
94 /* MDP cmd block enable */
95 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
96
97 bits = inpdw(MDP_BASE + 0x0038); /* MDP_DISP_INTF_SEL */
98
99 if (intf == DSI_VIDEO_INTF) {
100 data = 0x40; /* bit 6 */
101 intf = MDDI_LCDC_INTF;
102 if (output == SECONDARY_INTF_SEL) {
103 MSM_FB_INFO("%s: Illegal INTF selected, output=%d \
104 intf=%d\n", __func__, output, (int)intf);
105 }
106 } else if (intf == DSI_CMD_INTF) {
107 data = 0x80; /* bit 7 */
108 intf = MDDI_INTF;
109 if (output == EXTERNAL_INTF_SEL) {
110 MSM_FB_INFO("%s: Illegal INTF selected, output=%d \
111 intf=%d\n", __func__, output, (int)intf);
112 }
113 } else
114 data = 0;
115
116 mask = 0x03; /* 2 bits */
117 intf &= 0x03; /* 2 bits */
118
119 switch (output) {
120 case EXTERNAL_INTF_SEL:
121 intf <<= 4;
122 mask <<= 4;
123 break;
124 case SECONDARY_INTF_SEL:
125 intf &= 0x02; /* only MDDI and EBI2 support */
126 intf <<= 2;
127 mask <<= 2;
128 break;
129 default:
130 break;
131 }
132
133 intf |= data;
134 mask |= data;
135
136 bits &= ~mask;
137 bits |= intf;
138
139 outpdw(MDP_BASE + 0x0038, bits); /* MDP_DISP_INTF_SEL */
140 /* MDP cmd block disable */
141 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
142
143 MSM_FB_DEBUG("mdp4_display_intf_sel: 0x%x\n", (int)inpdw(MDP_BASE + 0x0038));
144}
145
146unsigned long mdp4_display_status(void)
147{
148 ulong status;
149 /* MDP cmd block enable */
150 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
151
152 status = inpdw(MDP_BASE + 0x0018) & 0x3ff; /* MDP_DISPLAY_STATUS */
153
154 /* MDP cmd block disable */
155 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
156 return status;
157}
158
159void mdp4_ebi2_lcd_setup(int lcd, ulong base, int ystride)
160{
161 /* always use memory map */
162 ystride &= 0x01fff; /* 13 bits */
163 /* MDP cmd block enable */
164 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
165
166 if (lcd == EBI2_LCD0) {
167 outpdw(MDP_BASE + 0x0060, base);/* MDP_EBI2_LCD0 */
168 outpdw(MDP_BASE + 0x0068, ystride);/* MDP_EBI2_LCD0_YSTRIDE */
169 } else {
170 outpdw(MDP_BASE + 0x0064, base);/* MDP_EBI2_LCD1 */
171 outpdw(MDP_BASE + 0x006c, ystride);/* MDP_EBI2_LCD1_YSTRIDE */
172 }
173 /* MDP cmd block disable */
174 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
175}
176
177void mdp4_mddi_setup(int mddi, unsigned long id)
178{
179 ulong bits;
180
181 if (mddi == MDDI_EXTERNAL_SET)
182 bits = 0x02;
183 else if (mddi == MDDI_SECONDARY_SET)
184 bits = 0x01;
185 else
186 bits = 0; /* PRIMARY_SET */
187
188 id <<= 16;
189
190 bits |= id;
191 /* MDP cmd block enable */
192 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
193
194 outpdw(MDP_BASE + 0x0090, bits); /* MDP_MDDI_PARAM_WR_SEL */
195 /* MDP cmd block disable */
196 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
197}
198
199int mdp_ppp_blit(struct fb_info *info, struct mdp_blit_req *req)
200{
201
202 /* not implemented yet */
203 return -1;
204}
205
206void mdp4_fetch_cfg(uint32 core_clk)
207{
208
209 uint32 dmap_data, vg_data;
210 char *base;
211 int i;
212 /* MDP cmd block enable */
213 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
214
215 if (core_clk >= 90000000) { /* 90 Mhz */
216 dmap_data = 0x47; /* 16 bytes-burst x 8 req */
217 vg_data = 0x47; /* 16 bytes-burs x 8 req */
218 } else {
219 dmap_data = 0x27; /* 8 bytes-burst x 8 req */
220 vg_data = 0x43; /* 16 bytes-burst x 4 req */
221 }
222
223 MSM_FB_DEBUG("mdp4_fetch_cfg: dmap=%x vg=%x\n",
224 dmap_data, vg_data);
225
226 /* dma_p fetch config */
227 outpdw(MDP_BASE + 0x91004, dmap_data);
228 /* dma_e fetch config */
229 outpdw(MDP_BASE + 0xB1004, dmap_data);
230
231 /*
232 * set up two vg pipes and two rgb pipes
233 */
234 base = MDP_BASE + MDP4_VIDEO_BASE;
235 for (i = 0; i < 4; i++) {
236 outpdw(base + 0x1004, vg_data);
237 base += MDP4_VIDEO_OFF;
238 }
239 /* MDP cmd block disable */
240 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
241}
242
243void mdp4_hw_init(void)
244{
245 ulong bits;
246
247 /* MDP cmd block enable */
248 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
249
250#ifdef MDP4_ERROR
251 /*
252 * Issue software reset on DMA_P will casue DMA_P dma engine stall
253 * on LCDC mode. However DMA_P does not stall at MDDI mode.
254 * This need further investigation.
255 */
256 mdp4_sw_reset(0x17);
257#endif
258
259 mdp4_clear_lcdc();
260
261 mdp4_mixer_blend_init(0);
262 mdp4_mixer_blend_init(1);
263 mdp4_vg_qseed_init(0);
264 mdp4_vg_qseed_init(1);
265
266 /* yuv2rgb */
267 mdp4_vg_csc_mv_setup(0);
268 mdp4_vg_csc_mv_setup(1);
269 mdp4_vg_csc_pre_bv_setup(0);
270 mdp4_vg_csc_pre_bv_setup(1);
271 mdp4_vg_csc_post_bv_setup(0);
272 mdp4_vg_csc_post_bv_setup(1);
273 mdp4_vg_csc_pre_lv_setup(0);
274 mdp4_vg_csc_pre_lv_setup(1);
275 mdp4_vg_csc_post_lv_setup(0);
276 mdp4_vg_csc_post_lv_setup(1);
277
278 /* rgb2yuv */
279 mdp4_mixer1_csc_mv_setup();
280 mdp4_mixer1_csc_pre_bv_setup();
281 mdp4_mixer1_csc_post_bv_setup();
282 mdp4_mixer1_csc_pre_lv_setup();
283 mdp4_mixer1_csc_post_lv_setup();
284
285 mdp4_vg_igc_lut_setup(0);
286 mdp4_vg_igc_lut_setup(1);
287
288 mdp4_rgb_igc_lut_setup(0);
289 mdp4_rgb_igc_lut_setup(1);
290
291 outp32(MDP_EBI2_PORTMAP_MODE, 0x3);
292
293 /* system interrupts */
294
295 bits = mdp_intr_mask;
296 outpdw(MDP_BASE + 0x0050, bits);/* enable specififed interrupts */
297
298 /* histogram */
299 MDP_OUTP(MDP_BASE + 0x95010, 1); /* auto clear HIST */
300
301 /* enable histogram interrupts */
302 outpdw(MDP_BASE + 0x9501c, INTR_HIST_DONE);
303
304 /* For the max read pending cmd config below, if the MDP clock */
305 /* is less than the AXI clock, then we must use 3 pending */
306 /* pending requests. Otherwise, we should use 8 pending requests. */
307 /* In the future we should do this detection automatically. */
308
309 /* max read pending cmd config */
310 outpdw(MDP_BASE + 0x004c, 0x02222); /* 3 pending requests */
311
312#ifndef CONFIG_FB_MSM_OVERLAY
313 /* both REFRESH_MODE and DIRECT_OUT are ignored at BLT mode */
314 mdp4_overlay_cfg(MDP4_MIXER0, OVERLAY_MODE_BLT, 0, 0);
315 mdp4_overlay_cfg(MDP4_MIXER1, OVERLAY_MODE_BLT, 0, 0);
316#endif
317
318 /* MDP cmd block disable */
319 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
320
321 /* Mark hardware as initialized. Only revisions > v2.1 have a register
322 * for tracking core reset status. */
323 if (mdp_hw_revision > MDP4_REVISION_V2_1)
324 outpdw(MDP_BASE + 0x003c, 1);
325}
326
327
328void mdp4_clear_lcdc(void)
329{
330 uint32 bits;
331
332 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
333
334 bits = inpdw(MDP_BASE + 0xc0000);
335 if (bits & 0x01) { /* enabled already */
336 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
337 return;
338 }
339
340 outpdw(MDP_BASE + 0xc0004, 0); /* vsync ctrl out */
341 outpdw(MDP_BASE + 0xc0008, 0); /* vsync period */
342 outpdw(MDP_BASE + 0xc000c, 0); /* vsync pusle width */
343 outpdw(MDP_BASE + 0xc0010, 0); /* lcdc display HCTL */
344 outpdw(MDP_BASE + 0xc0014, 0); /* lcdc display v start */
345 outpdw(MDP_BASE + 0xc0018, 0); /* lcdc display v end */
346 outpdw(MDP_BASE + 0xc001c, 0); /* lcdc active hctl */
347 outpdw(MDP_BASE + 0xc0020, 0); /* lcdc active v start */
348 outpdw(MDP_BASE + 0xc0024, 0); /* lcdc active v end */
349 outpdw(MDP_BASE + 0xc0028, 0); /* lcdc board color */
350 outpdw(MDP_BASE + 0xc002c, 0); /* lcdc underflow ctrl */
351 outpdw(MDP_BASE + 0xc0030, 0); /* lcdc hsync skew */
352 outpdw(MDP_BASE + 0xc0034, 0); /* lcdc test ctl */
353 outpdw(MDP_BASE + 0xc0038, 0); /* lcdc ctl polarity */
354
355 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
356}
357
358irqreturn_t mdp4_isr(int irq, void *ptr)
359{
360 uint32 isr, mask, panel;
361 struct mdp_dma_data *dma;
362
363 mdp_is_in_isr = TRUE;
364
365 /* complete all the reads before reading the interrupt
366 * status register - eliminate effects of speculative
367 * reads by the cpu
368 */
369 rmb();
370 isr = inpdw(MDP_INTR_STATUS);
371 if (isr == 0)
372 goto out;
373
374 mdp4_stat.intr_tot++;
375 mask = inpdw(MDP_INTR_ENABLE);
376 outpdw(MDP_INTR_CLEAR, isr);
377
378 if (isr & INTR_PRIMARY_INTF_UDERRUN) {
379 mdp4_stat.intr_underrun_p++;
380 /* When underun occurs mdp clear the histogram registers
381 that are set before in hw_init so restore them back so
382 that histogram works.*/
383 MDP_OUTP(MDP_BASE + 0x95010, 1);
384 outpdw(MDP_BASE + 0x9501c, INTR_HIST_DONE);
385 if (mdp_is_hist_start == TRUE) {
386 MDP_OUTP(MDP_BASE + 0x95004,
387 mdp_hist.frame_cnt);
388 MDP_OUTP(MDP_BASE + 0x95000, 1);
389 }
390 }
391
392 if (isr & INTR_EXTERNAL_INTF_UDERRUN)
393 mdp4_stat.intr_underrun_e++;
394
395 isr &= mask;
396
397 if (isr == 0)
398 goto out;
399
400 panel = mdp4_overlay_panel_list();
401 if (isr & INTR_PRIMARY_VSYNC) {
402 dma = &dma2_data;
403 spin_lock(&mdp_spin_lock);
404 mdp_intr_mask &= ~INTR_PRIMARY_VSYNC;
405 outp32(MDP_INTR_ENABLE, mdp_intr_mask);
406 dma->waiting = FALSE;
407 spin_unlock(&mdp_spin_lock);
408 if (panel & MDP4_PANEL_LCDC)
409 mdp4_primary_vsync_lcdc();
410#ifdef CONFIG_FB_MSM_MIPI_DSI
411 else if (panel & MDP4_PANEL_DSI_VIDEO)
412 mdp4_primary_vsync_dsi_video();
413#endif
414 }
415#ifdef CONFIG_FB_MSM_DTV
416 if (isr & INTR_EXTERNAL_VSYNC) {
417 dma = &dma_e_data;
418 spin_lock(&mdp_spin_lock);
419 mdp_intr_mask &= ~INTR_EXTERNAL_VSYNC;
420 outp32(MDP_INTR_ENABLE, mdp_intr_mask);
421 dma->waiting = FALSE;
422 spin_unlock(&mdp_spin_lock);
423 if (panel & MDP4_PANEL_DTV)
424 mdp4_external_vsync_dtv();
425 }
426#endif
427 if (isr & INTR_DMA_P_DONE) {
428 mdp4_stat.intr_dma_p++;
429 dma = &dma2_data;
430 if (panel & MDP4_PANEL_LCDC) {
431 /* disable LCDC interrupt */
432 spin_lock(&mdp_spin_lock);
433 mdp_intr_mask &= ~INTR_DMA_P_DONE;
434 outp32(MDP_INTR_ENABLE, mdp_intr_mask);
435 dma->waiting = FALSE;
436 spin_unlock(&mdp_spin_lock);
437 } else { /* MDDI */
438#ifdef CONFIG_FB_MSM_OVERLAY
439#ifdef CONFIG_FB_MSM_MIPI_DSI
440 mdp4_dma_p_done_dsi(dma);
441#else
442 mdp4_dma_p_done_mddi();
443 mdp_pipe_ctrl(MDP_DMA2_BLOCK,
444 MDP_BLOCK_POWER_OFF, TRUE);
445#endif
446#else
447 spin_lock(&mdp_spin_lock);
448 dma->busy = FALSE;
449 spin_unlock(&mdp_spin_lock);
450#endif
451 }
452#ifndef CONFIG_FB_MSM_MIPI_DSI
453 complete(&dma->comp);
454#endif
455 }
456 if (isr & INTR_DMA_S_DONE) {
457 mdp4_stat.intr_dma_s++;
458#if defined(CONFIG_FB_MSM_OVERLAY) && defined(CONFIG_FB_MSM_MDDI)
459 dma = &dma2_data;
460#else
461 dma = &dma_s_data;
462#endif
463
464 dma->busy = FALSE;
465 mdp_pipe_ctrl(MDP_DMA_S_BLOCK,
466 MDP_BLOCK_POWER_OFF, TRUE);
467 complete(&dma->comp);
468 }
469 if (isr & INTR_DMA_E_DONE) {
470 mdp4_stat.intr_dma_e++;
471 dma = &dma_e_data;
472 spin_lock(&mdp_spin_lock);
473 mdp_intr_mask &= ~INTR_DMA_E_DONE;
474 outp32(MDP_INTR_ENABLE, mdp_intr_mask);
475 dma->busy = FALSE;
476
477 if (dma->waiting) {
478 dma->waiting = FALSE;
479 complete(&dma->comp);
480 }
481 spin_unlock(&mdp_spin_lock);
482 }
483#ifdef CONFIG_FB_MSM_OVERLAY
484 if (isr & INTR_OVERLAY0_DONE) {
485 mdp4_stat.intr_overlay0++;
486 dma = &dma2_data;
487 if (panel & (MDP4_PANEL_LCDC | MDP4_PANEL_DSI_VIDEO)) {
488 /* disable LCDC interrupt */
489 spin_lock(&mdp_spin_lock);
490 mdp_intr_mask &= ~INTR_OVERLAY0_DONE;
491 outp32(MDP_INTR_ENABLE, mdp_intr_mask);
492 dma->waiting = FALSE;
493 spin_unlock(&mdp_spin_lock);
494 if (panel & MDP4_PANEL_LCDC)
495 mdp4_overlay0_done_lcdc();
496#ifdef CONFIG_FB_MSM_MIPI_DSI
497 else if (panel & MDP4_PANEL_DSI_VIDEO)
498 mdp4_overlay0_done_dsi_video();
499#endif
500 } else { /* MDDI, DSI_CMD */
501#ifdef CONFIG_FB_MSM_MIPI_DSI
502 if (panel & MDP4_PANEL_DSI_CMD)
503 mdp4_overlay0_done_dsi_cmd(dma);
504#else
505 if (panel & MDP4_PANEL_MDDI)
506 mdp4_overlay0_done_mddi(dma);
507#endif
508 }
509 mdp_hw_cursor_done();
510 }
511 if (isr & INTR_OVERLAY1_DONE) {
512 mdp4_stat.intr_overlay1++;
513 /* disable DTV interrupt */
514 dma = &dma_e_data;
515 spin_lock(&mdp_spin_lock);
516 mdp_intr_mask &= ~INTR_OVERLAY1_DONE;
517 outp32(MDP_INTR_ENABLE, mdp_intr_mask);
518 dma->waiting = FALSE;
519 spin_unlock(&mdp_spin_lock);
520#if defined(CONFIG_FB_MSM_DTV)
521 if (panel & MDP4_PANEL_DTV)
522 mdp4_overlay1_done_dtv();
523#endif
524#if defined(CONFIG_FB_MSM_TVOUT)
525 if (panel & MDP4_PANEL_ATV)
526 mdp4_overlay1_done_atv();
527#endif
528 }
529#endif /* OVERLAY */
530 if (isr & INTR_DMA_P_HISTOGRAM) {
531 isr = inpdw(MDP_DMA_P_HIST_INTR_STATUS);
532 mask = inpdw(MDP_DMA_P_HIST_INTR_ENABLE);
533 outpdw(MDP_DMA_P_HIST_INTR_CLEAR, isr);
534 isr &= mask;
535 if (isr & INTR_HIST_DONE) {
536 if (mdp_hist.r)
537 memcpy(mdp_hist.r, MDP_BASE + 0x95100,
538 mdp_hist.bin_cnt*4);
539 if (mdp_hist.g)
540 memcpy(mdp_hist.g, MDP_BASE + 0x95200,
541 mdp_hist.bin_cnt*4);
542 if (mdp_hist.b)
543 memcpy(mdp_hist.b, MDP_BASE + 0x95300,
544 mdp_hist.bin_cnt*4);
545 complete(&mdp_hist_comp);
546 if (mdp_is_hist_start == TRUE) {
547 MDP_OUTP(MDP_BASE + 0x95004,
548 mdp_hist.frame_cnt);
549 MDP_OUTP(MDP_BASE + 0x95000, 1);
550 }
551 }
552 }
553
554out:
555 mdp_is_in_isr = FALSE;
556
557 return IRQ_HANDLED;
558}
559
560
561/*
562 * QSEED tables
563 */
564
565static uint32 vg_qseed_table0[] = {
566 0x5556aaff, 0x00000000, 0x00000000, 0x00000000
567};
568
569static uint32 vg_qseed_table1[] = {
570 0x76543210, 0xfedcba98
571};
572
573static uint32 vg_qseed_table2[] = {
574 0x02000000, 0x00000000, 0x01ff0ff9, 0x00000008,
575 0x01fb0ff2, 0x00000013, 0x01f50fed, 0x0ffe0020,
576 0x01ed0fe8, 0x0ffd002e, 0x01e30fe4, 0x0ffb003e,
577 0x01d80fe1, 0x0ff9004e, 0x01cb0fde, 0x0ff70060,
578 0x01bc0fdc, 0x0ff40074, 0x01ac0fdb, 0x0ff20087,
579 0x019a0fdb, 0x0fef009c, 0x01870fdb, 0x0fed00b1,
580 0x01740fdb, 0x0fea00c7, 0x01600fdc, 0x0fe700dd,
581 0x014b0fdd, 0x0fe500f3, 0x01350fdf, 0x0fe30109,
582 0x01200fe0, 0x0fe00120, 0x01090fe3, 0x0fdf0135,
583 0x00f30fe5, 0x0fdd014b, 0x00dd0fe7, 0x0fdc0160,
584 0x00c70fea, 0x0fdb0174, 0x00b10fed, 0x0fdb0187,
585 0x009c0fef, 0x0fdb019a, 0x00870ff2, 0x0fdb01ac,
586 0x00740ff4, 0x0fdc01bc, 0x00600ff7, 0x0fde01cb,
587 0x004e0ff9, 0x0fe101d8, 0x003e0ffb, 0x0fe401e3,
588 0x002e0ffd, 0x0fe801ed, 0x00200ffe, 0x0fed01f5,
589 0x00130000, 0x0ff201fb, 0x00080000, 0x0ff901ff,
590
591 0x02000000, 0x00000000, 0x02000000, 0x00000000,
592 0x02000000, 0x00000000, 0x02000000, 0x00000000,
593 0x02000000, 0x00000000, 0x02000000, 0x00000000,
594 0x02000000, 0x00000000, 0x02000000, 0x00000000,
595 0x02000000, 0x00000000, 0x02000000, 0x00000000,
596 0x02000000, 0x00000000, 0x02000000, 0x00000000,
597 0x02000000, 0x00000000, 0x02000000, 0x00000000,
598 0x02000000, 0x00000000, 0x02000000, 0x00000000,
599 0x02000000, 0x00000000, 0x02000000, 0x00000000,
600 0x02000000, 0x00000000, 0x02000000, 0x00000000,
601 0x02000000, 0x00000000, 0x02000000, 0x00000000,
602 0x02000000, 0x00000000, 0x02000000, 0x00000000,
603 0x02000000, 0x00000000, 0x02000000, 0x00000000,
604 0x02000000, 0x00000000, 0x02000000, 0x00000000,
605 0x02000000, 0x00000000, 0x02000000, 0x00000000,
606 0x02000000, 0x00000000, 0x02000000, 0x00000000,
607
608 0x02000000, 0x00000000, 0x01fc0ff9, 0x0ffe000d,
609 0x01f60ff3, 0x0ffb001c, 0x01ef0fed, 0x0ff9002b,
610 0x01e60fe8, 0x0ff6003c, 0x01dc0fe4, 0x0ff3004d,
611 0x01d00fe0, 0x0ff1005f, 0x01c30fde, 0x0fee0071,
612 0x01b50fdb, 0x0feb0085, 0x01a70fd9, 0x0fe80098,
613 0x01960fd8, 0x0fe600ac, 0x01850fd7, 0x0fe300c1,
614 0x01730fd7, 0x0fe100d5, 0x01610fd7, 0x0fdf00e9,
615 0x014e0fd8, 0x0fdd00fd, 0x013b0fd8, 0x0fdb0112,
616 0x01250fda, 0x0fda0127, 0x01120fdb, 0x0fd8013b,
617 0x00fd0fdd, 0x0fd8014e, 0x00e90fdf, 0x0fd70161,
618 0x00d50fe1, 0x0fd70173, 0x00c10fe3, 0x0fd70185,
619 0x00ac0fe6, 0x0fd80196, 0x00980fe8, 0x0fd901a7,
620 0x00850feb, 0x0fdb01b5, 0x00710fee, 0x0fde01c3,
621 0x005f0ff1, 0x0fe001d0, 0x004d0ff3, 0x0fe401dc,
622 0x003c0ff6, 0x0fe801e6, 0x002b0ff9, 0x0fed01ef,
623 0x001c0ffb, 0x0ff301f6, 0x000d0ffe, 0x0ff901fc,
624
625 0x020f0034, 0x0f7a0043, 0x01e80023, 0x0fa8004d,
626 0x01d30016, 0x0fbe0059, 0x01c6000a, 0x0fc90067,
627 0x01bd0000, 0x0fce0075, 0x01b50ff7, 0x0fcf0085,
628 0x01ae0fee, 0x0fcf0095, 0x01a70fe6, 0x0fcd00a6,
629 0x019d0fe0, 0x0fcb00b8, 0x01940fd9, 0x0fc900ca,
630 0x01890fd4, 0x0fc700dc, 0x017d0fcf, 0x0fc600ee,
631 0x01700fcc, 0x0fc40100, 0x01620fc9, 0x0fc40111,
632 0x01540fc6, 0x0fc30123, 0x01430fc5, 0x0fc40134,
633 0x01340fc4, 0x0fc50143, 0x01230fc3, 0x0fc60154,
634 0x01110fc4, 0x0fc90162, 0x01000fc4, 0x0fcc0170,
635 0x00ee0fc6, 0x0fcf017d, 0x00dc0fc7, 0x0fd40189,
636 0x00ca0fc9, 0x0fd90194, 0x00b80fcb, 0x0fe0019d,
637 0x00a60fcd, 0x0fe601a7, 0x00950fcf, 0x0fee01ae,
638 0x00850fcf, 0x0ff701b5, 0x00750fce, 0x000001bd,
639 0x00670fc9, 0x000a01c6, 0x00590fbe, 0x001601d3,
640 0x004d0fa8, 0x002301e8, 0x00430f7a, 0x0034020f,
641
642 0x015c005e, 0x0fde0068, 0x015c0054, 0x0fdd0073,
643 0x015b004b, 0x0fdc007e, 0x015a0042, 0x0fdb0089,
644 0x01590039, 0x0fda0094, 0x01560030, 0x0fda00a0,
645 0x01530028, 0x0fda00ab, 0x014f0020, 0x0fda00b7,
646 0x014a0019, 0x0fdb00c2, 0x01450011, 0x0fdc00ce,
647 0x013e000b, 0x0fde00d9, 0x01390004, 0x0fdf00e4,
648 0x01310ffe, 0x0fe200ef, 0x01290ff9, 0x0fe400fa,
649 0x01200ff4, 0x0fe80104, 0x01180fef, 0x0feb010e,
650 0x010e0feb, 0x0fef0118, 0x01040fe8, 0x0ff40120,
651 0x00fa0fe4, 0x0ff90129, 0x00ef0fe2, 0x0ffe0131,
652 0x00e40fdf, 0x00040139, 0x00d90fde, 0x000b013e,
653 0x00ce0fdc, 0x00110145, 0x00c20fdb, 0x0019014a,
654 0x00b70fda, 0x0020014f, 0x00ab0fda, 0x00280153,
655 0x00a00fda, 0x00300156, 0x00940fda, 0x00390159,
656 0x00890fdb, 0x0042015a, 0x007e0fdc, 0x004b015b,
657 0x00730fdd, 0x0054015c, 0x00680fde, 0x005e015c,
658
659 0x01300068, 0x0ff80070, 0x01300060, 0x0ff80078,
660 0x012f0059, 0x0ff80080, 0x012d0052, 0x0ff80089,
661 0x012b004b, 0x0ff90091, 0x01290044, 0x0ff9009a,
662 0x0126003d, 0x0ffa00a3, 0x01220037, 0x0ffb00ac,
663 0x011f0031, 0x0ffc00b4, 0x011a002b, 0x0ffe00bd,
664 0x01150026, 0x000000c5, 0x010f0021, 0x000200ce,
665 0x010a001c, 0x000400d6, 0x01030018, 0x000600df,
666 0x00fd0014, 0x000900e6, 0x00f60010, 0x000c00ee,
667 0x00ee000c, 0x001000f6, 0x00e60009, 0x001400fd,
668 0x00df0006, 0x00180103, 0x00d60004, 0x001c010a,
669 0x00ce0002, 0x0021010f, 0x00c50000, 0x00260115,
670 0x00bd0ffe, 0x002b011a, 0x00b40ffc, 0x0031011f,
671 0x00ac0ffb, 0x00370122, 0x00a30ffa, 0x003d0126,
672 0x009a0ff9, 0x00440129, 0x00910ff9, 0x004b012b,
673 0x00890ff8, 0x0052012d, 0x00800ff8, 0x0059012f,
674 0x00780ff8, 0x00600130, 0x00700ff8, 0x00680130,
675
676 0x01050079, 0x0003007f, 0x01040073, 0x00030086,
677 0x0103006d, 0x0004008c, 0x01030066, 0x00050092,
678 0x01010060, 0x00060099, 0x0100005a, 0x0007009f,
679 0x00fe0054, 0x000900a5, 0x00fa004f, 0x000b00ac,
680 0x00f80049, 0x000d00b2, 0x00f50044, 0x000f00b8,
681 0x00f2003f, 0x001200bd, 0x00ef0039, 0x001500c3,
682 0x00ea0035, 0x001800c9, 0x00e60030, 0x001c00ce,
683 0x00e3002b, 0x001f00d3, 0x00dd0027, 0x002300d9,
684 0x00d90023, 0x002700dd, 0x00d3001f, 0x002b00e3,
685 0x00ce001c, 0x003000e6, 0x00c90018, 0x003500ea,
686 0x00c30015, 0x003900ef, 0x00bd0012, 0x003f00f2,
687 0x00b8000f, 0x004400f5, 0x00b2000d, 0x004900f8,
688 0x00ac000b, 0x004f00fa, 0x00a50009, 0x005400fe,
689 0x009f0007, 0x005a0100, 0x00990006, 0x00600101,
690 0x00920005, 0x00660103, 0x008c0004, 0x006d0103,
691 0x00860003, 0x00730104, 0x007f0003, 0x00790105,
692
693 0x00cf0088, 0x001d008c, 0x00ce0084, 0x0020008e,
694 0x00cd0080, 0x00210092, 0x00cd007b, 0x00240094,
695 0x00ca0077, 0x00270098, 0x00c90073, 0x0029009b,
696 0x00c8006f, 0x002c009d, 0x00c6006b, 0x002f00a0,
697 0x00c50067, 0x003200a2, 0x00c30062, 0x003600a5,
698 0x00c0005f, 0x003900a8, 0x00c0005b, 0x003b00aa,
699 0x00be0057, 0x003e00ad, 0x00ba0054, 0x004200b0,
700 0x00b90050, 0x004500b2, 0x00b7004c, 0x004900b4,
701 0x00b40049, 0x004c00b7, 0x00b20045, 0x005000b9,
702 0x00b00042, 0x005400ba, 0x00ad003e, 0x005700be,
703 0x00aa003b, 0x005b00c0, 0x00a80039, 0x005f00c0,
704 0x00a50036, 0x006200c3, 0x00a20032, 0x006700c5,
705 0x00a0002f, 0x006b00c6, 0x009d002c, 0x006f00c8,
706 0x009b0029, 0x007300c9, 0x00980027, 0x007700ca,
707 0x00940024, 0x007b00cd, 0x00920021, 0x008000cd,
708 0x008e0020, 0x008400ce, 0x008c001d, 0x008800cf,
709
710 0x008e0083, 0x006b0084, 0x008d0083, 0x006c0084,
711 0x008d0082, 0x006d0084, 0x008d0081, 0x006d0085,
712 0x008d0080, 0x006e0085, 0x008c007f, 0x006f0086,
713 0x008b007f, 0x00700086, 0x008b007e, 0x00710086,
714 0x008b007d, 0x00720086, 0x008a007d, 0x00730086,
715 0x008a007c, 0x00730087, 0x008a007b, 0x00740087,
716 0x0089007b, 0x00750087, 0x008a0079, 0x00750088,
717 0x008a0078, 0x00760088, 0x008a0077, 0x00770088,
718 0x00880077, 0x0077008a, 0x00880076, 0x0078008a,
719 0x00880075, 0x0079008a, 0x00870075, 0x007b0089,
720 0x00870074, 0x007b008a, 0x00870073, 0x007c008a,
721 0x00860073, 0x007d008a, 0x00860072, 0x007d008b,
722 0x00860071, 0x007e008b, 0x00860070, 0x007f008b,
723 0x0086006f, 0x007f008c, 0x0085006e, 0x0080008d,
724 0x0085006d, 0x0081008d, 0x0084006d, 0x0082008d,
725 0x0084006c, 0x0083008d, 0x0084006b, 0x0083008e,
726
727 0x023c0fe2, 0x00000fe2, 0x023a0fdb, 0x00000feb,
728 0x02360fd3, 0x0fff0ff8, 0x022e0fcf, 0x0ffc0007,
729 0x02250fca, 0x0ffa0017, 0x021a0fc6, 0x0ff70029,
730 0x020c0fc4, 0x0ff4003c, 0x01fd0fc1, 0x0ff10051,
731 0x01eb0fc0, 0x0fed0068, 0x01d80fc0, 0x0fe9007f,
732 0x01c30fc1, 0x0fe50097, 0x01ac0fc2, 0x0fe200b0,
733 0x01960fc3, 0x0fdd00ca, 0x017e0fc5, 0x0fd900e4,
734 0x01650fc8, 0x0fd500fe, 0x014b0fcb, 0x0fd20118,
735 0x01330fcd, 0x0fcd0133, 0x01180fd2, 0x0fcb014b,
736 0x00fe0fd5, 0x0fc80165, 0x00e40fd9, 0x0fc5017e,
737 0x00ca0fdd, 0x0fc30196, 0x00b00fe2, 0x0fc201ac,
738 0x00970fe5, 0x0fc101c3, 0x007f0fe9, 0x0fc001d8,
739 0x00680fed, 0x0fc001eb, 0x00510ff1, 0x0fc101fd,
740 0x003c0ff4, 0x0fc4020c, 0x00290ff7, 0x0fc6021a,
741 0x00170ffa, 0x0fca0225, 0x00070ffc, 0x0fcf022e,
742 0x0ff80fff, 0x0fd30236, 0x0feb0000, 0x0fdb023a,
743
744 0x02780fc4, 0x00000fc4, 0x02770fbc, 0x0fff0fce,
745 0x02710fb5, 0x0ffe0fdc, 0x02690fb0, 0x0ffa0fed,
746 0x025f0fab, 0x0ff70fff, 0x02500fa8, 0x0ff30015,
747 0x02410fa6, 0x0fef002a, 0x022f0fa4, 0x0feb0042,
748 0x021a0fa4, 0x0fe5005d, 0x02040fa5, 0x0fe10076,
749 0x01eb0fa7, 0x0fdb0093, 0x01d20fa9, 0x0fd600af,
750 0x01b80fab, 0x0fd000cd, 0x019d0faf, 0x0fca00ea,
751 0x01810fb2, 0x0fc50108, 0x01620fb7, 0x0fc10126,
752 0x01440fbb, 0x0fbb0146, 0x01260fc1, 0x0fb70162,
753 0x01080fc5, 0x0fb20181, 0x00ea0fca, 0x0faf019d,
754 0x00cd0fd0, 0x0fab01b8, 0x00af0fd6, 0x0fa901d2,
755 0x00930fdb, 0x0fa701eb, 0x00760fe1, 0x0fa50204,
756 0x005d0fe5, 0x0fa4021a, 0x00420feb, 0x0fa4022f,
757 0x002a0fef, 0x0fa60241, 0x00150ff3, 0x0fa80250,
758 0x0fff0ff7, 0x0fab025f, 0x0fed0ffa, 0x0fb00269,
759 0x0fdc0ffe, 0x0fb50271, 0x0fce0fff, 0x0fbc0277,
760
761 0x02a00fb0, 0x00000fb0, 0x029e0fa8, 0x0fff0fbb,
762 0x02980fa1, 0x0ffd0fca, 0x028f0f9c, 0x0ff90fdc,
763 0x02840f97, 0x0ff50ff0, 0x02740f94, 0x0ff10007,
764 0x02640f92, 0x0fec001e, 0x02500f91, 0x0fe70038,
765 0x023a0f91, 0x0fe00055, 0x02220f92, 0x0fdb0071,
766 0x02080f95, 0x0fd4008f, 0x01ec0f98, 0x0fce00ae,
767 0x01cf0f9b, 0x0fc700cf, 0x01b10f9f, 0x0fc100ef,
768 0x01920fa4, 0x0fbb010f, 0x01710faa, 0x0fb50130,
769 0x01520fae, 0x0fae0152, 0x01300fb5, 0x0faa0171,
770 0x010f0fbb, 0x0fa40192, 0x00ef0fc1, 0x0f9f01b1,
771 0x00cf0fc7, 0x0f9b01cf, 0x00ae0fce, 0x0f9801ec,
772 0x008f0fd4, 0x0f950208, 0x00710fdb, 0x0f920222,
773 0x00550fe0, 0x0f91023a, 0x00380fe7, 0x0f910250,
774 0x001e0fec, 0x0f920264, 0x00070ff1, 0x0f940274,
775 0x0ff00ff5, 0x0f970284, 0x0fdc0ff9, 0x0f9c028f,
776 0x0fca0ffd, 0x0fa10298, 0x0fbb0fff, 0x0fa8029e,
777
778 0x02c80f9c, 0x00000f9c, 0x02c70f94, 0x0ffe0fa7,
779 0x02c10f8c, 0x0ffc0fb7, 0x02b70f87, 0x0ff70fcb,
780 0x02aa0f83, 0x0ff30fe0, 0x02990f80, 0x0fee0ff9,
781 0x02870f7f, 0x0fe80012, 0x02720f7e, 0x0fe2002e,
782 0x025a0f7e, 0x0fdb004d, 0x02400f80, 0x0fd5006b,
783 0x02230f84, 0x0fcd008c, 0x02050f87, 0x0fc700ad,
784 0x01e60f8b, 0x0fbf00d0, 0x01c60f90, 0x0fb700f3,
785 0x01a30f96, 0x0fb00117, 0x01800f9c, 0x0faa013a,
786 0x015d0fa2, 0x0fa2015f, 0x013a0faa, 0x0f9c0180,
787 0x01170fb0, 0x0f9601a3, 0x00f30fb7, 0x0f9001c6,
788 0x00d00fbf, 0x0f8b01e6, 0x00ad0fc7, 0x0f870205,
789 0x008c0fcd, 0x0f840223, 0x006b0fd5, 0x0f800240,
790 0x004d0fdb, 0x0f7e025a, 0x002e0fe2, 0x0f7e0272,
791 0x00120fe8, 0x0f7f0287, 0x0ff90fee, 0x0f800299,
792 0x0fe00ff3, 0x0f8302aa, 0x0fcb0ff7, 0x0f8702b7,
793 0x0fb70ffc, 0x0f8c02c1, 0x0fa70ffe, 0x0f9402c7,
794
795 0x02f00f88, 0x00000f88, 0x02ee0f80, 0x0ffe0f94,
796 0x02e70f78, 0x0ffc0fa5, 0x02dd0f73, 0x0ff60fba,
797 0x02ce0f6f, 0x0ff20fd1, 0x02be0f6c, 0x0feb0feb,
798 0x02aa0f6b, 0x0fe50006, 0x02940f6a, 0x0fde0024,
799 0x02790f6c, 0x0fd60045, 0x025e0f6e, 0x0fcf0065,
800 0x023f0f72, 0x0fc60089, 0x021d0f77, 0x0fbf00ad,
801 0x01fd0f7b, 0x0fb600d2, 0x01da0f81, 0x0fad00f8,
802 0x01b50f87, 0x0fa6011e, 0x018f0f8f, 0x0f9e0144,
803 0x016b0f95, 0x0f95016b, 0x01440f9e, 0x0f8f018f,
804 0x011e0fa6, 0x0f8701b5, 0x00f80fad, 0x0f8101da,
805 0x00d20fb6, 0x0f7b01fd, 0x00ad0fbf, 0x0f77021d,
806 0x00890fc6, 0x0f72023f, 0x00650fcf, 0x0f6e025e,
807 0x00450fd6, 0x0f6c0279, 0x00240fde, 0x0f6a0294,
808 0x00060fe5, 0x0f6b02aa, 0x0feb0feb, 0x0f6c02be,
809 0x0fd10ff2, 0x0f6f02ce, 0x0fba0ff6, 0x0f7302dd,
810 0x0fa50ffc, 0x0f7802e7, 0x0f940ffe, 0x0f8002ee,
811
812 0x03180f74, 0x00000f74, 0x03160f6b, 0x0ffe0f81,
813 0x030e0f64, 0x0ffb0f93, 0x03030f5f, 0x0ff50fa9,
814 0x02f40f5b, 0x0ff00fc1, 0x02e20f58, 0x0fe90fdd,
815 0x02cd0f57, 0x0fe20ffa, 0x02b60f57, 0x0fda0019,
816 0x02990f59, 0x0fd1003d, 0x027b0f5c, 0x0fc90060,
817 0x02590f61, 0x0fc00086, 0x02370f66, 0x0fb700ac,
818 0x02130f6b, 0x0fae00d4, 0x01ee0f72, 0x0fa400fc,
819 0x01c70f79, 0x0f9b0125, 0x019f0f81, 0x0f93014d,
820 0x01760f89, 0x0f890178, 0x014d0f93, 0x0f81019f,
821 0x01250f9b, 0x0f7901c7, 0x00fc0fa4, 0x0f7201ee,
822 0x00d40fae, 0x0f6b0213, 0x00ac0fb7, 0x0f660237,
823 0x00860fc0, 0x0f610259, 0x00600fc9, 0x0f5c027b,
824 0x003d0fd1, 0x0f590299, 0x00190fda, 0x0f5702b6,
825 0x0ffa0fe2, 0x0f5702cd, 0x0fdd0fe9, 0x0f5802e2,
826 0x0fc10ff0, 0x0f5b02f4, 0x0fa90ff5, 0x0f5f0303,
827 0x0f930ffb, 0x0f64030e, 0x0f810ffe, 0x0f6b0316,
828
829 0x03400f60, 0x00000f60, 0x033e0f57, 0x0ffe0f6d,
830 0x03370f4f, 0x0ffa0f80, 0x032a0f4b, 0x0ff30f98,
831 0x031a0f46, 0x0fee0fb2, 0x03070f44, 0x0fe60fcf,
832 0x02f10f44, 0x0fde0fed, 0x02d70f44, 0x0fd6000f,
833 0x02b80f46, 0x0fcc0036, 0x02990f4a, 0x0fc3005a,
834 0x02750f4f, 0x0fb90083, 0x02500f55, 0x0fb000ab,
835 0x022a0f5b, 0x0fa500d6, 0x02020f63, 0x0f9a0101,
836 0x01d80f6b, 0x0f91012c, 0x01ae0f74, 0x0f870157,
837 0x01840f7c, 0x0f7c0184, 0x01570f87, 0x0f7401ae,
838 0x012c0f91, 0x0f6b01d8, 0x01010f9a, 0x0f630202,
839 0x00d60fa5, 0x0f5b022a, 0x00ab0fb0, 0x0f550250,
840 0x00830fb9, 0x0f4f0275, 0x005a0fc3, 0x0f4a0299,
841 0x00360fcc, 0x0f4602b8, 0x000f0fd6, 0x0f4402d7,
842 0x0fed0fde, 0x0f4402f1, 0x0fcf0fe6, 0x0f440307,
843 0x0fb20fee, 0x0f46031a, 0x0f980ff3, 0x0f4b032a,
844 0x0f800ffa, 0x0f4f0337, 0x0f6d0ffe, 0x0f57033e,
845
846 0x02000000, 0x00000000, 0x01ff0ff9, 0x00000008,
847 0x01fb0ff2, 0x00000013, 0x01f50fed, 0x0ffe0020,
848 0x01ed0fe8, 0x0ffd002e, 0x01e30fe4, 0x0ffb003e,
849 0x01d80fe1, 0x0ff9004e, 0x01cb0fde, 0x0ff70060,
850 0x01bc0fdc, 0x0ff40074, 0x01ac0fdb, 0x0ff20087,
851 0x019a0fdb, 0x0fef009c, 0x01870fdb, 0x0fed00b1,
852 0x01740fdb, 0x0fea00c7, 0x01600fdc, 0x0fe700dd,
853 0x014b0fdd, 0x0fe500f3, 0x01350fdf, 0x0fe30109,
854 0x01200fe0, 0x0fe00120, 0x01090fe3, 0x0fdf0135,
855 0x00f30fe5, 0x0fdd014b, 0x00dd0fe7, 0x0fdc0160,
856 0x00c70fea, 0x0fdb0174, 0x00b10fed, 0x0fdb0187,
857 0x009c0fef, 0x0fdb019a, 0x00870ff2, 0x0fdb01ac,
858 0x00740ff4, 0x0fdc01bc, 0x00600ff7, 0x0fde01cb,
859 0x004e0ff9, 0x0fe101d8, 0x003e0ffb, 0x0fe401e3,
860 0x002e0ffd, 0x0fe801ed, 0x00200ffe, 0x0fed01f5,
861 0x00130000, 0x0ff201fb, 0x00080000, 0x0ff901ff,
862
863 0x02000000, 0x00000000, 0x02000000, 0x00000000,
864 0x02000000, 0x00000000, 0x02000000, 0x00000000,
865 0x02000000, 0x00000000, 0x02000000, 0x00000000,
866 0x02000000, 0x00000000, 0x02000000, 0x00000000,
867 0x02000000, 0x00000000, 0x02000000, 0x00000000,
868 0x02000000, 0x00000000, 0x02000000, 0x00000000,
869 0x02000000, 0x00000000, 0x02000000, 0x00000000,
870 0x02000000, 0x00000000, 0x02000000, 0x00000000,
871 0x02000000, 0x00000000, 0x02000000, 0x00000000,
872 0x02000000, 0x00000000, 0x02000000, 0x00000000,
873 0x02000000, 0x00000000, 0x02000000, 0x00000000,
874 0x02000000, 0x00000000, 0x02000000, 0x00000000,
875 0x02000000, 0x00000000, 0x02000000, 0x00000000,
876 0x02000000, 0x00000000, 0x02000000, 0x00000000,
877 0x02000000, 0x00000000, 0x02000000, 0x00000000,
878 0x02000000, 0x00000000, 0x02000000, 0x00000000,
879
880 0x02000000, 0x00000000, 0x01fc0ff9, 0x0ffe000d,
881 0x01f60ff3, 0x0ffb001c, 0x01ef0fed, 0x0ff9002b,
882 0x01e60fe8, 0x0ff6003c, 0x01dc0fe4, 0x0ff3004d,
883 0x01d00fe0, 0x0ff1005f, 0x01c30fde, 0x0fee0071,
884 0x01b50fdb, 0x0feb0085, 0x01a70fd9, 0x0fe80098,
885 0x01960fd8, 0x0fe600ac, 0x01850fd7, 0x0fe300c1,
886 0x01730fd7, 0x0fe100d5, 0x01610fd7, 0x0fdf00e9,
887 0x014e0fd8, 0x0fdd00fd, 0x013b0fd8, 0x0fdb0112,
888 0x01250fda, 0x0fda0127, 0x01120fdb, 0x0fd8013b,
889 0x00fd0fdd, 0x0fd8014e, 0x00e90fdf, 0x0fd70161,
890 0x00d50fe1, 0x0fd70173, 0x00c10fe3, 0x0fd70185,
891 0x00ac0fe6, 0x0fd80196, 0x00980fe8, 0x0fd901a7,
892 0x00850feb, 0x0fdb01b5, 0x00710fee, 0x0fde01c3,
893 0x005f0ff1, 0x0fe001d0, 0x004d0ff3, 0x0fe401dc,
894 0x003c0ff6, 0x0fe801e6, 0x002b0ff9, 0x0fed01ef,
895 0x001c0ffb, 0x0ff301f6, 0x000d0ffe, 0x0ff901fc,
896
897 0x020f0034, 0x0f7a0043, 0x01e80023, 0x0fa8004d,
898 0x01d30016, 0x0fbe0059, 0x01c6000a, 0x0fc90067,
899 0x01bd0000, 0x0fce0075, 0x01b50ff7, 0x0fcf0085,
900 0x01ae0fee, 0x0fcf0095, 0x01a70fe6, 0x0fcd00a6,
901 0x019d0fe0, 0x0fcb00b8, 0x01940fd9, 0x0fc900ca,
902 0x01890fd4, 0x0fc700dc, 0x017d0fcf, 0x0fc600ee,
903 0x01700fcc, 0x0fc40100, 0x01620fc9, 0x0fc40111,
904 0x01540fc6, 0x0fc30123, 0x01430fc5, 0x0fc40134,
905 0x01340fc4, 0x0fc50143, 0x01230fc3, 0x0fc60154,
906 0x01110fc4, 0x0fc90162, 0x01000fc4, 0x0fcc0170,
907 0x00ee0fc6, 0x0fcf017d, 0x00dc0fc7, 0x0fd40189,
908 0x00ca0fc9, 0x0fd90194, 0x00b80fcb, 0x0fe0019d,
909 0x00a60fcd, 0x0fe601a7, 0x00950fcf, 0x0fee01ae,
910 0x00850fcf, 0x0ff701b5, 0x00750fce, 0x000001bd,
911 0x00670fc9, 0x000a01c6, 0x00590fbe, 0x001601d3,
912 0x004d0fa8, 0x002301e8, 0x00430f7a, 0x0034020f,
913
914 0x015c005e, 0x0fde0068, 0x015c0054, 0x0fdd0073,
915 0x015b004b, 0x0fdc007e, 0x015a0042, 0x0fdb0089,
916 0x01590039, 0x0fda0094, 0x01560030, 0x0fda00a0,
917 0x01530028, 0x0fda00ab, 0x014f0020, 0x0fda00b7,
918 0x014a0019, 0x0fdb00c2, 0x01450011, 0x0fdc00ce,
919 0x013e000b, 0x0fde00d9, 0x01390004, 0x0fdf00e4,
920 0x01310ffe, 0x0fe200ef, 0x01290ff9, 0x0fe400fa,
921 0x01200ff4, 0x0fe80104, 0x01180fef, 0x0feb010e,
922 0x010e0feb, 0x0fef0118, 0x01040fe8, 0x0ff40120,
923 0x00fa0fe4, 0x0ff90129, 0x00ef0fe2, 0x0ffe0131,
924 0x00e40fdf, 0x00040139, 0x00d90fde, 0x000b013e,
925 0x00ce0fdc, 0x00110145, 0x00c20fdb, 0x0019014a,
926 0x00b70fda, 0x0020014f, 0x00ab0fda, 0x00280153,
927 0x00a00fda, 0x00300156, 0x00940fda, 0x00390159,
928 0x00890fdb, 0x0042015a, 0x007e0fdc, 0x004b015b,
929 0x00730fdd, 0x0054015c, 0x00680fde, 0x005e015c,
930
931 0x01300068, 0x0ff80070, 0x01300060, 0x0ff80078,
932 0x012f0059, 0x0ff80080, 0x012d0052, 0x0ff80089,
933 0x012b004b, 0x0ff90091, 0x01290044, 0x0ff9009a,
934 0x0126003d, 0x0ffa00a3, 0x01220037, 0x0ffb00ac,
935 0x011f0031, 0x0ffc00b4, 0x011a002b, 0x0ffe00bd,
936 0x01150026, 0x000000c5, 0x010f0021, 0x000200ce,
937 0x010a001c, 0x000400d6, 0x01030018, 0x000600df,
938 0x00fd0014, 0x000900e6, 0x00f60010, 0x000c00ee,
939 0x00ee000c, 0x001000f6, 0x00e60009, 0x001400fd,
940 0x00df0006, 0x00180103, 0x00d60004, 0x001c010a,
941 0x00ce0002, 0x0021010f, 0x00c50000, 0x00260115,
942 0x00bd0ffe, 0x002b011a, 0x00b40ffc, 0x0031011f,
943 0x00ac0ffb, 0x00370122, 0x00a30ffa, 0x003d0126,
944 0x009a0ff9, 0x00440129, 0x00910ff9, 0x004b012b,
945 0x00890ff8, 0x0052012d, 0x00800ff8, 0x0059012f,
946 0x00780ff8, 0x00600130, 0x00700ff8, 0x00680130,
947
948 0x01050079, 0x0003007f, 0x01040073, 0x00030086,
949 0x0103006d, 0x0004008c, 0x01030066, 0x00050092,
950 0x01010060, 0x00060099, 0x0100005a, 0x0007009f,
951 0x00fe0054, 0x000900a5, 0x00fa004f, 0x000b00ac,
952 0x00f80049, 0x000d00b2, 0x00f50044, 0x000f00b8,
953 0x00f2003f, 0x001200bd, 0x00ef0039, 0x001500c3,
954 0x00ea0035, 0x001800c9, 0x00e60030, 0x001c00ce,
955 0x00e3002b, 0x001f00d3, 0x00dd0027, 0x002300d9,
956 0x00d90023, 0x002700dd, 0x00d3001f, 0x002b00e3,
957 0x00ce001c, 0x003000e6, 0x00c90018, 0x003500ea,
958 0x00c30015, 0x003900ef, 0x00bd0012, 0x003f00f2,
959 0x00b8000f, 0x004400f5, 0x00b2000d, 0x004900f8,
960 0x00ac000b, 0x004f00fa, 0x00a50009, 0x005400fe,
961 0x009f0007, 0x005a0100, 0x00990006, 0x00600101,
962 0x00920005, 0x00660103, 0x008c0004, 0x006d0103,
963 0x00860003, 0x00730104, 0x007f0003, 0x00790105,
964
965 0x00cf0088, 0x001d008c, 0x00ce0084, 0x0020008e,
966 0x00cd0080, 0x00210092, 0x00cd007b, 0x00240094,
967 0x00ca0077, 0x00270098, 0x00c90073, 0x0029009b,
968 0x00c8006f, 0x002c009d, 0x00c6006b, 0x002f00a0,
969 0x00c50067, 0x003200a2, 0x00c30062, 0x003600a5,
970 0x00c0005f, 0x003900a8, 0x00c0005b, 0x003b00aa,
971 0x00be0057, 0x003e00ad, 0x00ba0054, 0x004200b0,
972 0x00b90050, 0x004500b2, 0x00b7004c, 0x004900b4,
973 0x00b40049, 0x004c00b7, 0x00b20045, 0x005000b9,
974 0x00b00042, 0x005400ba, 0x00ad003e, 0x005700be,
975 0x00aa003b, 0x005b00c0, 0x00a80039, 0x005f00c0,
976 0x00a50036, 0x006200c3, 0x00a20032, 0x006700c5,
977 0x00a0002f, 0x006b00c6, 0x009d002c, 0x006f00c8,
978 0x009b0029, 0x007300c9, 0x00980027, 0x007700ca,
979 0x00940024, 0x007b00cd, 0x00920021, 0x008000cd,
980 0x008e0020, 0x008400ce, 0x008c001d, 0x008800cf,
981
982 0x008e0083, 0x006b0084, 0x008d0083, 0x006c0084,
983 0x008d0082, 0x006d0084, 0x008d0081, 0x006d0085,
984 0x008d0080, 0x006e0085, 0x008c007f, 0x006f0086,
985 0x008b007f, 0x00700086, 0x008b007e, 0x00710086,
986 0x008b007d, 0x00720086, 0x008a007d, 0x00730086,
987 0x008a007c, 0x00730087, 0x008a007b, 0x00740087,
988 0x0089007b, 0x00750087, 0x008a0079, 0x00750088,
989 0x008a0078, 0x00760088, 0x008a0077, 0x00770088,
990 0x00880077, 0x0077008a, 0x00880076, 0x0078008a,
991 0x00880075, 0x0079008a, 0x00870075, 0x007b0089,
992 0x00870074, 0x007b008a, 0x00870073, 0x007c008a,
993 0x00860073, 0x007d008a, 0x00860072, 0x007d008b,
994 0x00860071, 0x007e008b, 0x00860070, 0x007f008b,
995 0x0086006f, 0x007f008c, 0x0085006e, 0x0080008d,
996 0x0085006d, 0x0081008d, 0x0084006d, 0x0082008d,
997 0x0084006c, 0x0083008d, 0x0084006b, 0x0083008e,
998
999 0x023c0fe2, 0x00000fe2, 0x023a0fdb, 0x00000feb,
1000 0x02360fd3, 0x0fff0ff8, 0x022e0fcf, 0x0ffc0007,
1001 0x02250fca, 0x0ffa0017, 0x021a0fc6, 0x0ff70029,
1002 0x020c0fc4, 0x0ff4003c, 0x01fd0fc1, 0x0ff10051,
1003 0x01eb0fc0, 0x0fed0068, 0x01d80fc0, 0x0fe9007f,
1004 0x01c30fc1, 0x0fe50097, 0x01ac0fc2, 0x0fe200b0,
1005 0x01960fc3, 0x0fdd00ca, 0x017e0fc5, 0x0fd900e4,
1006 0x01650fc8, 0x0fd500fe, 0x014b0fcb, 0x0fd20118,
1007 0x01330fcd, 0x0fcd0133, 0x01180fd2, 0x0fcb014b,
1008 0x00fe0fd5, 0x0fc80165, 0x00e40fd9, 0x0fc5017e,
1009 0x00ca0fdd, 0x0fc30196, 0x00b00fe2, 0x0fc201ac,
1010 0x00970fe5, 0x0fc101c3, 0x007f0fe9, 0x0fc001d8,
1011 0x00680fed, 0x0fc001eb, 0x00510ff1, 0x0fc101fd,
1012 0x003c0ff4, 0x0fc4020c, 0x00290ff7, 0x0fc6021a,
1013 0x00170ffa, 0x0fca0225, 0x00070ffc, 0x0fcf022e,
1014 0x0ff80fff, 0x0fd30236, 0x0feb0000, 0x0fdb023a,
1015
1016 0x02780fc4, 0x00000fc4, 0x02770fbc, 0x0fff0fce,
1017 0x02710fb5, 0x0ffe0fdc, 0x02690fb0, 0x0ffa0fed,
1018 0x025f0fab, 0x0ff70fff, 0x02500fa8, 0x0ff30015,
1019 0x02410fa6, 0x0fef002a, 0x022f0fa4, 0x0feb0042,
1020 0x021a0fa4, 0x0fe5005d, 0x02040fa5, 0x0fe10076,
1021 0x01eb0fa7, 0x0fdb0093, 0x01d20fa9, 0x0fd600af,
1022 0x01b80fab, 0x0fd000cd, 0x019d0faf, 0x0fca00ea,
1023 0x01810fb2, 0x0fc50108, 0x01620fb7, 0x0fc10126,
1024 0x01440fbb, 0x0fbb0146, 0x01260fc1, 0x0fb70162,
1025 0x01080fc5, 0x0fb20181, 0x00ea0fca, 0x0faf019d,
1026 0x00cd0fd0, 0x0fab01b8, 0x00af0fd6, 0x0fa901d2,
1027 0x00930fdb, 0x0fa701eb, 0x00760fe1, 0x0fa50204,
1028 0x005d0fe5, 0x0fa4021a, 0x00420feb, 0x0fa4022f,
1029 0x002a0fef, 0x0fa60241, 0x00150ff3, 0x0fa80250,
1030 0x0fff0ff7, 0x0fab025f, 0x0fed0ffa, 0x0fb00269,
1031 0x0fdc0ffe, 0x0fb50271, 0x0fce0fff, 0x0fbc0277,
1032
1033 0x02a00fb0, 0x00000fb0, 0x029e0fa8, 0x0fff0fbb,
1034 0x02980fa1, 0x0ffd0fca, 0x028f0f9c, 0x0ff90fdc,
1035 0x02840f97, 0x0ff50ff0, 0x02740f94, 0x0ff10007,
1036 0x02640f92, 0x0fec001e, 0x02500f91, 0x0fe70038,
1037 0x023a0f91, 0x0fe00055, 0x02220f92, 0x0fdb0071,
1038 0x02080f95, 0x0fd4008f, 0x01ec0f98, 0x0fce00ae,
1039 0x01cf0f9b, 0x0fc700cf, 0x01b10f9f, 0x0fc100ef,
1040 0x01920fa4, 0x0fbb010f, 0x01710faa, 0x0fb50130,
1041 0x01520fae, 0x0fae0152, 0x01300fb5, 0x0faa0171,
1042 0x010f0fbb, 0x0fa40192, 0x00ef0fc1, 0x0f9f01b1,
1043 0x00cf0fc7, 0x0f9b01cf, 0x00ae0fce, 0x0f9801ec,
1044 0x008f0fd4, 0x0f950208, 0x00710fdb, 0x0f920222,
1045 0x00550fe0, 0x0f91023a, 0x00380fe7, 0x0f910250,
1046 0x001e0fec, 0x0f920264, 0x00070ff1, 0x0f940274,
1047 0x0ff00ff5, 0x0f970284, 0x0fdc0ff9, 0x0f9c028f,
1048 0x0fca0ffd, 0x0fa10298, 0x0fbb0fff, 0x0fa8029e,
1049
1050 0x02c80f9c, 0x00000f9c, 0x02c70f94, 0x0ffe0fa7,
1051 0x02c10f8c, 0x0ffc0fb7, 0x02b70f87, 0x0ff70fcb,
1052 0x02aa0f83, 0x0ff30fe0, 0x02990f80, 0x0fee0ff9,
1053 0x02870f7f, 0x0fe80012, 0x02720f7e, 0x0fe2002e,
1054 0x025a0f7e, 0x0fdb004d, 0x02400f80, 0x0fd5006b,
1055 0x02230f84, 0x0fcd008c, 0x02050f87, 0x0fc700ad,
1056 0x01e60f8b, 0x0fbf00d0, 0x01c60f90, 0x0fb700f3,
1057 0x01a30f96, 0x0fb00117, 0x01800f9c, 0x0faa013a,
1058 0x015d0fa2, 0x0fa2015f, 0x013a0faa, 0x0f9c0180,
1059 0x01170fb0, 0x0f9601a3, 0x00f30fb7, 0x0f9001c6,
1060 0x00d00fbf, 0x0f8b01e6, 0x00ad0fc7, 0x0f870205,
1061 0x008c0fcd, 0x0f840223, 0x006b0fd5, 0x0f800240,
1062 0x004d0fdb, 0x0f7e025a, 0x002e0fe2, 0x0f7e0272,
1063 0x00120fe8, 0x0f7f0287, 0x0ff90fee, 0x0f800299,
1064 0x0fe00ff3, 0x0f8302aa, 0x0fcb0ff7, 0x0f8702b7,
1065 0x0fb70ffc, 0x0f8c02c1, 0x0fa70ffe, 0x0f9402c7,
1066
1067 0x02f00f88, 0x00000f88, 0x02ee0f80, 0x0ffe0f94,
1068 0x02e70f78, 0x0ffc0fa5, 0x02dd0f73, 0x0ff60fba,
1069 0x02ce0f6f, 0x0ff20fd1, 0x02be0f6c, 0x0feb0feb,
1070 0x02aa0f6b, 0x0fe50006, 0x02940f6a, 0x0fde0024,
1071 0x02790f6c, 0x0fd60045, 0x025e0f6e, 0x0fcf0065,
1072 0x023f0f72, 0x0fc60089, 0x021d0f77, 0x0fbf00ad,
1073 0x01fd0f7b, 0x0fb600d2, 0x01da0f81, 0x0fad00f8,
1074 0x01b50f87, 0x0fa6011e, 0x018f0f8f, 0x0f9e0144,
1075 0x016b0f95, 0x0f95016b, 0x01440f9e, 0x0f8f018f,
1076 0x011e0fa6, 0x0f8701b5, 0x00f80fad, 0x0f8101da,
1077 0x00d20fb6, 0x0f7b01fd, 0x00ad0fbf, 0x0f77021d,
1078 0x00890fc6, 0x0f72023f, 0x00650fcf, 0x0f6e025e,
1079 0x00450fd6, 0x0f6c0279, 0x00240fde, 0x0f6a0294,
1080 0x00060fe5, 0x0f6b02aa, 0x0feb0feb, 0x0f6c02be,
1081 0x0fd10ff2, 0x0f6f02ce, 0x0fba0ff6, 0x0f7302dd,
1082 0x0fa50ffc, 0x0f7802e7, 0x0f940ffe, 0x0f8002ee,
1083
1084 0x03180f74, 0x00000f74, 0x03160f6b, 0x0ffe0f81,
1085 0x030e0f64, 0x0ffb0f93, 0x03030f5f, 0x0ff50fa9,
1086 0x02f40f5b, 0x0ff00fc1, 0x02e20f58, 0x0fe90fdd,
1087 0x02cd0f57, 0x0fe20ffa, 0x02b60f57, 0x0fda0019,
1088 0x02990f59, 0x0fd1003d, 0x027b0f5c, 0x0fc90060,
1089 0x02590f61, 0x0fc00086, 0x02370f66, 0x0fb700ac,
1090 0x02130f6b, 0x0fae00d4, 0x01ee0f72, 0x0fa400fc,
1091 0x01c70f79, 0x0f9b0125, 0x019f0f81, 0x0f93014d,
1092 0x01760f89, 0x0f890178, 0x014d0f93, 0x0f81019f,
1093 0x01250f9b, 0x0f7901c7, 0x00fc0fa4, 0x0f7201ee,
1094 0x00d40fae, 0x0f6b0213, 0x00ac0fb7, 0x0f660237,
1095 0x00860fc0, 0x0f610259, 0x00600fc9, 0x0f5c027b,
1096 0x003d0fd1, 0x0f590299, 0x00190fda, 0x0f5702b6,
1097 0x0ffa0fe2, 0x0f5702cd, 0x0fdd0fe9, 0x0f5802e2,
1098 0x0fc10ff0, 0x0f5b02f4, 0x0fa90ff5, 0x0f5f0303,
1099 0x0f930ffb, 0x0f64030e, 0x0f810ffe, 0x0f6b0316,
1100
1101 0x03400f60, 0x00000f60, 0x033e0f57, 0x0ffe0f6d,
1102 0x03370f4f, 0x0ffa0f80, 0x032a0f4b, 0x0ff30f98,
1103 0x031a0f46, 0x0fee0fb2, 0x03070f44, 0x0fe60fcf,
1104 0x02f10f44, 0x0fde0fed, 0x02d70f44, 0x0fd6000f,
1105 0x02b80f46, 0x0fcc0036, 0x02990f4a, 0x0fc3005a,
1106 0x02750f4f, 0x0fb90083, 0x02500f55, 0x0fb000ab,
1107 0x022a0f5b, 0x0fa500d6, 0x02020f63, 0x0f9a0101,
1108 0x01d80f6b, 0x0f91012c, 0x01ae0f74, 0x0f870157,
1109 0x01840f7c, 0x0f7c0184, 0x01570f87, 0x0f7401ae,
1110 0x012c0f91, 0x0f6b01d8, 0x01010f9a, 0x0f630202,
1111 0x00d60fa5, 0x0f5b022a, 0x00ab0fb0, 0x0f550250,
1112 0x00830fb9, 0x0f4f0275, 0x005a0fc3, 0x0f4a0299,
1113 0x00360fcc, 0x0f4602b8, 0x000f0fd6, 0x0f4402d7,
1114 0x0fed0fde, 0x0f4402f1, 0x0fcf0fe6, 0x0f440307,
1115 0x0fb20fee, 0x0f46031a, 0x0f980ff3, 0x0f4b032a,
1116 0x0f800ffa, 0x0f4f0337, 0x0f6d0ffe, 0x0f57033e
1117};
1118
1119
1120#define MDP4_QSEED_TABLE0_OFF 0x8100
1121#define MDP4_QSEED_TABLE1_OFF 0x8200
1122#define MDP4_QSEED_TABLE2_OFF 0x9000
1123
1124void mdp4_vg_qseed_init(int vp_num)
1125{
1126 uint32 *off;
1127 int i, voff;
1128
1129 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1130
1131 voff = MDP4_VIDEO_OFF * vp_num;
1132 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1133 MDP4_QSEED_TABLE0_OFF);
1134 for (i = 0; i < (sizeof(vg_qseed_table0) / sizeof(uint32)); i++) {
1135 outpdw(off, vg_qseed_table0[i]);
1136 off++;
1137 /* This code is added to workaround the 1K Boundary AXI
1138 Interleave operations from Scorpion that can potentially
1139 corrupt the QSEED table. The idea is to complete the prevous
1140 to the buffer before making the next write when address is
1141 1KB aligned to ensure the write has been committed prior to
1142 next instruction write that can go out from the secondary AXI
1143 port.This happens also because of the expected write sequence
1144 from QSEED table, where LSP has to be written first then the
1145 MSP to trigger both to write out to SRAM, if this has not been
1146 the expectation, then corruption wouldn't have happened.*/
1147
1148 if (!((uint32)off & 0x3FF))
1149 wmb();
1150 }
1151
1152 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1153 MDP4_QSEED_TABLE1_OFF);
1154 for (i = 0; i < (sizeof(vg_qseed_table1) / sizeof(uint32)); i++) {
1155 outpdw(off, vg_qseed_table1[i]);
1156 off++;
1157 if (!((uint32)off & 0x3FF))
1158 wmb();
1159 }
1160
1161 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1162 MDP4_QSEED_TABLE2_OFF);
1163 for (i = 0; i < (sizeof(vg_qseed_table2) / sizeof(uint32)); i++) {
1164 outpdw(off, vg_qseed_table2[i]);
1165 off++;
1166 if (!((uint32)off & 0x3FF))
1167 wmb();
1168 }
1169
1170 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1171
1172}
1173
1174void mdp4_mixer_blend_init(mixer_num)
1175{
1176 unsigned char *overlay_base;
1177 int off;
1178
1179 if (mixer_num) /* mixer number, /dev/fb0, /dev/fb1 */
1180 overlay_base = MDP_BASE + MDP4_OVERLAYPROC1_BASE;/* 0x18000 */
1181 else
1182 overlay_base = MDP_BASE + MDP4_OVERLAYPROC0_BASE;/* 0x10000 */
1183
1184 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1185
1186 /* stage 0 to stage 2 */
1187 off = 0;
1188 outpdw(overlay_base + off + 0x104, 0x010);
1189 outpdw(overlay_base + off + 0x108, 0xff);/* FG */
1190 outpdw(overlay_base + off + 0x10c, 0x00);/* BG */
1191
1192 off += 0x20;
1193 outpdw(overlay_base + off + 0x104, 0x010);
1194 outpdw(overlay_base + off + 0x108, 0xff);/* FG */
1195 outpdw(overlay_base + off + 0x10c, 0x00);/* BG */
1196
1197 off += 0x20;
1198 outpdw(overlay_base + off + 0x104, 0x010);
1199 outpdw(overlay_base + off + 0x108, 0xff);/* FG */
1200 outpdw(overlay_base + off + 0x10c, 0x00);/* BG */
1201
1202 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1203}
1204
1205
1206static uint32 csc_matrix_tab[9] = {
1207 0x0254, 0x0000, 0x0331,
1208 0x0254, 0xff37, 0xfe60,
1209 0x0254, 0x0409, 0x0000
1210};
1211
1212static uint32 csc_pre_bv_tab[3] = {0xfff0, 0xff80, 0xff80 };
1213static uint32 csc_post_bv_tab[3] = {0, 0, 0 };
1214
1215static uint32 csc_pre_lv_tab[6] = {0, 0xff, 0, 0xff, 0, 0xff };
1216static uint32 csc_post_lv_tab[6] = {0, 0xff, 0, 0xff, 0, 0xff };
1217
1218#define MDP4_CSC_MV_OFF 0x4400
1219#define MDP4_CSC_PRE_BV_OFF 0x4500
1220#define MDP4_CSC_POST_BV_OFF 0x4580
1221#define MDP4_CSC_PRE_LV_OFF 0x4600
1222#define MDP4_CSC_POST_LV_OFF 0x4680
1223
1224void mdp4_vg_csc_mv_setup(int vp_num)
1225{
1226 uint32 *off;
1227 int i, voff;
1228
1229 voff = MDP4_VIDEO_OFF * vp_num;
1230 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1231 MDP4_CSC_MV_OFF);
1232
1233 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1234 for (i = 0; i < 9; i++) {
1235 outpdw(off, csc_matrix_tab[i]);
1236 off++;
1237 }
1238 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1239}
1240
1241void mdp4_vg_csc_pre_bv_setup(int vp_num)
1242{
1243 uint32 *off;
1244 int i, voff;
1245
1246 voff = MDP4_VIDEO_OFF * vp_num;
1247 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1248 MDP4_CSC_PRE_BV_OFF);
1249
1250 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1251 for (i = 0; i < 3; i++) {
1252 outpdw(off, csc_pre_bv_tab[i]);
1253 off++;
1254 }
1255 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1256}
1257
1258void mdp4_vg_csc_post_bv_setup(int vp_num)
1259{
1260 uint32 *off;
1261 int i, voff;
1262
1263 voff = MDP4_VIDEO_OFF * vp_num;
1264 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1265 MDP4_CSC_POST_BV_OFF);
1266
1267 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1268 for (i = 0; i < 3; i++) {
1269 outpdw(off, csc_post_bv_tab[i]);
1270 off++;
1271 }
1272 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1273}
1274
1275void mdp4_vg_csc_pre_lv_setup(int vp_num)
1276{
1277 uint32 *off;
1278 int i, voff;
1279
1280 voff = MDP4_VIDEO_OFF * vp_num;
1281 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1282 MDP4_CSC_PRE_LV_OFF);
1283
1284 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1285 for (i = 0; i < 6; i++) {
1286 outpdw(off, csc_pre_lv_tab[i]);
1287 off++;
1288 }
1289 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1290}
1291
1292void mdp4_vg_csc_post_lv_setup(int vp_num)
1293{
1294 uint32 *off;
1295 int i, voff;
1296
1297 voff = MDP4_VIDEO_OFF * vp_num;
1298 off = (uint32 *)(MDP_BASE + MDP4_VIDEO_BASE + voff +
1299 MDP4_CSC_POST_LV_OFF);
1300
1301 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1302 for (i = 0; i < 6; i++) {
1303 outpdw(off, csc_post_lv_tab[i]);
1304 off++;
1305 }
1306 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1307}
1308
1309static uint32 csc_rgb2yuv_matrix_tab[9] = {
1310 0x0083, 0x0102, 0x0032,
1311 0x1fb5, 0x1f6c, 0x00e1,
1312 0x00e1, 0x1f45, 0x1fdc
1313};
1314
1315static uint32 csc_rgb2yuv_pre_bv_tab[3] = {0, 0, 0};
1316
1317static uint32 csc_rgb2yuv_post_bv_tab[3] = {0x0010, 0x0080, 0x0080};
1318
1319static uint32 csc_rgb2yuv_pre_lv_tab[6] = {
1320 0x00, 0xff, 0x00,
1321 0xff, 0x00, 0xff
1322};
1323
1324static uint32 csc_rgb2yuv_post_lv_tab[6] = {
1325 0x0010, 0x00eb, 0x0010,
1326 0x00f0, 0x0010, 0x00f0
1327};
1328
1329void mdp4_mixer1_csc_mv_setup(void)
1330{
1331 uint32 *off;
1332 int i;
1333
1334 off = (uint32 *)(MDP_BASE + MDP4_OVERLAYPROC1_BASE + 0x2400);
1335
1336 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1337 for (i = 0; i < 9; i++) {
1338 outpdw(off, csc_rgb2yuv_matrix_tab[i]);
1339 off++;
1340 }
1341 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1342}
1343
1344void mdp4_mixer1_csc_pre_bv_setup(void)
1345{
1346 uint32 *off;
1347 int i;
1348
1349 off = (uint32 *)(MDP_BASE + MDP4_OVERLAYPROC1_BASE + 0x2500);
1350
1351 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1352 for (i = 0; i < 3; i++) {
1353 outpdw(off, csc_rgb2yuv_pre_bv_tab[i]);
1354 off++;
1355 }
1356 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1357}
1358
1359void mdp4_mixer1_csc_post_bv_setup(void)
1360{
1361 uint32 *off;
1362 int i;
1363
1364 off = (uint32 *)(MDP_BASE + MDP4_OVERLAYPROC1_BASE + 0x2580);
1365
1366 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1367 for (i = 0; i < 3; i++) {
1368 outpdw(off, csc_rgb2yuv_post_bv_tab[i]);
1369 off++;
1370 }
1371 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1372}
1373
1374void mdp4_mixer1_csc_pre_lv_setup(void)
1375{
1376 uint32 *off;
1377 int i;
1378
1379 off = (uint32 *)(MDP_BASE + MDP4_OVERLAYPROC1_BASE + 0x2600);
1380
1381 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1382 for (i = 0; i < 6; i++) {
1383 outpdw(off, csc_rgb2yuv_pre_lv_tab[i]);
1384 off++;
1385 }
1386 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1387}
1388
1389void mdp4_mixer1_csc_post_lv_setup(void)
1390{
1391 uint32 *off;
1392 int i;
1393
1394 off = (uint32 *)(MDP_BASE + MDP4_OVERLAYPROC1_BASE + 0x2680);
1395
1396 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1397 for (i = 0; i < 6; i++) {
1398 outpdw(off, csc_rgb2yuv_post_lv_tab[i]);
1399 off++;
1400 }
1401 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1402}
1403
1404
1405char gc_lut[] = {
1406 0x0, 0x1, 0x2, 0x2, 0x3, 0x4, 0x5, 0x6,
1407 0x6, 0x7, 0x8, 0x9, 0xA, 0xA, 0xB, 0xC,
1408 0xD, 0xD, 0xE, 0xF, 0xF, 0x10, 0x10, 0x11,
1409 0x12, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x15,
1410 0x16, 0x16, 0x17, 0x17, 0x17, 0x18, 0x18, 0x19,
1411 0x19, 0x19, 0x1A, 0x1A, 0x1B, 0x1B, 0x1B, 0x1C,
1412 0x1C, 0x1D, 0x1D, 0x1D, 0x1E, 0x1E, 0x1E, 0x1F,
1413 0x1F, 0x1F, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21,
1414 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24,
1415 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, 0x26, 0x26,
1416 0x26, 0x26, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28,
1417 0x28, 0x29, 0x29, 0x29, 0x29, 0x2A, 0x2A, 0x2A,
1418 0x2A, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2C, 0x2C,
1419 0x2C, 0x2C, 0x2D, 0x2D, 0x2D, 0x2D, 0x2E, 0x2E,
1420 0x2E, 0x2E, 0x2E, 0x2F, 0x2F, 0x2F, 0x2F, 0x30,
1421 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x31, 0x31,
1422 0x31, 0x32, 0x32, 0x32, 0x32, 0x32, 0x33, 0x33,
1423 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34,
1424 0x35, 0x35, 0x35, 0x35, 0x35, 0x36, 0x36, 0x36,
1425 0x36, 0x36, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37,
1426 0x38, 0x38, 0x38, 0x38, 0x38, 0x39, 0x39, 0x39,
1427 0x39, 0x39, 0x39, 0x3A, 0x3A, 0x3A, 0x3A, 0x3A,
1428 0x3A, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3C,
1429 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3D, 0x3D, 0x3D,
1430 0x3D, 0x3D, 0x3D, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E,
1431 0x3E, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x40,
1432 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41,
1433 0x41, 0x41, 0x41, 0x41, 0x42, 0x42, 0x42, 0x42,
1434 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43,
1435 0x43, 0x43, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44,
1436 0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45,
1437 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x47,
1438 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x48, 0x48,
1439 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49,
1440 0x49, 0x49, 0x49, 0x49, 0x49, 0x4A, 0x4A, 0x4A,
1441 0x4A, 0x4A, 0x4A, 0x4A, 0x4A, 0x4B, 0x4B, 0x4B,
1442 0x4B, 0x4B, 0x4B, 0x4B, 0x4B, 0x4C, 0x4C, 0x4C,
1443 0x4C, 0x4C, 0x4C, 0x4C, 0x4D, 0x4D, 0x4D, 0x4D,
1444 0x4D, 0x4D, 0x4D, 0x4D, 0x4E, 0x4E, 0x4E, 0x4E,
1445 0x4E, 0x4E, 0x4E, 0x4E, 0x4E, 0x4F, 0x4F, 0x4F,
1446 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x50, 0x50, 0x50,
1447 0x50, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51,
1448 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x52, 0x52,
1449 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53,
1450 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54,
1451 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
1452 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
1453 0x55, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
1454 0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57,
1455 0x57, 0x57, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58,
1456 0x58, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59,
1457 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x5A, 0x5A,
1458 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
1459 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B, 0x5B,
1460 0x5B, 0x5B, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C, 0x5C,
1461 0x5C, 0x5C, 0x5C, 0x5C, 0x5D, 0x5D, 0x5D, 0x5D,
1462 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5E, 0x5E,
1463 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E, 0x5E,
1464 0x5F, 0x5F, 0x5F, 0x5F, 0x5F, 0x5F, 0x5F, 0x5F,
1465 0x5F, 0x5F, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
1466 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1467 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x62,
1468 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62,
1469 0x62, 0x62, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
1470 0x63, 0x63, 0x63, 0x63, 0x63, 0x64, 0x64, 0x64,
1471 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64,
1472 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65,
1473 0x65, 0x65, 0x65, 0x66, 0x66, 0x66, 0x66, 0x66,
1474 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67,
1475 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67,
1476 0x67, 0x67, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68,
1477 0x68, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
1478 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69,
1479 0x69, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6A,
1480 0x6A, 0x6A, 0x6A, 0x6A, 0x6A, 0x6B, 0x6B, 0x6B,
1481 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
1482 0x6B, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6C,
1483 0x6C, 0x6C, 0x6C, 0x6C, 0x6C, 0x6D, 0x6D, 0x6D,
1484 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D,
1485 0x6D, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E,
1486 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x6F, 0x6F, 0x6F,
1487 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F, 0x6F,
1488 0x6F, 0x6F, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70,
1489 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x71, 0x71,
1490 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71,
1491 0x71, 0x71, 0x71, 0x72, 0x72, 0x72, 0x72, 0x72,
1492 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
1493 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73,
1494 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
1495 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74,
1496 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
1497 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75,
1498 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76,
1499 0x76, 0x76, 0x76, 0x76, 0x76, 0x77, 0x77, 0x77,
1500 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77,
1501 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x78, 0x78,
1502 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
1503 0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79,
1504 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x7A, 0x7A,
1505 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A,
1506 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7B, 0x7B, 0x7B,
1507 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B, 0x7B,
1508 0x7B, 0x7B, 0x7B, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
1509 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,
1510 0x7C, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D,
1511 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D, 0x7D,
1512 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E,
1513 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F,
1514 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
1515 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x80, 0x80, 0x80,
1516 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
1517 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81,
1518 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
1519 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82, 0x82,
1520 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82,
1521 0x82, 0x82, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
1522 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83,
1523 0x83, 0x83, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
1524 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84,
1525 0x84, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
1526 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
1527 0x85, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
1528 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86,
1529 0x86, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
1530 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87,
1531 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
1532 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
1533 0x88, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
1534 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
1535 0x89, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
1536 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A, 0x8A,
1537 0x8A, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
1538 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B, 0x8B,
1539 0x8B, 0x8B, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
1540 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C, 0x8C,
1541 0x8C, 0x8C, 0x8C, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
1542 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D, 0x8D,
1543 0x8D, 0x8D, 0x8D, 0x8D, 0x8E, 0x8E, 0x8E, 0x8E,
1544 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8E,
1545 0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x8F, 0x8F, 0x8F,
1546 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F,
1547 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x8F, 0x90, 0x90,
1548 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
1549 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x91,
1550 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
1551 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91,
1552 0x91, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
1553 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92,
1554 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
1555 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93,
1556 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
1557 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
1558 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x95, 0x95,
1559 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
1560 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95,
1561 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
1562 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96,
1563 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x97,
1564 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97,
1565 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1566 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
1567 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
1568 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
1569 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99,
1570 0x99, 0x99, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
1571 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9A,
1572 0x9A, 0x9A, 0x9A, 0x9A, 0x9A, 0x9B, 0x9B, 0x9B,
1573 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
1574 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B,
1575 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
1576 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C,
1577 0x9C, 0x9C, 0x9C, 0x9C, 0x9D, 0x9D, 0x9D, 0x9D,
1578 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D,
1579 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9D, 0x9E,
1580 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
1581 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E, 0x9E,
1582 0x9E, 0x9E, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
1583 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F,
1584 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0x9F, 0xA0, 0xA0,
1585 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
1586 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0, 0xA0,
1587 0xA0, 0xA0, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
1588 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1,
1589 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA1, 0xA2, 0xA2,
1590 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
1591 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2, 0xA2,
1592 0xA2, 0xA2, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
1593 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
1594 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA4, 0xA4,
1595 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
1596 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4, 0xA4,
1597 0xA4, 0xA4, 0xA4, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
1598 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
1599 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5, 0xA5,
1600 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
1601 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6, 0xA6,
1602 0xA6, 0xA6, 0xA6, 0xA6, 0xA7, 0xA7, 0xA7, 0xA7,
1603 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
1604 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7,
1605 0xA7, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
1606 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8,
1607 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA9,
1608 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
1609 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9, 0xA9,
1610 0xA9, 0xA9, 0xA9, 0xA9, 0xAA, 0xAA, 0xAA, 0xAA,
1611 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
1612 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
1613 0xAA, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
1614 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB,
1615 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAB, 0xAC,
1616 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
1617 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC,
1618 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAD, 0xAD, 0xAD,
1619 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
1620 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD, 0xAD,
1621 0xAD, 0xAD, 0xAD, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
1622 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
1623 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
1624 0xAE, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
1625 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF,
1626 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xAF, 0xB0,
1627 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
1628 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0,
1629 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB1, 0xB1,
1630 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1,
1631 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1, 0xB1,
1632 0xB1, 0xB1, 0xB1, 0xB1, 0xB2, 0xB2, 0xB2, 0xB2,
1633 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
1634 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
1635 0xB2, 0xB2, 0xB2, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
1636 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
1637 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3, 0xB3,
1638 0xB3, 0xB3, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
1639 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
1640 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4, 0xB4,
1641 0xB4, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
1642 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
1643 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
1644 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
1645 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
1646 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6, 0xB6,
1647 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7,
1648 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7,
1649 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB7, 0xB8,
1650 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8,
1651 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8,
1652 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB8, 0xB9,
1653 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
1654 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
1655 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xBA,
1656 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
1657 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA,
1658 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBB,
1659 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
1660 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
1661 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
1662 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
1663 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
1664 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC, 0xBC,
1665 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
1666 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
1667 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD, 0xBD,
1668 0xBD, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
1669 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
1670 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE, 0xBE,
1671 0xBE, 0xBE, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
1672 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
1673 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF, 0xBF,
1674 0xBF, 0xBF, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
1675 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
1676 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
1677 0xC0, 0xC0, 0xC0, 0xC0, 0xC1, 0xC1, 0xC1, 0xC1,
1678 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
1679 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1,
1680 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC2, 0xC2, 0xC2,
1681 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2,
1682 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2,
1683 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC2, 0xC3, 0xC3,
1684 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
1685 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
1686 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3,
1687 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
1688 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
1689 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4, 0xC4,
1690 0xC4, 0xC4, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5,
1691 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5,
1692 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5, 0xC5,
1693 0xC5, 0xC5, 0xC5, 0xC5, 0xC6, 0xC6, 0xC6, 0xC6,
1694 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
1695 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
1696 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC7, 0xC7,
1697 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7,
1698 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7,
1699 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7, 0xC7,
1700 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
1701 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
1702 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8, 0xC8,
1703 0xC8, 0xC8, 0xC8, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9,
1704 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9,
1705 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9,
1706 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xCA, 0xCA,
1707 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
1708 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
1709 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA,
1710 0xCA, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB,
1711 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB,
1712 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB,
1713 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCC, 0xCC, 0xCC,
1714 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
1715 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
1716 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCD,
1717 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,
1718 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,
1719 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD, 0xCD,
1720 0xCD, 0xCD, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
1721 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
1722 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE,
1723 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0xCF, 0xCF,
1724 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF,
1725 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF,
1726 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF, 0xCF,
1727 0xCF, 0xCF, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0,
1728 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0,
1729 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0,
1730 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD1, 0xD1, 0xD1,
1731 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
1732 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
1733 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1, 0xD1,
1734 0xD1, 0xD1, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2,
1735 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2,
1736 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2,
1737 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD2, 0xD3, 0xD3,
1738 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3,
1739 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3,
1740 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3, 0xD3,
1741 0xD3, 0xD3, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4,
1742 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4,
1743 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4,
1744 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD4, 0xD5,
1745 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5,
1746 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5,
1747 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5, 0xD5,
1748 0xD5, 0xD5, 0xD5, 0xD5, 0xD6, 0xD6, 0xD6, 0xD6,
1749 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6,
1750 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6,
1751 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6,
1752 0xD6, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
1753 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
1754 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7,
1755 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD8,
1756 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
1757 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
1758 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8,
1759 0xD8, 0xD8, 0xD8, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1760 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1761 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1762 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9, 0xD9,
1763 0xD9, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA,
1764 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA,
1765 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA,
1766 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDA, 0xDB, 0xDB,
1767 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB,
1768 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB,
1769 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB,
1770 0xDB, 0xDB, 0xDB, 0xDB, 0xDC, 0xDC, 0xDC, 0xDC,
1771 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
1772 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
1773 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC, 0xDC,
1774 0xDC, 0xDC, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1775 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1776 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1777 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD,
1778 0xDD, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE,
1779 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE,
1780 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE,
1781 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDE, 0xDF,
1782 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF,
1783 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF,
1784 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF,
1785 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xDF, 0xE0, 0xE0,
1786 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
1787 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
1788 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
1789 0xE0, 0xE0, 0xE0, 0xE0, 0xE1, 0xE1, 0xE1, 0xE1,
1790 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1,
1791 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1,
1792 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1, 0xE1,
1793 0xE1, 0xE1, 0xE1, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1794 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1795 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1796 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2, 0xE2,
1797 0xE2, 0xE2, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1798 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1799 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1800 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3, 0xE3,
1801 0xE3, 0xE3, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1802 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1803 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1804 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4,
1805 0xE4, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1806 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1807 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1808 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5, 0xE5,
1809 0xE5, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1810 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1811 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1812 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6, 0xE6,
1813 0xE6, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1814 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1815 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1816 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7,
1817 0xE7, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1818 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1819 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1820 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8, 0xE8,
1821 0xE8, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1822 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1823 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1824 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9, 0xE9,
1825 0xE9, 0xE9, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1826 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1827 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1828 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA, 0xEA,
1829 0xEA, 0xEA, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1830 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1831 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1832 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB,
1833 0xEB, 0xEB, 0xEB, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1834 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1835 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1836 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC, 0xEC,
1837 0xEC, 0xEC, 0xEC, 0xEC, 0xED, 0xED, 0xED, 0xED,
1838 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
1839 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
1840 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED, 0xED,
1841 0xED, 0xED, 0xED, 0xED, 0xED, 0xEE, 0xEE, 0xEE,
1842 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
1843 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
1844 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE,
1845 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xEF,
1846 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1847 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1848 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1849 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF, 0xEF,
1850 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1851 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1852 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1853 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
1854 0xF0, 0xF0, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1855 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1856 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1857 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1,
1858 0xF1, 0xF1, 0xF1, 0xF1, 0xF2, 0xF2, 0xF2, 0xF2,
1859 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
1860 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
1861 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
1862 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2, 0xF3, 0xF3,
1863 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1864 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1865 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1866 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3, 0xF3,
1867 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1868 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1869 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1870 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4, 0xF4,
1871 0xF4, 0xF4, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1872 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1873 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1874 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF5,
1875 0xF5, 0xF5, 0xF5, 0xF5, 0xF5, 0xF6, 0xF6, 0xF6,
1876 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1877 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1878 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1879 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6, 0xF6,
1880 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1881 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1882 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1883 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7, 0xF7,
1884 0xF7, 0xF7, 0xF7, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1885 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1886 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1887 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
1888 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF9, 0xF9,
1889 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1890 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1891 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1892 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9,
1893 0xF9, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1894 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1895 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1896 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFA,
1897 0xFA, 0xFA, 0xFA, 0xFA, 0xFA, 0xFB, 0xFB, 0xFB,
1898 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1899 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1900 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1901 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB, 0xFB,
1902 0xFB, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1903 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1904 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1905 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
1906 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFD, 0xFD, 0xFD,
1907 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1908 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1909 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1910 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD,
1911 0xFD, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1912 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1913 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1914 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
1915 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
1916 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1917 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
1918};
1919
1920void mdp4_mixer_gc_lut_setup(int mixer_num)
1921{
1922 unsigned char *base;
1923 uint32 data;
1924 char val;
1925 int i, off;
1926
1927 if (mixer_num) /* mixer number, /dev/fb0, /dev/fb1 */
1928 base = MDP_BASE + MDP4_OVERLAYPROC1_BASE;/* 0x18000 */
1929 else
1930 base = MDP_BASE + MDP4_OVERLAYPROC0_BASE;/* 0x10000 */
1931
1932 base += 0x4000; /* GC_LUT offset */
1933
1934 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1935 off = 0;
1936 for (i = 0; i < 4096; i++) {
1937 val = gc_lut[i];
1938 data = (val << 16 | val << 8 | val); /* R, B, and G are same */
1939 outpdw(base + off, data);
1940 off += 4;
1941 }
1942 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1943}
1944
1945uint32 igc_video_lut[] = { /* non linear */
1946 0x0, 0x1, 0x2, 0x4, 0x5, 0x6, 0x7, 0x9,
1947 0xA, 0xB, 0xC, 0xE, 0xF, 0x10, 0x12, 0x14,
1948 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F, 0x21, 0x23,
1949 0x25, 0x28, 0x2A, 0x2D, 0x30, 0x32, 0x35, 0x38,
1950 0x3B, 0x3E, 0x42, 0x45, 0x48, 0x4C, 0x4F, 0x53,
1951 0x57, 0x5B, 0x5F, 0x63, 0x67, 0x6B, 0x70, 0x74,
1952 0x79, 0x7E, 0x83, 0x88, 0x8D, 0x92, 0x97, 0x9C,
1953 0xA2, 0xA8, 0xAD, 0xB3, 0xB9, 0xBF, 0xC5, 0xCC,
1954 0xD2, 0xD8, 0xDF, 0xE6, 0xED, 0xF4, 0xFB, 0x102,
1955 0x109, 0x111, 0x118, 0x120, 0x128, 0x130, 0x138, 0x140,
1956 0x149, 0x151, 0x15A, 0x162, 0x16B, 0x174, 0x17D, 0x186,
1957 0x190, 0x199, 0x1A3, 0x1AC, 0x1B6, 0x1C0, 0x1CA, 0x1D5,
1958 0x1DF, 0x1EA, 0x1F4, 0x1FF, 0x20A, 0x215, 0x220, 0x22B,
1959 0x237, 0x242, 0x24E, 0x25A, 0x266, 0x272, 0x27F, 0x28B,
1960 0x298, 0x2A4, 0x2B1, 0x2BE, 0x2CB, 0x2D8, 0x2E6, 0x2F3,
1961 0x301, 0x30F, 0x31D, 0x32B, 0x339, 0x348, 0x356, 0x365,
1962 0x374, 0x383, 0x392, 0x3A1, 0x3B1, 0x3C0, 0x3D0, 0x3E0,
1963 0x3F0, 0x400, 0x411, 0x421, 0x432, 0x443, 0x454, 0x465,
1964 0x476, 0x487, 0x499, 0x4AB, 0x4BD, 0x4CF, 0x4E1, 0x4F3,
1965 0x506, 0x518, 0x52B, 0x53E, 0x551, 0x565, 0x578, 0x58C,
1966 0x5A0, 0x5B3, 0x5C8, 0x5DC, 0x5F0, 0x605, 0x61A, 0x62E,
1967 0x643, 0x659, 0x66E, 0x684, 0x699, 0x6AF, 0x6C5, 0x6DB,
1968 0x6F2, 0x708, 0x71F, 0x736, 0x74D, 0x764, 0x77C, 0x793,
1969 0x7AB, 0x7C3, 0x7DB, 0x7F3, 0x80B, 0x824, 0x83D, 0x855,
1970 0x86F, 0x888, 0x8A1, 0x8BB, 0x8D4, 0x8EE, 0x908, 0x923,
1971 0x93D, 0x958, 0x973, 0x98E, 0x9A9, 0x9C4, 0x9DF, 0x9FB,
1972 0xA17, 0xA33, 0xA4F, 0xA6C, 0xA88, 0xAA5, 0xAC2, 0xADF,
1973 0xAFC, 0xB19, 0xB37, 0xB55, 0xB73, 0xB91, 0xBAF, 0xBCE,
1974 0xBEC, 0xC0B, 0xC2A, 0xC4A, 0xC69, 0xC89, 0xCA8, 0xCC8,
1975 0xCE8, 0xD09, 0xD29, 0xD4A, 0xD6B, 0xD8C, 0xDAD, 0xDCF,
1976 0xDF0, 0xE12, 0xE34, 0xE56, 0xE79, 0xE9B, 0xEBE, 0xEE1,
1977 0xF04, 0xF27, 0xF4B, 0xF6E, 0xF92, 0xFB6, 0xFDB, 0xFFF,
1978};
1979
1980void mdp4_vg_igc_lut_setup(int vp_num)
1981{
1982 unsigned char *base;
1983 int i, voff, off;
1984 uint32 data, val;
1985
1986 voff = MDP4_VIDEO_OFF * vp_num;
1987 base = MDP_BASE + MDP4_VIDEO_BASE + voff + 0x5000;
1988
1989 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
1990 off = 0;
1991 for (i = 0; i < 256; i++) {
1992 val = igc_video_lut[i];
1993 data = (val << 16 | val); /* color 0 and 1 */
1994 outpdw(base + off, data);
1995 outpdw(base + off + 0x800, val); /* color 2 */
1996 off += 4;
1997 }
1998 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
1999}
2000
2001uint32 igc_rgb_lut[] = { /* linear */
2002 0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70,
2003 0x80, 0x91, 0xA1, 0xB1, 0xC1, 0xD1, 0xE1, 0xF1,
2004 0x101, 0x111, 0x121, 0x131, 0x141, 0x151, 0x161, 0x171,
2005 0x181, 0x191, 0x1A2, 0x1B2, 0x1C2, 0x1D2, 0x1E2, 0x1F2,
2006 0x202, 0x212, 0x222, 0x232, 0x242, 0x252, 0x262, 0x272,
2007 0x282, 0x292, 0x2A2, 0x2B3, 0x2C3, 0x2D3, 0x2E3, 0x2F3,
2008 0x303, 0x313, 0x323, 0x333, 0x343, 0x353, 0x363, 0x373,
2009 0x383, 0x393, 0x3A3, 0x3B3, 0x3C4, 0x3D4, 0x3E4, 0x3F4,
2010 0x404, 0x414, 0x424, 0x434, 0x444, 0x454, 0x464, 0x474,
2011 0x484, 0x494, 0x4A4, 0x4B4, 0x4C4, 0x4D5, 0x4E5, 0x4F5,
2012 0x505, 0x515, 0x525, 0x535, 0x545, 0x555, 0x565, 0x575,
2013 0x585, 0x595, 0x5A5, 0x5B5, 0x5C5, 0x5D5, 0x5E6, 0x5F6,
2014 0x606, 0x616, 0x626, 0x636, 0x646, 0x656, 0x666, 0x676,
2015 0x686, 0x696, 0x6A6, 0x6B6, 0x6C6, 0x6D6, 0x6E6, 0x6F7,
2016 0x707, 0x717, 0x727, 0x737, 0x747, 0x757, 0x767, 0x777,
2017 0x787, 0x797, 0x7A7, 0x7B7, 0x7C7, 0x7D7, 0x7E7, 0x7F7,
2018 0x808, 0x818, 0x828, 0x838, 0x848, 0x858, 0x868, 0x878,
2019 0x888, 0x898, 0x8A8, 0x8B8, 0x8C8, 0x8D8, 0x8E8, 0x8F8,
2020 0x908, 0x919, 0x929, 0x939, 0x949, 0x959, 0x969, 0x979,
2021 0x989, 0x999, 0x9A9, 0x9B9, 0x9C9, 0x9D9, 0x9E9, 0x9F9,
2022 0xA09, 0xA19, 0xA2A, 0xA3A, 0xA4A, 0xA5A, 0xA6A, 0xA7A,
2023 0xA8A, 0xA9A, 0xAAA, 0xABA, 0xACA, 0xADA, 0xAEA, 0xAFA,
2024 0xB0A, 0xB1A, 0xB2A, 0xB3B, 0xB4B, 0xB5B, 0xB6B, 0xB7B,
2025 0xB8B, 0xB9B, 0xBAB, 0xBBB, 0xBCB, 0xBDB, 0xBEB, 0xBFB,
2026 0xC0B, 0xC1B, 0xC2B, 0xC3B, 0xC4C, 0xC5C, 0xC6C, 0xC7C,
2027 0xC8C, 0xC9C, 0xCAC, 0xCBC, 0xCCC, 0xCDC, 0xCEC, 0xCFC,
2028 0xD0C, 0xD1C, 0xD2C, 0xD3C, 0xD4C, 0xD5D, 0xD6D, 0xD7D,
2029 0xD8D, 0xD9D, 0xDAD, 0xDBD, 0xDCD, 0xDDD, 0xDED, 0xDFD,
2030 0xE0D, 0xE1D, 0xE2D, 0xE3D, 0xE4D, 0xE5D, 0xE6E, 0xE7E,
2031 0xE8E, 0xE9E, 0xEAE, 0xEBE, 0xECE, 0xEDE, 0xEEE, 0xEFE,
2032 0xF0E, 0xF1E, 0xF2E, 0xF3E, 0xF4E, 0xF5E, 0xF6E, 0xF7F,
2033 0xF8F, 0xF9F, 0xFAF, 0xFBF, 0xFCF, 0xFDF, 0xFEF, 0xFFF,
2034};
2035
2036void mdp4_rgb_igc_lut_setup(int num)
2037{
2038 unsigned char *base;
2039 int i, voff, off;
2040 uint32 data, val;
2041
2042 voff = MDP4_RGB_OFF * num;
2043 base = MDP_BASE + MDP4_RGB_BASE + voff + 0x5000;
2044
2045 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_ON, FALSE);
2046 off = 0;
2047 for (i = 0; i < 256; i++) {
2048 val = igc_rgb_lut[i];
2049 data = (val << 16 | val); /* color 0 and 1 */
2050 outpdw(base + off, data);
2051 outpdw(base + off + 0x800, val); /* color 2 */
2052 off += 4;
2053 }
2054 mdp_pipe_ctrl(MDP_CMD_BLOCK, MDP_BLOCK_POWER_OFF, FALSE);
2055}
2056
2057uint32 mdp4_rgb_igc_lut_cvt(uint32 ndx)
2058{
2059 return igc_rgb_lut[ndx & 0x0ff];
2060}
2061
2062uint32_t mdp4_ss_table_value(int8_t value, int8_t index)
2063{
2064 uint32_t out = 0x0;
2065 int8_t level = -1;
2066 uint32_t mask = 0xffffffff;
2067
2068 if (value < 0) {
2069 if (value == -128)
2070 value = 127;
2071 else
2072 value = -value;
2073 out = 0x11111111;
2074 } else {
2075 out = 0x88888888;
2076 mask = 0x0fffffff;
2077 }
2078
2079 if (value == 0)
2080 level = 0;
2081 else {
2082 while (value > 0 && level < 7) {
2083 level++;
2084 value -= 16;
2085 }
2086 }
2087
2088 if (level == 0) {
2089 if (index == 0)
2090 out = 0x0;
2091 else
2092 out = 0x20000000;
2093 } else {
2094 out += (0x11111111 * level);
2095 if (index == 1)
2096 out &= mask;
2097 }
2098
2099 return out;
2100}
2101