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