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