Version:  2.0.40 2.2.26 2.4.37 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.0 4.1

Linux/drivers/media/usb/gspca/topro.c

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

This page was automatically generated by LXR 0.3.1 (source).  •  Linux is a registered trademark of Linus Torvalds  •  Contact us