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