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