Merge branch 'for-3.5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj...
[firefly-linux-kernel-4.4.55.git] / drivers / media / video / gspca / topro.c
1 /*
2  * Topro TP6800/6810 webcam driver.
3  *
4  * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr)
5  * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se)
6  * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com)
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; If not, see <http://www.gnu.org/licenses/>.
20  */
21
22 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
23
24 #include "gspca.h"
25
26 MODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver");
27 MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, "
28                 "Anders Blomdell <anders.blomdell@control.lth.se>");
29 MODULE_LICENSE("GPL");
30
31 static int force_sensor = -1;
32
33 /* JPEG header */
34 static const u8 jpeg_head[] = {
35         0xff, 0xd8,                     /* jpeg */
36
37 /* quantization table quality 50% */
38         0xff, 0xdb, 0x00, 0x84,         /* DQT */
39 0,
40 #define JPEG_QT0_OFFSET 7
41         0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
42         0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
43         0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
44         0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
45         0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
46         0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
47         0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
48         0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
49 1,
50 #define JPEG_QT1_OFFSET 72
51         0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
52         0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
53         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
54         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
55         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
56         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
57         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
58         0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
59
60         /* Define Huffman table (thanks to Thomas Kaiser) */
61         0xff, 0xc4, 0x01, 0x5e,
62         0x00, 0x00, 0x02, 0x03,
63         0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
64         0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
65         0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
66         0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
67         0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57,
68         0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21,
69         0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32,
70         0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52,
71         0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1,
72         0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2,
73         0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25,
74         0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44,
75         0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57,
76         0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73,
77         0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85,
78         0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97,
79         0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2,
80         0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3,
81         0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4,
82         0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5,
83         0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
84         0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
85         0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
86         0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
87         0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02,
88         0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
89         0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01,
90         0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13,
91         0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14,
92         0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1,
93         0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43,
94         0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82,
95         0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28,
96         0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47,
97         0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64,
98         0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76,
99         0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
100         0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3,
101         0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4,
102         0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5,
103         0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
104         0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
105         0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
106         0xff, 0xc0, 0x00, 0x11,         /* SOF0 (start of frame 0 */
107         0x08,                           /* data precision */
108 #define JPEG_HEIGHT_OFFSET 493
109         0x01, 0xe0,                     /* height */
110         0x02, 0x80,                     /* width */
111         0x03,                           /* component number */
112                 0x01,
113                         0x21,           /* samples Y = jpeg 422 */
114                         0x00,           /* quant Y */
115                 0x02, 0x11, 0x01,       /* samples CbCr - quant CbCr */
116                 0x03, 0x11, 0x01,
117
118         0xff, 0xda, 0x00, 0x0c,         /* SOS (start of scan) */
119         0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
120 #define JPEG_HDR_SZ 521
121 };
122
123 enum e_ctrl {
124         EXPOSURE,
125         QUALITY,
126         SHARPNESS,
127         RGAIN,
128         GAIN,
129         BGAIN,
130         GAMMA,
131         AUTOGAIN,
132         NCTRLS          /* number of controls */
133 };
134
135 #define AUTOGAIN_DEF 1
136
137 struct sd {
138         struct gspca_dev gspca_dev;     /* !! must be the first item */
139
140         struct gspca_ctrl ctrls[NCTRLS];
141
142         u8 framerate;
143         u8 quality;             /* webcam current JPEG quality (0..16) */
144         s8 ag_cnt;              /* autogain / start counter for tp6810 */
145 #define AG_CNT_START 13         /* check gain every N frames */
146
147         u8 bridge;
148         u8 sensor;
149
150         u8 jpeg_hdr[JPEG_HDR_SZ];
151 };
152
153 enum bridges {
154         BRIDGE_TP6800,
155         BRIDGE_TP6810,
156 };
157
158 enum sensors {
159         SENSOR_CX0342,
160         SENSOR_SOI763A,         /* ~= ov7630 / ov7648 */
161         NSENSORS
162 };
163
164 static const struct v4l2_pix_format vga_mode[] = {
165         {320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
166                 .bytesperline = 320,
167                 .sizeimage = 320 * 240 * 4 / 8 + 590,
168                 .colorspace = V4L2_COLORSPACE_JPEG},
169         {640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
170                 .bytesperline = 640,
171                 .sizeimage = 640 * 480 * 3 / 8 + 590,
172                 .colorspace = V4L2_COLORSPACE_JPEG}
173 };
174
175 /*
176  * JPEG quality
177  * index: webcam compression
178  * value: JPEG quality in %
179  */
180 static const u8 jpeg_q[17] = {
181         88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94
182 };
183
184 #define BULK_OUT_SIZE           0x20
185 #if BULK_OUT_SIZE > USB_BUF_SZ
186 #error "USB buffer too small"
187 #endif
188
189 static const u8 rates[] = {30, 20, 15, 10, 7, 5};
190 static const struct framerates framerates[] = {
191         {
192                 .rates = rates,
193                 .nrates = ARRAY_SIZE(rates)
194         },
195         {
196                 .rates = rates,
197                 .nrates = ARRAY_SIZE(rates)
198         }
199 };
200 static const u8 rates_6810[] = {30, 15, 10, 7, 5};
201 static const struct framerates framerates_6810[] = {
202         {
203                 .rates = rates_6810,
204                 .nrates = ARRAY_SIZE(rates_6810)
205         },
206         {
207                 .rates = rates_6810,
208                 .nrates = ARRAY_SIZE(rates_6810)
209         }
210 };
211
212 /*
213  * webcam quality in %
214  * the last value is the ultra fine quality
215  */
216
217 /* TP6800 register offsets */
218 #define TP6800_R10_SIF_TYPE             0x10
219 #define TP6800_R11_SIF_CONTROL          0x11
220 #define TP6800_R12_SIF_ADDR_S           0x12
221 #define TP6800_R13_SIF_TX_DATA          0x13
222 #define TP6800_R14_SIF_RX_DATA          0x14
223 #define TP6800_R15_GPIO_PU              0x15
224 #define TP6800_R16_GPIO_PD              0x16
225 #define TP6800_R17_GPIO_IO              0x17
226 #define TP6800_R18_GPIO_DATA            0x18
227 #define TP6800_R19_SIF_ADDR_S2          0x19
228 #define TP6800_R1A_SIF_TX_DATA2         0x1a
229 #define TP6800_R1B_SIF_RX_DATA2         0x1b
230 #define TP6800_R21_ENDP_1_CTL           0x21
231 #define TP6800_R2F_TIMING_CFG           0x2f
232 #define TP6800_R30_SENSOR_CFG           0x30
233 #define TP6800_R31_PIXEL_START          0x31
234 #define TP6800_R32_PIXEL_END_L          0x32
235 #define TP6800_R33_PIXEL_END_H          0x33
236 #define TP6800_R34_LINE_START           0x34
237 #define TP6800_R35_LINE_END_L           0x35
238 #define TP6800_R36_LINE_END_H           0x36
239 #define TP6800_R37_FRONT_DARK_ST        0x37
240 #define TP6800_R38_FRONT_DARK_END       0x38
241 #define TP6800_R39_REAR_DARK_ST_L       0x39
242 #define TP6800_R3A_REAR_DARK_ST_H       0x3a
243 #define TP6800_R3B_REAR_DARK_END_L      0x3b
244 #define TP6800_R3C_REAR_DARK_END_H      0x3c
245 #define TP6800_R3D_HORIZ_DARK_LINE_L    0x3d
246 #define TP6800_R3E_HORIZ_DARK_LINE_H    0x3e
247 #define TP6800_R3F_FRAME_RATE           0x3f
248 #define TP6800_R50                      0x50
249 #define TP6800_R51                      0x51
250 #define TP6800_R52                      0x52
251 #define TP6800_R53                      0x53
252 #define TP6800_R54_DARK_CFG             0x54
253 #define TP6800_R55_GAMMA_R              0x55
254 #define TP6800_R56_GAMMA_G              0x56
255 #define TP6800_R57_GAMMA_B              0x57
256 #define TP6800_R5C_EDGE_THRLD           0x5c
257 #define TP6800_R5D_DEMOSAIC_CFG         0x5d
258 #define TP6800_R78_FORMAT               0x78
259 #define TP6800_R79_QUALITY              0x79
260 #define TP6800_R7A_BLK_THRLD            0x7a
261
262 /* CX0342 register offsets */
263
264 #define CX0342_SENSOR_ID                0x00
265 #define CX0342_VERSION_NO               0x01
266 #define CX0342_ORG_X_L                  0x02
267 #define CX0342_ORG_X_H                  0x03
268 #define CX0342_ORG_Y_L                  0x04
269 #define CX0342_ORG_Y_H                  0x05
270 #define CX0342_STOP_X_L                 0x06
271 #define CX0342_STOP_X_H                 0x07
272 #define CX0342_STOP_Y_L                 0x08
273 #define CX0342_STOP_Y_H                 0x09
274 #define CX0342_FRAME_WIDTH_L            0x0a
275 #define CX0342_FRAME_WIDTH_H            0x0b
276 #define CX0342_FRAME_HEIGH_L            0x0c
277 #define CX0342_FRAME_HEIGH_H            0x0d
278 #define CX0342_EXPO_LINE_L              0x10
279 #define CX0342_EXPO_LINE_H              0x11
280 #define CX0342_EXPO_CLK_L               0x12
281 #define CX0342_EXPO_CLK_H               0x13
282 #define CX0342_RAW_GRGAIN_L             0x14
283 #define CX0342_RAW_GRGAIN_H             0x15
284 #define CX0342_RAW_GBGAIN_L             0x16
285 #define CX0342_RAW_GBGAIN_H             0x17
286 #define CX0342_RAW_RGAIN_L              0x18
287 #define CX0342_RAW_RGAIN_H              0x19
288 #define CX0342_RAW_BGAIN_L              0x1a
289 #define CX0342_RAW_BGAIN_H              0x1b
290 #define CX0342_GLOBAL_GAIN              0x1c
291 #define CX0342_SYS_CTRL_0               0x20
292 #define CX0342_SYS_CTRL_1               0x21
293 #define CX0342_SYS_CTRL_2               0x22
294 #define CX0342_BYPASS_MODE              0x23
295 #define CX0342_SYS_CTRL_3               0x24
296 #define CX0342_TIMING_EN                0x25
297 #define CX0342_OUTPUT_CTRL              0x26
298 #define CX0342_AUTO_ADC_CALIB           0x27
299 #define CX0342_SYS_CTRL_4               0x28
300 #define CX0342_ADCGN                    0x30
301 #define CX0342_SLPCR                    0x31
302 #define CX0342_SLPFN_LO                 0x32
303 #define CX0342_ADC_CTL                  0x33
304 #define CX0342_LVRST_BLBIAS             0x34
305 #define CX0342_VTHSEL                   0x35
306 #define CX0342_RAMP_RIV                 0x36
307 #define CX0342_LDOSEL                   0x37
308 #define CX0342_CLOCK_GEN                0x40
309 #define CX0342_SOFT_RESET               0x41
310 #define CX0342_PLL                      0x42
311 #define CX0342_DR_ENH_PULSE_OFFSET_L    0x43
312 #define CX0342_DR_ENH_PULSE_OFFSET_H    0x44
313 #define CX0342_DR_ENH_PULSE_POS_L       0x45
314 #define CX0342_DR_ENH_PULSE_POS_H       0x46
315 #define CX0342_DR_ENH_PULSE_WIDTH       0x47
316 #define CX0342_AS_CURRENT_CNT_L         0x48
317 #define CX0342_AS_CURRENT_CNT_H         0x49
318 #define CX0342_AS_PREVIOUS_CNT_L        0x4a
319 #define CX0342_AS_PREVIOUS_CNT_H        0x4b
320 #define CX0342_SPV_VALUE_L              0x4c
321 #define CX0342_SPV_VALUE_H              0x4d
322 #define CX0342_GPXLTHD_L                0x50
323 #define CX0342_GPXLTHD_H                0x51
324 #define CX0342_RBPXLTHD_L               0x52
325 #define CX0342_RBPXLTHD_H               0x53
326 #define CX0342_PLANETHD_L               0x54
327 #define CX0342_PLANETHD_H               0x55
328 #define CX0342_ROWDARK_TH               0x56
329 #define CX0342_ROWDARK_TOL              0x57
330 #define CX0342_RB_GAP_L                 0x58
331 #define CX0342_RB_GAP_H                 0x59
332 #define CX0342_G_GAP_L                  0x5a
333 #define CX0342_G_GAP_H                  0x5b
334 #define CX0342_AUTO_ROW_DARK            0x60
335 #define CX0342_MANUAL_DARK_VALUE        0x61
336 #define CX0342_GB_DARK_OFFSET           0x62
337 #define CX0342_GR_DARK_OFFSET           0x63
338 #define CX0342_RED_DARK_OFFSET          0x64
339 #define CX0342_BLUE_DARK_OFFSET         0x65
340 #define CX0342_DATA_SCALING_MULTI       0x66
341 #define CX0342_AUTOD_Q_FRAME            0x67
342 #define CX0342_AUTOD_ALLOW_VARI         0x68
343 #define CX0342_AUTO_DARK_VALUE_L        0x69
344 #define CX0342_AUTO_DARK_VALUE_H        0x6a
345 #define CX0342_IO_CTRL_0                0x70
346 #define CX0342_IO_CTRL_1                0x71
347 #define CX0342_IO_CTRL_2                0x72
348 #define CX0342_IDLE_CTRL                0x73
349 #define CX0342_TEST_MODE                0x74
350 #define CX0342_FRAME_FIX_DATA_TEST      0x75
351 #define CX0342_FRAME_CNT_TEST           0x76
352 #define CX0342_RST_OVERFLOW_L           0x80
353 #define CX0342_RST_OVERFLOW_H           0x81
354 #define CX0342_RST_UNDERFLOW_L          0x82
355 #define CX0342_RST_UNDERFLOW_H          0x83
356 #define CX0342_DATA_OVERFLOW_L          0x84
357 #define CX0342_DATA_OVERFLOW_H          0x85
358 #define CX0342_DATA_UNDERFLOW_L         0x86
359 #define CX0342_DATA_UNDERFLOW_H         0x87
360 #define CX0342_CHANNEL_0_0_L_irst       0x90
361 #define CX0342_CHANNEL_0_0_H_irst       0x91
362 #define CX0342_CHANNEL_0_1_L_irst       0x92
363 #define CX0342_CHANNEL_0_1_H_irst       0x93
364 #define CX0342_CHANNEL_0_2_L_irst       0x94
365 #define CX0342_CHANNEL_0_2_H_irst       0x95
366 #define CX0342_CHANNEL_0_3_L_irst       0x96
367 #define CX0342_CHANNEL_0_3_H_irst       0x97
368 #define CX0342_CHANNEL_0_4_L_irst       0x98
369 #define CX0342_CHANNEL_0_4_H_irst       0x99
370 #define CX0342_CHANNEL_0_5_L_irst       0x9a
371 #define CX0342_CHANNEL_0_5_H_irst       0x9b
372 #define CX0342_CHANNEL_0_6_L_irst       0x9c
373 #define CX0342_CHANNEL_0_6_H_irst       0x9d
374 #define CX0342_CHANNEL_0_7_L_irst       0x9e
375 #define CX0342_CHANNEL_0_7_H_irst       0x9f
376 #define CX0342_CHANNEL_1_0_L_itx        0xa0
377 #define CX0342_CHANNEL_1_0_H_itx        0xa1
378 #define CX0342_CHANNEL_1_1_L_itx        0xa2
379 #define CX0342_CHANNEL_1_1_H_itx        0xa3
380 #define CX0342_CHANNEL_1_2_L_itx        0xa4
381 #define CX0342_CHANNEL_1_2_H_itx        0xa5
382 #define CX0342_CHANNEL_1_3_L_itx        0xa6
383 #define CX0342_CHANNEL_1_3_H_itx        0xa7
384 #define CX0342_CHANNEL_1_4_L_itx        0xa8
385 #define CX0342_CHANNEL_1_4_H_itx        0xa9
386 #define CX0342_CHANNEL_1_5_L_itx        0xaa
387 #define CX0342_CHANNEL_1_5_H_itx        0xab
388 #define CX0342_CHANNEL_1_6_L_itx        0xac
389 #define CX0342_CHANNEL_1_6_H_itx        0xad
390 #define CX0342_CHANNEL_1_7_L_itx        0xae
391 #define CX0342_CHANNEL_1_7_H_itx        0xaf
392 #define CX0342_CHANNEL_2_0_L_iwl        0xb0
393 #define CX0342_CHANNEL_2_0_H_iwl        0xb1
394 #define CX0342_CHANNEL_2_1_L_iwl        0xb2
395 #define CX0342_CHANNEL_2_1_H_iwl        0xb3
396 #define CX0342_CHANNEL_2_2_L_iwl        0xb4
397 #define CX0342_CHANNEL_2_2_H_iwl        0xb5
398 #define CX0342_CHANNEL_2_3_L_iwl        0xb6
399 #define CX0342_CHANNEL_2_3_H_iwl        0xb7
400 #define CX0342_CHANNEL_2_4_L_iwl        0xb8
401 #define CX0342_CHANNEL_2_4_H_iwl        0xb9
402 #define CX0342_CHANNEL_2_5_L_iwl        0xba
403 #define CX0342_CHANNEL_2_5_H_iwl        0xbb
404 #define CX0342_CHANNEL_2_6_L_iwl        0xbc
405 #define CX0342_CHANNEL_2_6_H_iwl        0xbd
406 #define CX0342_CHANNEL_2_7_L_iwl        0xbe
407 #define CX0342_CHANNEL_2_7_H_iwl        0xbf
408 #define CX0342_CHANNEL_3_0_L_ensp       0xc0
409 #define CX0342_CHANNEL_3_0_H_ensp       0xc1
410 #define CX0342_CHANNEL_3_1_L_ensp       0xc2
411 #define CX0342_CHANNEL_3_1_H_ensp       0xc3
412 #define CX0342_CHANNEL_3_2_L_ensp       0xc4
413 #define CX0342_CHANNEL_3_2_H_ensp       0xc5
414 #define CX0342_CHANNEL_3_3_L_ensp       0xc6
415 #define CX0342_CHANNEL_3_3_H_ensp       0xc7
416 #define CX0342_CHANNEL_3_4_L_ensp       0xc8
417 #define CX0342_CHANNEL_3_4_H_ensp       0xc9
418 #define CX0342_CHANNEL_3_5_L_ensp       0xca
419 #define CX0342_CHANNEL_3_5_H_ensp       0xcb
420 #define CX0342_CHANNEL_3_6_L_ensp       0xcc
421 #define CX0342_CHANNEL_3_6_H_ensp       0xcd
422 #define CX0342_CHANNEL_3_7_L_ensp       0xce
423 #define CX0342_CHANNEL_3_7_H_ensp       0xcf
424 #define CX0342_CHANNEL_4_0_L_sela       0xd0
425 #define CX0342_CHANNEL_4_0_H_sela       0xd1
426 #define CX0342_CHANNEL_4_1_L_sela       0xd2
427 #define CX0342_CHANNEL_4_1_H_sela       0xd3
428 #define CX0342_CHANNEL_5_0_L_intla      0xe0
429 #define CX0342_CHANNEL_5_0_H_intla      0xe1
430 #define CX0342_CHANNEL_5_1_L_intla      0xe2
431 #define CX0342_CHANNEL_5_1_H_intla      0xe3
432 #define CX0342_CHANNEL_5_2_L_intla      0xe4
433 #define CX0342_CHANNEL_5_2_H_intla      0xe5
434 #define CX0342_CHANNEL_5_3_L_intla      0xe6
435 #define CX0342_CHANNEL_5_3_H_intla      0xe7
436 #define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0
437 #define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1
438 #define CX0342_CHANNEL_7_1_L_cds_pos    0xf2
439 #define CX0342_CHANNEL_7_1_H_cds_pos    0xf3
440 #define CX0342_SENSOR_HEIGHT_L          0xfb
441 #define CX0342_SENSOR_HEIGHT_H          0xfc
442 #define CX0342_SENSOR_WIDTH_L           0xfd
443 #define CX0342_SENSOR_WIDTH_H           0xfe
444 #define CX0342_VSYNC_HSYNC_READ         0xff
445
446 struct cmd {
447         u8 reg;
448         u8 val;
449 };
450
451 static const u8 DQT[17][130] = {
452         /* Define quantization table (thanks to Thomas Kaiser) */
453         {                       /* Quality 0 */
454          0x00,
455          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
456          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
457          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
458          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
459          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
460          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
461          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
462          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
463          0x01,
464          0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06,
465          0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18,
466          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
467          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
468          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
469          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
470          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
471          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
472          },
473         {                       /* Quality 1 */
474          0x00,
475          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
476          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
477          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
478          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
479          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
480          0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
481          0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
482          0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
483          0x01,
484          0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d,
485          0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31,
486          0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
487          0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
488          0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
489          0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
490          0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
491          0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
492          },
493         {                       /* Quality 2 */
494          0x00,
495          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
496          0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
497          0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
498          0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
499          0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
500          0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
501          0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
502          0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
503          0x01,
504          0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13,
505          0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a,
506          0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
507          0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
508          0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
509          0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
510          0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
511          0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
512          },
513         {                       /* Quality 3 */
514          0x00,
515          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
516          0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
517          0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
518          0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
519          0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
520          0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13,
521          0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
522          0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
523          0x01,
524          0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
525          0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
526          0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
527          0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
528          0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
529          0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
530          0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
531          0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
532          },
533         {                       /* Quality 4 */
534          0x00,
535          0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
536          0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
537          0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
538          0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
539          0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
540          0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17,
541          0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
542          0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
543          0x01,
544          0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20,
545          0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b,
546          0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
547          0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
548          0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
549          0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
550          0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
551          0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
552          },
553         {                       /* Quality 5 */
554          0x00,
555          0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
556          0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06,
557          0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
558          0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
559          0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
560          0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
561          0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
562          0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
563          0x01,
564          0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27,
565          0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94,
566          0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
567          0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
568          0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
569          0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
570          0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
571          0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
572          },
573         {                       /* Quality 6 */
574          0x00,
575          0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
576          0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07,
577          0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
578          0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
579          0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
580          0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21,
581          0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
582          0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
583          0x01,
584          0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d,
585          0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad,
586          0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
587          0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
588          0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
589          0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
590          0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
591          0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
592          },
593         {                       /* Quality 7 */
594          0x00,
595          0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
596          0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08,
597          0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
598          0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
599          0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
600          0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26,
601          0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
602          0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
603          0x01,
604          0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
605          0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
606          0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
607          0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
608          0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
609          0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
610          0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
611          0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
612          },
613         {                       /* Quality 8 */
614          0x00,
615          0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
616          0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a,
617          0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
618          0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
619          0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
620          0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
621          0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
622          0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
623          0x01,
624          0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41,
625          0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7,
626          0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
627          0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
628          0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
629          0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
630          0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
631          0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
632          },
633         {                       /* Quality 9 */
634          0x00,
635          0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
636          0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c,
637          0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
638          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
639          0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
640          0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39,
641          0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
642          0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
643          0x01,
644          0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
645          0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
646          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
647          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
648          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
649          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
650          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
651          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
652          },
653         {                       /* Quality 10 */
654          0x00,
655          0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
656          0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e,
657          0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
658          0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
659          0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
660          0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42,
661          0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
662          0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
663          0x01,
664          0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b,
665          0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff,
666          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
667          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
668          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
669          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
670          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
671          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
672          },
673         {                       /* Quality 11 */
674          0x00,
675          0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
676          0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10,
677          0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
678          0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
679          0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
680          0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
681          0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
682          0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
683          0x01,
684          0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68,
685          0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
686          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
687          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
688          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
689          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
690          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
691          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
692          },
693         {                       /* Quality 12 */
694          0x00,
695          0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
696          0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14,
697          0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
698          0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
699          0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
700          0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
701          0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
702          0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
703          0x01,
704          0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
705          0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
706          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
707          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
708          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
709          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
710          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
711          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
712          },
713         {                       /* Quality 13 */
714          0x00,
715          0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
716          0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
717          0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
718          0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
719          0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
720          0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72,
721          0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
722          0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
723          0x01,
724          0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c,
725          0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
726          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
727          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
728          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
729          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
730          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
731          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
732          },
733         {                       /* Quality 14 */
734          0x00,
735          0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
736          0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c,
737          0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
738          0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
739          0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
740          0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85,
741          0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
742          0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
743          0x01,
744          0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6,
745          0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
746          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
747          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
748          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
749          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
750          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
751          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
752          },
753         {                       /* Quality 15 */
754          0x00,
755          0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
756          0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
757          0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
758          0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
759          0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
760          0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98,
761          0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
762          0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
763          0x01,
764          0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0,
765          0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
766          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
767          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
768          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
769          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
770          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
771          0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
772          },
773         {                       /* Quality 16-31 */
774          0x00,
775          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
776          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
777          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
778          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
779          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
780          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
781          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
782          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
783          0x01,
784          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
785          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
786          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
787          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
788          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
789          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
790          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
791          0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
792          }
793 };
794
795 static const struct cmd tp6810_cx_init_common[] = {
796         {0x1c, 0x00},
797         {TP6800_R10_SIF_TYPE, 0x00},
798         {0x4e, 0x00},
799         {0x4f, 0x00},
800         {TP6800_R50, 0xff},
801         {TP6800_R51, 0x03},
802         {0x00, 0x07},
803         {TP6800_R79_QUALITY, 0x03},
804         {TP6800_R2F_TIMING_CFG, 0x37},
805         {TP6800_R30_SENSOR_CFG, 0x10},
806         {TP6800_R21_ENDP_1_CTL, 0x00},
807         {TP6800_R52, 0x40},
808         {TP6800_R53, 0x40},
809         {TP6800_R54_DARK_CFG, 0x40},
810         {TP6800_R30_SENSOR_CFG, 0x18},
811         {0x4b, 0x00},
812         {TP6800_R3F_FRAME_RATE, 0x83},
813         {TP6800_R79_QUALITY, 0x05},
814         {TP6800_R21_ENDP_1_CTL, 0x00},
815         {0x7c, 0x04},
816         {0x25, 0x14},
817         {0x26, 0x0f},
818         {0x7b, 0x10},
819 };
820
821 static const struct cmd tp6810_ov_init_common[] = {
822         {0x1c, 0x00},
823         {TP6800_R10_SIF_TYPE, 0x00},
824         {0x4e, 0x00},
825         {0x4f, 0x00},
826         {TP6800_R50, 0xff},
827         {TP6800_R51, 0x03},
828         {0x00, 0x07},
829         {TP6800_R52, 0x40},
830         {TP6800_R53, 0x40},
831         {TP6800_R54_DARK_CFG, 0x40},
832         {TP6800_R79_QUALITY, 0x03},
833         {TP6800_R2F_TIMING_CFG, 0x17},
834         {TP6800_R30_SENSOR_CFG, 0x18},
835         {TP6800_R21_ENDP_1_CTL, 0x00},
836         {TP6800_R3F_FRAME_RATE, 0x86},
837         {0x25, 0x18},
838         {0x26, 0x0f},
839         {0x7b, 0x90},
840 };
841
842 static const struct cmd tp6810_bridge_start[] = {
843         {0x59, 0x88},
844         {0x5a, 0x0f},
845         {0x5b, 0x4e},
846         {TP6800_R5C_EDGE_THRLD, 0x63},
847         {TP6800_R5D_DEMOSAIC_CFG, 0x00},
848         {0x03, 0x7f},
849         {0x04, 0x80},
850         {0x06, 0x00},
851         {0x00, 0x00},
852 };
853
854 static const struct cmd tp6810_late_start[] = {
855         {0x7d, 0x01},
856         {0xb0, 0x04},
857         {0xb1, 0x04},
858         {0xb2, 0x04},
859         {0xb3, 0x04},
860         {0xb4, 0x04},
861         {0xb5, 0x04},
862         {0xb6, 0x08},
863         {0xb7, 0x08},
864         {0xb8, 0x04},
865         {0xb9, 0x04},
866         {0xba, 0x04},
867         {0xbb, 0x04},
868         {0xbc, 0x04},
869         {0xbd, 0x08},
870         {0xbe, 0x08},
871         {0xbf, 0x08},
872         {0xc0, 0x04},
873         {0xc1, 0x04},
874         {0xc2, 0x08},
875         {0xc3, 0x08},
876         {0xc4, 0x08},
877         {0xc5, 0x08},
878         {0xc6, 0x08},
879         {0xc7, 0x13},
880         {0xc8, 0x04},
881         {0xc9, 0x08},
882         {0xca, 0x08},
883         {0xcb, 0x08},
884         {0xcc, 0x08},
885         {0xcd, 0x08},
886         {0xce, 0x13},
887         {0xcf, 0x13},
888         {0xd0, 0x08},
889         {0xd1, 0x08},
890         {0xd2, 0x08},
891         {0xd3, 0x08},
892         {0xd4, 0x08},
893         {0xd5, 0x13},
894         {0xd6, 0x13},
895         {0xd7, 0x13},
896         {0xd8, 0x08},
897         {0xd9, 0x08},
898         {0xda, 0x08},
899         {0xdb, 0x08},
900         {0xdc, 0x13},
901         {0xdd, 0x13},
902         {0xde, 0x13},
903         {0xdf, 0x13},
904         {0xe0, 0x08},
905         {0xe1, 0x08},
906         {0xe2, 0x08},
907         {0xe3, 0x13},
908         {0xe4, 0x13},
909         {0xe5, 0x13},
910         {0xe6, 0x13},
911         {0xe7, 0x13},
912         {0xe8, 0x08},
913         {0xe9, 0x08},
914         {0xea, 0x13},
915         {0xeb, 0x13},
916         {0xec, 0x13},
917         {0xed, 0x13},
918         {0xee, 0x13},
919         {0xef, 0x13},
920         {0x7d, 0x02},
921
922         /* later after isoc start */
923         {0x7d, 0x08},
924         {0x7d, 0x00},
925 };
926
927 static const struct cmd cx0342_timing_seq[] = {
928         {CX0342_CHANNEL_0_1_L_irst, 0x20},
929         {CX0342_CHANNEL_0_2_L_irst, 0x24},
930         {CX0342_CHANNEL_0_2_H_irst, 0x00},
931         {CX0342_CHANNEL_0_3_L_irst, 0x2f},
932         {CX0342_CHANNEL_0_3_H_irst, 0x00},
933         {CX0342_CHANNEL_1_0_L_itx, 0x02},
934         {CX0342_CHANNEL_1_0_H_itx, 0x00},
935         {CX0342_CHANNEL_1_1_L_itx, 0x20},
936         {CX0342_CHANNEL_1_1_H_itx, 0x00},
937         {CX0342_CHANNEL_1_2_L_itx, 0xe4},
938         {CX0342_CHANNEL_1_2_H_itx, 0x00},
939         {CX0342_CHANNEL_1_3_L_itx, 0xee},
940         {CX0342_CHANNEL_1_3_H_itx, 0x00},
941         {CX0342_CHANNEL_2_0_L_iwl, 0x30},
942         {CX0342_CHANNEL_2_0_H_iwl, 0x00},
943         {CX0342_CHANNEL_3_0_L_ensp, 0x34},
944         {CX0342_CHANNEL_3_1_L_ensp, 0xe2},
945         {CX0342_CHANNEL_3_1_H_ensp, 0x00},
946         {CX0342_CHANNEL_3_2_L_ensp, 0xf6},
947         {CX0342_CHANNEL_3_2_H_ensp, 0x00},
948         {CX0342_CHANNEL_3_3_L_ensp, 0xf4},
949         {CX0342_CHANNEL_3_3_H_ensp, 0x02},
950         {CX0342_CHANNEL_4_0_L_sela, 0x26},
951         {CX0342_CHANNEL_4_0_H_sela, 0x00},
952         {CX0342_CHANNEL_4_1_L_sela, 0xe2},
953         {CX0342_CHANNEL_4_1_H_sela, 0x00},
954         {CX0342_CHANNEL_5_0_L_intla, 0x26},
955         {CX0342_CHANNEL_5_1_L_intla, 0x29},
956         {CX0342_CHANNEL_5_2_L_intla, 0xf0},
957         {CX0342_CHANNEL_5_2_H_intla, 0x00},
958         {CX0342_CHANNEL_5_3_L_intla, 0xf3},
959         {CX0342_CHANNEL_5_3_H_intla, 0x00},
960         {CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24},
961         {CX0342_CHANNEL_7_1_L_cds_pos, 0x02},
962         {CX0342_TIMING_EN, 0x01},
963 };
964
965 /* define the JPEG header */
966 static void jpeg_define(u8 *jpeg_hdr,
967                         int height,
968                         int width)
969 {
970         memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
971         jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
972         jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
973         jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
974         jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
975 }
976
977 /* set the JPEG quality for sensor soi763a */
978 static void jpeg_set_qual(u8 *jpeg_hdr,
979                           int quality)
980 {
981         int i, sc;
982
983         if (quality < 50)
984                 sc = 5000 / quality;
985         else
986                 sc = 200 - quality * 2;
987         for (i = 0; i < 64; i++) {
988                 jpeg_hdr[JPEG_QT0_OFFSET + i] =
989                         (jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
990                 jpeg_hdr[JPEG_QT1_OFFSET + i] =
991                         (jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
992         }
993 }
994
995 static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
996 {
997         struct usb_device *dev = gspca_dev->dev;
998         int ret;
999
1000         if (gspca_dev->usb_err < 0)
1001                 return;
1002         ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1003                         0x0e,
1004                         USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1005                         value, index, NULL, 0, 500);
1006         if (ret < 0) {
1007                 pr_err("reg_w err %d\n", ret);
1008                 gspca_dev->usb_err = ret;
1009         }
1010 }
1011
1012 /* the returned value is in gspca_dev->usb_buf */
1013 static void reg_r(struct gspca_dev *gspca_dev, u8 index)
1014 {
1015         struct usb_device *dev = gspca_dev->dev;
1016         int ret;
1017
1018         if (gspca_dev->usb_err < 0)
1019                 return;
1020         ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
1021                         0x0d,
1022                         USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1023                         0, index, gspca_dev->usb_buf, 1, 500);
1024         if (ret < 0) {
1025                 pr_err("reg_r err %d\n", ret);
1026                 gspca_dev->usb_err = ret;
1027         }
1028 }
1029
1030 static void reg_w_buf(struct gspca_dev *gspca_dev,
1031                         const struct cmd *p, int l)
1032 {
1033         do {
1034                 reg_w(gspca_dev, p->reg, p->val);
1035                 p++;
1036         } while (--l > 0);
1037 }
1038
1039 static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
1040 {
1041         struct sd *sd = (struct sd *) gspca_dev;
1042
1043         reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1044         reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1045         reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value);
1046         reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01);
1047         if (sd->bridge == BRIDGE_TP6800)
1048                 return 0;
1049         msleep(5);
1050         reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1051         if (gspca_dev->usb_buf[0] == 0)
1052                 return 0;
1053         reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1054         return -1;                              /* error */
1055 }
1056
1057 static void i2c_w_buf(struct gspca_dev *gspca_dev,
1058                         const struct cmd *p, int l)
1059 {
1060         do {
1061                 i2c_w(gspca_dev, p->reg, p->val);
1062                 p++;
1063         } while (--l > 0);
1064 }
1065
1066 static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len)
1067 {
1068         struct sd *sd = (struct sd *) gspca_dev;
1069         int v;
1070
1071         reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1072         reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02);
1073         msleep(5);
1074         reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA);
1075         v = gspca_dev->usb_buf[0];
1076         if (sd->bridge == BRIDGE_TP6800)
1077                 return v;
1078         if (len > 1) {
1079                 reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2);
1080                 v |= (gspca_dev->usb_buf[0] << 8);
1081         }
1082         reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1083         if (gspca_dev->usb_buf[0] == 0)
1084                 return v;
1085         reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1086         return -1;
1087 }
1088
1089 static void bulk_w(struct gspca_dev *gspca_dev,
1090                   u8 tag,
1091                   const u8 *data,
1092                   int length)
1093 {
1094         struct usb_device *dev = gspca_dev->dev;
1095         int count, actual_count, ret;
1096
1097         if (gspca_dev->usb_err < 0)
1098                 return;
1099         for (;;) {
1100                 count = length > BULK_OUT_SIZE - 1
1101                                 ? BULK_OUT_SIZE - 1 : length;
1102                 gspca_dev->usb_buf[0] = tag;
1103                 memcpy(&gspca_dev->usb_buf[1], data, count);
1104                 ret = usb_bulk_msg(dev,
1105                                    usb_sndbulkpipe(dev, 3),
1106                                    gspca_dev->usb_buf, count + 1,
1107                                    &actual_count, 500);
1108                 if (ret < 0) {
1109                         pr_err("bulk write error %d tag=%02x\n",
1110                                 ret, tag);
1111                         gspca_dev->usb_err = ret;
1112                         return;
1113                 }
1114                 length -= count;
1115                 if (length <= 0)
1116                         break;
1117                 data += count;
1118         }
1119 }
1120
1121 static int probe_6810(struct gspca_dev *gspca_dev)
1122 {
1123         u8 gpio;
1124         int ret;
1125
1126         reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
1127         gpio = gspca_dev->usb_buf[0];
1128         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1129         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1130         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1131         reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);    /* i2c 16 bits */
1132         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);  /* ov??? */
1133         reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00);
1134         if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1135                 return SENSOR_SOI763A;
1136
1137         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1138         reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);    /* i2c 8 bits */
1139         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f);  /* (unknown i2c) */
1140         if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1141                 return -2;
1142
1143         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1144         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1145         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1146         reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);    /* i2c 8 bits */
1147         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11);  /* tas??? / hv??? */
1148         ret = i2c_r(gspca_dev, 0x00, 1);
1149         if (ret > 0)
1150                 return -3;
1151
1152         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1153         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1154         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1155         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e);  /* po??? */
1156         ret = i2c_r(gspca_dev, 0x00, 1);
1157         if (ret > 0)
1158                 return -4;
1159
1160         ret = i2c_r(gspca_dev, 0x01, 1);
1161         if (ret > 0)
1162                 return -5;
1163
1164         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1165         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1166         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1167         reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);    /* i2c 16 bits */
1168         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d);  /* mi/mt??? */
1169         ret = i2c_r(gspca_dev, 0x00, 2);
1170         if (ret > 0)
1171                 return -6;
1172
1173         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1174         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1175         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1176         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c);  /* mi/mt??? */
1177         ret = i2c_r(gspca_dev, 0x36, 2);
1178         if (ret > 0)
1179                 return -7;
1180
1181         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1182         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1183         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1184         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61);  /* (unknown i2c) */
1185         reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10);
1186         if (i2c_w(gspca_dev, 0xff, 0x00) >= 0)
1187                 return -8;
1188
1189         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1190         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1191         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1192         reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);    /* i2c 8 bits */
1193         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);  /* cx0342 */
1194         ret = i2c_r(gspca_dev, 0x00, 1);
1195         if (ret > 0)
1196                 return SENSOR_CX0342;
1197         return -9;
1198 }
1199
1200 static void cx0342_6810_init(struct gspca_dev *gspca_dev)
1201 {
1202         static const struct cmd reg_init_1[] = {
1203                 {TP6800_R2F_TIMING_CFG, 0x2f},
1204                 {0x25, 0x02},
1205                 {TP6800_R21_ENDP_1_CTL, 0x00},
1206                 {TP6800_R3F_FRAME_RATE, 0x80},
1207                 {TP6800_R2F_TIMING_CFG, 0x2f},
1208                 {TP6800_R18_GPIO_DATA, 0xe1},
1209                 {TP6800_R18_GPIO_DATA, 0xc1},
1210                 {TP6800_R18_GPIO_DATA, 0xe1},
1211                 {TP6800_R11_SIF_CONTROL, 0x00},
1212         };
1213         static const struct cmd reg_init_2[] = {
1214                 {TP6800_R78_FORMAT, 0x48},
1215                 {TP6800_R11_SIF_CONTROL, 0x00},
1216         };
1217         static const struct cmd sensor_init[] = {
1218                 {CX0342_OUTPUT_CTRL, 0x07},
1219                 {CX0342_BYPASS_MODE, 0x58},
1220                 {CX0342_GPXLTHD_L, 0x28},
1221                 {CX0342_RBPXLTHD_L, 0x28},
1222                 {CX0342_PLANETHD_L, 0x50},
1223                 {CX0342_PLANETHD_H, 0x03},
1224                 {CX0342_RB_GAP_L, 0xff},
1225                 {CX0342_RB_GAP_H, 0x07},
1226                 {CX0342_G_GAP_L, 0xff},
1227                 {CX0342_G_GAP_H, 0x07},
1228                 {CX0342_RST_OVERFLOW_L, 0x5c},
1229                 {CX0342_RST_OVERFLOW_H, 0x01},
1230                 {CX0342_DATA_OVERFLOW_L, 0xfc},
1231                 {CX0342_DATA_OVERFLOW_H, 0x03},
1232                 {CX0342_DATA_UNDERFLOW_L, 0x00},
1233                 {CX0342_DATA_UNDERFLOW_H, 0x00},
1234                 {CX0342_SYS_CTRL_0, 0x40},
1235                 {CX0342_GLOBAL_GAIN, 0x01},
1236                 {CX0342_CLOCK_GEN, 0x00},
1237                 {CX0342_SYS_CTRL_0, 0x02},
1238                 {CX0342_IDLE_CTRL, 0x05},
1239                 {CX0342_ADCGN, 0x00},
1240                 {CX0342_ADC_CTL, 0x00},
1241                 {CX0342_LVRST_BLBIAS, 0x01},
1242                 {CX0342_VTHSEL, 0x0b},
1243                 {CX0342_RAMP_RIV, 0x0b},
1244                 {CX0342_LDOSEL, 0x07},
1245                 {CX0342_SPV_VALUE_L, 0x40},
1246                 {CX0342_SPV_VALUE_H, 0x02},
1247
1248                 {CX0342_AUTO_ADC_CALIB, 0x81},
1249                 {CX0342_TIMING_EN, 0x01},
1250         };
1251
1252         reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1253         reg_w_buf(gspca_dev, tp6810_cx_init_common,
1254                         ARRAY_SIZE(tp6810_cx_init_common));
1255         reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1256
1257         reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);  /* cx0342 I2C addr */
1258         i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1259         i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
1260 }
1261
1262 static void soi763a_6810_init(struct gspca_dev *gspca_dev)
1263 {
1264         static const struct cmd reg_init_1[] = {
1265                 {TP6800_R2F_TIMING_CFG, 0x2f},
1266                 {TP6800_R18_GPIO_DATA, 0xe1},
1267                 {0x25, 0x02},
1268                 {TP6800_R21_ENDP_1_CTL, 0x00},
1269                 {TP6800_R3F_FRAME_RATE, 0x80},
1270                 {TP6800_R2F_TIMING_CFG, 0x2f},
1271                 {TP6800_R18_GPIO_DATA, 0xc1},
1272         };
1273         static const struct cmd reg_init_2[] = {
1274                 {TP6800_R78_FORMAT, 0x54},
1275         };
1276         static const struct cmd sensor_init[] = {
1277                 {0x00, 0x00},
1278                 {0x01, 0x80},
1279                 {0x02, 0x80},
1280                 {0x03, 0x90},
1281                 {0x04, 0x20},
1282                 {0x05, 0x20},
1283                 {0x06, 0x80},
1284                 {0x07, 0x00},
1285                 {0x08, 0xff},
1286                 {0x09, 0xff},
1287                 {0x0a, 0x76},           /* 7630 = soi673a */
1288                 {0x0b, 0x30},
1289                 {0x0c, 0x20},
1290                 {0x0d, 0x20},
1291                 {0x0e, 0xff},
1292                 {0x0f, 0xff},
1293                 {0x10, 0x41},
1294                 {0x15, 0x14},
1295                 {0x11, 0x40},
1296                 {0x12, 0x48},
1297                 {0x13, 0x80},
1298                 {0x14, 0x80},
1299                 {0x16, 0x03},
1300                 {0x28, 0xb0},
1301                 {0x71, 0x20},
1302                 {0x75, 0x8e},
1303                 {0x17, 0x1b},
1304                 {0x18, 0xbd},
1305                 {0x19, 0x05},
1306                 {0x1a, 0xf6},
1307                 {0x1b, 0x04},
1308                 {0x1c, 0x7f},           /* omnivision */
1309                 {0x1d, 0xa2},
1310                 {0x1e, 0x00},
1311                 {0x1f, 0x00},
1312                 {0x20, 0x45},
1313                 {0x21, 0x80},
1314                 {0x22, 0x80},
1315                 {0x23, 0xee},
1316                 {0x24, 0x50},
1317                 {0x25, 0x7a},
1318                 {0x26, 0xa0},
1319                 {0x27, 0x9a},
1320                 {0x29, 0x30},
1321                 {0x2a, 0x80},
1322                 {0x2b, 0x00},
1323                 {0x2c, 0xac},
1324                 {0x2d, 0x05},
1325                 {0x2e, 0x80},
1326                 {0x2f, 0x3c},
1327                 {0x30, 0x22},
1328                 {0x31, 0x00},
1329                 {0x32, 0x86},
1330                 {0x33, 0x08},
1331                 {0x34, 0xff},
1332                 {0x35, 0xff},
1333                 {0x36, 0xff},
1334                 {0x37, 0xff},
1335                 {0x38, 0xff},
1336                 {0x39, 0xff},
1337                 {0x3a, 0xfe},
1338                 {0x3b, 0xfe},
1339                 {0x3c, 0xfe},
1340                 {0x3d, 0xfe},
1341                 {0x3e, 0xfe},
1342                 {0x3f, 0x71},
1343                 {0x40, 0xff},
1344                 {0x41, 0xff},
1345                 {0x42, 0xff},
1346                 {0x43, 0xff},
1347                 {0x44, 0xff},
1348                 {0x45, 0xff},
1349                 {0x46, 0xff},
1350                 {0x47, 0xff},
1351                 {0x48, 0xff},
1352                 {0x49, 0xff},
1353                 {0x4a, 0xfe},
1354                 {0x4b, 0xff},
1355                 {0x4c, 0x00},
1356                 {0x4d, 0x00},
1357                 {0x4e, 0xff},
1358                 {0x4f, 0xff},
1359                 {0x50, 0xff},
1360                 {0x51, 0xff},
1361                 {0x52, 0xff},
1362                 {0x53, 0xff},
1363                 {0x54, 0xff},
1364                 {0x55, 0xff},
1365                 {0x56, 0xff},
1366                 {0x57, 0xff},
1367                 {0x58, 0xff},
1368                 {0x59, 0xff},
1369                 {0x5a, 0xff},
1370                 {0x5b, 0xfe},
1371                 {0x5c, 0xff},
1372                 {0x5d, 0x8f},
1373                 {0x5e, 0xff},
1374                 {0x5f, 0x8f},
1375                 {0x60, 0xa2},
1376                 {0x61, 0x4a},
1377                 {0x62, 0xf3},
1378                 {0x63, 0x75},
1379                 {0x64, 0xf0},
1380                 {0x65, 0x00},
1381                 {0x66, 0x55},
1382                 {0x67, 0x92},
1383                 {0x68, 0xa0},
1384                 {0x69, 0x4a},
1385                 {0x6a, 0x22},
1386                 {0x6b, 0x00},
1387                 {0x6c, 0x33},
1388                 {0x6d, 0x44},
1389                 {0x6e, 0x22},
1390                 {0x6f, 0x84},
1391                 {0x70, 0x0b},
1392                 {0x72, 0x10},
1393                 {0x73, 0x50},
1394                 {0x74, 0x21},
1395                 {0x76, 0x00},
1396                 {0x77, 0xa5},
1397                 {0x78, 0x80},
1398                 {0x79, 0x80},
1399                 {0x7a, 0x80},
1400                 {0x7b, 0xe2},
1401                 {0x7c, 0x00},
1402                 {0x7d, 0xf7},
1403                 {0x7e, 0x00},
1404                 {0x7f, 0x00},
1405         };
1406
1407         reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1408         reg_w_buf(gspca_dev, tp6810_ov_init_common,
1409                         ARRAY_SIZE(tp6810_ov_init_common));
1410         reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1411
1412         i2c_w(gspca_dev, 0x12, 0x80);           /* sensor reset */
1413         msleep(10);
1414         i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1415 }
1416
1417 /* set the gain and exposure */
1418 static void setexposure(struct gspca_dev *gspca_dev)
1419 {
1420         struct sd *sd = (struct sd *) gspca_dev;
1421
1422         if (sd->sensor == SENSOR_CX0342) {
1423                 int expo;
1424
1425                 expo = (sd->ctrls[EXPOSURE].val << 2) - 1;
1426                 i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo);
1427                 i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8);
1428                 if (sd->bridge == BRIDGE_TP6800)
1429                         i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H,
1430                                                 sd->ctrls[GAIN].val >> 8);
1431                 i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, sd->ctrls[GAIN].val);
1432                 if (sd->bridge == BRIDGE_TP6800)
1433                         i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H,
1434                                                 sd->ctrls[GAIN].val >> 8);
1435                 i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, sd->ctrls[GAIN].val);
1436                 if (sd->bridge == BRIDGE_TP6800)
1437                         i2c_w(gspca_dev, CX0342_RAW_BGAIN_H,
1438                                                 sd->ctrls[BGAIN].val >> 8);
1439                 i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, sd->ctrls[BGAIN].val);
1440                 if (sd->bridge == BRIDGE_TP6800)
1441                         i2c_w(gspca_dev, CX0342_RAW_RGAIN_H,
1442                                                 sd->ctrls[RGAIN].val >> 8);
1443                 i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, sd->ctrls[RGAIN].val);
1444                 i2c_w(gspca_dev, CX0342_SYS_CTRL_0,
1445                                 sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81);
1446                 return;
1447         }
1448
1449         /* soi763a */
1450         i2c_w(gspca_dev, 0x10,          /* AEC_H (exposure time) */
1451                          sd->ctrls[EXPOSURE].val);
1452 /*      i2c_w(gspca_dev, 0x76, 0x02);    * AEC_L ([1:0] */
1453         i2c_w(gspca_dev, 0x00,          /* gain */
1454                          sd->ctrls[GAIN].val);
1455 }
1456
1457 /* set the JPEG quantization tables */
1458 static void set_dqt(struct gspca_dev *gspca_dev, u8 q)
1459 {
1460         struct sd *sd = (struct sd *) gspca_dev;
1461
1462         /* update the jpeg quantization tables */
1463         PDEBUG(D_STREAM, "q %d -> %d", sd->quality, q);
1464         sd->quality = q;
1465         if (q > 16)
1466                 q = 16;
1467         if (sd->sensor == SENSOR_SOI763A)
1468                 jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]);
1469         else
1470                 memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1],
1471                         DQT[q], sizeof DQT[0]);
1472 }
1473
1474 /* set the JPEG compression quality factor */
1475 static void setquality(struct gspca_dev *gspca_dev)
1476 {
1477         struct sd *sd = (struct sd *) gspca_dev;
1478         u16 q;
1479
1480         q = sd->ctrls[QUALITY].val;
1481         if (q != 16)
1482                 q = 15 - q;
1483
1484         reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00);
1485         reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04);
1486         reg_w(gspca_dev, TP6800_R79_QUALITY, q);
1487
1488         /* auto quality */
1489         if (q == 15 && sd->bridge == BRIDGE_TP6810) {
1490                 msleep(4);
1491                 reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19);
1492         }
1493 }
1494
1495 static const u8 color_null[18] = {
1496         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1497         0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1498         0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1499 };
1500 static const u8 color_gain[NSENSORS][18] = {
1501 [SENSOR_CX0342] =
1502         {0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00,    /* Y R/G/B (LE values) */
1503          0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00,    /* U R/G/B */
1504          0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03},   /* V R/G/B */
1505 [SENSOR_SOI763A] =
1506         {0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00,    /* Y R/G/B (LE values) */
1507          0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00,    /* U R/G/B */
1508          0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03},   /* V R/G/B */
1509 };
1510
1511 static void setgamma(struct gspca_dev *gspca_dev)
1512 {
1513         struct sd *sd = (struct sd *) gspca_dev;
1514         int gamma;
1515 #define NGAMMA 6
1516         static const u8 gamma_tb[NGAMMA][3][1024] = {
1517             {                           /* gamma 0 - from tp6800 + soi763a */
1518                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1519                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1520                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1521                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1522                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1523                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1524                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1525                  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1526                  0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1527                  0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1528                  0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1529                  0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1530                  0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1531                  0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1532                  0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1533                  0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1534                  0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1535                  0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1536                  0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1537                  0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1538                  0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1539                  0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1540                  0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1541                  0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1542                  0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1543                  0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1544                  0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1545                  0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1546                  0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1547                  0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1548                  0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1549                  0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1550                  0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1551                  0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1552                  0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1553                  0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1554                  0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1555                  0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1556                  0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1557                  0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1558                  0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1559                  0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1560                  0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1561                  0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1562                  0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1563                  0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1564                  0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1565                  0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1566                  0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1567                  0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1568                  0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1569                  0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1570                  0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1571                  0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1572                  0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1573                  0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1574                  0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1575                  0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1576                  0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1577                  0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1578                  0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1579                  0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1580                  0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1581                  0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1582                  0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1583                  0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1584                  0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1585                  0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1586                  0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1587                  0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1588                  0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1589                  0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1590                  0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1591                  0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1592                  0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1593                  0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1594                  0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1595                  0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1596                  0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1597                  0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1598                  0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1599                  0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1600                  0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1601                  0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1602                  0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1603                  0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1604                  0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1605                  0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1606                  0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1607                  0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1608                  0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1609                  0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1610                  0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1611                  0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1612                  0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1613                  0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1614                  0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1615                  0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1616                  0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1617                  0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1618                  0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1619                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1620                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1621                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1622                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1623                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1624                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1625                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1626                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1627                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1628                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1629                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1630                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1631                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1632                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1633                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1634                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1635                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1636                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1637                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1638                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1639                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1640                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1641                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1642                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1643                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1644                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1645                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1646                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1647                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1648                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1649                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1650                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1651                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1652                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1653                  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1654                  0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1655                  0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1656                  0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1657                  0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1658                  0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1659                  0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1660                  0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1661                  0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1662                  0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1663                  0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1664                  0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1665                  0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1666                  0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1667                  0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1668                  0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1669                  0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1670                  0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1671                  0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1672                  0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1673                  0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1674                  0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1675                  0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1676                  0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1677                  0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1678                  0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1679                  0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1680                  0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1681                  0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1682                  0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1683                  0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1684                  0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1685                  0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1686                  0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1687                  0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1688                  0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1689                  0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1690                  0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1691                  0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1692                  0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1693                  0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1694                  0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1695                  0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1696                  0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1697                  0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1698                  0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1699                  0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1700                  0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1701                  0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1702                  0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1703                  0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1704                  0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1705                  0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1706                  0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1707                  0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1708                  0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1709                  0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1710                  0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1711                  0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1712                  0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1713                  0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1714                  0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1715                  0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1716                  0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1717                  0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1718                  0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1719                  0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1720                  0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1721                  0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1722                  0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1723                  0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1724                  0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1725                  0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1726                  0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1727                  0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1728                  0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1729                  0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1730                  0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1731                  0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1732                  0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1733                  0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1734                  0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1735                  0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1736                  0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1737                  0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1738                  0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1739                  0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1740                  0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1741                  0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1742                  0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1743                  0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1744                  0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1745                  0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1746                  0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1747                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1748                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1749                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1750                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1751                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1752                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1753                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1754                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1755                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1756                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1757                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1758                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1759                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1760                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1761                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1762                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1763                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1764                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1765                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1766                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1767                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1768                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1769                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1770                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1771                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1772                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1773                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1774                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1775                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1776                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1777                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1778                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1779                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1780                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1781                  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1782                  0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1783                  0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1784                  0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1785                  0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1786                  0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1787                  0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1788                  0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1789                  0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1790                  0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1791                  0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1792                  0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1793                  0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1794                  0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1795                  0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1796                  0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1797                  0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1798                  0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1799                  0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1800                  0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1801                  0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1802                  0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1803                  0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1804                  0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1805                  0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1806                  0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1807                  0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1808                  0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
1809                  0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1810                  0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1811                  0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1812                  0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1813                  0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1814                  0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1815                  0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1816                  0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1817                  0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1818                  0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1819                  0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1820                  0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1821                  0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1822                  0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1823                  0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1824                  0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1825                  0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1826                  0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1827                  0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1828                  0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1829                  0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1830                  0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1831                  0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1832                  0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1833                  0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1834                  0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1835                  0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1836                  0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1837                  0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1838                  0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1839                  0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1840                  0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1841                  0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1842                  0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1843                  0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1844                  0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1845                  0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1846                  0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1847                  0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1848                  0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1849                  0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1850                  0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1851                  0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1852                  0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1853                  0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1854                  0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1855                  0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1856                  0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1857                  0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1858                  0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1859                  0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1860                  0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1861                  0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1862                  0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1863                  0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1864                  0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1865                  0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1866                  0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1867                  0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1868                  0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1869                  0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1870                  0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1871                  0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1872                  0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1873                  0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1874                  0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1875                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1876                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1877                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1878                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1879                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1880                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1881                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1882                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1883                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1884                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1885                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1886                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1887                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1888                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1889                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1890                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1891                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1892                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1893                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1894                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1895                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1896                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1897                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 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             },
1903             {                           /* gamma 1 - from tp6810 + soi763a */
1904                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1905                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1906                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1907                  0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a,
1908                  0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15,
1909                  0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
1910                  0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27,
1911                  0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f,
1912                  0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35,
1913                  0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c,
1914                  0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
1915                  0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49,
1916                  0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d,
1917                  0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
1918                  0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59,
1919                  0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e,
1920                  0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61,
1921                  0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66,
1922                  0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69,
1923                  0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1924                  0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
1925                  0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
1926                  0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
1927                  0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,
1928                  0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80,
1929                  0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84,
1930                  0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
1931                  0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
1932                  0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
1933                  0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91,
1934                  0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93,
1935                  0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97,
1936                  0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
1937                  0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
1938                  0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
1939                  0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
1940                  0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
1941                  0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
1942                  0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1943                  0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab,
1944                  0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae,
1945                  0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
1946                  0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1947                  0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
1948                  0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
1949                  0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
1950                  0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
1951                  0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
1952                  0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1953                  0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
1954                  0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4,
1955                  0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
1956                  0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
1957                  0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
1958                  0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
1959                  0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1960                  0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1961                  0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
1962                  0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
1963                  0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
1964                  0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
1965                  0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
1966                  0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
1967                  0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
1968                  0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
1969                  0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
1970                  0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
1971                  0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
1972                  0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
1973                  0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8,
1974                  0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
1975                  0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
1976                  0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed,
1977                  0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
1978                  0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1979                  0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
1980                  0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
1981                  0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
1982                  0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1983                  0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
1984                  0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1985                  0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1986                  0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
1987                  0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe,
1988                  0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
1989                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1990                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1991                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1992                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1993                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1994                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1995                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1996                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1997                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1998                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1999                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2000                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2001                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2002                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2003                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2004                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2005                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2006                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2007                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2008                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2009                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2010                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2011                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2012                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2013                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2014                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2015                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2016                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2017                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2018                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2019                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2020                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2021                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2022                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2023                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2024                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2025                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2026                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2027                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2028                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2029                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2030                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2031                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2032                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2033                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2034                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2035                  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
2036                  0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d,
2037                  0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15,
2038                  0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
2039                  0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25,
2040                  0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c,
2041                  0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31,
2042                  0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38,
2043                  0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d,
2044                  0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43,
2045                  0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48,
2046                  0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c,
2047                  0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50,
2048                  0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55,
2049                  0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59,
2050                  0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2051                  0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60,
2052                  0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65,
2053                  0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67,
2054                  0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a,
2055                  0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e,
2056                  0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2057                  0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
2058                  0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78,
2059                  0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a,
2060                  0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d,
2061                  0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2062                  0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
2063                  0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
2064                  0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89,
2065                  0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b,
2066                  0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2067                  0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2068                  0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2069                  0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2070                  0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2071                  0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2072                  0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
2073                  0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2074                  0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2075                  0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2076                  0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2077                  0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2078                  0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2079                  0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2080                  0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
2081                  0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2082                  0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
2083                  0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
2084                  0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
2085                  0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
2086                  0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
2087                  0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
2088                  0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
2089                  0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
2090                  0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2091                  0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2092                  0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
2093                  0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2094                  0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2095                  0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9,
2096                  0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
2097                  0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2098                  0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
2099                  0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf,
2100                  0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2101                  0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
2102                  0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4,
2103                  0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2104                  0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2105                  0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2106                  0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
2107                  0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2108                  0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
2109                  0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2110                  0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
2111                  0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3,
2112                  0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2113                  0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2114                  0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2115                  0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
2116                  0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2117                  0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2118                  0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
2119                  0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2120                  0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
2121                  0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2122                  0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5,
2123                  0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7,
2124                  0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8,
2125                  0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2126                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2127                  0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
2128                  0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2129                  0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2130                  0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
2131                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2132                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2133                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2134                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2135                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2136                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2137                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2138                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2139                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2140                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2141                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2142                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2143                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2144                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2145                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2146                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2147                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2148                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2149                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2150                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2151                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2152                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2153                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2154                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2155                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2156                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2157                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2158                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2159                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2160                 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2161                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2162                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2163                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2164                  0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07,
2165                  0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e,
2166                  0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16,
2167                  0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
2168                  0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23,
2169                  0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29,
2170                  0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30,
2171                  0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35,
2172                  0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a,
2173                  0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d,
2174                  0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43,
2175                  0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47,
2176                  0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b,
2177                  0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f,
2178                  0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53,
2179                  0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
2180                  0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
2181                  0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2182                  0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60,
2183                  0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63,
2184                  0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
2185                  0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69,
2186                  0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2187                  0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e,
2188                  0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2189                  0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74,
2190                  0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77,
2191                  0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79,
2192                  0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b,
2193                  0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
2194                  0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2195                  0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82,
2196                  0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2197                  0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88,
2198                  0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2199                  0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2200                  0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
2201                  0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2202                  0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2203                  0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94,
2204                  0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96,
2205                  0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
2206                  0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2207                  0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
2208                  0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2209                  0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0,
2210                  0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2211                  0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
2212                  0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
2213                  0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6,
2214                  0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
2215                  0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2216                  0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac,
2217                  0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae,
2218                  0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
2219                  0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2220                  0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2,
2221                  0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
2222                  0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6,
2223                  0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2224                  0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2225                  0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba,
2226                  0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2227                  0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2228                  0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2229                  0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2230                  0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
2231                  0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2232                  0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2233                  0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2234                  0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2235                  0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2236                  0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2237                  0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2238                  0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2239                  0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2240                  0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2241                  0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
2242                  0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7,
2243                  0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2244                  0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2245                  0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
2246                  0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2247                  0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
2248                  0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0,
2249                  0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
2250                  0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3,
2251                  0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
2252                  0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
2253                  0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
2254                  0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2255                  0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
2256                  0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2257                  0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2258                  0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef,
2259                  0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1,
2260                  0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2261                  0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2262                  0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2263                  0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
2264                  0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2265                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2266                  0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc,
2267                  0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd,
2268                  0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
2269                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2270                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2271                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2272                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2273                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2274                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2275                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2276                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2277                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2278                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2279                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2280                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2281                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2282                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2283                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2284                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2285                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2286                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2287                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
2288             },
2289             {                                                   /* gamma 2 */
2290                 {0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c,
2291                  0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17,
2292                  0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22,
2293                  0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
2294                  0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34,
2295                  0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b,
2296                  0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
2297                  0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49,
2298                  0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f,
2299                  0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55,
2300                  0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a,
2301                  0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
2302                  0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63,
2303                  0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
2304                  0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2305                  0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70,
2306                  0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74,
2307                  0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78,
2308                  0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
2309                  0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
2310                  0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
2311                  0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2312                  0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89,
2313                  0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d,
2314                  0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
2315                  0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
2316                  0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
2317                  0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2318                  0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99,
2319                  0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2320                  0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
2321                  0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2322                  0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3,
2323                  0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5,
2324                  0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8,
2325                  0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2326                  0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad,
2327                  0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2328                  0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0,
2329                  0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2330                  0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4,
2331                  0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
2332                  0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
2333                  0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba,
2334                  0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2335                  0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2336                  0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0,
2337                  0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2338                  0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4,
2339                  0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
2340                  0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
2341                  0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2342                  0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2343                  0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2344                  0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce,
2345                  0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
2346                  0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2347                  0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
2348                  0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2349                  0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2350                  0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
2351                  0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2352                  0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2353                  0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2354                  0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
2355                  0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
2356                  0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2357                  0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
2358                  0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2359                  0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
2360                  0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2361                  0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
2362                  0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2363                  0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2364                  0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2365                  0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2366                  0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1,
2367                  0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
2368                  0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
2369                  0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
2370                  0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2371                  0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9,
2372                  0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa,
2373                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2374                  0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2375                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2376                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2377                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2378                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2379                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2380                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2381                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2382                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2383                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2384                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2385                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2386                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2387                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2388                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2389                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2390                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2391                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2392                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2393                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2394                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2395                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2396                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2397                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2398                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2399                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2400                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2401                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2402                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2403                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2404                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2405                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2406                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2407                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2408                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2409                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2410                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2411                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2412                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2413                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2414                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2415                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2416                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2417                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2418                 {0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05,
2419                  0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11,
2420                  0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a,
2421                  0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23,
2422                  0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b,
2423                  0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33,
2424                  0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39,
2425                  0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f,
2426                  0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44,
2427                  0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a,
2428                  0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d,
2429                  0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2430                  0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58,
2431                  0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
2432                  0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f,
2433                  0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63,
2434                  0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67,
2435                  0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
2436                  0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d,
2437                  0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
2438                  0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73,
2439                  0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77,
2440                  0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79,
2441                  0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
2442                  0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f,
2443                  0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81,
2444                  0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84,
2445                  0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
2446                  0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a,
2447                  0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2448                  0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f,
2449                  0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91,
2450                  0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2451                  0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2452                  0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2453                  0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99,
2454                  0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b,
2455                  0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c,
2456                  0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e,
2457                  0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2458                  0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2,
2459                  0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2460                  0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
2461                  0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2462                  0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2463                  0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2464                  0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae,
2465                  0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf,
2466                  0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2467                  0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2468                  0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
2469                  0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
2470                  0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2471                  0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2472                  0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2473                  0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2474                  0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2475                  0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
2476                  0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2477                  0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
2478                  0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2479                  0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
2480                  0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
2481                  0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
2482                  0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
2483                  0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2484                  0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2485                  0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2486                  0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
2487                  0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2488                  0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2489                  0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2490                  0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2491                  0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2492                  0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2493                  0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2494                  0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
2495                  0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
2496                  0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2497                  0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
2498                  0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
2499                  0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2500                  0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2501                  0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
2502                  0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
2503                  0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2504                  0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2505                  0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2506                  0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2507                  0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
2508                  0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef,
2509                  0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2510                  0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2511                  0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2512                  0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2513                  0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
2514                  0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2515                  0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
2516                  0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
2517                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb,
2518                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2519                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2520                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2521                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2522                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2523                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2524                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2525                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2526                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2527                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2528                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2529                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2530                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2531                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2532                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2533                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2534                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2535                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2536                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2537                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2538                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2539                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2540                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2541                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2542                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2543                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2544                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2545                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2546                 {0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08,
2547                  0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14,
2548                  0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e,
2549                  0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27,
2550                  0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f,
2551                  0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37,
2552                  0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c,
2553                  0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43,
2554                  0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49,
2555                  0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d,
2556                  0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2557                  0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58,
2558                  0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c,
2559                  0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2560                  0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65,
2561                  0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68,
2562                  0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2563                  0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f,
2564                  0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73,
2565                  0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
2566                  0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
2567                  0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2568                  0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80,
2569                  0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82,
2570                  0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85,
2571                  0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
2572                  0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b,
2573                  0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2574                  0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
2575                  0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2576                  0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2577                  0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2578                  0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2579                  0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2580                  0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2581                  0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2582                  0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2583                  0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2584                  0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2585                  0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2586                  0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2587                  0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2588                  0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2589                  0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
2590                  0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
2591                  0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
2592                  0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4,
2593                  0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2594                  0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
2595                  0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
2596                  0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2597                  0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2598                  0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2599                  0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2600                  0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
2601                  0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2602                  0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2603                  0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2604                  0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2605                  0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2606                  0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2607                  0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2608                  0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2609                  0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2610                  0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2611                  0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2612                  0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2613                  0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2614                  0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
2615                  0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2616                  0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2617                  0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2618                  0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2619                  0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
2620                  0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2621                  0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
2622                  0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2623                  0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6,
2624                  0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2625                  0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2626                  0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
2627                  0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
2628                  0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2629                  0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2630                  0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2631                  0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1,
2632                  0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2633                  0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
2634                  0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2635                  0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7,
2636                  0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
2637                  0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2638                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2639                  0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2640                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2641                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2642                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2643                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2644                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2645                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2646                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2647                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2648                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2649                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2650                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2651                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2652                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2653                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2654                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2655                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2656                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2657                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2658                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2659                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2660                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2661                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2662                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2663                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2664                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2665                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2666                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2667                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2668                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2669                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2670                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2671                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2672                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2673                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
2674             },
2675             {                           /* gamma 3 - from tp6810 + cx0342 */
2676                 {0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15,
2677                  0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23,
2678                  0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f,
2679                  0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39,
2680                  0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43,
2681                  0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
2682                  0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53,
2683                  0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a,
2684                  0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
2685                  0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67,
2686                  0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d,
2687                  0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73,
2688                  0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78,
2689                  0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c,
2690                  0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81,
2691                  0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2692                  0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2693                  0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f,
2694                  0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93,
2695                  0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97,
2696                  0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2697                  0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
2698                  0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
2699                  0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2700                  0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
2701                  0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
2702                  0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2703                  0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2704                  0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3,
2705                  0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2706                  0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2707                  0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2708                  0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2709                  0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
2710                  0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5,
2711                  0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
2712                  0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2713                  0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
2714                  0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce,
2715                  0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2716                  0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3,
2717                  0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2718                  0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2719                  0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda,
2720                  0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2721                  0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2722                  0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2723                  0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2724                  0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4,
2725                  0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2726                  0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2727                  0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
2728                  0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2729                  0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
2730                  0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
2731                  0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2732                  0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2733                  0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2734                  0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2735                  0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2736                  0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2737                  0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
2738                  0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2739                  0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
2740                  0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff,
2741                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2742                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2743                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2744                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2745                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2746                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2747                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2748                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2749                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2750                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2751                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2752                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2753                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2754                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2755                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2756                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2757                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2758                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2759                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2760                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2761                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2762                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2763                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2764                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2765                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2766                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2767                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2768                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2769                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2770                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2771                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2772                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2773                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2774                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2775                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2776                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2777                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2778                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2779                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2780                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2781                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2782                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2783                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2784                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2785                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2786                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2787                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2788                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2789                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2790                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2791                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2792                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2793                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2794                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2795                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2796                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2797                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2798                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2799                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2800                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2801                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2802                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2803                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2804                 {0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10,
2805                  0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b,
2806                  0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26,
2807                  0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f,
2808                  0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38,
2809                  0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f,
2810                  0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
2811                  0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b,
2812                  0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52,
2813                  0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58,
2814                  0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c,
2815                  0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2816                  0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66,
2817                  0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69,
2818                  0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
2819                  0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
2820                  0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
2821                  0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
2822                  0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2823                  0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
2824                  0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84,
2825                  0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86,
2826                  0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2827                  0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e,
2828                  0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90,
2829                  0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2830                  0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96,
2831                  0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98,
2832                  0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a,
2833                  0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
2834                  0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e,
2835                  0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2836                  0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3,
2837                  0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2838                  0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
2839                  0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
2840                  0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad,
2841                  0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2842                  0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2843                  0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
2844                  0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4,
2845                  0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2846                  0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2847                  0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2848                  0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2849                  0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
2850                  0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
2851                  0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2852                  0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2853                  0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2854                  0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2855                  0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2856                  0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2857                  0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2858                  0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2859                  0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0,
2860                  0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2861                  0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
2862                  0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2863                  0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
2864                  0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2865                  0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2866                  0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2867                  0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2868                  0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2869                  0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2870                  0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2,
2871                  0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
2872                  0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
2873                  0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2874                  0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2875                  0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2876                  0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2877                  0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec,
2878                  0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2879                  0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
2880                  0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
2881                  0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2882                  0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2883                  0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
2884                  0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2885                  0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
2886                  0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
2887                  0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2888                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb,
2889                  0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc,
2890                  0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2891                  0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2892                  0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
2893                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2894                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2895                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2896                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2897                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2899                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2900                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2901                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2902                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2903                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2904                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2905                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2906                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2907                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2908                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2909                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2910                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2911                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2912                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2913                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2914                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2915                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2916                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2917                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2918                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2919                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2920                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2921                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2922                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2923                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2924                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2925                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2926                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2927                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2928                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2929                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2930                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2931                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2932                 {0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14,
2933                  0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
2934                  0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d,
2935                  0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38,
2936                  0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40,
2937                  0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49,
2938                  0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50,
2939                  0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58,
2940                  0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e,
2941                  0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63,
2942                  0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
2943                  0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e,
2944                  0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74,
2945                  0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79,
2946                  0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d,
2947                  0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81,
2948                  0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2949                  0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2950                  0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f,
2951                  0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
2952                  0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96,
2953                  0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
2954                  0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
2955                  0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
2956                  0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
2957                  0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
2958                  0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9,
2959                  0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac,
2960                  0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2961                  0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1,
2962                  0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
2963                  0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2964                  0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2965                  0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc,
2966                  0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
2967                  0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
2968                  0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4,
2969                  0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2970                  0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9,
2971                  0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb,
2972                  0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2973                  0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf,
2974                  0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2975                  0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
2976                  0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2977                  0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2978                  0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
2979                  0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2980                  0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2981                  0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2982                  0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2983                  0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2984                  0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2985                  0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2986                  0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2987                  0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb,
2988                  0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2989                  0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2990                  0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2991                  0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2992                  0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
2993                  0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2994                  0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2995                  0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2996                  0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2997                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
2998                  0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2999                  0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd,
3000                  0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff,
3001                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3002                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3003                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3004                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3005                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3006                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3007                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3008                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3009                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3010                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3011                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3012                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3013                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3014                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3015                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3016                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3017                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3018                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3019                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3020                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3021                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3022                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3023                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3024                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3025                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3026                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3027                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3028                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3029                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3030                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3031                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3032                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3033                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3034                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3035                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3036                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3037                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3038                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3039                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3040                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3041                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3042                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3043                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3044                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3045                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3046                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3047                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3048                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3049                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3050                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3051                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3052                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3053                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3054                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3055                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3056                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3057                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3058                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3059                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
3060             },
3061             {                           /* gamma 4 - from tp6800 + soi763a */
3062                 {0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f,
3063                  0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d,
3064                  0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a,
3065                  0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45,
3066                  0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f,
3067                  0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58,
3068                  0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60,
3069                  0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67,
3070                  0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e,
3071                  0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74,
3072                  0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a,
3073                  0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3074                  0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86,
3075                  0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b,
3076                  0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91,
3077                  0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96,
3078                  0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
3079                  0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3080                  0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2,
3081                  0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5,
3082                  0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab,
3083                  0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3084                  0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1,
3085                  0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4,
3086                  0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
3087                  0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc,
3088                  0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
3089                  0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
3090                  0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3091                  0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9,
3092                  0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3093                  0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
3094                  0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
3095                  0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3096                  0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3097                  0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
3098                  0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
3099                  0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf,
3100                  0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3101                  0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3102                  0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
3103                  0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
3104                  0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3105                  0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3106                  0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3107                  0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3108                  0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
3109                  0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3110                  0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3111                  0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
3112                  0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
3113                  0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3114                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3115                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3116                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3117                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3118                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3119                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3120                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3121                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3122                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3123                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3124                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3125                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3126                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3127                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3128                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3129                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3130                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3131                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3132                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3133                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3134                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3135                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3136                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3137                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3138                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3139                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3140                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3141                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3142                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3143                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3144                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3145                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3146                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3147                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3148                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3149                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3150                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3151                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3152                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3153                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3154                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3155                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3156                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3157                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3158                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3159                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3160                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3161                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3162                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3163                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3164                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3165                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3166                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3167                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3168                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3169                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3170                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3171                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3172                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3173                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3174                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3175                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3176                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3177                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3178                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3179                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3180                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3181                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3182                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3183                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3184                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3185                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3186                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3187                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3188                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3189                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3190                 {0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15,
3191                  0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
3192                  0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
3193                  0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35,
3194                  0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d,
3195                  0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
3196                  0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c,
3197                  0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54,
3198                  0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a,
3199                  0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
3200                  0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65,
3201                  0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
3202                  0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
3203                  0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73,
3204                  0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77,
3205                  0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b,
3206                  0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
3207                  0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82,
3208                  0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86,
3209                  0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
3210                  0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
3211                  0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91,
3212                  0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94,
3213                  0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3214                  0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
3215                  0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
3216                  0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
3217                  0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3218                  0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4,
3219                  0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6,
3220                  0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
3221                  0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad,
3222                  0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
3223                  0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3224                  0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
3225                  0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
3226                  0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8,
3227                  0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3228                  0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
3229                  0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3230                  0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
3231                  0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3232                  0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3233                  0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3234                  0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9,
3235                  0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3236                  0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd,
3237                  0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3238                  0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3239                  0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3,
3240                  0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3241                  0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3242                  0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3243                  0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
3244                  0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
3245                  0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3246                  0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
3247                  0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
3248                  0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
3249                  0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
3250                  0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3251                  0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
3252                  0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
3253                  0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
3254                  0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3255                  0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3256                  0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3257                  0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3258                  0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3259                  0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
3260                  0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3261                  0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3262                  0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3263                  0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3264                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3265                  0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3266                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3267                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3268                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3269                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3270                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3271                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3272                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3273                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3274                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3275                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3276                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3277                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3278                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3279                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3280                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3281                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3282                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3283                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3284                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3285                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3286                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3287                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3288                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3289                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3290                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3291                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3292                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3293                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3294                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3295                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3296                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3297                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3298                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3299                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3300                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3301                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3302                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3303                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3304                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3305                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3306                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3307                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3308                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3309                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3310                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3311                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3312                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3313                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3314                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3315                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3316                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3317                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3318                 {0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b,
3319                  0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28,
3320                  0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34,
3321                  0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
3322                  0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48,
3323                  0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50,
3324                  0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58,
3325                  0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f,
3326                  0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65,
3327                  0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c,
3328                  0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3329                  0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77,
3330                  0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
3331                  0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3332                  0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85,
3333                  0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a,
3334                  0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f,
3335                  0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92,
3336                  0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97,
3337                  0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3338                  0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
3339                  0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
3340                  0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3341                  0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
3342                  0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
3343                  0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
3344                  0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3345                  0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
3346                  0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
3347                  0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
3348                  0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3349                  0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
3350                  0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3,
3351                  0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3352                  0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
3353                  0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3354                  0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc,
3355                  0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3356                  0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0,
3357                  0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3358                  0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
3359                  0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8,
3360                  0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
3361                  0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
3362                  0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf,
3363                  0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3364                  0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3365                  0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3366                  0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
3367                  0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8,
3368                  0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
3369                  0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
3370                  0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
3371                  0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3372                  0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3373                  0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
3374                  0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
3375                  0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
3376                  0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
3377                  0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3378                  0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3379                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3380                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3381                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3382                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3383                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3384                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3385                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3386                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3387                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3388                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3389                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3390                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3391                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3392                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3393                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3394                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3395                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3396                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3397                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3398                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3399                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3400                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3401                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3402                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3403                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3404                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3405                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3406                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3407                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3408                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3409                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3410                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3411                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3412                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3413                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3414                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3415                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3416                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3417                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3418                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3419                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3420                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3421                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3422                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3423                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3424                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3425                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3426                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3427                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3428                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3429                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3430                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3431                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3432                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3433                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3434                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3435                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3436                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3437                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3438                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3439                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3440                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3441                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3442                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3443                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3444                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3445                  0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
3446             },
3447             {                                                   /* gamma 5 */
3448                 {0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21,
3449                  0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c,
3450                  0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36,
3451                  0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3452                  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3453                  0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
3454                  0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55,
3455                  0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b,
3456                  0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
3457                  0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66,
3458                  0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b,
3459                  0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3460                  0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75,
3461                  0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79,
3462                  0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e,
3463                  0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82,
3464                  0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85,
3465                  0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89,
3466                  0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d,
3467                  0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90,
3468                  0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94,
3469                  0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97,
3470                  0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3471                  0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3472                  0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0,
3473                  0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
3474                  0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
3475                  0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8,
3476                  0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3477                  0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3478                  0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3479                  0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3,
3480                  0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5,
3481                  0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3482                  0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3483                  0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc,
3484                  0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
3485                  0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
3486                  0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3487                  0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3488                  0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7,
3489                  0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9,
3490                  0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3491                  0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
3492                  0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf,
3493                  0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3494                  0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3,
3495                  0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5,
3496                  0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3497                  0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
3498                  0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
3499                  0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd,
3500                  0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde,
3501                  0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
3502                  0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3503                  0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
3504                  0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3505                  0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7,
3506                  0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3507                  0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb,
3508                  0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3509                  0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3510                  0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3511                  0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
3512                  0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3,
3513                  0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
3514                  0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
3515                  0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3516                  0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3517                  0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3518                  0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3519                  0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3520                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3521                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3522                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3523                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3524                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3525                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3526                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3527                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3528                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3529                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3530                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3531                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3532                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3533                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3534                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3535                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3536                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3537                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3538                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3539                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3540                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3541                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3542                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3543                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3544                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3545                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3546                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3547                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3548                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3549                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3550                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3551                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3552                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3553                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3554                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3555                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3556                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3557                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3558                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3559                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3560                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3561                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3562                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3563                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3564                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3565                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3566                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3567                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3568                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3569                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3570                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3571                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3572                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3573                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3574                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3575                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3576                 {0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19,
3577                  0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
3578                  0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
3579                  0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32,
3580                  0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39,
3581                  0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f,
3582                  0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45,
3583                  0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b,
3584                  0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50,
3585                  0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54,
3586                  0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59,
3587                  0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d,
3588                  0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
3589                  0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65,
3590                  0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68,
3591                  0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c,
3592                  0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f,
3593                  0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72,
3594                  0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75,
3595                  0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78,
3596                  0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
3597                  0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e,
3598                  0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81,
3599                  0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83,
3600                  0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
3601                  0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88,
3602                  0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b,
3603                  0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
3604                  0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f,
3605                  0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
3606                  0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
3607                  0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96,
3608                  0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98,
3609                  0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3610                  0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
3611                  0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e,
3612                  0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0,
3613                  0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3614                  0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
3615                  0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
3616                  0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7,
3617                  0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
3618                  0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3619                  0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
3620                  0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
3621                  0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3622                  0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
3623                  0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3624                  0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5,
3625                  0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
3626                  0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
3627                  0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3628                  0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
3629                  0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3630                  0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3631                  0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
3632                  0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
3633                  0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3634                  0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
3635                  0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
3636                  0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
3637                  0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9,
3638                  0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca,
3639                  0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
3640                  0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd,
3641                  0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
3642                  0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3643                  0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
3644                  0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3645                  0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3646                  0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
3647                  0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3648                  0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3649                  0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
3650                  0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb,
3651                  0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3652                  0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde,
3653                  0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf,
3654                  0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
3655                  0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3656                  0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
3657                  0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3658                  0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
3659                  0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3660                  0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3661                  0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea,
3662                  0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
3663                  0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
3664                  0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
3665                  0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3666                  0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
3667                  0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
3668                  0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
3669                  0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3670                  0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3671                  0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3672                  0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa,
3673                  0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3674                  0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3675                  0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3676                  0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3677                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3678                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3679                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3680                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3681                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3682                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3683                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3684                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3685                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3686                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3687                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3688                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3689                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3690                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3691                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3692                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3693                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3694                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3695                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3696                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3697                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3698                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3699                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3700                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3701                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3702                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3703                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3704                 {0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e,
3705                  0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28,
3706                  0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
3707                  0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
3708                  0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
3709                  0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48,
3710                  0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e,
3711                  0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54,
3712                  0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59,
3713                  0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f,
3714                  0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63,
3715                  0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
3716                  0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c,
3717                  0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3718                  0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74,
3719                  0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78,
3720                  0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c,
3721                  0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
3722                  0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83,
3723                  0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
3724                  0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89,
3725                  0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c,
3726                  0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
3727                  0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
3728                  0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95,
3729                  0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3730                  0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3731                  0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d,
3732                  0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f,
3733                  0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
3734                  0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3735                  0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
3736                  0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9,
3737                  0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3738                  0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad,
3739                  0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
3740                  0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
3741                  0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3742                  0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5,
3743                  0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3744                  0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
3745                  0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb,
3746                  0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
3747                  0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
3748                  0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1,
3749                  0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3750                  0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3751                  0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3752                  0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8,
3753                  0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3754                  0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
3755                  0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
3756                  0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
3757                  0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3758                  0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3759                  0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
3760                  0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6,
3761                  0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
3762                  0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
3763                  0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
3764                  0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3765                  0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3766                  0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
3767                  0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
3768                  0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3769                  0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
3770                  0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6,
3771                  0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3772                  0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3773                  0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea,
3774                  0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3775                  0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3776                  0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3777                  0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3778                  0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2,
3779                  0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
3780                  0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3781                  0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
3782                  0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3783                  0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
3784                  0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
3785                  0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
3786                  0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe,
3787                  0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3788                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3789                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3790                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3791                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3792                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3793                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3794                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3795                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3796                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3797                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3798                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3799                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3800                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3801                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3802                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3803                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3804                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3805                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3806                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3807                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3808                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3809                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3810                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3811                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3812                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3813                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3814                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3815                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3816                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3817                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3818                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3819                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3820                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3821                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3822                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3823                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3824                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3825                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3826                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3827                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3828                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3829                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3830                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3831                  0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3832             },
3833         };
3834
3835         reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3836         if (sd->bridge == BRIDGE_TP6810)
3837                 reg_w(gspca_dev, 0x02, 0x28);
3838 /*      msleep(50); */
3839         gamma = sd->ctrls[GAMMA].val;
3840         bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024);
3841         bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024);
3842         bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024);
3843         if (sd->bridge == BRIDGE_TP6810) {
3844                 int i;
3845
3846                 reg_w(gspca_dev, 0x02, 0x2b);
3847                 reg_w(gspca_dev, 0x02, 0x28);
3848                 for (i = 0; i < 6; i++)
3849                         reg_w(gspca_dev, TP6800_R55_GAMMA_R,
3850                                 gamma_tb[gamma][0][i]);
3851                 reg_w(gspca_dev, 0x02, 0x2b);
3852                 reg_w(gspca_dev, 0x02, 0x28);
3853                 for (i = 0; i < 6; i++)
3854                         reg_w(gspca_dev, TP6800_R56_GAMMA_G,
3855                                 gamma_tb[gamma][1][i]);
3856                 reg_w(gspca_dev, 0x02, 0x2b);
3857                 reg_w(gspca_dev, 0x02, 0x28);
3858                 for (i = 0; i < 6; i++)
3859                         reg_w(gspca_dev, TP6800_R57_GAMMA_B,
3860                                 gamma_tb[gamma][2][i]);
3861                 reg_w(gspca_dev, 0x02, 0x28);
3862         }
3863         reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3864 /*      msleep(50); */
3865 }
3866
3867 static void setsharpness(struct gspca_dev *gspca_dev)
3868 {
3869         struct sd *sd = (struct sd *) gspca_dev;
3870         u8 val;
3871
3872         if (sd->bridge == BRIDGE_TP6800) {
3873                 val = sd->ctrls[SHARPNESS].val
3874                                 | 0x08;         /* grid compensation enable */
3875                 if (gspca_dev->width == 640)
3876                         reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3877                 else
3878                         val |= 0x04;            /* scaling down enable */
3879                 reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val);
3880         } else {
3881                 val = (sd->ctrls[SHARPNESS].val << 5) | 0x08;
3882                 reg_w(gspca_dev, 0x59, val);
3883         }
3884 }
3885
3886 static void setautogain(struct gspca_dev *gspca_dev)
3887 {
3888         struct sd *sd = (struct sd *) gspca_dev;
3889
3890         if (gspca_dev->ctrl_dis & (1 << AUTOGAIN))
3891                 return;
3892         if (sd->ctrls[AUTOGAIN].val) {
3893                 sd->ag_cnt = AG_CNT_START;
3894                 gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
3895         } else {
3896                 sd->ag_cnt = -1;
3897                 gspca_dev->ctrl_inac &= ~((1 << EXPOSURE) | (1 << GAIN));
3898         }
3899 }
3900
3901 /* set the resolution for sensor cx0342 */
3902 static void set_resolution(struct gspca_dev *gspca_dev)
3903 {
3904         reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3905         if (gspca_dev->width == 320) {
3906                 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
3907                 msleep(100);
3908                 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3909                 msleep(100);
3910                 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3911                 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);      /* qvga */
3912                 reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d);
3913                 i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37);
3914                 i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01);
3915         } else {
3916                 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05);
3917                 msleep(100);
3918                 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3919                 msleep(100);
3920                 reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3921                 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);      /* vga */
3922                 reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09);
3923                 i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf);
3924                 i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
3925         }
3926         i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
3927         bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
3928                                 ARRAY_SIZE(color_gain[0]));
3929         setgamma(gspca_dev);
3930         setquality(gspca_dev);
3931 }
3932
3933 /* convert the frame rate to a tp68x0 value */
3934 static int get_fr_idx(struct gspca_dev *gspca_dev)
3935 {
3936         struct sd *sd = (struct sd *) gspca_dev;
3937         int i;
3938
3939         if (sd->bridge == BRIDGE_TP6800) {
3940                 for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) {
3941                         if (sd->framerate >= rates[i])
3942                                 break;
3943                 }
3944                 i = 6 - i;              /* 1 = 5fps .. 6 = 30fps */
3945
3946                 /* 640x480 * 30 fps does not work */
3947                 if (i == 6                      /* if 30 fps */
3948                  && gspca_dev->width == 640)
3949                         i = 0x05;               /* 15 fps */
3950         } else {
3951                 for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
3952                         if (sd->framerate >= rates_6810[i])
3953                                 break;
3954                 }
3955                 i = 7 - i;              /* 3 = 5fps .. 7 = 30fps */
3956
3957                 /* 640x480 * 30 fps does not work */
3958                 if (i == 7                      /* if 30 fps */
3959                  && gspca_dev->width == 640)
3960                         i = 6;                  /* 15 fps */
3961                 i |= 0x80;                      /* clock * 1 */
3962         }
3963         return i;
3964 }
3965
3966 static void setframerate(struct gspca_dev *gspca_dev)
3967 {
3968         struct sd *sd = (struct sd *) gspca_dev;
3969         u8 fr_idx;
3970
3971         fr_idx = get_fr_idx(gspca_dev);
3972
3973         if (sd->bridge == BRIDGE_TP6810) {
3974                 reg_r(gspca_dev, 0x7b);
3975                 reg_w(gspca_dev, 0x7b,
3976                         sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90);
3977                 if (sd->ctrls[EXPOSURE].val >= 128)
3978                         fr_idx = 0xf0;          /* lower frame rate */
3979         }
3980
3981         reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx);
3982
3983         if (sd->sensor == SENSOR_CX0342)
3984                 i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3985 }
3986
3987 static void setrgain(struct gspca_dev *gspca_dev)
3988 {
3989         struct sd *sd = (struct sd *) gspca_dev;
3990         int rgain;
3991
3992         rgain = sd->ctrls[RGAIN].val;
3993         i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8);
3994         i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain);
3995         i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
3996 }
3997
3998 static int sd_setgain(struct gspca_dev *gspca_dev, __s32 val)
3999 {
4000         struct sd *sd = (struct sd *) gspca_dev;
4001
4002         if (sd->sensor == SENSOR_CX0342) {
4003                 sd->ctrls[BGAIN].val = sd->ctrls[BGAIN].val
4004                                         * val / sd->ctrls[GAIN].val;
4005                 if (sd->ctrls[BGAIN].val > 4095)
4006                         sd->ctrls[BGAIN].val = 4095;
4007                 sd->ctrls[RGAIN].val = sd->ctrls[RGAIN].val
4008                                         * val / sd->ctrls[GAIN].val;
4009                 if (sd->ctrls[RGAIN].val > 4095)
4010                         sd->ctrls[RGAIN].val = 4095;
4011         }
4012         sd->ctrls[GAIN].val = val;
4013         if (gspca_dev->streaming)
4014                 setexposure(gspca_dev);
4015         return gspca_dev->usb_err;
4016 }
4017
4018 static void setbgain(struct gspca_dev *gspca_dev)
4019 {
4020         struct sd *sd = (struct sd *) gspca_dev;
4021         int bgain;
4022
4023         bgain = sd->ctrls[BGAIN].val;
4024         i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8);
4025         i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain);
4026         i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
4027 }
4028
4029 /* this function is called at probe time */
4030 static int sd_config(struct gspca_dev *gspca_dev,
4031                      const struct usb_device_id *id)
4032 {
4033         struct sd *sd = (struct sd *) gspca_dev;
4034
4035         sd->bridge = id->driver_info;
4036
4037         gspca_dev->cam.cam_mode = vga_mode;
4038         gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
4039         gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ?
4040                         framerates : framerates_6810;
4041
4042         sd->framerate = 30;             /* default: 30 fps */
4043         gspca_dev->cam.ctrls = sd->ctrls;
4044         return 0;
4045 }
4046
4047 /* this function is called at probe and resume time */
4048 static int sd_init(struct gspca_dev *gspca_dev)
4049 {
4050         struct sd *sd = (struct sd *) gspca_dev;
4051         static const struct cmd tp6800_preinit[] = {
4052                 {TP6800_R10_SIF_TYPE, 0x01},    /* sif */
4053                 {TP6800_R11_SIF_CONTROL, 0x01},
4054                 {TP6800_R15_GPIO_PU, 0x9f},
4055                 {TP6800_R16_GPIO_PD, 0x9f},
4056                 {TP6800_R17_GPIO_IO, 0x80},
4057                 {TP6800_R18_GPIO_DATA, 0x40},   /* LED off */
4058         };
4059         static const struct cmd tp6810_preinit[] = {
4060                 {TP6800_R2F_TIMING_CFG, 0x2f},
4061                 {TP6800_R15_GPIO_PU, 0x6f},
4062                 {TP6800_R16_GPIO_PD, 0x40},
4063                 {TP6800_R17_GPIO_IO, 0x9f},
4064                 {TP6800_R18_GPIO_DATA, 0xc1},   /* LED off */
4065         };
4066
4067         if (sd->bridge == BRIDGE_TP6800)
4068                 reg_w_buf(gspca_dev, tp6800_preinit,
4069                                 ARRAY_SIZE(tp6800_preinit));
4070         else
4071                 reg_w_buf(gspca_dev, tp6810_preinit,
4072                                 ARRAY_SIZE(tp6810_preinit));
4073         msleep(15);
4074         reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4075         PDEBUG(D_PROBE, "gpio: %02x", gspca_dev->usb_buf[0]);
4076 /* values:
4077  *      0x80: snapshot button
4078  *      0x40: LED
4079  *      0x20: (bridge / sensor) reset for tp6810 ?
4080  *      0x07: sensor type ?
4081  */
4082
4083         /* guess the sensor type */
4084         if (force_sensor >= 0) {
4085                 sd->sensor = force_sensor;
4086         } else {
4087                 if (sd->bridge == BRIDGE_TP6800) {
4088 /*fixme: not sure this is working*/
4089                         switch (gspca_dev->usb_buf[0] & 0x07) {
4090                         case 0:
4091                                 sd->sensor = SENSOR_SOI763A;
4092                                 break;
4093                         case 1:
4094                                 sd->sensor = SENSOR_CX0342;
4095                                 break;
4096                         }
4097                 } else {
4098                         int sensor;
4099
4100                         sensor = probe_6810(gspca_dev);
4101                         if (sensor < 0) {
4102                                 pr_warn("Unknown sensor %d - forced to soi763a\n",
4103                                         -sensor);
4104                                 sensor = SENSOR_SOI763A;
4105                         }
4106                         sd->sensor = sensor;
4107                 }
4108         }
4109         if (sd->sensor == SENSOR_SOI763A) {
4110                 pr_info("Sensor soi763a\n");
4111                 sd->ctrls[GAMMA].def = sd->bridge == BRIDGE_TP6800 ? 0 : 1;
4112                 sd->ctrls[GAIN].max = 15;
4113                 sd->ctrls[GAIN].def = 3;
4114                 gspca_dev->ctrl_dis = (1 << RGAIN) | (1 << BGAIN);
4115                 if (sd->bridge == BRIDGE_TP6810) {
4116                         soi763a_6810_init(gspca_dev);
4117 #if AUTOGAIN_DEF
4118                         gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
4119 #endif
4120                 } else {
4121                         gspca_dev->ctrl_dis |= (1 << AUTOGAIN);
4122                 }
4123         } else {
4124                 pr_info("Sensor cx0342\n");
4125                 if (sd->bridge == BRIDGE_TP6810) {
4126                         cx0342_6810_init(gspca_dev);
4127 #if AUTOGAIN_DEF
4128                         gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
4129 #endif
4130                 } else {
4131                         gspca_dev->ctrl_dis |= (1 << AUTOGAIN);
4132                 }
4133         }
4134
4135         if (sd->bridge == BRIDGE_TP6810)
4136                 sd->ctrls[QUALITY].def = 0;     /* auto quality */
4137         set_dqt(gspca_dev, 0);
4138         return 0;
4139 }
4140
4141 /* This function is called before choosing the alt setting */
4142 static int sd_isoc_init(struct gspca_dev *gspca_dev)
4143 {
4144         struct sd *sd = (struct sd *) gspca_dev;
4145         static const struct cmd cx_sensor_init[] = {
4146                 {CX0342_AUTO_ADC_CALIB, 0x81},
4147                 {CX0342_EXPO_LINE_L, 0x37},
4148                 {CX0342_EXPO_LINE_H, 0x01},
4149                 {CX0342_RAW_GRGAIN_L, 0x00},
4150                 {CX0342_RAW_GBGAIN_L, 0x00},
4151                 {CX0342_RAW_RGAIN_L, 0x00},
4152                 {CX0342_RAW_BGAIN_L, 0x00},
4153                 {CX0342_SYS_CTRL_0, 0x81},
4154         };
4155         static const struct cmd cx_bridge_init[] = {
4156                 {0x4d, 0x00},
4157                 {0x4c, 0xff},
4158                 {0x4e, 0xff},
4159                 {0x4f, 0x00},
4160         };
4161         static const struct cmd ov_sensor_init[] = {
4162                 {0x10, 0x75},           /* exposure */
4163                 {0x76, 0x03},
4164                 {0x00, 0x00},           /* gain */
4165         };
4166         static const struct cmd ov_bridge_init[] = {
4167                 {0x7b, 0x90},
4168                 {TP6800_R3F_FRAME_RATE, 0x87},
4169         };
4170
4171         if (sd->bridge == BRIDGE_TP6800)
4172                 return 0;
4173         if (sd->sensor == SENSOR_CX0342) {
4174                 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);
4175                 reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4176                 i2c_w_buf(gspca_dev, cx_sensor_init,
4177                                 ARRAY_SIZE(cx_sensor_init));
4178                 reg_w_buf(gspca_dev, cx_bridge_init,
4179                                 ARRAY_SIZE(cx_bridge_init));
4180                 bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4181                 reg_w(gspca_dev, 0x59, 0x40);
4182         } else {
4183                 reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);
4184                 i2c_w_buf(gspca_dev, ov_sensor_init,
4185                                 ARRAY_SIZE(ov_sensor_init));
4186                 reg_r(gspca_dev, 0x7b);
4187                 reg_w_buf(gspca_dev, ov_bridge_init,
4188                                 ARRAY_SIZE(ov_bridge_init));
4189         }
4190         reg_w(gspca_dev, TP6800_R78_FORMAT,
4191                         gspca_dev->curr_mode ? 0x00 : 0x01);
4192         return gspca_dev->usb_err;
4193 }
4194
4195 static void set_led(struct gspca_dev *gspca_dev, int on)
4196 {
4197         u8 data;
4198
4199         reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4200         data = gspca_dev->usb_buf[0];
4201         if (on)
4202                 data &= ~0x40;
4203         else
4204                 data |= 0x40;
4205         reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data);
4206 }
4207
4208 static void cx0342_6800_start(struct gspca_dev *gspca_dev)
4209 {
4210         static const struct cmd reg_init[] = {
4211 /*fixme: is this usefull?*/
4212                 {TP6800_R17_GPIO_IO, 0x9f},
4213                 {TP6800_R16_GPIO_PD, 0x40},
4214                 {TP6800_R10_SIF_TYPE, 0x00},    /* i2c 8 bits */
4215                 {TP6800_R50, 0x00},
4216                 {TP6800_R51, 0x00},
4217                 {TP6800_R52, 0xff},
4218                 {TP6800_R53, 0x03},
4219                 {TP6800_R54_DARK_CFG, 0x07},
4220                 {TP6800_R5C_EDGE_THRLD, 0x40},
4221                 {TP6800_R7A_BLK_THRLD, 0x40},
4222                 {TP6800_R2F_TIMING_CFG, 0x17},
4223                 {TP6800_R30_SENSOR_CFG, 0x18},  /* G1B..RG0 */
4224                 {TP6800_R37_FRONT_DARK_ST, 0x00},
4225                 {TP6800_R38_FRONT_DARK_END, 0x00},
4226                 {TP6800_R39_REAR_DARK_ST_L, 0x00},
4227                 {TP6800_R3A_REAR_DARK_ST_H, 0x00},
4228                 {TP6800_R3B_REAR_DARK_END_L, 0x00},
4229                 {TP6800_R3C_REAR_DARK_END_H, 0x00},
4230                 {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4231                 {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4232                 {TP6800_R21_ENDP_1_CTL, 0x03},
4233
4234                 {TP6800_R31_PIXEL_START, 0x0b},
4235                 {TP6800_R32_PIXEL_END_L, 0x8a},
4236                 {TP6800_R33_PIXEL_END_H, 0x02},
4237                 {TP6800_R34_LINE_START, 0x0e},
4238                 {TP6800_R35_LINE_END_L, 0xf4},
4239                 {TP6800_R36_LINE_END_H, 0x01},
4240                 {TP6800_R78_FORMAT, 0x00},
4241                 {TP6800_R12_SIF_ADDR_S, 0x20},  /* cx0342 i2c addr */
4242         };
4243         static const struct cmd sensor_init[] = {
4244                 {CX0342_OUTPUT_CTRL, 0x07},
4245                 {CX0342_BYPASS_MODE, 0x58},
4246                 {CX0342_GPXLTHD_L, 0x16},
4247                 {CX0342_RBPXLTHD_L, 0x16},
4248                 {CX0342_PLANETHD_L, 0xc0},
4249                 {CX0342_PLANETHD_H, 0x03},
4250                 {CX0342_RB_GAP_L, 0xff},
4251                 {CX0342_RB_GAP_H, 0x07},
4252                 {CX0342_G_GAP_L, 0xff},
4253                 {CX0342_G_GAP_H, 0x07},
4254                 {CX0342_RST_OVERFLOW_L, 0x5c},
4255                 {CX0342_RST_OVERFLOW_H, 0x01},
4256                 {CX0342_DATA_OVERFLOW_L, 0xfc},
4257                 {CX0342_DATA_OVERFLOW_H, 0x03},
4258                 {CX0342_DATA_UNDERFLOW_L, 0x00},
4259                 {CX0342_DATA_UNDERFLOW_H, 0x00},
4260                 {CX0342_SYS_CTRL_0, 0x40},
4261                 {CX0342_GLOBAL_GAIN, 0x01},
4262                 {CX0342_CLOCK_GEN, 0x00},
4263                 {CX0342_SYS_CTRL_0, 0x02},
4264                 {CX0342_IDLE_CTRL, 0x05},
4265                 {CX0342_ADCGN, 0x00},
4266                 {CX0342_ADC_CTL, 0x00},
4267                 {CX0342_LVRST_BLBIAS, 0x01},
4268                 {CX0342_VTHSEL, 0x0b},
4269                 {CX0342_RAMP_RIV, 0x0b},
4270                 {CX0342_LDOSEL, 0x07},
4271                 {CX0342_SPV_VALUE_L, 0x40},
4272                 {CX0342_SPV_VALUE_H, 0x02},
4273         };
4274
4275         reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4276         i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4277         i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
4278         reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4279         reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4280         i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
4281         i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
4282         setexposure(gspca_dev);
4283         set_led(gspca_dev, 1);
4284         set_resolution(gspca_dev);
4285 }
4286
4287 static void cx0342_6810_start(struct gspca_dev *gspca_dev)
4288 {
4289         static const struct cmd sensor_init_2[] = {
4290                 {CX0342_EXPO_LINE_L, 0x6f},
4291                 {CX0342_EXPO_LINE_H, 0x02},
4292                 {CX0342_RAW_GRGAIN_L, 0x00},
4293                 {CX0342_RAW_GBGAIN_L, 0x00},
4294                 {CX0342_RAW_RGAIN_L, 0x00},
4295                 {CX0342_RAW_BGAIN_L, 0x00},
4296                 {CX0342_SYS_CTRL_0, 0x81},
4297         };
4298         static const struct cmd bridge_init_2[] = {
4299                 {0x4d, 0x00},
4300                 {0x4c, 0xff},
4301                 {0x4e, 0xff},
4302                 {0x4f, 0x00},
4303                 {TP6800_R7A_BLK_THRLD, 0x00},
4304                 {TP6800_R79_QUALITY, 0x04},
4305                 {TP6800_R79_QUALITY, 0x01},
4306         };
4307         static const struct cmd bridge_init_3[] = {
4308                 {TP6800_R31_PIXEL_START, 0x08},
4309                 {TP6800_R32_PIXEL_END_L, 0x87},
4310                 {TP6800_R33_PIXEL_END_H, 0x02},
4311                 {TP6800_R34_LINE_START, 0x0e},
4312                 {TP6800_R35_LINE_END_L, 0xf4},
4313                 {TP6800_R36_LINE_END_H, 0x01},
4314         };
4315         static const struct cmd sensor_init_3[] = {
4316                 {CX0342_AUTO_ADC_CALIB, 0x81},
4317                 {CX0342_EXPO_LINE_L, 0x6f},
4318                 {CX0342_EXPO_LINE_H, 0x02},
4319                 {CX0342_RAW_GRGAIN_L, 0x00},
4320                 {CX0342_RAW_GBGAIN_L, 0x00},
4321                 {CX0342_RAW_RGAIN_L, 0x00},
4322                 {CX0342_RAW_BGAIN_L, 0x00},
4323                 {CX0342_SYS_CTRL_0, 0x81},
4324         };
4325         static const struct cmd bridge_init_5[] = {
4326                 {0x4d, 0x00},
4327                 {0x4c, 0xff},
4328                 {0x4e, 0xff},
4329                 {0x4f, 0x00},
4330         };
4331         static const struct cmd sensor_init_4[] = {
4332                 {CX0342_EXPO_LINE_L, 0xd3},
4333                 {CX0342_EXPO_LINE_H, 0x01},
4334 /*fixme: gains, but 00..80 only*/
4335                 {CX0342_RAW_GRGAIN_L, 0x40},
4336                 {CX0342_RAW_GBGAIN_L, 0x40},
4337                 {CX0342_RAW_RGAIN_L, 0x40},
4338                 {CX0342_RAW_BGAIN_L, 0x40},
4339                 {CX0342_SYS_CTRL_0, 0x81},
4340         };
4341         static const struct cmd sensor_init_5[] = {
4342                 {CX0342_IDLE_CTRL, 0x05},
4343                 {CX0342_ADCGN, 0x00},
4344                 {CX0342_ADC_CTL, 0x00},
4345                 {CX0342_LVRST_BLBIAS, 0x01},
4346                 {CX0342_VTHSEL, 0x0b},
4347                 {CX0342_RAMP_RIV, 0x0b},
4348                 {CX0342_LDOSEL, 0x07},
4349                 {CX0342_SPV_VALUE_L, 0x40},
4350                 {CX0342_SPV_VALUE_H, 0x02},
4351                 {CX0342_AUTO_ADC_CALIB, 0x81},
4352         };
4353
4354         reg_w(gspca_dev, 0x22, gspca_dev->alt);
4355         i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2));
4356         reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4357         reg_w_buf(gspca_dev, tp6810_cx_init_common,
4358                         ARRAY_SIZE(tp6810_cx_init_common));
4359         reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4360         if (gspca_dev->curr_mode) {
4361                 reg_w(gspca_dev, 0x4a, 0x7f);
4362                 reg_w(gspca_dev, 0x07, 0x05);
4363                 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);      /* vga */
4364         } else {
4365                 reg_w(gspca_dev, 0x4a, 0xff);
4366                 reg_w(gspca_dev, 0x07, 0x85);
4367                 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);      /* qvga */
4368         }
4369         setgamma(gspca_dev);
4370         reg_w_buf(gspca_dev, tp6810_bridge_start,
4371                         ARRAY_SIZE(tp6810_bridge_start));
4372         setsharpness(gspca_dev);
4373         bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
4374                                 ARRAY_SIZE(color_gain[0]));
4375         reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4376         i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3));
4377         reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4378         i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4));
4379         reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4380         i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5));
4381
4382         set_led(gspca_dev, 1);
4383 /*      setquality(gspca_dev); */
4384 }
4385
4386 static void soi763a_6800_start(struct gspca_dev *gspca_dev)
4387 {
4388         static const struct cmd reg_init[] = {
4389                 {TP6800_R79_QUALITY, 0x04},
4390                 {TP6800_R79_QUALITY, 0x01},
4391                 {TP6800_R10_SIF_TYPE, 0x00},    /* i2c 8 bits */
4392
4393                 {TP6800_R50, 0x00},
4394                 {TP6800_R51, 0x00},
4395                 {TP6800_R52, 0xff},
4396                 {TP6800_R53, 0x03},
4397                 {TP6800_R54_DARK_CFG, 0x07},
4398                 {TP6800_R5C_EDGE_THRLD, 0x40},
4399
4400                 {TP6800_R79_QUALITY, 0x03},
4401                 {TP6800_R7A_BLK_THRLD, 0x40},
4402
4403                 {TP6800_R2F_TIMING_CFG, 0x46},
4404                 {TP6800_R30_SENSOR_CFG, 0x10},  /* BG1..G0R */
4405                 {TP6800_R37_FRONT_DARK_ST, 0x00},
4406                 {TP6800_R38_FRONT_DARK_END, 0x00},
4407                 {TP6800_R39_REAR_DARK_ST_L, 0x00},
4408                 {TP6800_R3A_REAR_DARK_ST_H, 0x00},
4409                 {TP6800_R3B_REAR_DARK_END_L, 0x00},
4410                 {TP6800_R3C_REAR_DARK_END_H, 0x00},
4411                 {TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4412                 {TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4413                 {TP6800_R21_ENDP_1_CTL, 0x03},
4414
4415                 {TP6800_R3F_FRAME_RATE, 0x04},  /* 15 fps */
4416                 {TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */
4417
4418                 {TP6800_R31_PIXEL_START, 0x1b},
4419                 {TP6800_R32_PIXEL_END_L, 0x9a},
4420                 {TP6800_R33_PIXEL_END_H, 0x02},
4421                 {TP6800_R34_LINE_START, 0x0f},
4422                 {TP6800_R35_LINE_END_L, 0xf4},
4423                 {TP6800_R36_LINE_END_H, 0x01},
4424                 {TP6800_R78_FORMAT, 0x01},      /* qvga */
4425                 {TP6800_R12_SIF_ADDR_S, 0x21},  /* soi763a i2c addr */
4426                 {TP6800_R1A_SIF_TX_DATA2, 0x00},
4427         };
4428         static const struct cmd sensor_init[] = {
4429                 {0x12, 0x48},           /* mirror - RGB */
4430                 {0x13, 0xa0},           /* clock - no AGC nor AEC */
4431                 {0x03, 0xa4},           /* saturation */
4432                 {0x04, 0x30},           /* hue */
4433                 {0x05, 0x88},           /* contrast */
4434                 {0x06, 0x60},           /* brightness */
4435                 {0x10, 0x41},           /* AEC */
4436                 {0x11, 0x40},           /* clock rate */
4437                 {0x13, 0xa0},
4438                 {0x14, 0x00},           /* 640x480 */
4439                 {0x15, 0x14},
4440                 {0x1f, 0x41},
4441                 {0x20, 0x80},
4442                 {0x23, 0xee},
4443                 {0x24, 0x50},
4444                 {0x25, 0x7a},
4445                 {0x26, 0x00},
4446                 {0x27, 0xe2},
4447                 {0x28, 0xb0},
4448                 {0x2a, 0x00},
4449                 {0x2b, 0x00},
4450                 {0x2d, 0x81},
4451                 {0x2f, 0x9d},
4452                 {0x60, 0x80},
4453                 {0x61, 0x00},
4454                 {0x62, 0x88},
4455                 {0x63, 0x11},
4456                 {0x64, 0x89},
4457                 {0x65, 0x00},
4458                 {0x67, 0x94},
4459                 {0x68, 0x7a},
4460                 {0x69, 0x0f},
4461                 {0x6c, 0x80},
4462                 {0x6d, 0x80},
4463                 {0x6e, 0x80},
4464                 {0x6f, 0xff},
4465                 {0x71, 0x20},
4466                 {0x74, 0x20},
4467                 {0x75, 0x86},
4468                 {0x77, 0xb5},
4469                 {0x17, 0x18},           /* H href start */
4470                 {0x18, 0xbf},           /* H href end */
4471                 {0x19, 0x03},           /* V start */
4472                 {0x1a, 0xf8},           /* V end */
4473                 {0x01, 0x80},           /* blue gain */
4474                 {0x02, 0x80},           /* red gain */
4475         };
4476
4477         reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4478
4479         i2c_w(gspca_dev, 0x12, 0x80);           /* sensor reset */
4480         msleep(10);
4481
4482         i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4483
4484         reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4485         reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4486
4487         setsharpness(gspca_dev);
4488
4489         bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4490                                 ARRAY_SIZE(color_gain[0]));
4491
4492         set_led(gspca_dev, 1);
4493         setexposure(gspca_dev);
4494         setquality(gspca_dev);
4495         setgamma(gspca_dev);
4496 }
4497
4498 static void soi763a_6810_start(struct gspca_dev *gspca_dev)
4499 {
4500         static const struct cmd bridge_init_2[] = {
4501                 {TP6800_R7A_BLK_THRLD, 0x00},
4502                 {TP6800_R79_QUALITY, 0x04},
4503                 {TP6800_R79_QUALITY, 0x01},
4504         };
4505         static const struct cmd bridge_init_3[] = {
4506                 {TP6800_R31_PIXEL_START, 0x20},
4507                 {TP6800_R32_PIXEL_END_L, 0x9f},
4508                 {TP6800_R33_PIXEL_END_H, 0x02},
4509                 {TP6800_R34_LINE_START, 0x13},
4510                 {TP6800_R35_LINE_END_L, 0xf8},
4511                 {TP6800_R36_LINE_END_H, 0x01},
4512         };
4513         static const struct cmd bridge_init_6[] = {
4514                 {0x08, 0xff},
4515                 {0x09, 0xff},
4516                 {0x0a, 0x5f},
4517                 {0x0b, 0x80},
4518         };
4519
4520         reg_w(gspca_dev, 0x22, gspca_dev->alt);
4521         bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4522         reg_w(gspca_dev, 0x59, 0x40);
4523         setexposure(gspca_dev);
4524         reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4525         reg_w_buf(gspca_dev, tp6810_ov_init_common,
4526                         ARRAY_SIZE(tp6810_ov_init_common));
4527         reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4528         if (gspca_dev->curr_mode) {
4529                 reg_w(gspca_dev, 0x4a, 0x7f);
4530                 reg_w(gspca_dev, 0x07, 0x05);
4531                 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);      /* vga */
4532         } else {
4533                 reg_w(gspca_dev, 0x4a, 0xff);
4534                 reg_w(gspca_dev, 0x07, 0x85);
4535                 reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);      /* qvga */
4536         }
4537         setgamma(gspca_dev);
4538         reg_w_buf(gspca_dev, tp6810_bridge_start,
4539                         ARRAY_SIZE(tp6810_bridge_start));
4540
4541         if (gspca_dev->curr_mode) {
4542                 reg_w(gspca_dev, 0x4f, 0x00);
4543                 reg_w(gspca_dev, 0x4e, 0x7c);
4544         }
4545
4546         reg_w(gspca_dev, 0x00, 0x00);
4547
4548         setsharpness(gspca_dev);
4549         bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4550                                 ARRAY_SIZE(color_gain[0]));
4551         set_led(gspca_dev, 1);
4552         reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0);
4553         setexposure(gspca_dev);
4554         reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6));
4555 }
4556
4557 /* -- start the camera -- */
4558 static int sd_start(struct gspca_dev *gspca_dev)
4559 {
4560         struct sd *sd = (struct sd *) gspca_dev;
4561
4562         jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width);
4563         set_dqt(gspca_dev, sd->quality);
4564         if (sd->bridge == BRIDGE_TP6800) {
4565                 if (sd->sensor == SENSOR_CX0342)
4566                         cx0342_6800_start(gspca_dev);
4567                 else
4568                         soi763a_6800_start(gspca_dev);
4569         } else {
4570                 if (sd->sensor == SENSOR_CX0342)
4571                         cx0342_6810_start(gspca_dev);
4572                 else
4573                         soi763a_6810_start(gspca_dev);
4574                 reg_w_buf(gspca_dev, tp6810_late_start,
4575                                 ARRAY_SIZE(tp6810_late_start));
4576                 reg_w(gspca_dev, 0x80, 0x03);
4577                 reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e);
4578
4579                 setexposure(gspca_dev);
4580                 setquality(gspca_dev);
4581                 setautogain(gspca_dev);
4582         }
4583
4584         setframerate(gspca_dev);
4585
4586         return gspca_dev->usb_err;
4587 }
4588
4589 static void sd_stopN(struct gspca_dev *gspca_dev)
4590 {
4591         struct sd *sd = (struct sd *) gspca_dev;
4592
4593         if (sd->bridge == BRIDGE_TP6800)
4594                 reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03);
4595         set_led(gspca_dev, 0);
4596         reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
4597 }
4598
4599 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
4600                         u8 *data,
4601                         int len)
4602 {
4603         struct sd *sd = (struct sd *) gspca_dev;
4604
4605         /* the start of frame contains:
4606          *      ff d8
4607          *      ff fe
4608          *      width / 16
4609          *      height / 8
4610          *      quality
4611          */
4612         if (sd->bridge == BRIDGE_TP6810) {
4613                 if (*data != 0x5a) {
4614 /*fixme: don't discard the whole frame..*/
4615                         if (*data == 0xaa || *data == 0x00)
4616                                 return;
4617                         if (*data > 0xc0) {
4618                                 PDEBUG(D_FRAM, "bad frame");
4619                                 gspca_dev->last_packet_type = DISCARD_PACKET;
4620                                 return;
4621                         }
4622                 }
4623                 data++;
4624                 len--;
4625                 if (*data == 0xff && data[1] == 0xd8) {
4626 /*fixme: there may be information in the 4 high bits*/
4627                         if ((data[6] & 0x0f) != sd->quality)
4628                                 set_dqt(gspca_dev, data[6] & 0x0f);
4629                         gspca_frame_add(gspca_dev, FIRST_PACKET,
4630                                         sd->jpeg_hdr, JPEG_HDR_SZ);
4631                         gspca_frame_add(gspca_dev, INTER_PACKET,
4632                                         data + 7, len - 7);
4633                 } else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) {
4634                         gspca_frame_add(gspca_dev, LAST_PACKET,
4635                                         data, len);
4636                 } else {
4637                         gspca_frame_add(gspca_dev, INTER_PACKET,
4638                                         data, len);
4639                 }
4640                 return;
4641         }
4642
4643         switch (*data) {
4644         case 0x55:
4645                 gspca_frame_add(gspca_dev, LAST_PACKET, data, 0);
4646
4647                 if (len < 8
4648                  || data[1] != 0xff || data[2] != 0xd8
4649                  || data[3] != 0xff || data[4] != 0xfe) {
4650
4651                         /* Have only seen this with corrupt frames */
4652                         gspca_dev->last_packet_type = DISCARD_PACKET;
4653                         return;
4654                 }
4655                 if (data[7] != sd->quality)
4656                         set_dqt(gspca_dev, data[7]);
4657                 gspca_frame_add(gspca_dev, FIRST_PACKET,
4658                                 sd->jpeg_hdr, JPEG_HDR_SZ);
4659                 gspca_frame_add(gspca_dev, INTER_PACKET,
4660                                 data + 8, len - 8);
4661                 break;
4662         case 0xaa:
4663                 gspca_dev->last_packet_type = DISCARD_PACKET;
4664                 break;
4665         case 0xcc:
4666                 if (data[1] != 0xff || data[2] != 0xd8)
4667                         gspca_frame_add(gspca_dev, INTER_PACKET,
4668                                         data + 1, len - 1);
4669                 else
4670                         gspca_dev->last_packet_type = DISCARD_PACKET;
4671                 break;
4672         }
4673 }
4674
4675 /* -- do autogain -- */
4676 /* gain setting is done in setexposure() for tp6810 */
4677 static void setgain(struct gspca_dev *gspca_dev) {}
4678 #define WANT_REGULAR_AUTOGAIN
4679 #include "autogain_functions.h"
4680
4681 static void sd_dq_callback(struct gspca_dev *gspca_dev)
4682 {
4683         struct sd *sd = (struct sd *) gspca_dev;
4684         int ret, alen;
4685         int luma, expo;
4686
4687         if (sd->ag_cnt < 0)
4688                 return;
4689         if (--sd->ag_cnt > 5)
4690                 return;
4691         switch (sd->ag_cnt) {
4692 /*      case 5: */
4693         default:
4694                 reg_w(gspca_dev, 0x7d, 0x00);
4695                 break;
4696         case 4:
4697                 reg_w(gspca_dev, 0x27, 0xb0);
4698                 break;
4699         case 3:
4700                 reg_w(gspca_dev, 0x0c, 0x01);
4701                 break;
4702         case 2:
4703                 ret = usb_bulk_msg(gspca_dev->dev,
4704                                 usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4705                                 gspca_dev->usb_buf,
4706                                 32,
4707                                 &alen,
4708                                 500);
4709                 if (ret < 0) {
4710                         pr_err("bulk err %d\n", ret);
4711                         break;
4712                 }
4713                 /* values not used (unknown) */
4714                 break;
4715         case 1:
4716                 reg_w(gspca_dev, 0x27, 0xd0);
4717                 break;
4718         case 0:
4719                 ret = usb_bulk_msg(gspca_dev->dev,
4720                                 usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4721                                 gspca_dev->usb_buf,
4722                                 32,
4723                                 &alen,
4724                                 500);
4725                 if (ret < 0) {
4726                         pr_err("bulk err %d\n", ret);
4727                         break;
4728                 }
4729                 luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] +
4730                         (gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] +
4731                         (gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] +
4732                         (gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] +
4733                         (gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] +
4734                         (gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] +
4735                         (gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
4736                         (gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
4737                                 / 8;
4738                 if (gspca_dev->width == 640)
4739                         luma /= 4;
4740                 reg_w(gspca_dev, 0x7d, 0x00);
4741
4742                 expo = sd->ctrls[EXPOSURE].val;
4743                 ret = auto_gain_n_exposure(gspca_dev, luma,
4744                                 60,     /* desired luma */
4745                                 6,      /* dead zone */
4746                                 2,      /* gain knee */
4747                                 70);    /* expo knee */
4748                 sd->ag_cnt = AG_CNT_START;
4749                 if (sd->bridge == BRIDGE_TP6810) {
4750                         if ((expo >= 128 && sd->ctrls[EXPOSURE].val < 128)
4751                          || (expo < 128 && sd->ctrls[EXPOSURE].val >= 128))
4752                                 setframerate(gspca_dev);
4753                 }
4754                 break;
4755         }
4756 }
4757
4758 /* get stream parameters (framerate) */
4759 static void sd_get_streamparm(struct gspca_dev *gspca_dev,
4760                              struct v4l2_streamparm *parm)
4761 {
4762         struct sd *sd = (struct sd *) gspca_dev;
4763         struct v4l2_captureparm *cp = &parm->parm.capture;
4764         struct v4l2_fract *tpf = &cp->timeperframe;
4765         int fr, i;
4766
4767         cp->capability |= V4L2_CAP_TIMEPERFRAME;
4768         tpf->numerator = 1;
4769         i = get_fr_idx(gspca_dev);
4770         if (i & 0x80) {
4771                 if (sd->bridge == BRIDGE_TP6800)
4772                         fr = rates[6 - (i & 0x07)];
4773                 else
4774                         fr = rates_6810[7 - (i & 0x07)];
4775         } else {
4776                 fr = rates[6 - i];
4777         }
4778         tpf->denominator = fr;
4779 }
4780
4781 /* set stream parameters (framerate) */
4782 static void sd_set_streamparm(struct gspca_dev *gspca_dev,
4783                              struct v4l2_streamparm *parm)
4784 {
4785         struct sd *sd = (struct sd *) gspca_dev;
4786         struct v4l2_captureparm *cp = &parm->parm.capture;
4787         struct v4l2_fract *tpf = &cp->timeperframe;
4788         int fr, i;
4789
4790         sd->framerate = tpf->denominator / tpf->numerator;
4791         if (gspca_dev->streaming)
4792                 setframerate(gspca_dev);
4793
4794         /* Return the actual framerate */
4795         i = get_fr_idx(gspca_dev);
4796         if (i & 0x80)
4797                 fr = rates_6810[7 - (i & 0x07)];
4798         else
4799                 fr = rates[6 - i];
4800         tpf->numerator = 1;
4801         tpf->denominator = fr;
4802 }
4803
4804 static int sd_set_jcomp(struct gspca_dev *gspca_dev,
4805                         struct v4l2_jpegcompression *jcomp)
4806 {
4807         struct sd *sd = (struct sd *) gspca_dev;
4808
4809         if (sd->sensor == SENSOR_SOI763A)
4810                 jpeg_set_qual(sd->jpeg_hdr, jcomp->quality);
4811 /*      else
4812                 fixme: TODO
4813 */
4814         return gspca_dev->usb_err;
4815 }
4816
4817 static int sd_get_jcomp(struct gspca_dev *gspca_dev,
4818                         struct v4l2_jpegcompression *jcomp)
4819 {
4820         struct sd *sd = (struct sd *) gspca_dev;
4821
4822         memset(jcomp, 0, sizeof *jcomp);
4823         jcomp->quality = jpeg_q[sd->quality];
4824         jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT
4825                         | V4L2_JPEG_MARKER_DQT;
4826         return 0;
4827 }
4828
4829 static struct ctrl sd_ctrls[NCTRLS] = {
4830 [EXPOSURE] = {
4831             {
4832                 .id = V4L2_CID_EXPOSURE,
4833                 .type = V4L2_CTRL_TYPE_INTEGER,
4834                 .name = "Exposure",
4835                 .minimum = 0x01,
4836                 .maximum = 0xdc,
4837                 .step = 1,
4838                 .default_value = 0x4e,
4839             },
4840             .set_control = setexposure
4841         },
4842 [QUALITY] = {
4843             {
4844                 .id = V4L2_CID_PRIVATE_BASE,
4845                 .type = V4L2_CTRL_TYPE_INTEGER,
4846                 .name = "Compression quality",
4847                 .minimum = 0,
4848                 .maximum = 15,
4849                 .step = 1,
4850                 .default_value = 13,
4851             },
4852             .set_control = setquality
4853         },
4854 [RGAIN] = {
4855             {
4856                 .id = V4L2_CID_RED_BALANCE,
4857                 .type = V4L2_CTRL_TYPE_INTEGER,
4858                 .name = "Red balance",
4859                 .minimum = 0,
4860                 .maximum = 4095,
4861                 .step = 1,
4862                 .default_value = 256,
4863             },
4864             .set_control = setrgain
4865         },
4866 [GAIN] = {
4867             {
4868                 .id = V4L2_CID_GAIN,
4869                 .type = V4L2_CTRL_TYPE_INTEGER,
4870                 .name = "Gain",
4871                 .minimum = 0,
4872                 .maximum = 4095,
4873                 .step = 1,
4874                 .default_value = 256,
4875             },
4876             .set = sd_setgain
4877         },
4878 [BGAIN] = {
4879             {
4880                 .id = V4L2_CID_BLUE_BALANCE,
4881                 .type = V4L2_CTRL_TYPE_INTEGER,
4882                 .name = "Blue balance",
4883                 .minimum = 0,
4884                 .maximum = 4095,
4885                 .step = 1,
4886                 .default_value = 256,
4887             },
4888             .set_control = setbgain
4889         },
4890 [SHARPNESS] = {
4891             {
4892                 .id      = V4L2_CID_SHARPNESS,
4893                 .type    = V4L2_CTRL_TYPE_INTEGER,
4894                 .name    = "Sharpness",
4895                 .minimum = 0,
4896                 .maximum = 3,
4897                 .step    = 1,
4898                 .default_value = 2,
4899             },
4900             .set_control = setsharpness
4901         },
4902 [GAMMA] = {
4903             {
4904                 .id      = V4L2_CID_GAMMA,
4905                 .type    = V4L2_CTRL_TYPE_INTEGER,
4906                 .name    = "Gamma",
4907                 .minimum = 0,
4908                 .maximum = NGAMMA - 1,
4909                 .step    = 1,
4910                 .default_value = 1,
4911             },
4912             .set_control = setgamma
4913         },
4914 [AUTOGAIN] = {
4915             {
4916                 .id      = V4L2_CID_AUTOGAIN,
4917                 .type    = V4L2_CTRL_TYPE_BOOLEAN,
4918                 .name    = "Auto Gain",
4919                 .minimum = 0,
4920                 .maximum = 1,
4921                 .step    = 1,
4922                 .default_value = AUTOGAIN_DEF
4923             },
4924             .set_control = setautogain
4925         },
4926 };
4927
4928 static const struct sd_desc sd_desc = {
4929         .name = KBUILD_MODNAME,
4930         .ctrls = sd_ctrls,
4931         .nctrls = NCTRLS,
4932         .config = sd_config,
4933         .init = sd_init,
4934         .isoc_init = sd_isoc_init,
4935         .start = sd_start,
4936         .stopN = sd_stopN,
4937         .pkt_scan = sd_pkt_scan,
4938         .dq_callback = sd_dq_callback,
4939         .get_streamparm = sd_get_streamparm,
4940         .set_streamparm = sd_set_streamparm,
4941         .get_jcomp = sd_get_jcomp,
4942         .set_jcomp = sd_set_jcomp,
4943 };
4944
4945 static const struct usb_device_id device_table[] = {
4946         {USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800},
4947         {USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810},
4948         {}                      /* Terminating entry */
4949 };
4950
4951 MODULE_DEVICE_TABLE(usb, device_table);
4952
4953 static int sd_probe(struct usb_interface *interface,
4954                     const struct usb_device_id *id)
4955 {
4956         return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd),
4957                                THIS_MODULE);
4958 }
4959
4960 static struct usb_driver sd_driver = {
4961         .name = KBUILD_MODNAME,
4962         .id_table = device_table,
4963         .probe = sd_probe,
4964         .disconnect = gspca_disconnect,
4965 #ifdef CONFIG_PM
4966         .suspend = gspca_suspend,
4967         .resume = gspca_resume,
4968         .reset_resume = gspca_resume,
4969 #endif
4970 };
4971
4972 module_usb_driver(sd_driver);
4973
4974 module_param(force_sensor, int, 0644);
4975 MODULE_PARM_DESC(force_sensor,
4976         "Force sensor. 0: cx0342, 1: soi763a");