~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise-security

« back to all changes in this revision

Viewing changes to drivers/media/video/gspca/topro.c

  • Committer: Package Import Robot
  • Author(s): Paolo Pisati, Paolo Pisati
  • Date: 2011-12-06 15:56:07 UTC
  • Revision ID: package-import@ubuntu.com-20111206155607-pcf44kv5fmhk564f
Tags: 3.2.0-1401.1
[ Paolo Pisati ]

* Rebased on top of Ubuntu-3.2.0-3.8
* Tilt-tracking @ ef2487af4bb15bdd0689631774b5a5e3a59f74e2
* Delete debian.ti-omap4/control, it shoudln't be tracked
* Fix architecture spelling (s/armel/armhf/)
* [Config] Update configs following 3.2 import
* [Config] Fix compilation: disable CODA and ARCH_OMAP3
* [Config] Fix compilation: disable Ethernet Faraday
* Update series to precise

Show diffs side-by-side

added added

removed removed

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