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