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